From 679b45e3fcc6294c0af695dc06749ed9e0de9da4 Mon Sep 17 00:00:00 2001 From: giles Date: Wed, 6 May 2026 15:20:17 +0000 Subject: [PATCH] plans: tick Phase 1 float expr, add progress log to tcl-sx-completion --- plans/tcl-sx-completion.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/plans/tcl-sx-completion.md b/plans/tcl-sx-completion.md index 39f633bd..0fb50346 100644 --- a/plans/tcl-sx-completion.md +++ b/plans/tcl-sx-completion.md @@ -29,12 +29,12 @@ Several apparent gaps are already solved in SX: Everything here is pure Tcl implementation work. -| Work | Effort | Unlocks in Tcl | -|---|---|---| -| Float in `expr` — detect `.` in number tokens, route through float ops instead of `parse-int` | half day | `expr {3.14 * 2}`, `expr {sqrt(2.0)}`, float comparisons | -| `regexp pattern str` and `regsub pattern str repl` wrapping existing SX primitives | few hours | pattern matching, text processing | -| `apply {args body} ?arg…?` — anonymous proc call | 1 hour | higher-order functions, `lmap` idiom | -| `array get/set/names/size/exists/unset` commands | half day | array variables (tokenizer already parses `$arr(key)`) | +| Status | Work | Effort | Unlocks in Tcl | +|---|---|---|---| +| [x] | Float in `expr` — detect `.` in number tokens, route through float ops instead of `parse-int` | half day | `expr {3.14 * 2}`, `expr {sqrt(2.0)}`, float comparisons | +| [ ] | `regexp pattern str` and `regsub pattern str repl` wrapping existing SX primitives | few hours | pattern matching, text processing | +| [ ] | `apply {args body} ?arg…?` — anonymous proc call | 1 hour | higher-order functions, `lmap` idiom | +| [ ] | `array get/set/names/size/exists/unset` commands | half day | array variables (tokenizer already parses `$arr(key)`) | **Total: ~2 days. Zero SX changes.** @@ -137,6 +137,14 @@ becomes a lasting SX contribution used by every future hosted language. --- +## Progress log + +_Newest first._ + +- 2026-05-06: Phase 1 float expr — `tcl-num-float?`, `tcl-parse-num`, float-aware `tcl-apply-binop`/`tcl-apply-func`/unary-minus/`**`; `sqrt`/`floor`/`ceil`/`round`/`sin`/`cos`/`tan`/`pow`/`exp`/`log` all float-native; 329/329 tests green + +--- + ## What stays out of scope - `package require` of binary loadables