Tcl 9.0
Tcl 9.0 changes and compatibility
- First major release in decades; moves to 64‑bit internals and full Unicode, enabling very large data and modern character support.
- Adds new notifier built on
epoll/kqueuewhere available, replacingselectfor event handling and improving concurrency scalability. - Introduces new coroutine/NRE tooling (e.g.,
coroinject/coroprobe) and refines the core while removing some legacy features. - Backwards compatibility is “mostly high” but some scripts need adjustments.
Removal of ~ home expansion
~and~userpath expansion were removed per a Tcl Improvement Proposal.- Rationale: treating a leading
~as special makes certain operations dangerously surprising (e.g., deleting/tmp/~wiping a home directory) and complicates correct handling of legitimate filenames starting with~. - Some argue it should only have been limited to
~/or otherwise fixed; others say removing the special case entirely is safer and more consistent.
Zip filesystem and packaging
- Built‑in “zip filesystem” lets zip/jar archives behave like mountable file systems, similar conceptually to loop‑mounted ISOs or language‑specific VFSes.
- This underpins single‑file “standalone applications” where code and resources live inside a zip embedded in the interpreter binary, formalizing long‑used community techniques.
Where Tcl is used today
- Very common in EDA/chip‑design and FPGA tools (Intel, Xilinx, Synopsys, Cadence, Mentor).
- Used in mission control systems (SCOS‑2000), microcontroller debugging (OpenOCD/JimTcl), network appliances (F5/A10), Expect scripts, Eggdrop and IRC bots.
- Tk remains attractive for lightweight cross‑platform GUIs and internal tools; Tcl is heavily used around SQLite and appears in other test suites (e.g., Redis).
Language design and ergonomics
- Advocates emphasize: tiny, regular core (“everything is a command/string”), homoiconicity, powerful metaprogramming (
uplevel,upvar,tailcall), easy C integration, rich event loop and channel I/O, safe interpreters, and several OO systems. - Critics call it “stringly,” hard to read for large data‑processing scripts, and slower than Python; some find
upvar/stack tricks and comment/quoting rules unintuitive. - Ecosystem complaints include weak/dated package management, friction setting up web servers or modern crypto/JWT, and lag in third‑party support for new Tcl versions.
Tk GUI look and feel
- Tk has a theming engine (ttk) with multiple themes and native‑looking defaults on macOS/Windows.
- On Linux, built‑in themes are seen by some as dated; better‑looking themes exist but often require extra discovery and setup.