Author: Don Porter <dgp@users.sourceforge.net>
State: Draft
Type: Project
Vote: Pending
Created: 05-Feb-2018
Post-History:
Tcl-Version: 8.7
Abstract
Stop supporting source compatibility with pre-8.4 Tcl.
Background
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.
Proposal
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.
Compatibility
Any code that has not migrated to the Tcl 8.4 interface will need to do so to work with Tcl 8.7.
Implementation
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.
Copyright
This document has been placed in the public domain.