js/php: decide the three open questions of JAVASCRIPT-AND-PHP.md #62
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
Before either back end: the oldest PHP version TorbScript supports. Questions 1 (exact 64-bit
Intin JavaScript) and 3 (browser capabilities) of section 3 moved to #417; this issue keeps question 2.Source
Acceptance criteria
Dependencies
Blocks #64 (and the PHP column of #65). Question 1 and 3: #417.
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 section 3, not a duplicate. A research and design-record issue: the 64-bit
Intrepresentation and the browser capability split are technical and decided by the loop with research; the oldest supported PHP version is a public commitment and the record asks for the owner's sign-off, so refine files that part as an owner decision. next: refine, waiting (ready buffer full: #4, #163, #164, #223 are ready) until 2026-10-10T04:00:00Z[loop:torbscript] claim refine by session:loop-torbscript-20261023 until 2026-10-23T08:26:00Z
[loop:torbscript] refine: too big for one decision, split just in time. Questions 1 (exact 64-bit
Intin JavaScript) and 3 (browser capability split) are technical design choices the loop decides with research: filed as #417 (labelsloop,ready; docs-only change to JAVASCRIPT-AND-PHP.md, no seed). No duplicate found (keyword search over open and closed issues: only #62 to #66). #62 now holds only question 2, the oldest supported PHP version, with tightened acceptance criteria and noready.[loop:torbscript] owner decision: the oldest supported PHP version is a public support commitment, so the loop does not take it. Facts (php.net supported versions, 2026-10-23): Fibers exist from 8.1, so no state-machine fallback is needed for any version in the table; 8.1 has no security support since 2025-12-31; 8.2 security support until 2026-12-31; 8.3 until 2027-12-31; 8.4 until 2028-12-31; 8.5 until 2029-12-31. A higher floor means fewer shared hosts qualify, but a simpler and safer back end. Options: 8.1, 8.2, 8.3. Recommendation: PHP 8.2 (Fibers, still receives security fixes, reaches most hosts). The blocking
question_askblock could not be filed: tasks-mcp answers "Repo torbscript/language not found or no access" for git.torb.dev, so the owner is asked via the TorbScript group and the answer is recorded here as[loop:torbscript] owner decision recorded (torben, <date>): .... Not blocked meanwhile: #417 unblocks #63 and the browser part of #65; #64 waits on this.next: waiting (owner decision, PHP version); #417 ready.
Worker usage: refine inline, no sub-worker.
[loop:torbscript] claim refine by session:loop-torbscript-20261024 until 2026-10-24T09:10:00Z
[loop:torbscript] refine: #417 landed on main (PR #418, merge
119cd8f6): questions 1 and 3 are in section 2 of JAVASCRIPT-AND-PHP.md (2a, 2b), section 3 keeps only the PHP question. Question 2 (oldest supported PHP version) is still open and truly an owner question (public support commitment); the facts and options from the earlier owner-decision comment still hold (php.net, checked 2026-10-23): Fibers exist from 8.1, so no state-machine fallback is needed for any option.Options: PHP 8.1 (no security support since 2025-12-31), 8.2 (security support to 2026-12-31), 8.3 (to 2027-12-31). Recommendation: 8.2. No new
question_askblock is filed (tasks-mcp has no access to this repo); the owner is asked via the TorbScript group, and the answer is recorded here as[loop:torbscript] owner decision recorded (torben, <date>): .... After that, a docs step (onedocs(design)commit, PHP row moved from section 3 to section 2, PHP column of the table filled in) is filed just in time.next: waiting (owner decision, PHP version).
Worker usage: refine sub-worker, about 45k tokens.
[loop:torbscript] refine: the PHP floor question was sent to Torben in the TorbScript group on 2026-10-29T19:50Z (options 8.1, 8.2, 8.3; recommendation 8.2; tasks-mcp has no access to this repo, so no question_ask block). The answer is recorded here as
[loop:torbscript] owner decision recorded (torben, <date>): ....next: waiting (owner decision, PHP version; asked 2026-10-29)
[loop:torbscript] refine: re-checked 2026-10-29T20:10Z: no answer yet. Next ask is due on 2026-10-30T08:00:00Z if still open.
next: waiting (owner decision, PHP version) until 2026-10-30T08:00:00Z
[loop:torbscript] wait: second ask for the PHP floor (8.1/8.2/8.3, recommendation 8.2) sent to Torben in the TorbScript group on 2026-10-30T08:05Z; still no answer. Next ask is due on 2026-10-31T08:00:00Z if still open.
next: waiting (owner decision, PHP version) until 2026-10-31T08:00:00Z
[loop:torbscript] owner decision recorded (torben, 2026-10-30): "Ich will alle Versionen unterstützen, die auch auf dem letzten Drecks-5€-Webspace noch laufen. PHP/JS ist ja für uns nur Compilation Target und Sicherheitsprobleme können wir durch TorbScript Mechanismen umgehen (z.B. manche inbuilts nicht nutzen etc.)"
Resolution:
stream_selectloop.Status: decided (principle), no longer waiting on the owner. Stop re-asking.
[loop:torbscript] claim implement by session:loop-torbscript-20261030 @anthropic:theorben until 2026-10-30T11:36:01Z
[loop:torbscript] refine: proposed floor PHP 5.6. Checked 2026-10-30.
Owner principle applied literally: the oldest PHP that budget shared hosts still let a new customer select today.
Evidence
.php56(PHP 5.6),.php73,.php74and.php80to.php85. https://docs.hetzner.com/managed/webserver/php-configuration/Why 5.6 and not 7.4: two budget hosts (IONOS, Hetzner) really offer 5.6 today, and 5.x is still 7.6 % of PHP sites. 7.4 is the common denominator of every host read, so it is the fallback if the owner does not want to pay for the EOL tail: it changes only the list below, not the design. At 5.6 the only cost falls on generated code and the runtime, never on the TorbScript source.
What the generated code cannot assume at 5.6 (7.4 in brackets where it differs)
stream_selectloop;ext-uv/ext-evand Fibers stay optional accelerators.readonly, first-class callables,never,newin initializers (8.1); nomatch, named arguments, nullsafe?->, union types, attributes,str_contains(8.0); no typed properties and arrow functions (7.4, available at 7.4).??,<=>,intdiv,random_int/random_bytes, anonymous classes,PHP_INT_MIN, and noError/Throwable: a type error or a division by zero is a fatal error, not an exception. The generated code therefore checks explicitly (zero divisor, overflow) and panics through its own runtime function, and the runtime polyfills what it needs; it does not rely on the host's.PHP_INT_SIZE4) and overflow intofloatsilently at any version: an exact 64-bitIntand its overflow panic come from the runtime's checks on every arithmetic operator, never from the host; whether a 32-bit build is refused or gets a software 64-bit path is left to the back end's design.next: PR #686 (
loop/62-php-floor) moves the PHP row into section 2 ofdocs/design/JAVASCRIPT-AND-PHP.mdand fills the PHP column of table 2b; review by argus.[loop:torbscript] release: worker finished. PR #686 (head
49b50076, one docs(design) commit) records the floor as PHP 5.6 by the owner rule (oldest version still selectable at budget hosts; IONOS Extended Support, Hetzner Managed Webhosting), with 7.4 named as the fallback common to every host checked. Argus requested.next: waiting (CI and review of PR #686)