Repository navigation
Conversation
added 5 commits
October 30, 2026 14:07
…and-side and keeps clean modules native A program with a fenced unit no longer runs whole island-side: the fenced module keeps its own island floor seed and the clean modules lower native, with a cross-module call crossing the boundary through the boxed seam (ps_island_mod_fn_invoke, one namespace per program module). The entry's top level and a package-shaped program still run whole island-side, where the per-module seed cannot reproduce the module semantics.
The eight cases cover the split itself (a native lane beside an island lane), the per-module island namespaces (two modules with the same definition name stay apart), the boundary call in the LLVM, the two refusals the split makes sound (an island definition calling a native one of another module, and a package-shaped program that cannot use the per-module seed), and an exception crossing the boundary back to a native caller. The island-to-native refusal lives in the lowerer: an island definition of one module calling a compiled definition of another module has no seam to cross, the same way a compiled sibling has none.
The split needs the program's modules to be plain siblings, because the per-module seed cannot reproduce the package semantics. Relaxing the rule to allow package units runs, but the island seed re-executes the package __init__ (its prints double) and an island function reading __file__ finds no value: the per-module seed has no finder bootstrap that serves the program's own modules.
The split does not engage on yt-dlp: every module top level fences on unlowered stdlib imports, which routes the whole top level island-side and cascades the definitions with it (1031 of 1042 modules island, 3 of 472 planned definitions native). The package shape (16 package units, no per-module finder bootstrap) and the three circular imports block the split on top of that. The next wall for a native fraction on yt-dlp is the stdlib import table, not the boundary seam.
Deploying pyscriptc with
|
| Latest commit: |
91630a0
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://53d81c3a.pyscriptc.pages.dev |
| Branch Preview URL: | https://work-planesplit.pyscriptc.pages.dev |
This was referenced Oct 30, 2026
added 8 commits
November 2, 2026 05:47
…plit The runtime-linked stdlib manifest check adds 7 self-host fences in stdlibzip.py, so the plane split's census pin (3271) is stale on the merged tree. The merged tree measures 3278 fences and the same package sum; the pin moves with a comment that names both deltas.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Per-module plane split for the island tier, stacked on #792. A fenced module rides its own island floor while clean modules lower native, meeting at the existing boxed boundary seam (
ps_island_mod_*per-module namespaces inps_island.c; the legacy single-namespace ABI is untouched). Design note:.agents/notes/2026-10-30-plane-split.md.On the shape it covers (a program of plain sibling modules),
clean.addand__main__.mainare native anddirty.brokenis island, with output byte-identical to CPython.tests/test_plane_split.pyhas 8 tests: same-named fenced definitions in separate namespaces, one fenced and one clean definition in a module, island exceptions reaching a native caller, the island-to-native cross-module refusal (PS2002), and the binary running away from the source tree. Affected island suites pass (70 passed, 1 skipped).Honest result on yt-dlp: the executed native fraction does not move (0%), because yt-dlp never reaches the split. Of 1,042 units, 1,031 have an island top level (a module-level import outside the closed stdlib table fences the whole top level, then the #620 cascade pulls the definitions along), leaving 472 planned definitions of which 3 are native. Package-shaped programs (16
__init__.pyunits) still run whole-program island, since the per-module seed has no finder bootstrap, and three circular imports are refused before the plans are computed.Boxed ledger (
mise run boxed:cost, window1708c74d..e3ad1caa): code 5.3%, churn 7.7%, bugs 0.0%, tax 0.0%, drop_flag false.Next wall: the closed stdlib import table, or routing only the definition that needs an unsupported import island-side.