43 lines
1.6 KiB
Markdown
43 lines
1.6 KiB
Markdown
# Glagol Compiler Manifest: Principles for a Visible Typed Pipeline
|
|
|
|
Sanjin Gumbarevic<br>
|
|
hermeticum_lab@protonmail.com
|
|
|
|
> Make the tree visible.
|
|
|
|
Glagol (<span class="glagolitic">ⰃⰎⰀⰃⰑⰎ</span>) is the first compiler for Slovo. Its job is not merely to accept parenthesized text. Its job is to preserve Slovo's structure through parsing, checking, diagnostics, lowering, and executable output.
|
|
|
|
## Principles
|
|
|
|
- Slovo specifies first; Glagol implements second.
|
|
- Parse trees, ASTs, typed ASTs, and LLVM IR are separate compiler stages.
|
|
- LLVM emission starts from checked representation, not raw source forms.
|
|
- User-source errors produce diagnostics, not compiler panics.
|
|
- Formatter output, diagnostics, examples, tests, and docs are part of the
|
|
language contract.
|
|
- Native execution is a compiler target, but stable ABI promises require an
|
|
explicit future contract.
|
|
- Benchmarks are local evidence unless a release explicitly defines a broader
|
|
performance methodology.
|
|
|
|
## Support Rule
|
|
|
|
A source feature is supported only when Glagol can:
|
|
|
|
1. parse it
|
|
2. lower it
|
|
3. type-check it
|
|
4. format it when formatting applies
|
|
5. diagnose invalid forms structurally
|
|
6. emit valid LLVM or reject it before backend emission
|
|
7. cover it with automated tests and release documentation
|
|
|
|
Partial recognition is not support.
|
|
|
|
## Beta Rule
|
|
|
|
The first real beta compiler release is `1.0.0-beta`. It requires a matching
|
|
Slovo beta contract, conformance suite, stable diagnostics schema, stable
|
|
formatter behavior, stable package/manifest behavior, standard-library
|
|
compatibility rules, and release reviews with no blocking manifest drift.
|