You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
two separately split modules + real shared object link regression: passed
landing-tree perry-codegen suite: 996/996 passed
The original global symbol ___perry_wrap_perry_unknown_func is replaced by stable module-scoped fallback names while unsplit copies retain internal linkage.
This ticket now has one bounded purpose: verify that the original production-sized duplicate-symbol boundary is gone. It is not a tracker for every later Next.js, provider, GC, or App Route problem.
Original production boundary
On b0f13fb5ef39eb26463d4bc82f7cd6812acea69f, the pinned Next.js 16.3.0 webpack App Route graph from #8034:
passed the byte-identical 21-request Node oracle;
collected and emitted 91/91 Perry module objects;
cleared the former split-unit ptrtoint failures;
failed the final app-only dylib link because four objects exported the same ___perry_wrap_perry_unknown_func.
Record SHA-256, size, and mtime for perry, libperry_runtime.a, libperry_stdlib.a, libperry_ext_http.a, and libperry_ext_net.a; prove no writer remains before the replay.
Compile the same app-only graph from scratch with the isolated release directory pinned:
Status
The code fix is merged on
main:6772b8111aeeb047d4ebbcebcfce7a0e8a7e97365c27d1ad9b588f69fa2677acd8ae99dc5303e712perry-codegensuite: 996/996 passedThe original global symbol
___perry_wrap_perry_unknown_funcis replaced by stable module-scoped fallback names while unsplit copies retain internal linkage.This ticket now has one bounded purpose: verify that the original production-sized duplicate-symbol boundary is gone. It is not a tracker for every later Next.js, provider, GC, or App Route problem.
Original production boundary
On
b0f13fb5ef39eb26463d4bc82f7cd6812acea69f, the pinned Next.js 16.3.0 webpack App Route graph from #8034:ptrtointfailures;___perry_wrap_perry_unknown_func.The old local replay log was:
/Users/amlug/cargo-targets/next-prod-gate/evidence/perry-route-compile-b0f13fb5.logDo not depend on that path existing. Regenerate the pinned fixture from #8034 when necessary.
Remaining worker task
Fetch current
mainand record the exact commit/tree.Generate/build the pinned Next.js 16.3.0 webpack fixture from [Next.js/dylib] Add a pinned production App Route parity fixture and CI gate #8034. Confirm the Node oracle inputs are the generated production route graph; a direct call to the user
GETexport is not a substitute.Build one coherent release artifact set from that same Perry SHA in an isolated target:
cargo build --release -p perry -p perry-runtime-static -p perry-stdlib-static -p perry-ext-http -p perry-ext-netRecord SHA-256, size, and mtime for
perry,libperry_runtime.a,libperry_stdlib.a,libperry_ext_http.a, andlibperry_ext_net.a; prove no writer remains before the replay.Compile the same app-only graph from scratch with the isolated release directory pinned:
PERRY_RUNTIME_DIR=<target>/release PERRY_NO_AUTO_OPTIMIZE=1 PERRY_NO_CACHE=1 <target>/release/perry compile --no-cache --no-auto-optimize --output-type dylib perry-host.js -o next-app-route-current.dylibPreserve the full module-emission/final-link log and report the exact final boundary.
Closure rule
Close #8064 after exactly one of these outcomes:
Do not keep #8064 open for:
AppRouteRouteModule.handlebehavior;Those belong to #8034/#8040 or a new dedicated blocker. This issue is complete once the collision itself is disproved on the pinned production graph.
Refs #8034 and #8040.