Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Architecture decision records

Durable decisions for Echo. Each ADR records context, decision, and consequences. Prefer short ADRs over essays.

Language surface decisions are intentionally sparse after the design reset. Prefer writing evolving rules in docs/syntax.md / docs/lexer.md until a choice must stick forever—then add an ADR.

Index

Compiler and platform (in force)

ADR Title
0001 Shared compiler pipeline
0002 LLVM-only execution backend
0003 AST is source-shaped
0004 Rust runtime owns executable semantics
0005 Structured diagnostics are a shared contract
0006 Compilation graph is closed
0007 docs/ vs www/ ownership
0008 Standalone language, not PHP superset
0009 Language features land as full vertical slices
0010 Platform baseline
0011 Chumsky for parsing
0012 Analysis product and shared pipeline library
0013 Tasks + event loop via + / - leaders (not std/task)
0014 Modules / paths / optional xo.toml / user .xo package cache
0015 Echo 2026 edition + canonical public Language Spec
0016 Scope-owned memory: promote / demote / release on scope exit
0018 Static AOT + scratch OCI packaging

Language surface

ADR Title
0013 Task spawn/join leaders + runtime event loop
0014 Modules / packages / paths / $XO_HOME/packages
0015 Echo 2026 edition + canonical public Language Spec
0016 Scope-owned memory (deterministic disposal)
0018 Static AOT + scratch OCI packaging

When to write an ADR

  • The choice is hard to reverse or expensive to re-argue.
  • Two reasonable alternatives existed and one was selected.
  • A product or architecture boundary must stay stable across many PRs.

Do not ADR routine syntax experiments while still exploring. Put those in syntax.md and the roadmap session log first.