backend: JavaScript #63
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 JavaScript; tasks become promises.
Source
Acceptance criteria
Steps
Steps are filed one at a time as each lands; the slice plan is section 6 of
docs/design/JAVASCRIPT-BACKEND.md.ListStorage, list and text natives (4B, the manifest walk,isSameand theBigIntproperty tests, is filed when 4A lands)libm, structured control flow, tasks, the conformance subset andtorb test)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] claim refine by session:loop-torbscript-20261029-0858 until 2026-10-29T22:50:00Z
[loop:torbscript] refine: the dependency wait is stale. #52 is closed (kernel of natives:
docs/design/NATIVES.md, K1 to K8) and #417 landed the two decisions the back end needs (64-bitIntin JavaScript, browser capability split; JAVASCRIPT-AND-PHP.md sections 2a and 2b). #62 now only holds the oldest supported PHP version, which does not touch the JavaScript back end. #63 is a new back end and far larger than one PR, so it is an epic now and is split just in time; only the next step is filed: #602 "js: design record for the JavaScript back end (step 1 of #63)" (labelsloop,ready; docs only, no seed). Its record fixes module layout and driver flag, the IR-to-JavaScript mapping, how K1 to K8 are provided, memory, tasks as promises and the ordered slices of this epic, so the implementation steps follow from it, each filed when it starts. No duplicate found (keyword search over open and closed issues: only #62 to #66 and #417). No owner decision needed: all of it is technical and decided by the loop.Epic checklist (steps are filed one at a time, never up front):
next: waiting (step #602; the next step is filed when it lands). Acceptance criteria of #63 stay as written.
Worker usage: refine inline, about 60k tokens.
[loop:torbscript] release refine: done, claim ended.
[loop:torbscript] refine: re-checked 2026-10-29T20:22Z: step 1 (#602) has its implementation PR #606 open, CI pending. The next step is filed when it lands.
next: waiting (epic; step 1 is #602, PR #606)
[loop:torbscript] refine: step 1 landed (#602, PR #606 merged:
docs/design/JAVASCRIPT-BACKEND.md). Next step filed from its section 6, slice 1: #678 "js: run a first conformance program under Node (step 2 of #63)" (labelsloop,ready; touches the seed by name, so two commits). The remaining slices 2 to 8 of the record are filed one at a time as each lands.Epic checklist:
next: waiting (step #678).
[loop:torbscript] refine: re-checked 2026-10-30T06:35Z: step #678 (slice 1) has its implementation PR #679 open, CI pending. Slices 2 to 8 are filed one at a time as each lands.
next: waiting (step #678, PR #679)
[loop:torbscript] refine: step #678 (slice 1) landed (PR #679, merged 2026-10-30T07:39Z). Slice 2 is filed as #684 (loop, ready); slices 3 to 8 follow one at a time.
next: waiting (step #684)
[loop:torbscript] wait: slice 2 (#684) is in review as PR #694 (three commits, argus requested, CI pending). Slice 3 is filed when it lands.
next: waiting (PR #694) until 2026-10-30T16:00:00Z
[loop:torbscript] claim refine by session:loop-torbscript-20261030 @anthropic:tkoehn until 2026-10-30T20:20Z
[loop:torbscript] refine: slice 2 (#684) landed (PR #694,
d515ae9d). Slice 3 filed as #701 "js: witnesses, trait values, shared objects and the counts under Node" (loop, ready; compiler only, no seed change, one PR, CI only):CallWitness, witness tables,TraitValue/Object,SharedObject,Retain/Release/MakeUniqueand theclose()order, with a new programjs-witnesses-close.trband the trait and destructor programs added tojs.allow. Slices 4 to 8 follow one at a time.Epic checklist:
next: waiting (step #701).
[loop:torbscript] claim refine by session:loop-torbscript-20261030 @anthropic:tkoehn until 2026-10-31T00:27Z
[loop:torbscript] refine: slice 3 (#701) has landed (PR #703). Slice 4 of the record is too big for one PR (kernel natives,
ListStorage, manifest walk,BigIntproperty tests,isSame), so decided by the loop: it is split into 4A and 4B. 4A is filed as #708 "js: lists, buffers and text natives under Node (slice 4A of #63)" (labelsloop,ready; compiler and runtime only, no seed change, one PR, CI only):ContainerNew(ListStorage), thetorb_list_*natives in a newruntime/javascript/list.mjs(written in front of the program only when used),sliceBytes/byteAt, the drop order for lists holdingCloseobjects, new programsjs-listsandjs-lists-panic, and the list-using conformance programs added tojs.allow. 4B (manifest walk with the deferred list,isSame,Intrinsicsweep, property tests intools/) is filed when 4A lands; maps and sets wait for epic #55 as the record says. #63's body now carries the step list. No owner decision needed. Side note: #682 (remainder of slice 1) is open withoutloop/readylabels and is not picked up.Epic checklist:
Worker usage: refine, about 120k tokens.
next: implementation (#708)