Speak in meaning. Think beyond syntax. Built beyond language.

Contributing

The most valuable compiler fixes are general semantic fixes, not per-file exceptions.

Good contribution pattern

1. Reproduce a failing unit.
2. Identify the shared error family.
3. Prove the missing semantic information.
4. Implement a general resolver/lowering rule.
5. Keep ambiguous cases fail-closed.
6. Run the full unit corpus.
7. Compare ready/failed/timeout/object counts.

Examples of good fixes

  • preserving parameter binding types in exported Semantic source;
  • reconstructing a selector path from verified source/type information;
  • implementing switch/type-switch semantics in the native lowerer;
  • adding project-wide type layouts with ambiguity checks;
  • teaching the linker a real cross-unit semantic relocation.

Avoid

  • returning zero/default values just to get past a test;
  • treating unsupported nodes as no-ops;
  • selecting a struct field offset only because its name exists somewhere;
  • embedding a prebuilt compiler as the claimed selfhost result;
  • changing the stable worker orchestration unnecessarily while debugging backend semantics.

Regression discipline

A useful patch should be checked in two ways:

  1. targeted regression — the failing unit gets past the old error;
  2. full corpus regression — previously successful object units stay successful.

The object count alone is not sufficient: a patch that produces more files by miscompiling semantics is a regression, not progress.