Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ jobs:
- run: uv run --no-sync python runtime/check_classes.py --target browser --corpus tests/fixtures/interpreter/generators.json --stepped --report build/generators-browser-stepped-report.json
- run: uv run --no-sync python runtime/check_classes.py --target browser --corpus tests/fixtures/interpreter/generators.json --profile core-source/1 --report build/generators-core-browser-report.json
- run: uv run --no-sync python runtime/check_classes.py --target browser --corpus tests/fixtures/interpreter/generators.json --profile core-source/1 --stepped --report build/generators-core-browser-stepped-report.json
- run: uv run --no-sync python runtime/check_classes.py --target browser --corpus tests/fixtures/interpreter/construction.json --report build/construction-browser-report.json
- run: uv run --no-sync python runtime/check_classes.py --target browser --corpus tests/fixtures/interpreter/construction.json --stepped --report build/construction-browser-stepped-report.json
- run: uv run --no-sync python runtime/check_classes.py --target browser --corpus tests/fixtures/interpreter/object-protocols.json --report build/object-protocols-browser-report.json
- run: uv run --no-sync python runtime/check_classes.py --target browser --corpus tests/fixtures/interpreter/object-protocols.json --stepped --report build/object-protocols-browser-stepped-report.json
- run: uv run --no-sync python runtime/check_classes.py --target browser --report build/classes-browser-report.json
Expand Down Expand Up @@ -165,6 +167,7 @@ jobs:
- run: node --test runtime/syntax.test.mjs
- run: node --test runtime/function-binding.test.mjs
- run: node --test runtime/object-protocols.test.mjs
- run: node --test runtime/construction.test.mjs
- run: node --test runtime/generators.test.mjs
- run: node --test runtime/functions.test.mjs
- run: node --test runtime/execution.test.mjs
Expand Down Expand Up @@ -199,6 +202,8 @@ jobs:
- run: python runtime/check_classes.py --target node --corpus tests/fixtures/interpreter/generators.json --stepped --report build/generators-node-stepped-report.json
- run: python runtime/check_classes.py --target node --corpus tests/fixtures/interpreter/generators.json --profile core-source/1 --report build/generators-core-node-report.json
- run: python runtime/check_classes.py --target node --corpus tests/fixtures/interpreter/generators.json --profile core-source/1 --stepped --report build/generators-core-node-stepped-report.json
- run: python runtime/check_classes.py --target node --corpus tests/fixtures/interpreter/construction.json --report build/construction-node-report.json
- run: python runtime/check_classes.py --target node --corpus tests/fixtures/interpreter/construction.json --stepped --report build/construction-node-stepped-report.json
- run: python runtime/check_classes.py --target node --corpus tests/fixtures/interpreter/object-protocols.json --report build/object-protocols-node-report.json
- run: python runtime/check_classes.py --target node --corpus tests/fixtures/interpreter/object-protocols.json --stepped --report build/object-protocols-node-stepped-report.json
- run: python runtime/check_classes.py --target node --report build/classes-node-report.json
Expand Down
22 changes: 22 additions & 0 deletions IMPLEMENTATION_PLAN_INTERPRETER.md
Original file line number Diff line number Diff line change
Expand Up @@ -815,3 +815,25 @@ relations, metaclasses, builtin subclasses, custom attribute hooks, dynamic
source, comprehension assignment expressions and async remain separately gated.
The broader #120/#123 and #33/#34 milestones remain open; this checkpoint does
not select a publication, deployment, dependency or host capability.

### Construction and type checkpoint (2026-10-26)

The finite O3/O4/O5 [construction contract](docs/interpreter-construction.md)
adopts owned allocation/initialization, explicit and zero-argument super,
lexical class cells, canonical adopted types and tuple type relations.
Type-derived metaclasses support selection/conflicts, construction/call hooks,
descriptors, ordinary dictionary namespaces and class-cell propagation through
type.__new__. The additive class-meta opcode stays in explicit bytecode 5;
core-source/1 remains bytecode 4.

Independent Node/Chromium draining/stepped references, collection at instruction
boundaries, callback resource failures and offline source/Stop/Restart acceptance
are required. All eight existing composed resource observations remain unchanged.
The [construction console](examples/interpreter_construction.py) composes
metaclasses and super with suspended generators.

Builtin instance layouts, custom preparation/mappings, extra class keywords,
callable metaclass factories, additional metaclass special slots, broader
reflection, dynamic source and async remain separately tracked in #123/#34.
The parent milestones remain open. No publication, dependency, service or host
capability is selected by this construction checkpoint.
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -172,8 +172,12 @@ functions, yield-from delegation, next/send/throw/close and scoped list/dict/set
generator comprehensions in both profiles. [Object protocols](docs/interpreter-object-protocols.md)
add attribute reflection and forward/reflected/in-place arithmetic in the class
profile. Run `python -m examples.interpreter_generators`, adding `--core` for
generators without classes. Construction, richer reflection and async retain
separate contracts.
generators without classes. The finite [construction profile](docs/interpreter-construction.md)
adds owned __new__/__init__, super and lexical __class__ cells, type relations
and type-derived metaclasses with ordinary dictionary namespaces. Run
`python -m examples.interpreter_construction` for a console composing these
protocols with suspended generators. Builtin instance layouts, custom namespace
preparation, further reflection and async retain separate contracts.

The [continuing interpreter roadmap](docs/interpreter-roadmap.md) targets broad
Python 3.14+ compatibility through finite supported profiles. Execution ownership
Expand Down
22 changes: 22 additions & 0 deletions docs/interpreter-construction.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,25 @@ The semantic anchors are the Python 3.14
and [super builtin](https://docs.python.org/3.14/library/functions.html#super).
The pinned executable reference decides the finite cases when later patch-level
documentation differs.

## Accepted evidence

The 113-case matrix has 105 adopted comparisons and eight explicit future
refusals. Node and Chromium each pass draining and instruction-boundary execution:
452 observations, including 436 measured zero logical teardown records. Source,
corpus and driver hashes are checked against the retained reports. Dedicated
tests cover callback source frames, temporary metaclasses, missing/conflicting
class cells, notification destinations, suspended generators, every-instruction
collection, cancellation/close and real recursion/work/allocation failures.
All 385 Node tests pass, including the eight unchanged composed resource cases.

Installed offline console acceptance has 487 program comparisons, 44 acceptance
groups and 98 Stop/Restart cycles. New source composes construction, super,
metaclasses and generators after offline reload. Constructor/metaclass errors
retain their Python source diagnostics; custom preparation remains a refusal.
The waiting class-to-core update still removes class/library authority.

The [payload and source record](measurements/2026-10-26-construction.json)
contains all 38 file sizes and hashes for the 592,822-byte construction console,
including the receipt and deterministic compression observations. This is a
complete local payload measurement, with no timing, device or package claim.
6 changes: 4 additions & 2 deletions docs/interpreter-object-protocols.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,7 @@ outer-destination roots; logical teardown must be zero.

The generator console composes these protocols with suspended source functions
and comprehensions. Offline acceptance includes freshly entered source, callback
errors and Stop/Restart. INT-OBJECT-01 remains open for its construction, super,
type-relation, metaclass, builtin-subclass and broader reflection slices.
errors and Stop/Restart. The finite [construction, super, type-relation and
metaclass slices](interpreter-construction.md) are also adopted. INT-OBJECT-01
remains open for builtin instance layouts, additional metaclass protocols,
custom attribute hooks and broader reflection.
Loading
Loading