Skip to content

runtime: adopt merged stream lifecycle and cancellation semantics - #381

Merged
lannbot merged 1 commit into
mainfrom
fix/idle-drop-spec-update
Sep 16, 2026
Merged

lannbot merged 1 commit into
mainfrom
fix/idle-drop-spec-update

Conversation

@lannbot

@lannbot lannbot commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Pin Component Model to merged #719 (a53b241, including #720 idle-drop and #721 tests), Wasmtime environ to cc546ee (#14342), and wasm-tools to 0.259.
  • Make idle peer-drop notifications one-shot and endpoint-owned, preserving them and destination handle identity across transfers; preserve future payload completion.
  • Remove obsolete generic cancellability. Startup/callback delivery is explicit; unresolved async subtask cancellation yields. Preserve synchronous claims/lenders and host cancellation marks.
  • Adapt two-argument FACT enter-sync-call, enforce synchronous instance-local progress, and publish real JSPI parks consistently before ordinary scheduler service. Timer handoff prevents infinite-yield background work from starving host continuations without deleting guest threads.
  • Protect prepared custody against same-slot endpoint reuse; handle queued host writes closed before binding.
  • Retire CM-3/provisional semantics and update docs, corpus totals, and 14 stale xfails.

Breaking changes

Runtime/translator move to plan format 6, and the four lockstep packages to 0.7.0. Old deploy-time plans/adapters must be retranslated, not relabeled. An actual format-5 linked-component fixture verifies rejection before execution. The protocol manifest and convention goldens are unchanged.

Getter/setter specification changes were reviewed; the pinned parser APIs still do not implement these forms, so this does not claim accessor support.

Verification

All just gates recipes passed across the coordinated verification runs, including runtime/Rust/package tests, scheduler seeds, shell lanes, Chromium/Firefox page/worker/shared-worker and OPFS, and consumer smokes. The first runs stopped at migration lint leftovers and stale lane totals; those were corrected and the remaining/focused gates passed. JSC local lane is unavailable on arm64; required x64 CI covers it.

  • Official corpus: 1,622 commands; 1,593 passes, 24 existing xfails, five unsupported directives; zero unexpected failures/skips. Seeded: 1,619 commands / 1,590 passes, same exclusions, established deterministic-profile-only omission.
  • Wasmtime: 619 passes, 63 known failures, 174 excluded commands; zero unexpected/infrastructure failures under FIFO and seed 1.
  • Public upstream guests: 3/3 under both schedulers.
  • Consumer TLS execution and c0 legs passed; read-only checkout statuses unchanged.
  • Independent semantic review passed, including negative scheduler, custody, idle cleanup, and legacy-adapter probes.

One adjudicated supplementary conflict

Wasmtime's new thread-transparency/reentrancy fixture expects an outer-instance thread to rescue a blocked synchronous Mid call. The pinned reference requires Mid-only candidates and an earlier synchronous-block trap. The assertion remains executed and its exact mismatch is classified under #380; no error equivalence or exclusion masks it. No new official-corpus exclusions were added.

Related: #372, #380. Automerge will be armed after creation.

@lannbot lannbot added breaking/runtime Breaks @polyengine/runtime published surface (caret-incompatible): minor must bump this cycle breaking/translator Breaks @polyengine/translator published surface (caret-incompatible): minor must bump this cycle labels Sep 16, 2026
@lannbot
lannbot enabled auto-merge September 16, 2026 23:00
@lannbot
lannbot merged commit 337cee0 into main Sep 16, 2026
3 checks passed
@lannbot
lannbot deleted the fix/idle-drop-spec-update branch September 16, 2026 23:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking/runtime Breaks @polyengine/runtime published surface (caret-incompatible): minor must bump this cycle breaking/translator Breaks @polyengine/translator published surface (caret-incompatible): minor must bump this cycle

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants