Experimental AOT compiler · alpha

JavaScript.
Ahead of time.

Compile JavaScript and erasable TypeScript into configurable native programs.

measuringServer · assets excluded
Alert. Curious. Feed it a runtime bug.

Progress, not promises

The line so far.

Committed full-suite and benchmark results.

Test262 compatibility

Compiled/normal baseline, strict and sloppy combined. The scale is always 0–100%.

—latest passing
Exact weekly Test262 results
Date Pass Passed Failed Skipped Commit

JavaScript workload

Balanced core JavaScript across Maligator’s four production-native modes. Median fresh-process wall time; lower is better.

Starting nowclosed + compiled
Closed · compiled Open · compiled Closed · interpreted Open · interpreted
Exact JavaScript benchmark results and environment
Date Closed compiled Open compiled Closed interpreted Open interpreted Runs Target Commit

Compiling the compiler

Fresh-process median through C emission. Node.js runs the same prepared source as a reference; C compilation and linking are excluded.

Starting nowlower is better
Maligator nativeNode.js reference
Exact self-compile results and environment
Date Maligator Node.js Runs Environment Commit

The honest alpha

What it is.
What it isn’t.

Current capabilities and current limits.

It can do this.

  1. 01
    Produce native executables

    Compile JavaScript and erasable TypeScript into standalone programs.

  2. 02
    Shape the runtime per build

    Select eval, Realms, RegExp, Temporal, Intl, web, and curated Node.js APIs.

  3. 03
    Carry application assets

    Embed files or directories directly in the executable.

  4. 04
    Compile at runtime—when selected

    Eval-enabled builds embed the compiler; eval-free builds leave it out.

  5. 05
    Run most of Test262

    More than fifty thousand tests pass in the combined compiled baseline.

Not yet.

  1. 01
    Battle-tested software

    Real project use has only just started and is exposing rough edges.

  2. 02
    Drop-in Node.js compatibility

    The Node.js surface is intentionally curated, not complete.

  3. 03
    Uniformly competitive speed

    Some paths are quick; ordinary constructs can still be much slower.

  4. 04
    Broad release support

    Packages cover macOS and Linux on arm64 and x64; Windows and signed or notarized builds are not available yet.

Dogfooding

This page is the example.

This HTML is embedded in a native Linux executable and served from a Cloudflare Container.

website/server.mtssimplified
import { readFileSync } from "node:fs";

const html = readFileSync(
  mal.assets.materialize("site"),
  "utf8",
);

Mal.serve({
  port: Number(process.env.PORT ?? "3000"),
  fetch() {
    return new Response(html, {
      headers: { "Content-Type": "text/html; charset=utf-8" },
    });
  },
});
npm run site:build

Follow along

Releases, progress, and bugs.

Reply on Bluesky or X, or open an issue with something concrete.