{"id":13724134,"url":"https://github.com/gate-computer/wag","last_synced_at":"2025-04-04T16:12:29.236Z","repository":{"id":57489797,"uuid":"46967758","full_name":"gate-computer/wag","owner":"gate-computer","description":"WebAssembly compiler implemented in Go","archived":false,"fork":false,"pushed_at":"2025-03-11T02:35:38.000Z","size":4209,"stargazers_count":192,"open_issues_count":3,"forks_count":16,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-03-28T15:04:50.157Z","etag":null,"topics":["aarch64","amd64","arm64","compiler","go","wasm","webassembly","x86-64"],"latest_commit_sha":null,"homepage":"https://pkg.go.dev/gate.computer/wag","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gate-computer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2015-11-27T08:12:25.000Z","updated_at":"2025-03-11T02:35:42.000Z","dependencies_parsed_at":"2024-06-18T15:43:19.503Z","dependency_job_id":"fd686950-adff-4c6d-9919-6cf4fc59265b","html_url":"https://github.com/gate-computer/wag","commit_stats":null,"previous_names":["tsavola/wag"],"tags_count":55,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gate-computer%2Fwag","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gate-computer%2Fwag/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gate-computer%2Fwag/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gate-computer%2Fwag/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gate-computer","download_url":"https://codeload.github.com/gate-computer/wag/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247208142,"owners_count":20901570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["aarch64","amd64","arm64","compiler","go","wasm","webassembly","x86-64"],"created_at":"2024-08-03T01:01:50.900Z","updated_at":"2025-04-04T16:12:29.218Z","avatar_url":"https://github.com/gate-computer.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"Wag is a [WebAssembly](https://webassembly.org) compiler implemented as a\n[Go](https://golang.org) package.\n\n- License: [3-clause BSD](LICENSE)\n- Author: Timo Savola \u003ctimo.savola@iki.fi\u003e\n\n\nFeatures\n--------\n\n- The input is a wasm binary module.\n\n- The output is machine code.\n\n- It is only a compiler.  A runtime environment for the compiled program,\n  including all import functions, needs to be implemented separately.  Wag has\n  been developed for the [Gate](https://gate.computer/gate) runtime.\n\n- Single-pass, fast ahead-of-time compilation.\n\n- The generated code requires minimal runtime support; it's designed to be\n  executed in an isolated environment.  Calling standard library ABIs is not\n  directly supported.\n\n- Supports snapshot-and-restore across compiler versions and CPU architectures.\n\n- Supports breakpoint debugging via recompilation.\n\n- Cross-compilation is supported via Go build tags.  If `wagamd64` is\n  specified, the x86-64 code generator is used regardless of host architecture,\n  and CPU feature detection is disabled with pessimistic assumptions.  Likewise\n  for `wagarm64` (but feature detection is not currently used for ARM64 in any\n  case).\n\n\nStatus\n------\n\n- Supports WebAssembly version 1 (wasm32).\n\n- Supports non-trapping float-to-int conversions extension, sign-extension\n  instructions extension, and partially bulk memory operations extension.\n\n- Supports x86-64 and ARM64 code generation.\n\n- Generated x86-64 code requires SSE4.1 floating-point instructions (available\n  since 2007).\n\n\nSecurity\n--------\n\n[Spectre](https://spectreattack.com) variant 1: Out-of-bounds linear memory\naccess detection requires that addressable but unallocated memory is\ninaccessible.  It naturally prevents conditional branch exploitation.\n\nSpectre variant 2: On x86-64, [Retpoline](https://support.google.com/faqs/answer/7625886)\nis used to protect the runtime environment (although user programs shouldn't be\nable to inject arbitrary addresses into the branch target buffer).\n\n\nTesting\n-------\n\nRequires Linux, Make, Go, Python, [Capstone](https://www.capstone-engine.org),\nand a recent version of [WABT](https://github.com/WebAssembly/wabt).\nThe applicable parts of the WebAssembly spec testsuite are run.  Code execution\ntests are implemented in a separate Go module in the testsuite subdirectory (to\nwork around circular dependencies).  All tests can be run by checking out Git\nsubmodules and running `make check`.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgate-computer%2Fwag","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgate-computer%2Fwag","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgate-computer%2Fwag/lists"}