Show HN: Website is served from a 200KB binary(200kb.freelang.dev) |
Show HN: Website is served from a 200KB binary(200kb.freelang.dev) |
> macOS emits x86-64 AT&T assembly
Seems like an obvious issue given that Apple makes no x86 machines, hasn't for three years, and plans to sunset Rosetta 2 in one year. The whole conceit of this "Freelang" project is that it has no "magic", and then incredibly just a bit further down the README states it has a stop-the-world mark/sweep garbage collector. That is quite magical, no? After reading the GitHub I confess I don't even understand what "magic" the authors are even complaining about. Honestly it seems like it's basically the same concept as Go, vibe-coded, with more pretense, worse syntax, and without the benefit of Google engineering.
You could implement the same functionality in Rust, using a custom target JSON without any libstd/libc. I've done so. It just requires that you accept some limitations and build your own abstractions around unsafe syscalls.
It's a blocking collection but not 'stop the world' (no world, all separate processes). The pause scales about linearly with heap size, as a full mark-and-sweep should:
┌──────────────────┬─────────────┐
│ heap │ worst pause │
├──────────────────┼─────────────┤
│ 2MB │ 0.10 ms │
├──────────────────┼─────────────┤
│ 8MB (production) │ 0.66 ms │
├──────────────────┼─────────────┤
│ 32MB │ 2.47 ms │
└──────────────────┴─────────────┘TLS is CloudFlare which also absorbs a little bit of load in case anyone tries to destroy it.