diff --git a/GOALS.md b/GOALS.md index 133add41..c14903fa 100644 --- a/GOALS.md +++ b/GOALS.md @@ -342,7 +342,7 @@ Scope: src/modules/shellfilter-999999.0a1.0.tm (stack placement, insert_transfor Detail: goals/G-090-shellfilter-shellthread-audit.md ### G-101 [proposed] kit container strategy for zig-built Tcl 8.6 runtimes (no zipfs) -Scope: investigation + decision record under src/buildsuites/suite_tcl86/ (or successor mechanism); src/buildsuites/suite_tcl86/patches/ (tracked sdx wrap.tcl provenance capture); TEMP_REFERENCE/{metakit,KitCreator,kbs,sdx,tcl9} (read-only guidance - inventory in the detail file); src/runtime/mapvfs.config ('kit' type consumers); src/make.tcl kit-wrap path (as consumer); bin/sdx.kit (the tracked wrapping tool - provenance is part of this goal) +Scope: investigation + decision record under src/buildsuites/suite_tcl86/ (or successor mechanism); src/buildsuites/suite_tcl86/patches/ (tracked sdx wrap.tcl provenance capture); TEMP_REFERENCE/{metakit_jnorthrup,KitCreator,kbs,sdx,tcl9} (read-only guidance - inventory in the detail file); src/runtime/mapvfs.config ('kit' type consumers); src/make.tcl kit-wrap path (as consumer); bin/sdx.kit (the tracked wrapping tool - provenance is part of this goal) Detail: goals/G-101-tcl86-kit-container-strategy.md ### G-105 [proposed] buildsuite cross-target builds (zig -target): linux first, WSL-verified diff --git a/goals/G-101-tcl86-kit-container-strategy.md b/goals/G-101-tcl86-kit-container-strategy.md index 9303f4ae..b1db5149 100644 --- a/goals/G-101-tcl86-kit-container-strategy.md +++ b/goals/G-101-tcl86-kit-container-strategy.md @@ -1,7 +1,7 @@ # G-101 kit container strategy for zig-built Tcl 8.6 runtimes (no zipfs) Status: proposed -Scope: investigation + decision record under src/buildsuites/suite_tcl86/ (or successor mechanism); src/buildsuites/suite_tcl86/patches/ (tracked sdx wrap.tcl provenance capture); TEMP_REFERENCE/{metakit,KitCreator,kbs,sdx,tcl9} (read-only guidance - inventory in the detail file); src/runtime/mapvfs.config ('kit' type consumers); src/make.tcl kit-wrap path (as consumer); bin/sdx.kit (the tracked wrapping tool - provenance is part of this goal) +Scope: investigation + decision record under src/buildsuites/suite_tcl86/ (or successor mechanism); src/buildsuites/suite_tcl86/patches/ (tracked sdx wrap.tcl provenance capture); TEMP_REFERENCE/{metakit_jnorthrup,KitCreator,kbs,sdx,tcl9} (read-only guidance - inventory in the detail file); src/runtime/mapvfs.config ('kit' type consumers); src/make.tcl kit-wrap path (as consumer); bin/sdx.kit (the tracked wrapping tool - provenance is part of this goal) Goal: a decided, demonstrated strategy for wrapping zig-built 8.6 runtimes into self-contained punk86-class kit executables in the absence of zipfs - candidate containers: the metakit/mk4vfs tclkit lineage, cookfs, and zipvfs-over-tclvfs boot - so the prebuilt third-party kit runtimes (tclkit86bi.exe, tclkit-win64-dyn.exe) can eventually be replaced by suite-built, provenance-carrying ones. Acceptance: the candidate containers are assessed and recorded here against punkshell's kit expectations (compatibility with make.tcl's 'kit' wrap path or a documented replacement path; boot-time vfs mount without an installed Tcl; loading binary dlls from or via the container; buildable from source under the zig-only policy); one strategy is demonstrated end-to-end - a kit wrapped from the suite-built 8.6 runtime boots on a path without any Tcl installation and runs a script from inside its vfs; the decision, rationale, and the follow-on work needed to reach punk86-kit parity are recorded in this file. @@ -12,7 +12,7 @@ because Tcl 9's zipfs makes exe+zip self-mounting (tclsh90szip.exe, punk905_beta zip-wrap). 8.6 has no zipfs, so a kit needs a vfs container and a boot mechanism: - metakit/mk4vfs: the classic tclkit lineage (the current prebuilt runtimes are - this). TEMP_REFERENCE/metakit and TEMP_REFERENCE/KitCreator were flagged by the + this). TEMP_REFERENCE/metakit_jnorthrup and TEMP_REFERENCE/KitCreator were flagged by the user (2026-07-20, during the G-098 (achieved 2026-07-20) vlerq cleanup) as the guidance for when tclkit builds are investigated - the old vlerq/vqtcl references removed from the 9.0 recipe belonged to an earlier attempt at this same territory. @@ -195,11 +195,11 @@ would reproduce for a suite-built 8.6 runtime): this goal's memory/latency profile for a battery-carrying 8.6 kit. - `kbs/kbskit/sources/kbskit0.4/library/setupvfs.tcl:143-200` - how the kit gets WRITTEN (the counterpart to sdx wrap). -- `metakit/tcl/mk4tcl.cpp` (2621 lines) - `Mk4tcl_Init` -> `Mktcl_Cmds` +- `metakit_jnorthrup/tcl/mk4tcl.cpp` (2621 lines) - `Mk4tcl_Init` -> `Mktcl_Cmds` (:2559-2597): stubs at "8.1", registers the mkProperty/mkCursor obj types, one `MkWorkspace` per interp with assoc-data delproc + exit handler + event source, defines the nine `mk::*` commands. 8.6 compat is a one-line shim at :27-29; - `CHANGES` dates that work to 2007-06-25. The storage engine (`metakit/src/`) + `CHANGES` dates that work to 2007-06-25. The storage engine (`metakit_jnorthrup/src/`) is Tcl-agnostic - only `tcl/mk4tcl.cpp` + `mk4tcl.h` are Tcl-coupled. - `KitCreator/kitsh/buildsrc/kitsh-0.0/{kitInit.c,boot.tcl}` - same shape, generalised: storage backend is a compile-time switch @@ -211,7 +211,7 @@ would reproduce for a suite-built 8.6 runtime): - `KitCreator/mk4tcl/build.sh` + `KitCreator/mk4tcl/patches/all/` - the build recipe and EIGHT patches against metakit 2.4.9.7 (64-bit filespace, 32/64 fix, `unregisterchans`, `fixeventchannels`, shared-obj linker, ranlib/ar). The - `TEMP_REFERENCE/metakit` checkout is UNPATCHED upstream + `TEMP_REFERENCE/metakit_jnorthrup` checkout is UNPATCHED upstream (`github.com/jnorthrup/metakit`, last commit "URL fix"), and kbs.tcl:2813-2827 pulls that same unpatched master zip. If mk4 is chosen, deciding which patch lineage to carry is a required step, not a detail. diff --git a/goals/archive/G-096-zig-buildsuite-piperepl.md b/goals/archive/G-096-zig-buildsuite-piperepl.md index 7aa4c7b2..17220bf5 100644 --- a/goals/archive/G-096-zig-buildsuite-piperepl.md +++ b/goals/archive/G-096-zig-buildsuite-piperepl.md @@ -241,7 +241,7 @@ target 0.15 at all - jump to current 0.16.0 if practical); the suite should exer 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). +future tclkit work references TEMP_REFERENCE/metakit_jnorthrup + TEMP_REFERENCE/KitCreator). - vqtcl/vlerq removed from the suite (wiring, helper module, staging, docs) - also removes the only non-public source dependency. Committed 1664e9ba. diff --git a/src/buildsuites/suite_tcl90/README.md b/src/buildsuites/suite_tcl90/README.md index 29d3371d..2235c213 100644 --- a/src/buildsuites/suite_tcl90/README.md +++ b/src/buildsuites/suite_tcl90/README.md @@ -7,7 +7,7 @@ Tcl core-9-0-branch sources, using zig only (no MS toolchain, per the project toolchain policy) - and assembles them into the G-103 RUNTIME KIT FAMILY: verified self-contained batteries-attached runtimes (see "Runtime kit family" below). (vqtcl/vlerq was removed 2026-07-20 - an old-tclkit experiment; future -tclkit investigation has TEMP_REFERENCE/metakit and TEMP_REFERENCE/KitCreator +tclkit investigation has TEMP_REFERENCE/metakit_jnorthrup and TEMP_REFERENCE/KitCreator as reference material.) Everything transient lives under `src/buildsuites/_build/suite_tcl90/` (VCS-ignored via diff --git a/src/buildsuites/suite_tcl90/build905.zig b/src/buildsuites/suite_tcl90/build905.zig index f4cd682b..78299c3b 100644 --- a/src/buildsuites/suite_tcl90/build905.zig +++ b/src/buildsuites/suite_tcl90/build905.zig @@ -12,7 +12,7 @@ const tclvfs_shared = @import("build_tclvfs/build_tclvfs_shared.zig"); // ******************** //vqtcl/vlerq removed from the suite (old-tclkit experiment; see note near the former -//compile site and TEMP_REFERENCE/metakit + TEMP_REFERENCE/KitCreator for future work) +//compile site and TEMP_REFERENCE/metakit_jnorthrup + TEMP_REFERENCE/KitCreator for future work) const build_tclthread = @import("build_tclthread/build_tclthread.zig").build_tclthread; const build_tk = @import("build_tk/build_tk.zig").build_tk; //G-098 @@ -1772,7 +1772,7 @@ pub fn build(b: *std.Build) !void { //vqtcl/vlerq removed from the suite (user 2026-07-20): it was an attempt at old //tclkit support and its source has no confirmed public upstream. When tclkit - //builds are investigated, TEMP_REFERENCE/metakit and TEMP_REFERENCE/KitCreator + //builds are investigated, TEMP_REFERENCE/metakit_jnorthrup and TEMP_REFERENCE/KitCreator //in the punkshell repo are the reference material. tclsh_exe.root_module.link_libc = true; @@ -2045,7 +2045,7 @@ pub fn build(b: *std.Build) !void { // ***************************** //vqtcl/vlerq zip payload removed with the rest of the vqtcl wiring (user 2026-07-20; - //old-tclkit experiment - see TEMP_REFERENCE/metakit + TEMP_REFERENCE/KitCreator). + //old-tclkit experiment - see TEMP_REFERENCE/metakit_jnorthrup + TEMP_REFERENCE/KitCreator). //pass make_vfs_root to build_tclvfs diff --git a/src/buildsuites/suite_tcl90/suite.tcl b/src/buildsuites/suite_tcl90/suite.tcl index 55c9a161..46dd7971 100644 --- a/src/buildsuites/suite_tcl90/suite.tcl +++ b/src/buildsuites/suite_tcl90/suite.tcl @@ -354,7 +354,7 @@ dict for {name s} $sources { #zlib: the recipe compiles the tcl tree's own vendored copy in place #(tcl905/compat/zlib, version-matched, includes contrib/minizip) - nothing to stage. #vqtcl/vlerq: removed from the suite (user 2026-07-20) - old-tclkit experiment with no -#confirmed public upstream. Future tclkit work: TEMP_REFERENCE/metakit + KitCreator. +#confirmed public upstream. Future tclkit work: TEMP_REFERENCE/metakit_jnorthrup + KitCreator. #-- version facts for the final log ---------------------------------------- #G-102: configure-product generation, package installs, smokes and the test gate all