Architecture Decision Records
Architecture Decision Records (ADRs) capture the significant design decisions behind Gruel — the context that motivated them, what was chosen, and the trade-offs involved. They are the historical record of "why did we do it this way?"
Individual ADRs are listed below. For the broader process (when to write one, lifecycle, tags), see the ADR README on GitHub.
Chapters
- ADR-0001: The Never Type
- ADR-0002: Single-Pass Bidirectional Type Checking
- ADR-0003: Constant Expression Evaluation
- ADR-0004: Enum Types
- ADR-0005: Preview Features
- ADR-0006: Unified Zola Website
- ADR-0007: Hindley-Milner Type Inference
- ADR-0008: Affine Types and Mutable Value Semantics
- ADR-0009: Struct Methods
- ADR-0010: Destructors
- ADR-0011: Runtime Heap
- ADR-0012: Compiler Optimization Passes
- ADR-0013: Borrowing Modes
- ADR-0014: Mutable Strings
- ADR-0015: Test Suite Optimization
- ADR-0016: Preview Feature Infrastructure
- ADR-0017: Emitter Instruction Abstraction
- ADR-0018: Tracing Infrastructure
- ADR-0019: Compiler Performance Dashboard
- ADR-0020: Built-in Types as Synthetic Structs
- ADR-0021: Standard Input
- ADR-0022: Integer Parsing
- ADR-0023: Multi-File Compilation
- ADR-0024: Type Intern Pool - Revised Approach
- ADR-0024: Type Intern Pool
- ADR-0025: Compile-Time Execution (comptime)
- ADR-0026: Module System
- ADR-0027: Random Number Intrinsics
- ADR-0028: Unchecked Code and Raw Pointers
- ADR-0029: Anonymous Struct Methods (Zig-Style)
- ADR-0030: Place Expressions for Memory Locations
- ADR-0031: Robust Performance Testing Infrastructure
- ADR-0032: Data Structure Selection for Small Collections
- ADR-0033: LLVM Backend and Comptime Interpreter
- ADR-0034: Replace CFG-Level Optimization Passes With LLVM Equivalents
- ADR-0035: Heap Allocator - Use libc malloc
- ADR-0036: Struct Destructuring and Partial Move Ban
- ADR-0037: Enum Data Variants and Full Pattern Matching
- ADR-0038: Enum Struct Variants (Named-Field Enum Variants)
- ADR-0039: Anonymous Enum Types
- ADR-0040: Comptime Interpreter Expansion and Differential Fuzzing
- ADR-0041: For-Each Loops
- ADR-0042: Comptime Metaprogramming — Diagnostics, Strings, Reflection, and comptime_unroll For
- ADR-0043: Extended Benchmark Infrastructure — Comptime, Opt Levels, and Runtime
- ADR-0044: LLVM Codegen Quality Improvements and Build Profiles
- ADR-0045: Consistent String Interface and Comptime String Materialization
- ADR-0046: Extended Numeric Types (isize/usize, f16/f32/f64, comptime_int)
- ADR-0047: Unify @dbg and @compileLog
- ADR-0048: First-Class Tuples
- ADR-0049: Nested Destructuring and Pattern Matching
- ADR-0050: Centralized Intrinsics Registry