Architecture Decision Records
Each ADR records one decision: context, decision, alternatives, consequences. Accepted ADRs are immutable; a superseding ADR links back.
| ADR | Title | Status |
|---|---|---|
| 0001 | Compile to Go source through go/ast |
Accepted |
| 0002 | Compiler in Go; dependencies | Accepted |
| 0003 | Go type information via go/packages |
Accepted |
| 0004 | Lyth checker plus go/types validation |
Accepted |
| 0005 | Exact source maps plus column-less //line |
Accepted |
| 0006 | Overlay builds; in-tree generation on request | Accepted |
| 0007 | val/var and value immutability |
Superseded for locals by 0031 |
| 0008 | Error handling: throws, ?, catch, throw |
Accepted |
| 0009 | Nullability with platform types and boxed optionals | Accepted (smart casts amended by 0031) |
| 0010 | Verbatim Go names; pub and capitalization |
Superseded by 0022 |
| 0011 | Type syntax: generics-style collections, loose ? |
Accepted (List<T> superseded by 0023; other type spellings by 0031) |
| 0012 | Features considered and rejected | Accepted (extended by 0031, which adopts :=) |
| 0013 | Public fields by default; automatic json tags |
Amended by 0022 |
| 0014 | Tests are Go tests (lyth test) |
Accepted |
| 0015 | Backend services use Go libraries directly | Accepted |
| 0016 | Type tests are type assertions, with smart casts | Accepted (smart casts amended by 0031) |
| 0017 | Nullable values may be passed to Go APIs | Accepted (refines 0009) |
| 0018 | Typed catch clauses match with errors.AsType |
Accepted (extends 0008) |
| 0019 | Named and default arguments for Lyth functions | Accepted |
| 0020 | Declared conformance: struct T : I |
Accepted |
| 0021 | Inferred results for private expression bodies; pass-through return |
Accepted (refines 0008) |
| 0022 | Capitalization is visibility; Lyth names are Go names | Accepted (supersedes 0010) |
| 0023 | Slice types are spelled []T |
Accepted (amended by 0031) |
| 0024 | Channel operations are methods; select |
Accepted (types amended by 0031) |
| 0025 | Enums and sealed interfaces | Accepted |
| 0026 | Null converts to a nil interface | Accepted |
| 0027 | Only throws and Go callbacks make a lambda fallible |
Accepted (refines 0008) |
| 0028 | Generic declarations are Go generics | Accepted (spelling amended by 0031) |
| 0029 | Extension functions are Go functions called like methods | Accepted (spelling amended by 0031) |
| 0030 | The standard library is compiled with the program | Accepted |
| 0031 | Go’s spelling for what Go already has: func, :=, Go types, [T], headers, self |
Accepted (supersedes 0007 for locals and parts of 0011; amends 0009, 0012, 0016, 0023, 0024, 0028, 0029) |
| 0032 | Go’s typed literals for slices, arrays, and maps | Accepted (extends 0031) |