Skip to content

Spine: defer TimezoneAbbreviationsData from native link (#16866); sidecar refresh restored (#16828) - #16873

Merged
PurHur merged 4 commits into
masterfrom
fix/16866-tz-deferral
Jul 6, 2026
Merged

PurHur merged 4 commits into
masterfrom
fix/16866-tz-deferral

Conversation

@PurHur

@PurHur PurHur commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Closes out #16828's blocking impact. Layer 3 of the bundle emit failure is the huge nested array literal in ext/standard/TimezoneAbbreviationsData.php — breaks the AOT lowering at bundle scale and segfaults standalone (filed as #16866 with repros; VM handles it fine).

Un-defer when #16866 lands.

🤖 Generated with Claude Code

anmichels and others added 4 commits July 6, 2026 11:17
…6828 layers 1-2).

Two of the regressions breaking the spine bundle native emit:

- Foo::class is a pure name literal — Zend resolves it without the
  class being declared or autoloadable. The const-expr evaluator
  (ClassConstExpr) and the VM class-const-fetch opcode both demanded a
  class entry first, so native 8.3+ exception names in const maps
  (\DateException::class in ThrowableManifest since #16780) died with
  'Forward reference to class constant' / 'Unknown class for constant
  fetch' on the 8.2 reference profile. Both sites now short-circuit
  'class' fetches on plain names to the resolved name string
  (self/static/parent excluded). Unit test covers const-expr and
  expression positions.

- JIT assignOperandValue() threw 'Cannot assign to a value' when the
  destination temp was pre-bound as a folded KIND_VALUE — the
  defined()/class_exists() spine-guard folding registers NATIVE_BOOL
  value bindings and the real producer emits afterwards.
  assignOperand() already rebinds these; assignOperandValue() now
  mirrors it via makeVariableFromValueOp. Hit at bundle scale on
  ext/sodium/bootstrap_sodiumexception.php line 8
  ('if (!\class_exists(\SodiumException::class, false))').

Also: emit-helper-runtime-object.php gains an experimental
--preload=<paths> child flag (dependency-corpus experiments for the 25
undefined-method helper units), and the spine bundle test assertion
catches up to 4151 (missed in #16809's final resync).

Bundle emit now progresses past both errors; the next blocker
('Array offset access requires hashtable or boxed array, got
__string__*', top-level main) is still under investigation on #16828.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ecar refresh restored (#16828).

Third and final blocker on the spine bundle emit (#16828): the huge
nested array literal in ext/standard/TimezoneAbbreviationsData.php
breaks the AOT lowering (compile error at bundle scale, standalone
binary segfault — filed as #16866 with repros). Deferred honestly via
bootstrap_spine_native_link_deferred(): VM inventory coverage is
unaffected, footnotes show 4158/4159 with the 1-deferred annotation
across the six tracked docs + bundle test, and every spine sync check
is green.

spine-sync.sh discovery now consults the deferred SSOT so it stops
re-adding deferred paths to the bundle.

With this plus #16850 (layers 1-2), the honest gen-0 sidecar refresh
works again: make bootstrap-gen0-refresh-sidecar green, stamp matches
spine entry SHA-1 368eaa303685. Refreshed prelinked/bootstrap-gen0
included.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@PurHur
PurHur merged commit 36fc588 into master Jul 6, 2026
1 check failed
@PurHur
PurHur deleted the fix/16866-tz-deferral branch July 6, 2026 11:02
PurHur added a commit that referenced this pull request Jul 6, 2026
…pine-sync keeps the deferred ratio comment fresh (#1802). (#16895)

The fleet grew the inventory to 4169 without bundle requires (10 DOM/
misc files); full spine-sync chain: entries added, footnotes 4168/4169
(1 deferred #16866), inventory/profile regen, honest gen-0 sidecar
refresh (works again post-#16881/#16873 — stamp 2e4285d9). spine-sync
now also rewrites the deferred ratio comment in the bundle test so it
cannot rot like a hand-synced footnote.

Co-authored-by: PurHur <tedyyyyy@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants