Browse Source

G-096 progress: increment-4 record (vqtcl retired, testsuite action, zig 0.16.0 migration experiment PASS)

Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
master
Julian Noble 1 week ago
parent
commit
c1310e5af5
  1. 52
      goals/G-096-zig-buildsuite-piperepl.md

52
goals/G-096-zig-buildsuite-piperepl.md

@ -197,13 +197,57 @@ Acceptance: from a clean checkout plus a punk-getzig-fetched pinned zig, the sui
- The 0.15.2 migration remains parked (transformer script + findings preserved;
increment-2 record).
### 2026-07-20 increment 4: vqtcl retired; Tcl-testsuite action; zig 0.16.0 migration experiment SUCCEEDS
New user direction this increment: punk-getzig's 0.15.2 pin was incidental (no need to
target 0.15 at all - jump to current 0.16.0 if practical); the suite should exercise
the Tcl core testsuite on its built shell; Tk (core.tcl-lang.org/tk) must be built to
run all punkshell tests; tcllib + critcl-built accelerators matter (tcllibc - punkcheck
hashing is very slow without it); vlerq/vqtcl to be cleaned out (old-tclkit attempt;
future tclkit work references TEMP_REFERENCE/metakit + TEMP_REFERENCE/KitCreator).
- vqtcl/vlerq removed from the suite (wiring, helper module, staging, docs) - also
removes the only non-public source dependency. Committed 1664e9ba.
- New `suite.tcl test` action runs tests/all.tcl on the suite-built static shell with
-testargs passthrough. Enabled by syncing the 2024-era hardcoded tm install names to
the tree's provided versions (tcltest-2.5.11, http-2.10.2, platform-1.1.1 - the old
names made 'package require tcltest' fail on a filename/provide conflict).
- Full Tcl core testsuite on the 0.14.1-built shell: Total 66350, Passed 54825,
Skipped 11453 (largely no-C-test-commands constraints in a release shell),
FAILED 72. Triage of the 72 is PENDING (compare against the native-runtime baseline
- memory records exec-14.3 as the only native-baseline failure on this machine;
static/zipfs/no-dde-reg differences are the likely classes). Note all.tcl exited 0
despite failures - the driver should parse the totals line rather than trust the
exit code (todo).
- zig 0.16.0 (official, current per ziglang.org) fetched via community mirror,
minisign-verified, extracted to bin/tools/zig-x86_64-windows-0.16.0. Migration
EXPERIMENT (in _build/suite_tcl90/build016, tracked suite untouched): the 0.15-era
transformer (root_module/createModule, addLibrary+linkage, array_list.Managed,
b.graph.host) plus these 0.16 deltas: std.fs.cwd dir-walks -> std.Io.Dir.cwd() with
b.graph.io threaded through (3 sites); Compile forwarders gone -> .root_module.*
sweep (addCSourceFile(s)/addIncludePath/addObjectFile/addLibraryPath/linkLibrary/
addWin32ResourceFile; linkLibC() -> root_module.link_libc = true;
linkSystemLibrary needs an options arg, linkSystemLibrary2 merged into it);
wrapfiletofile tool ported to the 0.16 entry idiom (main(init: process.Init.Minimal),
init.args.toSlice, std.Io.Threaded io instance, Io.Dir readFileAlloc/createFile,
File.writeStreamingAll, cleanExit(io)); slice-of-strings debug.print loop-ified.
mingw_unicode_entry_point SURVIVES in 0.16. RESULT: full build PASS under 0.16.0
(install + install-libraries + make-zipfs), both shells report 9.0.5, and the
3-file tcl-test parity run is IDENTICAL to the 0.14.1 build (557/357/200/0).
- Direction assessment recorded for the user: 0.16 adoption is practical at bounded
cost (one sitting); recommendation is to adopt 0.16.0 as the suite pin (deprecating
0.14 per the user's stated intent), land the ported recipe from build016, host the
0.16.0 archive on punkbin, and only then write the NEW recipe code (Tk, tcllib
accelerators via critcl driving zig cc) once against the final API. Tk/tcllib/
critcl/testsuite-gating are new scope vs this goal's contract - candidate follow-on
goal to draft (proposal-first).
Remaining for acceptance:
- punk-getzig per-version fetch argument, so the wrapper itself can materialize the
suite's pinned 0.14.1 (currently it installs only its own single pin, 0.15.2, to
bin/tools/zig; the suite pin was materialized by the same fetch+minisign flow
manually and is hosted on punkbin). Payload growth needs the 512-byte spacer
check on re-wrap.
suite's pinned zig (pin currently 0.14.1; 0.16.0 adoption decision with the user -
the ported recipe awaits in _build/suite_tcl90/build016). Payload growth needs the
512-byte spacer check on re-wrap.
- Rebase the piperepl patch onto current core-9-0-branch sources; build a
piperepl-enabled variant; behaviour matrix (TCLSH_PIPEREPL unset == stock on
tty/piped/script-arg forms; =1 with a script setting ::tclsh(dorepl) 1 -> live

Loading…
Cancel
Save