Skip to content

JIT: session_start lowering for self-host spine (ext/standard/session_start.php) #1882

Description

@PurHur

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)

  • JIT stub or native lowering for session_start returning bool
  • Session superglobal slot in JIT context (mirror VM session table)
  • test/compliance/cases/stdlib/session.phpt passes under bin/jit.php
  • Update php script/capability-matrix.phpdocs/capabilities.md

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions