TIP 503: End Tcl 8.3 Source Compatibility Support

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

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.