Land the focused platform follow-ups after #907#934
Open
brandonpayton wants to merge 20 commits into
Open
Conversation
Phase B-1 matrix build status —
|
| Package | Arch | Status | Sha |
|---|---|---|---|
| icu | wasm32 | built | df50355f |
| libcurl | wasm32 | built | eff13ed9 |
| libcxx | wasm32 | built | 7989f75b |
| libcxx | wasm64 | built | 15f45186 |
| libiconv | wasm32 | built | 55beab72 |
| libpng | wasm32 | built | ff9927f2 |
| libxml2 | wasm32 | built | 3238343a |
| libzip | wasm32 | built | 74fa1395 |
| openssl | wasm32 | built | 76d96c6e |
| openssl | wasm64 | built | 912566eb |
| sqlite | wasm32 | built | 4f395eaa |
| sqlite | wasm64 | built | 9ea2044b |
| zlib | wasm32 | built | edcbcb05 |
| zlib | wasm64 | built | 0c65f349 |
| bc | wasm32 | built | c3513140 |
| bzip2 | wasm32 | built | d0f16d7f |
| coreutils | wasm32 | built | 190a9b04 |
| curl | wasm32 | built | b35cf878 |
| dash | wasm32 | built | e72eac78 |
| diffutils | wasm32 | built | 1671d2c4 |
| dinit | wasm32 | built | d366b990 |
| fbdoom | wasm32 | built | 50828ca7 |
| file | wasm32 | built | b0b5f319 |
| findutils | wasm32 | built | 54d8b55e |
| gawk | wasm32 | built | b119d2b0 |
| git | wasm32 | built | 135b973c |
| grep | wasm32 | built | 3343257f |
| gzip | wasm32 | built | dfddbf00 |
| hello | wasm32 | built | b23d651b |
| kandelo-sdk | wasm32 | built | 02b5aa7f |
| kernel | wasm32 | built | 2e1d8990 |
| less | wasm32 | built | d4b1b655 |
| lsof | wasm32 | built | 03d6c53e |
| m4 | wasm32 | built | 599dea84 |
| make | wasm32 | built | 86e14b04 |
| mariadb | wasm32 | built | b85ba025 |
| mariadb | wasm64 | built | cd3d1a28 |
| modeset | wasm32 | built | 364a5dc3 |
| msmtpd | wasm32 | built | 346926f4 |
| nano | wasm32 | built | b58c5c51 |
| ncurses | wasm32 | built | 9646f601 |
| netcat | wasm32 | built | cb19fa84 |
| nginx | wasm32 | built | e0974b4b |
| php | wasm32 | built | d75ce9eb |
| posix-utils-lite | wasm32 | built | 927fb76e |
| ruby | wasm32 | built | 3defafeb |
| sed | wasm32 | built | f0a36592 |
| spidermonkey | wasm32 | built | 794a13d5 |
| tar | wasm32 | built | 3e14b588 |
| tcl | wasm32 | built | c2ee1701 |
| unzip | wasm32 | built | 3d9892e7 |
| userspace | wasm32 | built | 4ad2d955 |
| vim | wasm32 | built | a096a29d |
| wget | wasm32 | built | 760f1716 |
| xz | wasm32 | built | b4ece42c |
| zip | wasm32 | built | c99c71dd |
| zstd | wasm32 | built | eaa226fc |
| bash | wasm32 | built | f62b8fb5 |
| mariadb-test | wasm32 | built | 2390c511 |
| mariadb-vfs | wasm32 | built | 05ca805e |
| mariadb-vfs | wasm64 | built | ea9b5ef3 |
| nethack | wasm32 | built | 66ec7a5e |
| node | wasm32 | built | 62ecd88e |
| spidermonkey-node | wasm32 | built | d34e46bf |
| vim-browser-bundle | wasm32 | built | 54fa00dc |
| nethack-browser-bundle | wasm32 | built | 425bc5a3 |
| rootfs | wasm32 | built | 44f0d6c4 |
| shell | wasm32 | built | 9dc7deee |
| lamp | wasm32 | built | eef497d2 |
| node-vfs | wasm32 | built | 51971e37 |
| wordpress | wasm32 | built | 969b62e1 |
Auto-generated; replaced on each push. Raw data in the publish-status workflow artifact.
7dce296 to
260d75d
Compare
This was referenced Jul 14, 2026
Configure the browser test runner with its same-origin Vite proxy and keep a Chromium Wget regression for pages without a service-worker controller. Assert that BrowserKernel forwards the existing option and document the browser transport boundary.
The deterministic region ordering already landed through #907, but its in-process regression does not vary Rust HashMap random state. Run the CLI in twelve fresh processes against an alternating-type nested-region fixture and compare the emitted bytes. Document the cross-process byte-reproducibility contract and update the fork-instrumentation reference to the current ABI 39. This adds no ABI or package-artifact change. Validation: the full fork-instrument suite passed 187 tests; the focused fresh-process test passed; and the ABI snapshot check passed through scripts/dev-shell.sh.
Move the recursive /etc merge landed with #907 out of the browser app and into the shared host VFS layer. Preserve caller-owned entries and source metadata, and keep missing canonical state, short reads, and capacity failures visible during image assembly.
Delegate fsync on directory descriptors to the active filesystem backend so Node can issue its native durability barrier. Keep memory-backed and OPFS behavior truthful at their host boundaries, and cover the kernel, host backends, Chromium OPFS, and POSIX regression path.
Apply one supported recursion policy to both the shipped library and official testfixture: compound-select, expression, JSON, and trigger recursion stay within current browser and Node WebAssembly stacks. Keep the test patches aligned with those compiled limits and preserve the existing package revision recorded by the reviewed batch tree.
Keep analyze9's memory-accounting assertion, but use the encoding-correct allocation delta for SQLite's utf16 permutation.
Align the stack passed to kernel_clone to the 16-byte boundary required by Wasm code generation. This keeps stack-based variadic arguments intact when a new pthread begins. Add a local Sortix regression that formats the SQLite temporary-file pattern from fresh pthreads. The kernel_clone interface and ABI layout are unchanged.
260d75d to
822f35e
Compare
Member
Author
|
Merge-order note for the Homebrew migration: keep this PR queued behind #913. #913 has already completed its durable package promotion against the current |
This was referenced Jul 14, 2026
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.
What this batch does
#907 already landed PHP 8.3.15, ABI 39, and the shared process, VFS,
networking, host-runtime, package, browser-image, Dinit, and Vitest fixes found
during that port. This batch does not replay those changes.
This PR brings the remaining reviewed follow-ups onto one current-main branch
so we can validate and land them together while keeping one commit per purpose.
The focused source PRs remain the review record; their exact heads are listed
below. They were closed only after this batch contained their work and the
combined CI run was green.
Unique work that remains
clearImmediatehandles, nonzero-exitstderr, and configured CORS proxy routing.
assembly, zero-byte copy-back, initial credentials,
mremapmetadata,ENOLCK, and directoryfsync.statfields, align wasm32pthread entry stacks, deterministic fork instrumentation, and SjLj/noexcept
coverage.
evidence, UTF-16 STAT4 accounting, and TestRecover command lifetime.
Exact source heads
3f133f92bd971cc83fecefcd64709ed7b9f13adeclearImmediatecancellation cleanupfc25245984f346a5620998f02f93ad9b85dae80b905dbc0091a40ad9dce04f6ebc3e36e113b40129545048b123d9efabc1474d257329e4e6d154a0f679dd37dbffa2d373988585f954eb45fb162f7c4cce70dc0061ce379d2d50872b48ee0b82908eb8bc224aeeb056829c190680e78bc1ac9a4d68398b546ad38869d71274e773530a9d0860680292235dd1432857531a6969e9ae7d397c2c59406bfb21214d8943e3155d495f9908f8c9ecc2d0e1e06f438805471dc2335abe77c2c696f7bfc1d0cce529710ad72a8bfbcd6ae7f7ebb5799a8e2db3c05bb491cf02mremapgrowth38af72dcaa3c1550f572a63eaa2b7c79c5016218ENOLCKc9f9a1a649c5551f02a24ab5487becccabb6068bfsyncacross kernel, host, and browserc6f4977f3ea2c6bd909e4daaf3f6fbb01c7ca716statfields4b04ff3de6b022549250358f6fe44f02b4475f209e3fd3f6d8ae1693076906f6e462ad6e1f8113a3f758ecb30b92b9c914e950094706f05169bb205e52ba9a72036d2bfc631157c737f91ed61093713da0bc004f569898244f03989558086663d2ba1d78The batch was assembled from those reviewed commits in a straight line, then
condensed from 30 commits to 20 purpose commits. The #780 and #781 changes are
one SQLite recursion/stack-limit policy commit, and the two #926 commits are
one credentials commit. #783 remains represented by one all-mode runner commit
and one truthful-outcome-evidence commit. The final tree is byte-identical to
the reviewed 30-commit batch head. #931's code and test files are byte-identical
to its source head; only its
docs/posix-status.mdcommit diff changes because#929 and #930 update the same document earlier in the batch. #891 was
deliberately dropped after it was consolidated into #936; this PR no longer
duplicates that Homebrew workflow rename.
What was deliberately removed
fork-instrument implementation, MariaDB helper implementation, serialized
image coverage, Dinit production fixes, and other work already on main
through Batch PHP support and bundle ABI updates with their runtime changes #907;
no_mutexworkarounds, fabricated outcome/database evidence, fakehost metadata, synthetic stat block counts, capacity bumps, and broad
pager-fault test omissions;
ABI and package-artifact impact
ABI stays at 39. The ABI snapshot and generated C/TypeScript bindings remain in
sync. The wasm32/wasm64 libc artifacts change for
stat; wasm32 libc alsochanges for pthread stack alignment. SQLite revisions 3 and 4 intentionally
cover the published recursion-limit byte changes. #896, #932, and #933 add no
extra revision because their declared package outputs do not change.
Combined staging must rebuild the affected toolchain and package closure. This
PR makes no performance claim; performance was not measured.
Validation
Exact current head:
822f35ea34cb07e84dac2d24da0505babd16ed7eran on pre-compaction head
260d75d5adc31b327f5591229dbfbb287d395fd6and passed with 84 successful jobs, two expected skips, and zero failures. This
includes 14/14 library rebuilds, 57/57 package/image rebuilds, staged binary
materialization, browser assets, cargo/kernel, fork instrumentation, full
Vitest, browser, libc, POSIX, Sortix, and the aggregate test gate;
ran on that same pre-compaction head and passed the host check and Chromium,
Firefox, and WebKit COI smoke coverage;
scripts/check-abi-version.shpassed throughscripts/dev-shell.sh;lazy-archive, and rootfs-overlay tests;
b3a9a9da574ec7b276e7f61e11f004e578377afa, byte-identical to both thegreen pre-compaction head and the prior reviewed 30-commit tree; only homebrew: name the generic bottle publisher accurately #891
is absent from the earlier batch, because homebrew: publish and verify installable Kandelo bottles #936 now owns it;
history-only compaction;
fork, libc/POSIX/Sortix, MariaDB, and SQLite validation.
The earlier 31-commit pre-rebuild head
c0ef6ae3368480da8990064593c9c35920fbacb7, which contained the same focusedwork plus #891's workflow rename now owned by #936, also passed:
passed the host check and Chromium, Firefox, and WebKit COI smoke coverage;
passed 14/14 library rebuilds, 57/57 program/image rebuilds, staged binary
materialization, the browser asset check, cargo/kernel, fork instrumentation,
full Vitest, browser, libc, POSIX, Sortix, and the aggregate test gate;
declared URL recovered, and the isolated retry passed without a code change.
fork-instrument tests also passed locally through
scripts/dev-shell.sh.The current head is built directly on
mainat9a7a679195ead9bbdef119830437d5a758566607. Its tree is unchanged by the finalhistory-only rewrite; the new hosted checks will provide exact-head status.
Validation not run
A manual
./run.sh browserpass and the full SQLite upstream matrix were notrerun locally. Performance was not measured, and this PR makes no performance
claim.
Merge and cleanup
Keep the 20 commits in order; do not squash across the remaining purpose
boundaries. An independent per-commit audit found no other valid full squash. The included source PRs are closed as carried into this batch, and
their remote branches were deleted with exact-SHA leases, top-down for the
SQLite stack. This cleanup does not add
ready-to-ship; the normal approvaland prepare-merge flow remain separate.