Browse Source

G-098 authored: suite Tk+tklib, tcllib with critcl accelerators, testsuite gating

Per user direction and draft refinements 2026-07-20: matching tklib alongside
Tk (pure-tcl, own installer.tcl where it does more than straight copy);
tcllib installed via its installer machinery (installer.tcl/sak.tcl checked
for non-copy behaviour) with critcl-built tcllibc driving zig cc; the
totals-parsing test gate owns the 72-failure triage. goals_lint clean.

Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com
master
Julian Noble 2 weeks ago
parent
commit
3476f3b99b
  1. 4
      GOALS.md
  2. 40
      goals/G-098-suite-tk-tcllib-critcl.md

4
GOALS.md

@ -349,3 +349,7 @@ Detail: goals/G-096-zig-buildsuite-piperepl.md
### G-097 [proposed] bin utility naming sweep: punk- prefix for remaining punkshell-own tools
Scope: src/scriptapps/ + src/scriptapps/bin/ (bits, runtime, tclargs scriptset renames; selfsign experiment scripts), bin/ (regenerated wrapper twins + renamed experiment scripts, old names retired), src/tests/modules/punk/mix/testsuites/scriptwrap/ + src/tests/shell/testsuites/binscripts/ (roundtrip pins), bin/AGENTS.md + referencing docs
Detail: goals/G-097-bin-utility-naming-sweep.md
### G-098 [proposed] suite_tcl90 full punkshell dependency set: Tk+tklib, tcllib with critcl accelerators, and testsuite gating
Scope: src/buildsuites/suite_tcl90/ (recipe extensions, driver steps, testsuite gate), src/buildsuites/_build/ (tk/tklib/tcllib/critcl sources and outputs), bin/tools/ (pinned zig as consumed), src/tests/ (punkshell suites exercised against the suite-built runtime)
Detail: goals/G-098-suite-tk-tcllib-critcl.md

40
goals/G-098-suite-tk-tcllib-critcl.md

@ -0,0 +1,40 @@
# G-098 suite_tcl90 full punkshell dependency set: Tk+tklib, tcllib with critcl accelerators, and testsuite gating
Status: proposed
Scope: src/buildsuites/suite_tcl90/ (recipe extensions, driver steps, testsuite gate), src/buildsuites/_build/ (tk/tklib/tcllib/critcl sources and outputs), bin/tools/ (pinned zig as consumed), src/tests/ (punkshell suites exercised against the suite-built runtime)
Goal: suite_tcl90 builds/installs the remaining runtime pieces punkshell testing depends on - Tk (fossil core.tcl-lang.org/tk) loadable by the suite's Tcl 9.0 windows runtime together with a matching tklib (fossil core.tcl-lang.org/tklib; pure-tcl, installed via its own installer.tcl where that does more than a straight copy), and tcllib (fossil core.tcl-lang.org/tcllib) installed via its documented mechanism (installer.tcl / sak.tcl checked for installation behaviour that is not just a straight copy) WITH its critcl-built C accelerators (tcllibc; critcl from github.com/andreas-kupries/critcl driving zig cc as the compiler, bootstrapped by the suite-built tclsh - no MS toolchain) - and the suite's test surface becomes a gate: suite.tcl test parses the all.tcl totals rather than trusting the exit code and fails on failures absent from a recorded expected-failure baseline.
Acceptance: from the pinned zig and fetched sources the suite produces a Tk the suite tclsh loads (package require Tk with a create/destroy-window verification recorded in this file) and a matching tklib whose packages resolve from the install (a representative tklib package require recorded); a tcllib install performed via its own installer machinery (installer.tcl/sak.tcl behaviour checked and recorded - module selection, pkgIndex/tm generation, critcl module handling) whose accelerators load (package require tcllibc) with a punkcheck-relevant hashing comparison showing the accelerated path engaged versus pure-tcl; critcl is version-pinned and driven with zig cc; suite.tcl test gates on parsed totals against a recorded expected-failure baseline and the current 72 core-test failures are dispositioned (fixed or baselined with reasons); punkshell's runtests can run against the suite-built runtime with Tk-dependent suites no longer skipped for lack of Tk.
## Context
Follow-on from G-096 (tracked zig buildsuite; zig 0.16.0 pin adopted 2026-07-20), per
user direction 2026-07-20:
- Tk must be built to run ALL punkshell tests (Tk-dependent suites currently skip).
- A matching tklib may be required for Tk to function properly - believed pure-tcl, so
a fossil pull plus possibly its installer.tcl "depending on whether it does anything
special" (user wording).
- tcllib is mostly pure-tcl but its critcl-built accelerators make a huge performance
difference - without tcllibc, punkcheck hash checking is very slow. tcllib has an
installer.tcl and sak.tcl which should be checked for installation behaviour that
is not just a straight copy.
- critcl (github.com/andreas-kupries/critcl) may be required for the accelerators;
it needs a tclsh (the suite-built shell) and a C compiler (zig cc - keeps the
no-MS-toolchain policy; the mechanism is zig-version-agnostic).
- Testsuite state at goal creation: full Tcl core suite on the suite-built shell runs
66350 tests, 72 FAILED (triage pending; native-runtime baseline on this machine is
exec-14.3 only), and all.tcl's exit code does not reflect failures - hence the
totals-parsing gate requirement.
## Notes
- Related goals: G-096 (the buildsuite this extends; its remaining items - piperepl
rebase/matrix and punk-getzig per-version fetch - stay with G-096), G-005 (zig build
infrastructure direction), G-060 (qemu cross-platform matrix - eventual multi-platform
consumer), G-021/G-020 (agent visual verification - a working Tk underpins those).
- The 72-failure triage is tracked HERE (gate clause), not in G-096, to avoid double
tracking.
- Fetch conventions follow suite_tcl90: fossil clones cached in ~/.fossils, checkouts
under src/buildsuites/_build with FOSSIL_HOME isolation and --nested; critcl is git,
not fossil - clone/pin convention to be settled in the work (git clone under _build
with a pinned tag/commit is the expected shape).
Loading…
Cancel
Save