3.7 KiB
3.7 KiB
PBS Frontend IR and Lowering Workshop 1
Status: Closed (2026-03-05)
Purpose
Run the first focused discussion for 13. Lowering IRBackend Specification.md in frontend scope:
- what frontend lowering consumes,
- what frontend lowering must produce,
- and whether one canonical frontend IR shape is required.
Why This Slice First
Every later workshop depends on a stable contract for:
- preconditions before lowering,
- and which frontend IR obligations are normative.
Proposed Meeting Order
- Reconfirm frontend-only scope boundary for agenda 13.
- Close minimum preconditions before frontend lowering starts.
- Close normative status of frontend IR shape versus obligations.
- Close minimum preserved semantic facts for v1.
- Record construct-specific gaps for Workshops 2 to 4.
Decisions To Produce
- Normative status of frontend IR in v1.
- Required input state before frontend lowering begins.
- Minimum preserved semantic facts at frontend-lowering boundary.
- Minimum deterministic rejection policy for unsupported lowering inputs.
Candidate Decisions
1. Standardize Preserved Obligations, Not One In-Memory Class Graph
Candidate direction:
- v1 standardizes preserved frontend obligations and observable outcomes,
- not one mandatory Java object model.
2. Frontend Lowering Requires Fully Parsed and Linked Source
Candidate direction:
- parser and linking outcomes are already complete,
- type/name diagnostics already produced where required,
- and lowering does not invent unresolved semantic answers.
3. Minimum Preserved Facts For V1 Frontend IR
Candidate direction:
- callable identity,
- parameter arity,
- declared return surface,
- and source attribution anchor (
file + span) for diagnostics.
4. Unsupported Constructs Must Fail Deterministically
Candidate direction:
- constructs outside v1 frontend-lowering slice fail with stable diagnostics,
- never silently degrade into partial/implicit behavior.
Questions To Resolve In The Room
- Which facts are mandatory in v1
IRFunctionversus optional? - Is obligations-only precise enough for conformance tests?
- Which rejected constructs must already have fixed diagnostic codes?
- What is the exact pass/fail boundary between parser/linking and frontend lowering errors?
Expected Outputs
- a decision note on frontend IR normative status,
- a decision note on lowering preconditions,
- and a checklist of preserved frontend-lowering obligations.
Decision Outcome (2026-03-05)
13remains normative by preserved obligations, not by one mandatory in-memory IR shape.- Frontend lowering starts only after parse/linking completion and required prior diagnostics.
- Minimum v1 frontend IR facts are mandatory: callable identity, arity, declared return surface, and source anchor (
file + span). - Unsupported frontend-lowering forms must fail deterministically with stable diagnostics.
- Scope boundary confirmed:
IRBackendis the first lowering (frontend responsibility);IRVMis a later lowering (backend responsibility) and is out of13agenda scope. - Evidence baseline confirmed for now: Gate U only (
lexer/parser/AST/IRBackend/diagnostics), without S-U requirement at this stage. - Conformance-valid IR claim rule: only when the full PBS spec surface is implemented at
IRBackendlevel.
Explicit Deferrals For Workshop 2
- expression/control-flow construct mapping details,
- and propagation construct obligations.
Inputs
docs/pbs/specs/4. Static Semantics Specification.mddocs/pbs/specs/12. Diagnostics Specification.mddocs/pbs/specs/13. Lowering IRBackend Specification.mddocs/general/specs/14. Name Resolution and Module Linking Specification.mddocs/pbs/agendas/13. IR and Lowering Agenda.md