{"id":31718696,"url":"https://github.com/speakeasy-api/wasm-overhead-research","last_synced_at":"2025-10-09T02:55:01.343Z","repository":{"id":310674579,"uuid":"1040786806","full_name":"speakeasy-api/wasm-overhead-research","owner":"speakeasy-api","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-19T14:05:22.000Z","size":1632,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-16T08:57:07.191Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/speakeasy-api.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,"zenodo":null}},"created_at":"2025-08-19T14:01:38.000Z","updated_at":"2025-08-20T00:52:37.000Z","dependencies_parsed_at":"2025-08-19T16:35:01.999Z","dependency_job_id":null,"html_url":"https://github.com/speakeasy-api/wasm-overhead-research","commit_stats":null,"previous_names":["speakeasy-api/wasm-overhead-research"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/speakeasy-api/wasm-overhead-research","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/speakeasy-api%2Fwasm-overhead-research","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/speakeasy-api%2Fwasm-overhead-research/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/speakeasy-api%2Fwasm-overhead-research/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/speakeasy-api%2Fwasm-overhead-research/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/speakeasy-api","download_url":"https://codeload.github.com/speakeasy-api/wasm-overhead-research/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/speakeasy-api%2Fwasm-overhead-research/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000731,"owners_count":26082906,"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","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"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":[],"created_at":"2025-10-09T02:54:56.530Z","updated_at":"2025-10-09T02:55:01.338Z","avatar_url":"https://github.com/speakeasy-api.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WASM Overhead research\n\n## Size Comparison\n\n*Data location: `results/size-comparison.csv`*\n\n| Implementation | Raw WASM | Gzipped | Compression | Overhead vs Smallest |\n|----------------|----------|---------|-------------|---------------------|\n| AssemblyScript | 18.4KB   | 8.2KB   | 55.5%       | Baseline            |\n| Porffor        | 512.9KB  | 75.1KB  | 85.3%       | 9.1x                |\n| QuickJS        | 633.1KB  | 265.5KB | 58.0%       | 32.3x               |\n| Go Basic       | 2,791KB  | 835KB   | 70.1%       | 101.8x              |\n| Go + Goja      | 15,571KB | 3,657KB | 76.5%       | 445.7x              |\n\n*Note: TinyGo builds failed during benchmarking but typically produce ~128KB gzipped binaries*\n\n## WebAssembly Cold-Start times\n\n\n| Implementation | Cold Start (ms) |\n|----------------|-----------------|\n| AssemblyScript | 0.28            |\n| Porffor        | Compilation fails |\n| QuickJS        | 1.16            |\n| Go Basic       | ~2-3            |\n| Go + Goja      | ~5-10           |\n\n## JavaScript Feature Support\n\n| Feature         | AssemblyScript | Porffor | QuickJS | Javy | Go+Goja |\n|-----------------|----------------|---------|---------|------|---------|\n| ES5             | Partial        | ✅      | ✅      | ✅   | ✅      |\n| ES6+            | Partial        | Partial | ✅      | ✅   | ✅      |\n| async/await     | ❌             | ❌      | ✅      | ✅   | ✅      |\n| eval()          | ❌             | ❌      | ✅      | ✅   | ✅      |\n| Regex           | Limited        | ✅      | ✅      | ✅   | ✅      |\n| JSON            | ✅             | ✅      | ✅      | ✅   | ✅      |\n| TypeScript      | ✅             | ❌      | ❌      | ❌   | ❌      |\n## Extism Runtime Overhead\n\n*Data location: `results/engine-overhead.csv`*\n\n| Language    | SDK Size | Dependencies | Total Overhead | Architecture |\n|-------------|----------|--------------|----------------|--------------|\n| Go          | N/A      | Pure Go      | 0              | Native wazero |\n| Rust        | 72KB     | Static       | Embedded       | Static link  |\n| JavaScript  | 2.12MB   | None         | 2.12MB         | V8 native    |\n| Python      | 11KB     | libextism    | 5.7MB          | FFI          |\n| Java        | N/A      | JNA+libextism| 7.0MB          | FFI          |","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspeakeasy-api%2Fwasm-overhead-research","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspeakeasy-api%2Fwasm-overhead-research","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspeakeasy-api%2Fwasm-overhead-research/lists"}