From c1310e5af51bf1eab3d26ae0fbb6e697c2626674 Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Mon, 20 Jul 2026 05:46:59 +1000 Subject: [PATCH] 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 --- goals/G-096-zig-buildsuite-piperepl.md | 52 ++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/goals/G-096-zig-buildsuite-piperepl.md b/goals/G-096-zig-buildsuite-piperepl.md index 39ea401e..ddd9cbcc 100644 --- a/goals/G-096-zig-buildsuite-piperepl.md +++ b/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