iter 22b.4a.6: spec + DESIGN amendments — 22b.4 split, terminology fix, '__' separator, forall-constraints gap

This commit is contained in:
2026-05-09 22:28:17 +02:00
parent 9584d1dada
commit 0709e319ab
2 changed files with 91 additions and 1 deletions
+8 -1
View File
@@ -1604,7 +1604,14 @@ with a call to a synthesised monomorphic `FnDef`. For each unique
After this pass, the IR contains no class machinery — only ordinary
monomorphic functions and direct calls. Codegen sees no difference
between a hand-written `show_int` and a synthesised `show@Int`.
between a hand-written `show_int` and a synthesised `show__Int`.
The separator is `__` rather than `#` or `@` because `#` and `@`
are invalid in LLVM IR global identifiers (the IR verifier rejects
them inside `@ail_<module>_<def>` mangled names). `__` is legal in
both LLVM IR and the C ABI used by the runtime glue, and parses
unambiguously into `<method>__<type-surface-name>` because neither
component contains `__` by project convention.
**No runtime dispatch, no dictionary passing.** The monomorphisation
pass is the ONLY mechanism for class-method calls. A call that