backend: PHP #64
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
A back end that emits PHP; tasks run on an event loop that uses what the host has.
Source
Steps
Split by
docs/design/PHP.md(section 6), as #63 was split. Each step is filed when the one before it is merged.docs/design/PHP.md(#702)linux-php, driver, functions, integers, records,gotoblocks, guards, CI action.forgejo/actions/php(slice 1; not filed)Closeorder (slice 3; not filed)UInt64, manifest walk (slice 4; not filed)libm,pack/unpack,Float32(slice 5; not filed)stream_select, cancellation (slice 6; not filed).nophpmarkers,torb test --target linux-php, docs (slice 8; not filed)#65 (capability table) and #66 (Composer package) stay separate.
Acceptance criteria
Dependencies
Moved from the planning lists of the docs; the design record stays the specification.
[loop:torbscript] intake: in scope (author orion, label loop), source JAVASCRIPT-AND-PHP.md, not a duplicate. Very large (a new back end); depends on #62 and #52, refine splits it only after those. next: waiting (dependencies #62 and #52) until 2026-10-10T04:00:00Z
[loop:torbscript] refine: re-checked 2026-10-29T19:56Z: still blocked on #62 (PHP version floor, owner decision asked in the TorbScript group today) and #52. Splitting waits until both are settled.
next: waiting (dependencies #62 owner decision and #52)
[loop:torbscript] refine: re-checked 2026-10-30T05:57Z: #62 (PHP version floor) is still an open owner decision (asked 2026-10-29); #52 is closed. The PHP back end is split only once the floor is settled; its design record can follow the JavaScript one (#63, record landed in PR #606).
next: waiting (owner decision #62) until 2026-10-30T08:00:00Z
[loop:torbscript] wait: re-checked 2026-10-30T08:30Z: #62 (PHP floor) is still unanswered; second ask went to the TorbScript group today. The split waits for the answer.
next: waiting (owner decision #62) until 2026-10-31T08:00:00Z
[loop:torbscript] wait: #62 is decided and landed (PR #686 merged: PHP floor 5.6 with a 7.4 fallback). The split of the PHP back end into steps (design record first, as #63 did) is the next refine; no worker slot is free this tick (4 implementers running, 6 open PRs).
next: waiting (worker slot for the refine) until 2026-10-30T13:00:00Z
[loop:torbscript] wait: no worker slot is free this tick (3 slots used: main CI triage #696, refine #72, refine #80). The split of the PHP back end into steps, design record first, is the next refine.
next: waiting (worker slot for the refine) until 2026-10-30T17:38Z
[loop:torbscript] claim refine by session:loop-torbscript-20261030 @anthropic:tkoehn until 2026-10-30T21:31Z
[loop:torbscript] refine: split the PHP back end into 9 steps like #63; step 1 (design record
docs/design/PHP.md) filed as #702 withloop+ready; the record itself is already written and committed on branchloop/702-php-design-record(one commitdocs(design): add the PHP back end design record, not a PR yet, no gates run), so the implementer of #702 only needs to check it and open the PR. #64's body now carries the step list (steps 2 to 9 named, filed just in time). Decided by the loop (full list in #702 and the record): targetlinux-php;gotoper block;is_intoverflow check; byte strings compared only with===/strcmp;pack/unpackwithd,f,V; classes for records, witnesses as arrays of function names; no__destruct; tasks as the IR state machines on a run queue with onestream_selectwait (no Fibers, noext-uv/ext-ev), which amends the "Tasks in PHP" bullet of JAVASCRIPT-AND-PHP.md; CI with PHP 5.6.40, 7.4.33 and 8.4.x. No owner decision needed. Caveat: no PHP on the worker machine, so nothing was measured; the record lists each claim taken from the manual and the slice test that pins it. tokens used ~600knext: waiting (step #702)
[loop:torbscript] wait: step 1 (#702) is in PR #707 (CI pending, argus requested). Step 2 is filed once #707 has merged. next: refine step 2 when #707 has merged.