Pimp My IDE / Garage dispatch
Back to garage
September 27, 2026 | TypeScript / native builds / runtime proof

A native binary is a new deployment contract.

Compiling TypeScript into an executable can remove Node from the target host. It cannot make unsupported APIs, hidden dynamic code, or missing system libraries disappear.

The take. Treat TypeScript-to-native compilation as a runtime migration. Measure static coverage, inspect the artifact, map external dependencies, and replay the real workload before ejecting Node.

The compiler has more than one exit.

scriptc 0.1.7 accepts TypeScript or JavaScript and can emit typed intermediate representation, readable C, LLVM text, assembly, object files, executables, and WebAssembly modules. It uses the TypeScript compiler for parsing and type checking.[1]

The project calls itself experimental. Its static builds carry a small native runtime but no Node or JavaScript engine. A separate dynamic mode embeds quickjs-ng for code that cannot stay fully static. Those modes create different binaries and different review work.

Removing Node from the host does not remove runtime behavior. It moves that behavior into a compiler, native runtime, linked libraries, and build receipt.

Coverage is the first gate.

The project's coverage command reports which statements compile statically and why the rest do not. That is more useful than discovering a boundary after packaging. Unsupported code should become a named diagnostic or an explicit dynamic island, not an accidental fallback.

The current package requires Node 24 or newer to run the compiler. Source-only output needs Node. Executable builds can also need a platform linker driver and SDK or sysroot. The produced executable does not require Node, according to the project README.[1]

The artifact exists, and the lane is narrow.

The garage fetched the published scriptc@0.1.7 package on September 27. Its package metadata named Node 24 as the minimum. Running the compiler under Node 24 reported version 0.1.7. A two-statement TypeScript sample passed the coverage command at 100 percent static and emitted a 2,088-byte C file.[3]

That smoke check proves the package, command, static analyzer, and C output worked for one tiny program. It does not prove executable linking, Node API coverage, WebAssembly behavior, or production compatibility.

Test the runtime you are replacing.

Pin the compiler version and Node version used at build time. Record static and dynamic coverage. Inspect the resulting file type, linked libraries, size, and symbols. Then run the same inputs, error cases, signals, files, network calls, and exit codes against the old and new artifacts.

The ejection bench below writes that test card. Four closed clamps mean every section was selected. The status stays at template-ready because no application, artifact, or replay result is attached.

Interactive makeover / runtime migration

Runtime ejection bench

Traditional purpose replaced: compile once and declare the runtime gone. Better version: choose static or dynamic posture, close four evidence clamps, and copy a migration card with every result field left open.

Set the build posture

The rail reaches the packet only through a contiguous run of selected clamps.

Runtime posture
0/4Route broken at Coverage. No migration evidence recorded.
Ejection template0 SECTIONS SELECTED

Copy the migration card

Selection adds required fields. It does not fill them or prove the new artifact matches the old runtime.

What completion means. Four review sections are present. Compiler output, linked dependencies, replay results, and rollback evidence still need real values.

Sources and limits

Open the source log
  1. vercel-labs/scriptc repository and README, read September 27, 2026. It documents output kinds, static and dynamic modes, build requirements, supported targets, and experimental status.
  2. scriptc v0.1.7 release, published and read September 27, 2026. It provides the release tag and downloadable assets used to anchor the version discussed here.
  3. npm package scriptc@0.1.7, fetched September 27, 2026. The garage installed the package in a temporary directory, ran its CLI with Node 24, checked a two-statement sample, and emitted C. The temporary files were removed after the smoke check.
  4. GitHub Trending, read September 27, 2026. It surfaced the project. Trending rank and star count are attention signals, not proof of compatibility.

Source boundary. Capability and support claims come from the project. The garage smoke check covers one tiny source artifact. The runtime migration checklist is editorial guidance, not a claim that scriptc is ready for a specific production system.