Notable omissions
Snail-Core is deliberately smaller than its first plan. These parts were dropped because they would cost more than they give the programs Snail-Core runs today; each can return if a program needs it.
Cut from the plan
- The dependent elaborator. Generic code is served by Hindley–Milner
checking with typeclasses, effect rows and monomorphization. Normalization
by evaluation and implicit arguments would add type-level computation
no program uses. The implemented ownership subset assigns grade
1toOnceand concrete records containing it; it has no general dependent elaborator or grade-polymorphic containers. - Checked interfaces. Separate compilation hashes each library’s interface to decide what to rebuild, but stores none: the compiled compiler checks Siegework, the largest program, in a fraction of a second, so an interface file would add a format and its invalidation without a measurable gain. Wire schemas come from the checked program.
- The WGSL backend. The renderer’s shaders are WGSL text that shares no structs with Snail-Core code beyond fixed instance and material layouts. The runtime and graphics plan proposes shaders written as S-expressions.
- Actor destinations. Tasks schedule one-shot closures. Mailboxes, request/reply protocols and network transports are application concerns.
Simplifications made on the way
- Local bodies are sequential: a local function may call itself but not a later local definition.
- Only unannotated top-level functions are generalized; other definitions are monomorphic unless they have a signature.
- Effect labels take no type parameters, and operations are monomorphic.
- Classes have no superclasses and no higher-kinded parameters.
- Wire TypeIds are 32 bits, and every struct and enum value carries its case’s TypeId.
Some smaller features are planned but not yet implemented: complex numbers and mutable pairs in the dynamic Scheme libraries, mutually recursive local functions, superclasses, literals at a generic numeric type, and overflow-checked arithmetic. The language issue tracks these gaps.