{"id":25304875,"url":"https://github.com/leops/fabric","last_synced_at":"2026-05-02T03:31:27.539Z","repository":{"id":79172357,"uuid":"313121019","full_name":"leops/fabric","owner":"leops","description":"An experiment on extending the Source engine with a WebAssembly runtime","archived":false,"fork":false,"pushed_at":"2022-12-16T18:17:20.000Z","size":29,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T04:19:40.838Z","etag":null,"topics":["source-engine","wasm"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-15T20:52:51.000Z","updated_at":"2023-09-30T22:53:54.000Z","dependencies_parsed_at":"2023-05-18T17:45:12.840Z","dependency_job_id":null,"html_url":"https://github.com/leops/fabric","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/leops/fabric","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leops%2Ffabric","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leops%2Ffabric/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leops%2Ffabric/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leops%2Ffabric/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leops","download_url":"https://codeload.github.com/leops/fabric/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leops%2Ffabric/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32522237,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T01:12:54.858Z","status":"online","status_checked_at":"2026-05-02T02:00:05.923Z","response_time":132,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["source-engine","wasm"],"created_at":"2025-02-13T08:34:11.611Z","updated_at":"2026-05-02T03:31:27.516Z","avatar_url":"https://github.com/leops.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"Fabric\n===============\n\nAn experiment on extending the Source engine with a WebAssembly runtime, see\n[ChaosInitiative/Portal-2-Community-Edition#421](https://github.com/ChaosInitiative/Portal-2-Community-Edition/issues/421)\nfor an in depth context / explanation\n\n# Features\n\nFor this version the Fabric runtime is compiled into a server plugin DLL loaded\nby the engine. The features exposed to the WASM modules are a (very small) subset\nof the APIs exposed to server plugins, namely registering event listeners and\ninspecting received event objects. The aim here is not to provide a workable\nenvironment for scripting (yet), but to showcase the feasibility of integrating\nWASM code with Source with both calls from WASM to then engine and from the\nengine to WASM.\n\n# Backend\n\nRight now this project uses Cranelift as a \"production\" backend for emitting machine code.\nThis allows a greater control over the emitted code compared to over \"off-the-shelf\" WASM\nlibraries, and in turns permits relaxing the threading constraints of the WASM environment\n(specifically that all WASM code can only be called from a single thread, a constraint difficult\nto enforce when integrating an existing software like Source without hurting performances).\nBut this also means a bunch of WASM feature are left unimplemented (for now), and debugging\nthe emitted code is nearly impossible.\n\nIn the near future I'll add an alternative \"debugging\" backend using V8. Since V8 needs\nto be run from a single thread this version will certainly have an important performance\noverhead, but will allow debugging the WASM code using the existing Chrome Devtools.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleops%2Ffabric","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleops%2Ffabric","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleops%2Ffabric/lists"}