Author: Jan Nijtmans <[email protected]>
State: Final
Type: Project
Vote: Done
Created: 02-05-2023
Tcl-Version: 8.7
Tcl-Branch: tip-665
Vote-Summary: Accepted 4/0/1
Votes-For: AK, JN, KW, SL
Votes-Against: none
Votes-Present: BG
Abstract
This TIP proposes to remove support for building the Tcl 8.7 and 9.0 core with -DTCL_UTF_MAX=3, more specifically: any value other than 4.
Extensions (like Tk) can still use -DTCL_UTF_MAX=3.
Rationale
The TIPs 542 and 622 prepared Tcl 8.7 (and 9.0) to use utf-32 internally for all operations, while - still - being able to use utf-16 internally. This was used mainly for regression-testing. The "utf.test" suite carefully compared the result of all utf-related functions between the 8.6 result and the 8.7 result, making sure that extensions won't be effected.
Now that the internal utf-32 handling has stabilized, this "utf16" mode hinders further development more than that it helps. Therefore this TIP proposes to remove it as far as possible. The utf-16 compatibility layer, which allows extensions (such as Tk) still being compiled with -DTCL_UTF_MAX=3 is still kept. And also the file tclUniData.c (which is generated from the Unicode official data-tables, and kept equal in Tcl 8.6/8.7/9.0) is left as-is.
Implementation
Implementation is in Tcl branch "tip-665".
Compatibility
Since the compatibility layer is kept as-is for extensions, this change is fully upwards compatible with 8.6.
Copyright
This document has been placed in the public domain.