TIP 503: End Tcl 8.3 Source Compatibility Support

Author:         Don Porter <[email protected]>
State:          Final
Type:           Project
Vote:           Done
Created:        05-Feb-2018
Tcl-Version:	8.7
Tcl-Branch:     tip-503


Stop supporting source compatibility with pre-8.4 Tcl.


Long ago, we revised the signatures of many public Tcl routines to better serve the cause of const-correctness. [27]. These revisions created a source incompatibility with existing extensions and applications using Tcl, so at the same time a set of compiler directives were created to allow opting for the pre-8.4 signatures in place of the 8.4 signatures. These were always intended as a support for migration, not a permanent feature. See [the wiki] for much more detail.

When originally put in place, these directives were a positive support to make possible orderly migration from one source interface to another. Today, these directives are a negative feature that enable code to stay stubbornly behind the times for no value. It's difficult to believe that compatibility with Tcl 8.3 header files is still of vital importance to anyone.


Remove all directives that support source compatibility with pre-8.4 versions of Tcl. This includes NO_CONST, USE_NON_CONST, USE_COMPAT_CONST, CONST84, CONST84_RETURN.


Any code that has not migrated to the Tcl 8.4 interface will need to do so to work with Tcl 8.7.


Much of this has already been committed to the core-8-branch as part of the implementation of [485]. The last additional bit is in the tip-503 branch.


This document has been placed in the public domain.