AssemblyScript

AssemblyScript/assemblyscript

WebAssembly Apache-2.0 Dev Tools

A TypeScript-like language for WebAssembly.

17.9k stars
693 forks
recent
GitHub +3 / week

17.9k

Stars

693

Forks

202

Open issues

30

Contributors

v0.28.19 12 Jun 2026

AI Analysis

AssemblyScript is a TypeScript-like language that compiles to WebAssembly, enabling developers to write high-performance wasm modules with familiar TypeScript syntax. It serves a specific technical niche: developers building performance-critical components for web applications, embedded systems, or any platform supporting WebAssembly who want type safety without learning a completely new language. It is not a general-purpose application framework and is best suited for teams that need WebAsse...

Dev Tools Developer Tool Discovery value: 3/10
Documentation 8/10
Activity 9/10
Community 9/10
Code quality 8/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

webassembly typescript-compiler performance-optimization type-safe cross-platform
Actively maintained Well documented Niche/specialized use case Popular Production ready
Deep Analysis · Based on README and public signals
2w ago

AssemblyScript brings TypeScript syntax to WebAssembly, bridging web developer familiarity with near-native performance

AssemblyScript compiles a strict subset of TypeScript to WebAssembly via Binaryen, targeting web developers who want Wasm performance without learning Rust or C++. It is used in performance-sensitive browser modules, blockchain smart contracts, game engines, audio/video processing, and edge compute runtimes. With ~18K GitHub stars, active npm distribution, and a documented 'Built with AssemblyScript' showcase, it has a measurable real-world footprint. Adoption appears strongest among JavaScript/TypeScript developers who need Wasm output but want to stay close to familiar tooling.

Origin

Started in September 2017, shortly after WebAssembly shipped in major browsers. Originally a TypeScript-to-Wasm experiment, it matured into a production-capable compiler with its own standard library, runtime, and optimizer integration through Binaryen.

Growth

Early growth was driven by WebAssembly's own rise and the appeal of not needing to learn C/C++/Rust for Wasm. Growth plateaued somewhat as Rust-to-Wasm tooling (wasm-pack) matured, but AssemblyScript retains a distinct niche: TypeScript-familiar developers and environments where JS ecosystem integration is critical. Star growth is now slow (9 stars in 7 days) but reflects a maturing, established project rather than a declining one.

In production

The official website hosts a 'Built with AssemblyScript' page listing real projects. Known adopters include Fastly (edge compute), various blockchain/smart-contract runtimes, and open source game/audio tooling. npm package downloads provide a quantifiable signal not captured here, but public evidence of real-world use is present and verifiable beyond star counts.

Code analysis
Architecture

Appears to be a self-hosted compiler written in AssemblyScript/TypeScript itself, using Binaryen as the backend for Wasm optimization and code generation. Likely includes a custom type checker and AST pipeline tailored to its strict TypeScript subset, plus a garbage-collected runtime bundled into emitted Wasm modules.

Tests

A dedicated CI workflow labeled 'test' is visible in the README badges and a 'Test instructions' link is provided in the repo. Coverage extent is not documented in the README excerpt, but automated testing is clearly present.

Maintenance

Last push was June 13, 2026 — approximately 13 days before the evaluation date. This indicates active, ongoing development. The project has separate CI workflows for testing and publishing, an active Discord, and an OpenCollective sponsorship page, all suggesting sustained maintainer engagement rather than passive maintenance.

Honest verdict

ADOPT IF: you are a TypeScript/JavaScript developer who needs to produce WebAssembly modules, want npm-native tooling, and can accept a strict subset of TypeScript semantics (no full TS compatibility). AVOID IF: you need to compile existing TypeScript or JavaScript code directly, require full TypeScript feature parity, or need the absolute maximum Wasm performance — Rust/C++ toolchains will outperform it in those cases. MONITOR IF: you are evaluating Wasm tooling for edge compute or blockchain use cases where the JS ecosystem fit matters more than raw performance headroom.

Independent dimensions

Mainstream potential

4/10

Technical importance

8/10

Adoption evidence

6/10

Risks
  • AssemblyScript is a strict subset of TypeScript, not a superset — existing TS codebases generally cannot be compiled directly, which limits its 'migration path' appeal.
  • Rust/wasm-pack ecosystem has grown significantly and captures many performance-first Wasm use cases, potentially squeezing AssemblyScript's addressable audience over time.
  • Core maintainer bandwidth appears limited; the project relies on OpenCollective donations and volunteer contributors, making sustained deep development uncertain.
  • The project is pre-1.0 (versioning signals ongoing API evolution), meaning downstream code may face breaking changes across compiler versions.
  • WebAssembly's own evolution (GC proposal, component model) may require significant compiler updates; keeping pace with fast-moving Wasm standards is an ongoing resource burden.
Prediction

AssemblyScript will likely maintain its niche as the preferred Wasm compilation path for TypeScript-first teams, particularly in edge compute and blockchain runtimes, but is unlikely to displace Rust-based Wasm tooling for performance-critical production workloads.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

WebAssembly
86.1%
TypeScript
12.4%
JavaScript
1.5%
HTML
0%

Information

Language
WebAssembly
License
Apache-2.0
Last updated
1w ago
Created
107mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

WebAssembly

WebAssembly/binaryen

Binaryen is a compiler infrastructure library and toolchain for WebAssembly,...

8.5k WebAssembly Dev Tools
aduros

aduros/wasm4

WASM-4 is a fantasy console framework for building retro games using...

1.5k TypeScript Gaming
r-wasm

r-wasm/webr

WebR compiles the statistical language R to WebAssembly for execution in web...

1.1k TypeScript Science
rescript-lang

rescript-lang/rescript

ReScript is a statically typed language that compiles to JavaScript, targeting...

7.4k ReScript Web Dev
emscripten-core

emscripten-core/emscripten

Emscripten is an LLVM-to-WebAssembly compiler that transpiles C and C++ code to...

27.5k C++ Web Dev
vs. alternatives
Emscripten

Emscripten compiles C/C++ to Wasm and is more mature with broader language support. AssemblyScript targets TypeScript developers who lack C/C++ experience; it produces cleaner Wasm output for its use cases but cannot compile arbitrary existing C/C++ codebases.

wasm-pack (Rust)

Rust via wasm-pack is the dominant high-performance Wasm path and offers better memory safety guarantees and ecosystem maturity. AssemblyScript trades some performance ceiling and safety for significantly lower learning curve for JS/TS developers.

WebAssembly/Binaryen

Binaryen is AssemblyScript's own backend optimizer, not a competitor — it is a dependency. However, developers writing raw Wasm or using Binaryen's wasm2js directly are a different, lower-level audience.

ReScript

ReScript compiles to JavaScript, not WebAssembly. Both target TypeScript-adjacent developers wanting typed compilation, but they solve different output targets and runtime environments entirely.

TinyGo

TinyGo compiles Go to Wasm and targets Go developers. Similar positioning to AssemblyScript (familiar language for Wasm), but serves a different developer population with different stdlib trade-offs.