CanadaHonk/porffor

An ahead-of-time JavaScript compiler

JavaScript

5,194

3,122 commits

updated Sep 17, 2026

See the code

README

Porffor  (poor-for)

An ahead-of-time JavaScript compiler

curl -fsSL https://porffor.dev/install.sh | sh

$ cat hello.js
console.log('hello world!');
$ porf hello.js -o hello
[105ms] compiled hello.js -> hello (33.7KB)
$ ./hello
hello world!

Porffor is a 100% AOT compiled JS engine/runtime. There is nothing interpreted or compiled just-in-time. Porffor compiles JS to C (with an IR inbetween). We chose this approach because:

  • it can be used essentially everywhere
  • is relatively easy to emit and compile
  • it avoids directly depending on a backend like LLVM or Cranelift
  • is easily modifiable post-compile for diverse environments

Versioning

Porffor releases use a single increasing release number. Releases are automatically published every git push after CI testing.

Name

purple in Welsh is porffor. Why purple?

  • No other JS engine is purple colored
  • Purple is pretty cool
  • Purple apparently represents "ambition", which accurately describes this project :)

Contributors

CanadaHonk

2,989 commits

BobVarioa

54 commits

JakeChampion

23 commits

CanadaHonk/porffor

An ahead-of-time JavaScript compiler

JavaScript

5,194

3,122 commits

updated Sep 17, 2026

See the code

README

Porffor  (poor-for)

An ahead-of-time JavaScript compiler

curl -fsSL https://porffor.dev/install.sh | sh

$ cat hello.js
console.log('hello world!');
$ porf hello.js -o hello
[105ms] compiled hello.js -> hello (33.7KB)
$ ./hello
hello world!

Porffor is a 100% AOT compiled JS engine/runtime. There is nothing interpreted or compiled just-in-time. Porffor compiles JS to C (with an IR inbetween). We chose this approach because:

  • it can be used essentially everywhere
  • is relatively easy to emit and compile
  • it avoids directly depending on a backend like LLVM or Cranelift
  • is easily modifiable post-compile for diverse environments

Versioning

Porffor releases use a single increasing release number. Releases are automatically published every git push after CI testing.

Name

purple in Welsh is porffor. Why purple?

  • No other JS engine is purple colored
  • Purple is pretty cool
  • Purple apparently represents "ambition", which accurately describes this project :)

See what people are saying

Contributors

CanadaHonk

2,989 commits

BobVarioa

54 commits

JakeChampion

23 commits

Languages

JavaScript

70.5%

TypeScript

29.5%