Skip to content

Reference overview

The reference docs are organised around what you're looking up:

Language

  • Grammar (EBNF) — every production in ISO/IEC 14977 EBNF, the spec implemented by the hand-written parser.
  • Types — the integer / float / bool / string / slice / function-type hierarchy.
  • Type inference (HM-lite) — Hindley-Milner restricted to declared polymorphism on @fn[T] / @type[T], no let-generalisation.
  • Diagnostics — error code catalogue, caret rendering rules, hint format.

Strata

  • Strata system — the data-driven dispatch model: how @stratum registrations turn into pipeline-phase handlers.
  • Strata authoring — step-by-step walkthrough for adding a new stratum.
  • Compiler API — the &Compiler::* surface that handlers call: register::*, on::*, ir::*, module::*, diag::*, ast::*, type::*.

CaaS — the library API

  • Compiler-as-a-Service — Roslyn-style library surface; how to embed Silicon in your own tooling.
  • API surface — generated from etc/sigil.api.md via api-extractor; every @public export with its signature.
  • API boundaries — which subsystems can import which; the rule book for internal vs public.

Stability

See Stability for what's promised stable, what's unstable, what will not be added, and the per-surface versioning rules.