TIP 665: Remove support for internal utf-16 for Tcl 8.7

Bounty program for improvements to Tcl and certain Tcl packages.
Author:		Jan Nijtmans <[email protected]>
State:		Draft
Type:		Project
Vote:		Pending
Created:	02-05-2023
Tcl-Version:	8.7
Tcl-Branch:	tip-665


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 is in Tcl branch "tip-665".

Further readings


Since the compatibility layer is kept as-is for extensions, this change is fully upwards compatible with 8.6.


This document has been placed in the public domain.