103 lines
3.7 KiB
Markdown
103 lines
3.7 KiB
Markdown
# 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
|
|
|
|
1. Reconfirm frontend-only scope boundary for agenda 13.
|
|
2. Close minimum preconditions before frontend lowering starts.
|
|
3. Close normative status of frontend IR shape versus obligations.
|
|
4. Close minimum preserved semantic facts for v1.
|
|
5. Record construct-specific gaps for Workshops 2 to 4.
|
|
|
|
## Decisions To Produce
|
|
|
|
1. Normative status of frontend IR in v1.
|
|
2. Required input state before frontend lowering begins.
|
|
3. Minimum preserved semantic facts at frontend-lowering boundary.
|
|
4. 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
|
|
|
|
1. Which facts are mandatory in v1 `IRFunction` versus optional?
|
|
2. Is obligations-only precise enough for conformance tests?
|
|
3. Which rejected constructs must already have fixed diagnostic codes?
|
|
4. What is the exact pass/fail boundary between parser/linking and frontend lowering errors?
|
|
|
|
## Expected Outputs
|
|
|
|
1. a decision note on frontend IR normative status,
|
|
2. a decision note on lowering preconditions,
|
|
3. and a checklist of preserved frontend-lowering obligations.
|
|
|
|
## Decision Outcome (2026-03-05)
|
|
|
|
1. `13` remains normative by preserved obligations, not by one mandatory in-memory IR shape.
|
|
2. Frontend lowering starts only after parse/linking completion and required prior diagnostics.
|
|
3. Minimum v1 frontend IR facts are mandatory: callable identity, arity, declared return surface, and source anchor (`file + span`).
|
|
4. Unsupported frontend-lowering forms must fail deterministically with stable diagnostics.
|
|
5. Scope boundary confirmed: `IRBackend` is the first lowering (frontend responsibility); `IRVM` is a later lowering (backend responsibility) and is out of `13` agenda scope.
|
|
6. Evidence baseline confirmed for now: Gate U only (`lexer/parser/AST/IRBackend/diagnostics`), without S-U requirement at this stage.
|
|
7. Conformance-valid IR claim rule: only when the full PBS spec surface is implemented at `IRBackend` level.
|
|
|
|
## Explicit Deferrals For Workshop 2
|
|
|
|
- expression/control-flow construct mapping details,
|
|
- and propagation construct obligations.
|
|
|
|
## Inputs
|
|
|
|
- `docs/pbs/specs/4. Static Semantics Specification.md`
|
|
- `docs/pbs/specs/12. Diagnostics Specification.md`
|
|
- `docs/pbs/specs/13. Lowering IRBackend Specification.md`
|
|
- `docs/general/specs/14. Name Resolution and Module Linking Specification.md`
|
|
- `docs/pbs/agendas/13. IR and Lowering Agenda.md`
|