Sigil Language Design Articles
Articles documenting the evolution and design decisions of the Sigil programming language.
The published article list below is generated from the article markdown files themselves, so this page stays in sync with the repo without maintaining a second hand-written index.
About These Articles
These articles document real design decisions made during Sigil's development. They serve as:
- Design rationale - Why we made specific choices
- Educational material - Teaching machine-first language design
- Historical record - Evolution of the language
- Philosophy guide - Core principles applied in practice
Each article is written at the time of the design decision, capturing the reasoning and trade-offs in real-time.
Writing Style
Articles should read like technical blog posts, not social media posts.
Prefer:
- clear problem statements
- direct explanation of the decision
- concrete technical tradeoffs
- normal paragraph structure
Avoid:
- "LinkedIn broetry" paragraphing
- sloganized binaries
- hype-heavy hooks
- dramatic one-line emphasis in place of explanation
Latest Articles
- Machine-First Debugging in Sigil
- Canonical Helper Surfaces in Sigil
- Exhaustive match and Proof-Rich Compile Errors
- Centralized Project Types and Constrained Type Meanings
- Worlds, Not Mocks
- Named Concurrent Regions in Sigil
- Canonical List Processing in Sigil
- One Textual Representation Per Program
- Why Sigil Uses Root Sigils and =>
- Topology Says What, Config Says How
- Why Sigil Inlines Single-Use Pure Bindings
- Topology Is Runtime Truth
- Why Sigil Switched Primitive Types
- Exact Records and Trusted Boundaries
- One Canonical Naming System
- Core vs Stdlib Is About Canonical Ownership, Not Purity
- Why Sigil Has a Core Prelude
- Why Sigil Uses Explicit Generics Without Hindley-Milner
- Async Without Await in Sigil
- Why Sigil Bans Shadowing
- Why Sigil Uses and and or
- Why Sigil Uses match
- Why Sigil Uses true and false
- Canonical Type Equality
- Canonical Test Location Enforcement
- Why Sigil Enforces Alphabetical Parameter Order
- Unifying Canonical Validation
- Canonical Filename Validation
- Rewriting the Sigil Compiler in Rust
- Typed FFI and the Declaration Ordering Change
- Empty List Type Inference in Pattern Matching
- Stdlib Tests and Claude Hooks
- Canonical Declaration Ordering
- Pattern Guards and Sigil's Website Parser
- Building Sigil's Static Site Generator with the Standard Library
- Why Sigil Uses the # Length Operator