diff mbox series

tcl: upgrade 9.0.4 -> 9.1.0

Message ID 20260930-mathieu-tcl-9-1-v1-1-1182d4d2bec1@bootlin.com
State Under Review
Headers show
Series tcl: upgrade 9.0.4 -> 9.1.0 | expand

Commit Message

Mathieu Dubois-Briand Sept. 30, 2026, 12:50 p.m. UTC
Changelog:

- Incompatibilities
  - Remove `expr` behavior from `lseq`
  - File paths are now treated as case-insensitive on MacOS
  - New command `tcl::registry` as replacement for the `registry`
    command without needing the registry package to be loaded. The
    registry module is now part of the core Tcl DLL in all build
    configurations.
  - Custom applications must call Tcl\_FindExecutable or
    TclZipfs_AppHook to initialize Tcl
  - Search path for locating Tcl core script and encodings is changed

- New commands and options
  - New options `-backslashes`, `-commands` and `-variables` for `subst`
    command
  - New command `unicode` for Unicode normalization
  - New `timer` command, switch to monotonic clock and microsecond
    resolution
  - New `lfilter` command for selecting items from a list
  - Many new functions from C99, specifically: `acosh()`, `asinh()`,
    `atanh()`, `cbrt()`, `copysign()`, `dim()`,  `erf()`, `erfc()`,
    `exp2()`, `expm1()`, `fma()`, `gamma()`, `ldexp()`, `lgamma()`,
    `log1p()`, `log2()`, `logb()`, `nextafter()`, `remainder()`,
    `signbit()`, and `trunc()`, and (for functions that return multiple
    values in their C99 API) the commands: `divmod`, `frexp`, `modf`,
    and `remquo`.
  - New `switch` option `-integer` to compare values as integers
  - Reading and writing of child interpreter variables
  - Updated Tcl Bytecode opcodes
  - Add support for `\z` in regex as end-of-string anchor
  - New `tcltest::configure` option `-iterations` to control number of
    iterations of each test.

- New public C API
  - `Tcl_IsEmpty()` — checks if the string representation of a
    value would be the empty string
  - `Tcl_GetEncodingNameForUser()` — returns name of encoding from
    user settings
  - `Tcl_AttemptCreateHashEntry()` — version of
    `Tcl_CreateHashEntry()` that returns NULL instead of panic'ing on
    memory allocation errors
  - `Tcl_ListObjRange()`, `Tcl_ListObjRepeat()`, `Tcl_ListObjReverse()`
    — C API for new list operations
  - `Tcl_UtfToNormalized()`, `Tcl_UtfToNormalizedDString()` — C
    API for Unicode normalization
  - `Tcl_UtfToExternalEx()` and `Tcl_ExternalToUtfEx()` — C
    encoding API supporting output buffers larger than INT_MAX
  - New API for monotonic clock and microseconds resolution
  - Windows `auto_execok` enhancements and `exec` search reform
  - New timer API using long long in stead of Tcl_Time
  - `Tcl_RegisterPostInitProc` callback for post-initialization of
    interpreters

- Performance
  - Memory efficient internal representations for list operations on
    large lists.
  - Continued 64-bit capacity: Command line arguments larger than 2Gb
  - Support for long paths on Windows
  - Faster UTF-8 encoding and I/O
  - Faster interpreter creation

- Bug fixes
  - Inconsistent `glob` matching on MacOS
  - `file normalize` does not uniquely identify a file on MacOS
  - Inconsistencies between `cd` and `file normalize` for
    volume-relative paths on Windows
  - Tcl cannot run from an arbitrary build directory with
    --disable-zipfs
  - Crash on finalization with an active thread running.
  - Crash on use-after-free in Windows socket thread.

- Updated bundled packages, libraries, standards, data
  - Unicode 18.0.0
  - platorm 1.2.0: Add support for musl C runtime

Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
---
 meta/recipes-devtools/tcltk/{tcl_9.0.4.bb => tcl_9.1.0.bb} | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)


---
base-commit: 3182386f3a8e9d51ffabfdb3e7df63e989ac7c4a
change-id: 20260930-mathieu-tcl-9-1-d54451cc1136

Best regards,
diff mbox series

Patch

diff --git a/meta/recipes-devtools/tcltk/tcl_9.0.4.bb b/meta/recipes-devtools/tcltk/tcl_9.1.0.bb
similarity index 91%
rename from meta/recipes-devtools/tcltk/tcl_9.0.4.bb
rename to meta/recipes-devtools/tcltk/tcl_9.1.0.bb
index 97ba82d5fa1c..6e8a97c729e3 100644
--- a/meta/recipes-devtools/tcltk/tcl_9.0.4.bb
+++ b/meta/recipes-devtools/tcltk/tcl_9.1.0.bb
@@ -22,7 +22,7 @@  SRC_URI = "${SOURCEFORGE_MIRROR}/tcl/tcl-core${PV}-src.tar.gz \
            file://0003-tcl-install-tcl-to-lib64-instead-of-lib-on-64bit-tar.patch \
            file://0004-tcl-update-the-header-location.patch \
            "
-SRC_URI[sha256sum] = "5d265f3499b588681825d8093177830707b7035ad866b17189a3a6ab6dade0ff"
+SRC_URI[sha256sum] = "ba11ae7035ec4b0caf2c489b20d5aa2abb1cf001a7e65b0fa2fbac86908c643b"
 
 UPSTREAM_CHECK_URI = "https://www.tcl-lang.org/software/tcltk/download.html"
 UPSTREAM_CHECK_REGEX = "tcl(?P<pver>\d+(\.\d+)+)-src"
@@ -37,6 +37,9 @@  AUTOTOOLS_SCRIPT_PATH = "${S}/unix"
 
 EXTRA_OECONF = "--disable-rpath --enable-man-suffix=tcl9 --disable-zipfs"
 
+# Override some paths to not include TMPDIR into binaries
+EXTRA_OEMAKE = "ABS_BUILD_DIR=/build TCL_BUILDTIME_LIBRARY=/build/lib"
+
 PACKAGECONFIG ??= ""
 # Use of system tzdata is not recommended at present:
 # https://core.tcl-lang.org/tcl/tktview/51aa53616067cb63900b17ca1d71f07b094ffa1a
@@ -46,7 +49,7 @@  do_install() {
 	autotools_do_install
 	oe_runmake 'DESTDIR=${D}' install-private-headers
 	ln -sf ./tclsh${VER} ${D}${bindir}/tclsh
-	ln -sf tclsh9.0 ${D}${bindir}/tclsh${VER}
+	ln -sf tclsh9.1 ${D}${bindir}/tclsh${VER}
 	sed -i "s;-L${B};-L${STAGING_LIBDIR};g" tclConfig.sh
 	sed -i "s;'${UNPACKDIR};'${STAGING_INCDIR};g" tclConfig.sh
 	install -d ${D}${bindir_crossscripts}
@@ -61,8 +64,8 @@  do_install() {
 SYSROOT_DIRS += "${bindir_crossscripts}"
 
 PACKAGES =+ "tcl-lib"
-FILES:tcl-lib = "${libdir}/libtcl9.0.so.*"
-FILES:${PN} += "${libdir}/tcl${VER} ${libdir}/tcl9.0 ${libdir}/tcl9"
+FILES:tcl-lib = "${libdir}/libtcl9.1.so.*"
+FILES:${PN} += "${libdir}/tcl${VER} ${libdir}/tcl9.1 ${libdir}/tcl9"
 FILES:${PN}-dev += "${libdir}/tclConfig.sh ${libdir}/tclooConfig.sh"
 
 # isn't getting picked up by shlibs code