TIP 581: Master/Slave

Bounty program for improvements to Tcl and certain Tcl packages.
Author:         Jan Nijtmans <[email protected]>
State:          Draft
Type:           Project
Vote:           Pending
Created:        17-July-2020
Tcl-Version:    8.6
Keywords:       Tcl
Tcl-Branch:     tip-580


This TIP proposes to purge the usage of the Master/Slave paradigm from Tcl. This is a gradual process. Just to be clear: Tk is out of scope for this TIP.


A discussion is currently going on about the Master/Slave and Blacklist/Whitelist paradigm: Linux, Github and a lot more decided not to use this terms any more. The TCT as a whole has no opinion on this (although individual member will - sure - have an opinion). Since Tcl is a language for everyone, we should not make life difficult for people being enforced to comply with whatever rules. Since there is very little impact on Tcl, let's bend a little bit.


In tclDecls.h, the following #define's are added:

#define TclCreateChild TclCreateSlave
#define TclGetChild TclGetSlave
#define TclGetParent TclGetMaster
In tclIntDecls.h, the following #define is added:
#define TclSetChildCancelFlags TclSetSlaveCancelFlags

Further on, the "interp" command will get an additional subcommand "children", which is synonym for "slaves".

That's it! This will allow extension/application writers to comply with external limitations when they want to or are forced to do so.

The "interp slaves" command will not be deprecated, not even in Tcl 9.0. Neither will the usage of Tcl_CreateSlave and friends be deprecated: Extension/application writers are not forced to make the change, but they will be able to.

In Tcl 8.7, the documentation and header files will be changed to comply with this renaming. The above #define's will be reversed, so the functions will continue to be available under the old name too.

See: Terminology, Power, and Inclusive Language in Internet-Drafts and RFCs


This is 100% upwards compatible.


See the tip-581 branch.


This document has been placed in the public domain.