Porffor goes from pre-alpha to alpha on August 11th! There will be a launch and meetup in-person in San Francisco at PlanetScale's HQ! Expect a talk, some live demos, and more. RSVP here!
Here are the headlines:
- Self-hosted. Porffor releases are now Porffor compiled with itself. Not only is this a major compiler milestone generally, it is also a great dogfooding opportunity. I found and fixed at least ten bugs getting it on par. It also lets us ship <5MB release binaries for the full compiler!
- Complete rewrite. The core of Porffor has been entirely rewritten. Instead of JS -> Wasm and optionally Wasm -> C, we now do JS -> our own IR -> C, always. Wasm is now left to the C compiler instead. This was done primarily because our own Wasm output was slower than compiling our C to Wasm and it was limiting Porffor's acceleration. C output is now ~5x smaller/more efficient! This improves performance plus decreases memory usage and binary size. Compile times are also over twice as fast as before.
- Garbage collection. Garbage collection is here, and on by default, always! Since my last post on the beginnings of a GC, we actually now have a mature (not intentionally small/simple) GC. This also stops out of memory errors which were breaking a lot of things previously.
- Conformance. Porffor now fully supports closures and async/await, plus a lot of minor conformance fixes.
- HTTP server. Porffor can now host a HTTP server, efficiently. Comparing to Node/Bun/Deno, an unrealistic hello world server uses >10x less memory and beats all three on performance for throughput and latency.
- There are some other features too which I am not sure will make the release yet (
did someone say concurrency?), so stay tuned for the release!