Problem
ext/standard/session_start.php is in the self-host spine bundle (compiler_lib_spine_smoke requires it) but docs/capabilities.md lists session_start — JIT: no.
VM compliance is green (#64, test/compliance/cases/stdlib/session.phpt). Spine link either stubs the call (SelfHostBuiltinPolicy) or fails when real lowering is enabled — blocking native spine growth alongside #1880-class string JIT fixes.
Goal
session_start() (and minimal $_SESSION read/write used by spine/tests) lowers in JIT so spine units that touch session do not require ExternalMethod stubs.
Scope (phase 1)
Out of scope v1: session_write_close, custom handlers, file-based session GC parity with Zend.
Implementation hints
| Layer |
Files |
Notes |
| VM reference |
ext/standard/session_start.php, lib/VM.php |
Copy semantics |
| JIT builtin |
lib/JIT/Builtin/ or ext/standard/JitSession*.php |
Follow header() / cookie patterns (#1184) |
| Policy |
lib/JIT/SelfHostBuiltinPolicy.php |
Flip session_start from stub when green |
| Spine |
test/selfhost/compiler_lib_spine_smoke/main.php |
Already requires session unit |
Acceptance criteria
php bin/jit.php test/compliance/cases/stdlib/session.phpt
./script/ci-local.sh --filter SessionBuiltin
Docker:
docker run --rm -v "$(pwd):/compiler" -w /compiler php-compiler:22.04-dev \
vendor/bin/phpunit --filter SessionBuiltin
Dependencies
Verification
Local/Docker only — #394 GHA disabled.
Links
Problem
ext/standard/session_start.phpis in the self-host spine bundle (compiler_lib_spine_smokerequires it) butdocs/capabilities.mdlistssession_start— JIT: no.VM compliance is green (#64,
test/compliance/cases/stdlib/session.phpt). Spine link either stubs the call (SelfHostBuiltinPolicy) or fails when real lowering is enabled — blocking native spine growth alongside #1880-class string JIT fixes.Goal
session_start()(and minimal$_SESSIONread/write used by spine/tests) lowers in JIT so spine units that touch session do not requireExternalMethodstubs.Scope (phase 1)
session_startreturning booltest/compliance/cases/stdlib/session.phptpasses underbin/jit.phpphp script/capability-matrix.php→docs/capabilities.mdOut of scope v1:
session_write_close, custom handlers, file-based session GC parity with Zend.Implementation hints
ext/standard/session_start.php,lib/VM.phplib/JIT/Builtin/orext/standard/JitSession*.phpheader()/ cookie patterns (#1184)lib/JIT/SelfHostBuiltinPolicy.phpsession_startfrom stub when greentest/selfhost/compiler_lib_spine_smoke/main.phpAcceptance criteria
Docker:
docker run --rm -v "$(pwd):/compiler" -w /compiler php-compiler:22.04-dev \ vendor/bin/phpunit --filter SessionBuiltinDependencies
Verification
Local/Docker only — #394 GHA disabled.
Links
docs/stdlib-jit-audit.md· ROADMAP 🗺️ ROADMAP: Self-host + web-capable PHP subset (living) #78 Phase 2 Stdlib