Skip to content

Self-Hosting: Building the Ashes Compiler in Ashes

CapabilityComplete
Unsigned integer support (u8, u16, u32, u64)Yes
Byte type (u8) and byte literalsYes
Bitwise operators (&, |, ^, <<, >>, ~)Yes
Numeric text conversions (parseInt, parseFloat, fromInt, fromFloat, toHex)Yes
FFI surface (external functions/types, pointer signatures, symbol@library imports)Yes
Immutable Bytes type with indexed access and append helpersYes
Little-endian byte encode/decode helpers (u16/u32/u64)Yes
Binary file output (Ashes.IO.File.writeBytes)Yes
String helper module (substring, length, indexOf, startsWith, contains, split, trim, char predicates)Yes
Persistent immutable map (Ashes.Collection.Map)Yes
Persistent immutable array (Ashes.Collection.Array)Yes
Records and record-update syntaxYes
User-written type annotationsYes
Project/module compilation support across multiple filesYes
Catchable error propagation for compile pipeline flowsYes
Memory-management hardening (grow-on-demand arena + scope reclamation)Yes
Large-ADT exhaustiveness/performance hardeningYes
JSON parsing/serialization support for ashes.json and JSON-RPC (CLI/LSP/DAP)Yes
Stdio JSON-RPC framing utilities (Content-Length read/write over byte streams) for LSP/DAPYes
Interactive subprocess control with piped stdin/stdout/stderr, async reads, and request timeouts (DAP debugger backends)Yes
Regex utilities/module for protocol and tooling text parsing (import/project/LSP/DAP parsing paths)Yes