Roadmap
0.4: language
- return slices derived from parameters (safe, since they point into caller memory), so helpers like header lookups can return a
str - arrays of structs and other element types (
[N]T) - struct literals
for loops over ranges
0.5: memory
- region/arena allocation (
region r { ... }) on top of mmap, freed in one go - linear types for file descriptors: a socket must be closed exactly once
- reuse stack slots once no slice refers to them (needs slice lifetime tracking)
- a clean message on stack exhaustion (alternate signal stack)
0.6: server
- epoll event loop with a fixed-size connection table, compared against forked workers using
make bench - request headers and query strings for handlers,
sendfile for static files
0.7: HTTPS
- SHA-256, HMAC, HKDF, X25519, ChaCha20-Poly1305, Ed25519, all in lpp and tested against RFC vectors
secret type qualifier enforcing constant-time code- TLS 1.3 server on
https://localhost:8001
Performance work (measure first with make bench)
- skip compilation on a cache hit (key from compiler build plus every imported source)
- register allocation, constant folding, removing bounds checks only where provably safe
- fewer compiler allocations (interned symbols, moved tokens)
Later
- self-hosting compiler
- aarch64 backend