diff --git a/changelog.d/8274-next-gate-native-backend.md b/changelog.d/8274-next-gate-native-backend.md new file mode 100644 index 0000000000..02117b1882 --- /dev/null +++ b/changelog.d/8274-next-gate-native-backend.md @@ -0,0 +1,17 @@ +### Fixed + +- The production Next.js App Route dylib gate now exercises the **default** + codegen backend. `tests/test_next_app_route_dylib.sh` pinned + `PERRY_LLVM_INPROCESS="${PERRY_LLVM_INPROCESS:-0}"`, which selected the text + transport and — because `${VAR:-0}` cannot express "unset" — left no way for + the gate to run the configuration users actually get. The pin was reasonable + while #8228 stopped the native in-process path compiling five of this + fixture's modules; #8241 fixed that. The variable is now forwarded only when + the caller sets it, so an explicit backend can still be selected for a + bisection while the unset default reaches the compiler unchanged. + + Measured on `183d30c53a` before landing this: with the native backend the + fixture compiles 104/104 modules and the gate passes 100/100 verifier + repetitions twice, with `freeze/LLVM pipeline started` appearing 5× per + compile (the five split modules #8228 could not build) versus 0× on the text + path — so the gate now demonstrably runs the backend it claims to. diff --git a/tests/test_next_app_route_dylib.sh b/tests/test_next_app_route_dylib.sh index f3751b626f..3e8eecc6ab 100755 --- a/tests/test_next_app_route_dylib.sh +++ b/tests/test_next_app_route_dylib.sh @@ -170,10 +170,18 @@ app="$providers/next-app-route.$library_extension" compile_log="$scratch/compile.log" ( cd "$fixture" + # The backend is deliberately NOT pinned: this gate exists to exercise the + # configuration users get, which is the native in-process path (default ON + # wherever the runtime can walk the frames). It was pinned to the text + # transport while #8228 made the native path unable to compile five of this + # fixture's modules; #8241 fixed that, and a pin of `${VAR:-0}` cannot + # express "unset", so the pin left this gate structurally unable to test the + # default. `PERRY_LLVM_INPROCESS` is forwarded only when the caller sets it, + # so a bisection can still select a backend explicitly. env \ PERRY_NO_AUTO_OPTIMIZE=1 \ PERRY_DISABLE_WELL_KNOWN=1 \ - PERRY_LLVM_INPROCESS="${PERRY_LLVM_INPROCESS:-0}" \ + ${PERRY_LLVM_INPROCESS:+PERRY_LLVM_INPROCESS="$PERRY_LLVM_INPROCESS"} \ PERRY_LLVM_CLANG="$llvm_clang" \ PERRY_LLVM_OPT="$llvm_opt" \ PERRY_LL_SIZE_OPT="${PERRY_LL_SIZE_OPT:-0}" \