Check-in [922263652c]

Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to [email protected]
or submit via the online form by Sep 9.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Added metadata about all 8.7 and 9.0 TIPs (where I can figure it out).
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | branch-link
Files: files | file ages | folders
SHA3-256: 922263652c29c02943d8e06241375452011ad706875df4254c38bf4cad1adf6a
User & Date: dkf 2018-10-12 21:30:40
Context
2018-10-12
21:31
rebuild index check-in: a1b25f24de user: dkf tags: branch-link
21:30
Added metadata about all 8.7 and 9.0 TIPs (where I can figure it out). check-in: 922263652c user: dkf tags: branch-link
21:29
Support implementations in tickets as well. check-in: 4ecb8a0dd3 user: dkf tags: branch-link
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to tip/114.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	Type:            Project
	State:           Final
	Vote:            Done
	Tcl-Version:     9.0
	Discussions-To:  Tcl Core list
	Post-History:
	Keywords:        octal

-----

# Abstract

This TIP proposes elimination of Tcl's practice of using octal
notation to interpret a string with a leading zero when an
integer value is expected.






>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	Type:            Project
	State:           Final
	Vote:            Done
	Tcl-Version:     9.0
	Discussions-To:  Tcl Core list
	Post-History:
	Keywords:        octal
	Tcl-Branch:     tip-114
-----

# Abstract

This TIP proposes elimination of Tcl's practice of using octal
notation to interpret a string with a leading zero when an
integer value is expected.

Changes to tip/115.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Donal K. Fellows <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        23-Oct-2002
	Post-History:   
	Tcl-Version:    9.0

-----

# Abstract

This TIP proposes changes to Tcl to make it operate more effectively
on 64-bit systems.







>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Donal K. Fellows <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        23-Oct-2002
	Post-History:   
	Tcl-Version:    9.0
	Obsoleted-By:   494
-----

# Abstract

This TIP proposes changes to Tcl to make it operate more effectively
on 64-bit systems.

Changes to tip/161.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	Author:         Francois Vogel <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        19-Oct-2003
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes changing the default value of the _-tearoff_
option on menu widgets to false, from its current setting of true.







>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	Author:         Francois Vogel <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        19-Oct-2003
	Post-History:   
	Tcl-Version:    8.7
	Tk-Branch:      tip-161
-----

# Abstract

This TIP proposes changing the default value of the _-tearoff_
option on menu widgets to false, from its current setting of true.

Changes to tip/166.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        19-Nov-2003
	Post-History:   
	Keywords:       Tk,image get,image put
	Tcl-Version:    8.7

-----

# Abstract

This TIP describes how to update the **image get** and **image put**
subcommands so as to allow script-level access to the full alpha
channel information that has been present in the photo image data






>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        19-Nov-2003
	Post-History:   
	Keywords:       Tk,image get,image put
	Tcl-Version:    8.7
	Tk-Branch:      tip-166
-----

# Abstract

This TIP describes how to update the **image get** and **image put**
subcommands so as to allow script-level access to the full alpha
channel information that has been present in the photo image data

Changes to tip/167.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
16
17
18
19
20
21
22
..
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
..
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
..
68
69
70
71
72
73
74
75
76
77
78
79
80
	Author:         Ramon Ribó <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        19-Nov-2003
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes adding a new option to **wm attributes** for the
Windows version of Tk that offers contextual help in that window.
Additionally, a new event type **<Help>** is defined, that will be
delivered when the user picks the Help button in the window and picks
over a widget.  The event will be also hitted when user presses F1
over one window.

# Rationale

Contextual help is very important in a program to help users to
................................................................................
configured to have this option, a small question mark button is
displayed in the window title bar near the close button. If users pick
that button, a question mark cursor is actived and the user can pick a
widget \(or location in a widget.\)  The typical program reaction to
this is to offer a pop-up window with some short help text or to open
the program help in the relevant section.

Additionally, the new proposed event **<Help>** can also get
information when user presses key F1 over one window.

This implementation is proposed for the Windows OS only, though in the
future some Window Managers like KDE \(in Linux\) have the same feature
and could be also implemented.  In any case, this TIP only proposes
implementation on Windows.

................................................................................
syntax:

 > **wm attributes** _window_ **-contexthelp** ?_boolean_?

If set and if the window is transient, the question mark button will
appear in the window title bar.

A new event **<Help>** is added to the event list so as a user can
do:

	  bind $w <Help> {puts "You pressed widget %W"}

This event will hit in two situations: when the user presses the
question mark in the title bar of the window and pick a widget; and
when user presses the F1 key \(or other platform-defined help key\) over
................................................................................

# Reference Implementation

<http://sf.net/tracker/?func=detail&atid=312997&aid=845248&group\_id=12997>

# Comments

It would be preferable to use a virtual event **<<Help>>_ instead of extending the set of X events.  \(In particular, adding a new **<Help>** event means there has to be a new **HelpMask** bit flag to select for it, and we're running out of event mask bits\).

# Copyright

This document has been placed in the public domain.







>






|







 







|







 







|







 







|





2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
..
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
..
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
..
69
70
71
72
73
74
75
76
77
78
79
80
81
	Author:         Ramon Ribó <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        19-Nov-2003
	Post-History:   
	Tcl-Version:    8.7
	Tk-Ticket:      845248ffffffffffffff
-----

# Abstract

This TIP proposes adding a new option to **wm attributes** for the
Windows version of Tk that offers contextual help in that window.
Additionally, a new event type `<Help>` is defined, that will be
delivered when the user picks the Help button in the window and picks
over a widget.  The event will be also hitted when user presses F1
over one window.

# Rationale

Contextual help is very important in a program to help users to
................................................................................
configured to have this option, a small question mark button is
displayed in the window title bar near the close button. If users pick
that button, a question mark cursor is actived and the user can pick a
widget \(or location in a widget.\)  The typical program reaction to
this is to offer a pop-up window with some short help text or to open
the program help in the relevant section.

Additionally, the new proposed event `<Help>` can also get
information when user presses key F1 over one window.

This implementation is proposed for the Windows OS only, though in the
future some Window Managers like KDE \(in Linux\) have the same feature
and could be also implemented.  In any case, this TIP only proposes
implementation on Windows.

................................................................................
syntax:

 > **wm attributes** _window_ **-contexthelp** ?_boolean_?

If set and if the window is transient, the question mark button will
appear in the window title bar.

A new event `<Help>` is added to the event list so as a user can
do:

	  bind $w <Help> {puts "You pressed widget %W"}

This event will hit in two situations: when the user presses the
question mark in the title bar of the window and pick a widget; and
when user presses the F1 key \(or other platform-defined help key\) over
................................................................................

# Reference Implementation

<http://sf.net/tracker/?func=detail&atid=312997&aid=845248&group\_id=12997>

# Comments

It would be preferable to use a virtual event `<<Help>>` instead of extending the set of X events.  \(In particular, adding a new `<Help>` event means there has to be a new **HelpMask** bit flag to select for it, and we're running out of event mask bits\).

# Copyright

This document has been placed in the public domain.

Changes to tip/178.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Joe Mistachkin <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        21-Mar-2004
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes two new **info** subcommands which are used to
obtain the current process and thread identifiers.







>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Joe Mistachkin <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        21-Mar-2004
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Ticket:     920731ffffffffffffff
-----

# Abstract

This TIP proposes two new **info** subcommands which are used to
obtain the current process and thread identifiers.

Changes to tip/216.md.

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Currently there is no means to add new command-line options to the
standard Tcl shells, tclsh and wish, that can be handled at the script
level. This hampers the development of, for instance, a scripted
debugger or tracing tool, because the shell must be called with an
awkward command line \(stating the location of the script file
implementing the facility\).  This TIP proposes a simple mechanism so
that a command line like "tclsh -debug myprog.tcl" is possible.  The
new mechanism relies on the existing package mechanism and a few
conventions. It can be implemented for the most part in Tcl.

# Rationale

With Tcl 8.4 it is quite easy to create a scripted debugger - see for
instance <http://wiki.tcl.tk/6007>  and <http://wiki.tcl.tk.12251>  -
since this version introduced execution traces. However, it is less
simple to turn that into an "out-of-the-box" resource: suppose its
implementation file is "debug.tcl", residing in a directory
"~/my-tcl-utils" \(or "d:\\my-tcl-utils" under Windows\), then the
following command-line is necessary:

	 tclsh ~/my-tcl-utils/debug.tcl myapp.tcl

or under Windows:

	 tclsh d:\my-tcl-utils\debug.tcl myapp.tcl

instead of the more elegant:

	 tclsh -debug myapp.tcl

where some mechanism links the option "-debug" to the implementation
file "debug.tcl".

An alternative method could be to make the file "debug.tcl" a loadable
package but this requires the user to change the application: it
should then load the debug package whenever the user wants to
interactively debug it.

# Proposed Changes

The only thing that needs to be changed in tclsh and wish






|









|
|












|
|

|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Currently there is no means to add new command-line options to the
standard Tcl shells, tclsh and wish, that can be handled at the script
level. This hampers the development of, for instance, a scripted
debugger or tracing tool, because the shell must be called with an
awkward command line \(stating the location of the script file
implementing the facility\).  This TIP proposes a simple mechanism so
that a command line like `tclsh -debug myprog.tcl` is possible.  The
new mechanism relies on the existing package mechanism and a few
conventions. It can be implemented for the most part in Tcl.

# Rationale

With Tcl 8.4 it is quite easy to create a scripted debugger - see for
instance <http://wiki.tcl.tk/6007>  and <http://wiki.tcl.tk.12251>  -
since this version introduced execution traces. However, it is less
simple to turn that into an "out-of-the-box" resource: suppose its
implementation file is `debug.tcl`, residing in a directory
`~/my-tcl-utils` \(or `d:\\my-tcl-utils` under Windows\), then the
following command-line is necessary:

	 tclsh ~/my-tcl-utils/debug.tcl myapp.tcl

or under Windows:

	 tclsh d:\my-tcl-utils\debug.tcl myapp.tcl

instead of the more elegant:

	 tclsh -debug myapp.tcl

where some mechanism links the option `-debug` to the implementation
file `debug.tcl`.

An alternative method could be to make the file `debug.tcl` a loadable
package but this requires the user to change the application: it
should then load the debug package whenever the user wants to
interactively debug it.

# Proposed Changes

The only thing that needs to be changed in tclsh and wish

Changes to tip/220.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	Author:         Vince Darley <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        12-Sep-2004
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This tip allows the creator and opener of a channel to cast away
privileges and have them restored on close, to permit last-minute
processing.  It is sufficient to resolve a _tclvfs_ bug, minimal,






>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	Author:         Vince Darley <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        12-Sep-2004
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Ticket:     1057093
-----

# Abstract

This tip allows the creator and opener of a channel to cast away
privileges and have them restored on close, to permit last-minute
processing.  It is sufficient to resolve a _tclvfs_ bug, minimal,

Changes to tip/225.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	Author:         Miguel Sofer <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        25-Oct-2004
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes to add a new command to generate arithmetic
sequences as Tcl lists that may be stored in constant space in many
practical situations.  The only change from the point of view of the






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	Author:         Miguel Sofer <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        25-Oct-2004
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Ticket:     1052584
-----

# Abstract

This TIP proposes to add a new command to generate arithmetic
sequences as Tcl lists that may be stored in constant space in many
practical situations.  The only change from the point of view of the

Changes to tip/238.md.

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
instances and act on their creation.

# Rationale

It would be useful if it was possible to set an event on class bindings to
allow custom code to be run when a widget of a particular class is created.

Note that the standard X11 <Create> event is not quite suitable, because that
is delivered to the X11 parent of the widget, which is not Tk in the case of
toplevel windows.

# Proposal

It is proposed that the virtual event <<Create>> be sent to every widget upon
the creation of its actual underlying window \(i.e. as part of
**Tk\_MakeWindowExist**\). Note that this is the earliest at which an event
can actually be delivered to the widget; before that, doing **event
generate** to the widget just creates an event that gets discarded.

## Example







|





|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
instances and act on their creation.

# Rationale

It would be useful if it was possible to set an event on class bindings to
allow custom code to be run when a widget of a particular class is created.

Note that the standard X11 `<Create>` event is not quite suitable, because that
is delivered to the X11 parent of the widget, which is not Tk in the case of
toplevel windows.

# Proposal

It is proposed that the virtual event `<<Create>>` be sent to every widget upon
the creation of its actual underlying window \(i.e. as part of
**Tk\_MakeWindowExist**\). Note that this is the earliest at which an event
can actually be delivered to the widget; before that, doing **event
generate** to the widget just creates an event that gets discarded.

## Example

Changes to tip/240.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	Type:           Project
	Vote:           Pending
	Created:        22-Feb-2005
	Post-History:   
	Keywords:       Tcl
	Obsoletes:      88
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes some new commands through which Tcl scripts can create and
monitor child processes.







>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	Type:           Project
	Vote:           Pending
	Created:        22-Feb-2005
	Post-History:   
	Keywords:       Tcl
	Obsoletes:      88
	Tcl-Version:    8.7
	Tcl-Ticket:     1315115
-----

# Abstract

This TIP proposes some new commands through which Tcl scripts can create and
monitor child processes.

Changes to tip/243.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:		Draft
	Type:		Project
	Vote:		Pending
	Created:	16-Mar-2005
	Tcl-Version:	8.7
	Post-History:	
	Keywords:	Tk

-----

# Abstract

This TIP adds a _find dialog_ to the Tk **text** widget.

# Rationale






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:		Draft
	Type:		Project
	Vote:		Pending
	Created:	16-Mar-2005
	Tcl-Version:	8.7
	Post-History:	
	Keywords:	Tk
	Tk-Ticket:      1167420
-----

# Abstract

This TIP adds a _find dialog_ to the Tk **text** widget.

# Rationale

Changes to tip/271.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	Author:         susanta kumar mishra <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        11-Jul-2006
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This TIP describes updates to the Unix file dialogs to make them more like the
dialogs found on the Windows platform. This increases the usability of the
dialog for general "power" users.






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	Author:         susanta kumar mishra <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        11-Jul-2006
	Post-History:   
	Tcl-Version:    8.7
	Tk-Ticket:      1520742
-----

# Abstract

This TIP describes updates to the Unix file dialogs to make them more like the
dialogs found on the Windows platform. This increases the usability of the
dialog for general "power" users.

Changes to tip/278.md.

6
7
8
9
10
11
12

13
14
15
16
17
18
19
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        03-Oct-2006
	Post-History:
	Discussions To: Tcl Core List
	Tcl-Version:    9.0

-----

# Abstract

This TIP proposes to fix the behaviour for variable name resolution, modelling
it on the resolution for namespace names instead of the current command name
resolution.






>







6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        03-Oct-2006
	Post-History:
	Discussions To: Tcl Core List
	Tcl-Version:    9.0
	Tcl-Branch:     tip-278
-----

# Abstract

This TIP proposes to fix the behaviour for variable name resolution, modelling
it on the resolution for namespace names instead of the current command name
resolution.

Changes to tip/282.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        13-Oct-2006
	Post-History:   
	Keywords:       expr,operator,assignment
	Tcl-Version:    8.7

-----

# Abstract

This TIP extends the syntax of the **expr** command to allow a sequence of
mathematical computations to be expressed clearly and concisely.







>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        13-Oct-2006
	Post-History:   
	Keywords:       expr,operator,assignment
	Tcl-Version:    8.7
	Tcl-Ticket:     1969722
-----

# Abstract

This TIP extends the syntax of the **expr** command to allow a sequence of
mathematical computations to be expressed clearly and concisely.

Changes to tip/283.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	Author:         Neil Madden <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        01-Oct-2006
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes that ensembles resolve all commands in their namespace.

# Rationale






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	Author:         Neil Madden <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        01-Oct-2006
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Ticket:     1577282
-----

# Abstract

This TIP proposes that ensembles resolve all commands in their namespace.

# Rationale

Changes to tip/284.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Miguel Sofer <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        01-Oct-2006
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This TIP exposes a Tcl script-level interface to the direct command invokation
engine already present in the Tcl library for years.







>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Miguel Sofer <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        01-Oct-2006
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Ticket:     1577324
-----

# Abstract

This TIP exposes a Tcl script-level interface to the direct command invokation
engine already present in the Tcl library for years.

Changes to tip/290.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
..
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
..
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        29-Oct-2006
	Post-History:   
	Keywords:       Tcl,error,trap
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes the possibility to register a custom command as error and exception handler.

# Rationale
................................................................................

# Specification

The implementation consists of two parts: a registration command for the custom command and a place where the handler is called. For this to work, there are some minor changes necessary to the Tcl execution engine and to the Interp structure. For running the handler on caught and or uncaught errors \(depending on how the user wants to have it\) it is necessary to capture the current level of "catch"es that occure during execution.

The registration command is responsible for:

    * register the command for caught and/or uncaught exceptions

    * retrieve the currently registered command

    * change the execution details \(caught and/or uncaught errors\) and the command

    * unregister the command and thus get back to the current behaviour in error cases

Since the functionality is very similar to the family of **trace** commands, the proposed registration command is an extension to trace:

**trace set exception ?-caught? ?-uncaught? ?command?**: Registration and modification

The arguments _-caught_ and/or _-uncaught_ to _trace set exception_ modify the run conditions for the currently registered handler \(run on caught/uncaught errors\). With the _command_ argument, this is set as the new handler. The return code and result of the command that was executing is appended to the registered _command_. So, the real call is: _command code result_.

................................................................................

Any previously set error handler is unregistered.

The _command_ that is registered will quell the error if it returns normal \(return code 0\). If the script returns abnormal, it's return code is returned to the interpreter. Errors inside the handler are not trapped by the script again, rather they are presented to the interpreter as usual - otherwise this would result in an endless loop.

The changes in the execution engine should be done so that:

    * existing functionality is not disturbed

    * the call frame is preserved after the error occured - thus the custom command is run in the same level as where the error was thrown

    * the _::errorInfo_ and _::errorCode_ variables are updated to contain the error information **that is available in the current callframe**. This information must be updated before the custom command is run, so that it is accessible from there.

The innermost function that is called on Tcl code execution is _TclEvalObjvInternal\(\)_. It is called from others to execute a command and returns the code that the executed command returned. It's the best place to trigger the error handler execution, but whether errors are catched \(catchLevel\) must be present at this time. Therefore, this level is stored in the current Interp\* from within the callers of _TclEvalObjvInternal\(\)_. The catch level can be determined either from _TclExecuteByteCode\(\)_ or from _Tcl\_CatchObjCmd\(\)_ directly.

The errorInfo and errorCode variables are set directly before the handler is run. This ensures that they are updated properly. Eventually registerred traces on this variable are handled as usual, before the custom error command is executed.

# Reference Implementation







>







 







|

|

|

|







 







|

|

|







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
..
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
..
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        29-Oct-2006
	Post-History:   
	Keywords:       Tcl,error,trap
	Tcl-Version:    8.7
	Tcl-Ticket:     1587317
-----

# Abstract

This TIP proposes the possibility to register a custom command as error and exception handler.

# Rationale
................................................................................

# Specification

The implementation consists of two parts: a registration command for the custom command and a place where the handler is called. For this to work, there are some minor changes necessary to the Tcl execution engine and to the Interp structure. For running the handler on caught and or uncaught errors \(depending on how the user wants to have it\) it is necessary to capture the current level of "catch"es that occure during execution.

The registration command is responsible for:

   * register the command for caught and/or uncaught exceptions

   * retrieve the currently registered command

   * change the execution details \(caught and/or uncaught errors\) and the command

   * unregister the command and thus get back to the current behaviour in error cases

Since the functionality is very similar to the family of **trace** commands, the proposed registration command is an extension to trace:

**trace set exception ?-caught? ?-uncaught? ?command?**: Registration and modification

The arguments _-caught_ and/or _-uncaught_ to _trace set exception_ modify the run conditions for the currently registered handler \(run on caught/uncaught errors\). With the _command_ argument, this is set as the new handler. The return code and result of the command that was executing is appended to the registered _command_. So, the real call is: _command code result_.

................................................................................

Any previously set error handler is unregistered.

The _command_ that is registered will quell the error if it returns normal \(return code 0\). If the script returns abnormal, it's return code is returned to the interpreter. Errors inside the handler are not trapped by the script again, rather they are presented to the interpreter as usual - otherwise this would result in an endless loop.

The changes in the execution engine should be done so that:

   * existing functionality is not disturbed

   * the call frame is preserved after the error occured - thus the custom command is run in the same level as where the error was thrown

   * the _::errorInfo_ and _::errorCode_ variables are updated to contain the error information **that is available in the current callframe**. This information must be updated before the custom command is run, so that it is accessible from there.

The innermost function that is called on Tcl code execution is _TclEvalObjvInternal\(\)_. It is called from others to execute a command and returns the code that the executed command returned. It's the best place to trigger the error handler execution, but whether errors are catched \(catchLevel\) must be present at this time. Therefore, this level is stored in the current Interp\* from within the callers of _TclEvalObjvInternal\(\)_. The catch level can be determined either from _TclExecuteByteCode\(\)_ or from _Tcl\_CatchObjCmd\(\)_ directly.

The errorInfo and errorCode variables are set directly before the handler is run. This ensures that they are updated properly. Eventually registerred traces on this variable are handled as usual, before the custom error command is executed.

# Reference Implementation

Changes to tip/312.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        26-Jan-2008
	Post-History:   
	Keywords:       variable,trace
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes adding a command, **Tcl\_LinkArray**, to allow linking of C
variables to Tcl lists. It also adds more types of linked variable.







>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        26-Jan-2008
	Post-History:   
	Keywords:       variable,trace
	Tcl-Version:    8.7
	Tcl-Ticket:     1992824
-----

# Abstract

This TIP proposes adding a command, **Tcl\_LinkArray**, to allow linking of C
variables to Tcl lists. It also adds more types of linked variable.

Changes to tip/342.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
...
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
	State:		Draft
	Type:		Project
	Vote:		Pending
	Tcl-Version:	8.7
	Created:	27-Nov-2008
	Keywords:	dictionary, default value
	Post-History:	

-----

# Abstract

A new subcommand of **dict** is proposed, which returns a dictionary value
if it exists and returns a per-call default otherwise.

................................................................................

Even if it is deemed appropriate to have a dedicated subcommand of **dict**
for this, it could be argued that it needn't be part of the compiled Tcl core;
since **dict** is an ensemble, anyone can extend it at the script level and
"the core can do without this bloat". However, it turns out than an in-core
implementation is very easy whereas the alternatives are not so easy.

Concretely, the necessary DictGetWithDefaultCmd is a trivial modification of
DictExistsCmd, to take one extra argument after the _key_s and change the
final

	  Tcl_SetObjResult(interp, Tcl_NewBooleanObj(valuePtr != NULL));

to

	  Tcl_SetObjResult(interp, valuePtr != NULL ? valuePtr : objv[objc-1]);

It is nowhere near as easy to do this in a well-behaved extension, since
DictExistsCmd relies on TclTraceDictPath to do most of the work, and the
latter is AFAICT at best available in the internal stubs table.

A script-level implementation is certainly possible, but the minute details of
producing core-looking error messages in this case appears considerable both
compared to the functional parts of the command and compared to the amount of
code needed to do it in the core.







>







 







|
|









|







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
	State:		Draft
	Type:		Project
	Vote:		Pending
	Tcl-Version:	8.7
	Created:	27-Nov-2008
	Keywords:	dictionary, default value
	Post-History:	
	Tcl-Ticket:     2370575
-----

# Abstract

A new subcommand of **dict** is proposed, which returns a dictionary value
if it exists and returns a per-call default otherwise.

................................................................................

Even if it is deemed appropriate to have a dedicated subcommand of **dict**
for this, it could be argued that it needn't be part of the compiled Tcl core;
since **dict** is an ensemble, anyone can extend it at the script level and
"the core can do without this bloat". However, it turns out than an in-core
implementation is very easy whereas the alternatives are not so easy.

Concretely, the necessary `DictGetWithDefaultCmd` is a trivial modification of
`DictExistsCmd`, to take one extra argument after the _key_s and change the
final

	  Tcl_SetObjResult(interp, Tcl_NewBooleanObj(valuePtr != NULL));

to

	  Tcl_SetObjResult(interp, valuePtr != NULL ? valuePtr : objv[objc-1]);

It is nowhere near as easy to do this in a well-behaved extension, since
`DictExistsCmd` relies on `TclTraceDictPath` to do most of the work, and the
latter is AFAICT at best available in the internal stubs table.

A script-level implementation is certainly possible, but the minute details of
producing core-looking error messages in this case appears considerable both
compared to the functional parts of the command and compared to the amount of
code needed to do it in the core.

Changes to tip/345.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	Type:           Project
	Vote:           Done
	Created:        05-Feb-2009
	Post-History:
	Discussions-To: Tcl Core List
	Keywords:       Tcl,encoding,invalid UTF-8
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes to remove the 'identity' encoding which is the Pandora's Box
of invalid UTF-8 string representations.







>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	Type:           Project
	Vote:           Done
	Created:        05-Feb-2009
	Post-History:
	Discussions-To: Tcl Core List
	Keywords:       Tcl,encoding,invalid UTF-8
	Tcl-Version:    8.7
	Tcl-Ticket:     2564363
-----

# Abstract

This TIP proposes to remove the 'identity' encoding which is the Pandora's Box
of invalid UTF-8 string representations.

Changes to tip/346.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        02-Feb-2009
	Post-History:   
	Keywords:       Tcl,encoding,convertto,strict,Unicode,String,ByteArray
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes to raise an error when an encoding-based conversion
loses information.







>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        02-Feb-2009
	Post-History:   
	Keywords:       Tcl,encoding,convertto,strict,Unicode,String,ByteArray
	Tcl-Version:    8.7
	Tcl-Ticket:     1665628
-----

# Abstract

This TIP proposes to raise an error when an encoding-based conversion
loses information.

Changes to tip/351.md.

5
6
7
8
9
10
11

12
13
14
15
16
17
18
	Author:         Andreas Leitgeb <[email protected]>
	State:          Final 
	Type:           Project
	Vote:           Done
	Created:        09-Jul-2009
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This TIP allows the searching of lists that are grouped into collections of
several elements.







>







5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
	Author:         Andreas Leitgeb <[email protected]>
	State:          Final 
	Type:           Project
	Vote:           Done
	Created:        09-Jul-2009
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Branch:     tip-351
-----

# Abstract

This TIP allows the searching of lists that are grouped into collections of
several elements.

Changes to tip/355.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Alexandre Ferrieux <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        01-Sep-2009
	Tcl-Version:    8.7
	Post-History:   

-----

# Abstract

This TIP proposes to put an end to the unix-specific habit of naming channels
after the underlying file descriptor, by using a much longer-lived incremented
counter instead.






>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Alexandre Ferrieux <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        01-Sep-2009
	Tcl-Version:    8.7
	Post-History:   
	Tcl-Ticket:     2826430
-----

# Abstract

This TIP proposes to put an end to the unix-specific habit of naming channels
after the underlying file descriptor, by using a much longer-lived incremented
counter instead.

Changes to tip/366.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        29-Apr-2010
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7

-----

# Abstract

This TIP is to allow custom sizing of menubutton indicators using
**-indwidth** and **-indheight** as options.







>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        29-Apr-2010
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7
	Tk-Ticket:      2996760
-----

# Abstract

This TIP is to allow custom sizing of menubutton indicators using
**-indwidth** and **-indheight** as options.

Changes to tip/369.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        15-Jul-2010
	Post-History:   
	Keywords:       Tk,user-defined data,dictionary
	Tcl-Version:    8.7

-----

# Abstract

This TIP is to add a **cargo** subcommand to widgets for storing data in a
data dictionary. This TIP is related to [[349]](349.md).







>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        15-Jul-2010
	Post-History:   
	Keywords:       Tk,user-defined data,dictionary
	Tcl-Version:    8.7
	Tk-Ticket:      3023578
-----

# Abstract

This TIP is to add a **cargo** subcommand to widgets for storing data in a
data dictionary. This TIP is related to [[349]](349.md).

Changes to tip/389.md.

5
6
7
8
9
10
11

12
13
14
15
16
17
18
...
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
	Type:           Project
	Vote:           Done
	Created:        23-Aug-2011
	Post-History:   
	Discussions-To: Tcl Core list
	Keywords:       Tcl
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes to add full support for all characters in Unicode 10.0\+,
inclusive the characters >= **U\+010000**.

................................................................................
in a character with length 2 (the original one) and another character with
length 0 (the empty string).

Also note that the regexp engine still cannot really handle Unicode characters >U+FFFF,
it will handle those as if they consist of 2 separate characters. Most usage of
regular expressions won't notice the difference.

Those caveats are planned to be handled in "part 2" (TIP #497)

# Reference Implementation

A reference implementation is available in the [tip-389 branch]
(https://core.tcl.tk/tk/timeline?r=tip-389).

# Rejected Alternatives






>







 







|







5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
...
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
	Type:           Project
	Vote:           Done
	Created:        23-Aug-2011
	Post-History:   
	Discussions-To: Tcl Core list
	Keywords:       Tcl
	Tcl-Version:    8.7
	Tcl-Branch:     tip-389
-----

# Abstract

This TIP proposes to add full support for all characters in Unicode 10.0\+,
inclusive the characters >= **U\+010000**.

................................................................................
in a character with length 2 (the original one) and another character with
length 0 (the empty string).

Also note that the regexp engine still cannot really handle Unicode characters >U+FFFF,
it will handle those as if they consist of 2 separate characters. Most usage of
regular expressions won't notice the difference.

Those caveats are planned to be handled in "part 2" ([TIP #497](497.md))

# Reference Implementation

A reference implementation is available in the [tip-389 branch]
(https://core.tcl.tk/tk/timeline?r=tip-389).

# Rejected Alternatives

Changes to tip/401.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Lars Hellström <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        29-Apr-2012
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

The basic syntax rules of Tcl \(the "dodekalogue"\) are modified to allow words
that are comments. In analogy with the argument expansion **\{\*\}**, such
comment words will begin with **\{\#\}** \(left brace, hash sign, right brace\).  






>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Lars Hellström <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        29-Apr-2012
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Branch:     tip-401
-----

# Abstract

The basic syntax rules of Tcl \(the "dodekalogue"\) are modified to allow words
that are comments. In analogy with the argument expansion **\{\*\}**, such
comment words will begin with **\{\#\}** \(left brace, hash sign, right brace\).  

Changes to tip/402.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	Type:           Project
	Vote:           Pending
	Created:        16-Jul-2011
	Post-History:   
	Discussions-To: Tcl Core list
	Keywords:       Tcl
	Tcl-Version:    8.7

-----

# Abstract

Both Windows and Cygwin interpret paths starting with **//** as a special
prefix, indicating that the path has the form: **//server/share/file\_path**.
Windows has built-in handling of such paths built-in. UNIX doesn't have this.






>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	Type:           Project
	Vote:           Pending
	Created:        16-Jul-2011
	Post-History:   
	Discussions-To: Tcl Core list
	Keywords:       Tcl
	Tcl-Version:    8.7
	Tcl-Branch:     jn-unc-vfs
-----

# Abstract

Both Windows and Cygwin interpret paths starting with **//** as a special
prefix, indicating that the path has the form: **//server/share/file\_path**.
Windows has built-in handling of such paths built-in. UNIX doesn't have this.

Changes to tip/406.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	State:		Draft
	Type:		Project
	Tcl-Version:	8.7
	Vote:		Pending
	Post-History:	
	Author:		Donal K. Fellows <[email protected]>
	Created:	01-Aug-2012

-----

# Abstract

The "http" package needs cookie support, especially to support complex modern
web authentication protocols. This TIP defines a pluggable interface and a
TclOO class that implements that interface so that Tcl programmers can control






>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	State:		Draft
	Type:		Project
	Tcl-Version:	8.7
	Vote:		Pending
	Post-History:	
	Author:		Donal K. Fellows <[email protected]>
	Created:	01-Aug-2012
	Tcl-Branch:	dkf-http-cookies
-----

# Abstract

The "http" package needs cookie support, especially to support complex modern
web authentication protocols. This TIP defines a pluggable interface and a
TclOO class that implements that interface so that Tcl programmers can control

Changes to tip/414.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	Author:         Jan Nijtmans <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        15-Oct-2012
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

The ability to initialize just the lower level Tcl subsystems used to be part
of the public API, now it is no longer exposed. This TIP proposes that it be
re-exposed.






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	Author:         Jan Nijtmans <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        15-Oct-2012
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Branch:     initsubsystems
-----

# Abstract

The ability to initialize just the lower level Tcl subsystems used to be part
of the public API, now it is no longer exposed. This TIP proposes that it be
re-exposed.

Changes to tip/415.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        16-Oct-2012
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7

-----

# Abstract

Creating a segment of a circular arc is unnecessarily difficult using the
**canvas** arc. This TIP proposes a simple extension of the syntax to
support the creation of circular arc segments in a natural way. A similar






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        16-Oct-2012
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7
	Tk-Branch:      tip-415
-----

# Abstract

Creating a segment of a circular arc is unnecessarily difficult using the
**canvas** arc. This TIP proposes a simple extension of the syntax to
support the creation of circular arc segments in a natural way. A similar

Changes to tip/421.md.

8
9
10
11
12
13
14

15
16
17
18
19
20
21
	Author:		Brad Lanam <[email protected]>
	Author:		Donal K. Fellows <[email protected]>
	Created:	28-Nov-2012
	Updated:	24-Oct-2017
	For:		DKF, AF, JN, SL, KBK, DGP, AK
	Against:	none
	Present:	none

-----

# Abstract

This TIP proposes an efficient mechanism for iterating over the contents of a
large array.







>







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
	Author:		Brad Lanam <[email protected]>
	Author:		Donal K. Fellows <[email protected]>
	Created:	28-Nov-2012
	Updated:	24-Oct-2017
	For:		DKF, AF, JN, SL, KBK, DGP, AK
	Against:	none
	Present:	none
	Tcl-Branch:     tip-421
-----

# Abstract

This TIP proposes an efficient mechanism for iterating over the contents of a
large array.

Changes to tip/422.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        02-Jan-2013
	Post-History:
	Tcl-Version:    9.0
	Keywords:	Tcl, API removal, varargs

-----

# Abstract

This TIP proposes to remove all functions which use the `va_list` type from
the public API, and it describes what extensions using this should do to make
their extension portable on the mingw-w64 gcc compiler on the AMD64 platform.






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        02-Jan-2013
	Post-History:
	Tcl-Version:    9.0
	Keywords:	Tcl, API removal, varargs
	Tcl-Branch:     tip-422
-----

# Abstract

This TIP proposes to remove all functions which use the `va_list` type from
the public API, and it describes what extensions using this should do to make
their extension portable on the mingw-w64 gcc compiler on the AMD64 platform.

Changes to tip/424.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        07-Jul-2013
	Post-History:   
	Keywords:       Tcl,subprocess,execution
	Tcl-Version:    8.7

-----

# Abstract

This extension overcomes day-1 limitations of [**exec**]'s syntax,
allowing for unconstrained arguments to commands, and opening the path to more
exotic redirections.






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        07-Jul-2013
	Post-History:   
	Keywords:       Tcl,subprocess,execution
	Tcl-Version:    8.7
	Tcl-Branch:     tip-improve-exec
-----

# Abstract

This extension overcomes day-1 limitations of [**exec**]'s syntax,
allowing for unconstrained arguments to commands, and opening the path to more
exotic redirections.

Changes to tip/425.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        17-Jul-2013
	Post-History:   
	Keywords:       Tcl,platform integration,i18n
	Tcl-Version:    8.7

-----

# Abstract

The default panic proc on Windows console applications writes the
message in UTF-8 to stderr. Unfortunately, the Windows console
normally does not have UTF-8 as code page but some single-byte






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        17-Jul-2013
	Post-History:   
	Keywords:       Tcl,platform integration,i18n
	Tcl-Version:    8.7
	Tcl-Branch:     win-console-panic
-----

# Abstract

The default panic proc on Windows console applications writes the
message in UTF-8 to stderr. Unfortunately, the Windows console
normally does not have UTF-8 as code page but some single-byte

Changes to tip/426.md.

7
8
9
10
11
12
13

14
15
16
17
18
19
20
	Author:		Donal K. Fellows <[email protected]>
	Created:	31-Jul-2013
	Keywords:	introspection, commands, Tcl, Tk
	Vote-Results:   4/2/3 accepted
	Votes-For:      DKF, BG, JN, JD
	Votes-Against:  DGP, AK
	Votes-Present:  KBK, FV, SL

-----

# Abstract

This TIP describes a mechanism for determining what "type" of command
a particular command is. This can be used as a prelude to performing
other kinds of introspection, such as using **info body**,






>







7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
	Author:		Donal K. Fellows <[email protected]>
	Created:	31-Jul-2013
	Keywords:	introspection, commands, Tcl, Tk
	Vote-Results:   4/2/3 accepted
	Votes-For:      DKF, BG, JN, JD
	Votes-Against:  DGP, AK
	Votes-Present:  KBK, FV, SL
	Tcl-Branch:     dkf-command-type
-----

# Abstract

This TIP describes a mechanism for determining what "type" of command
a particular command is. This can be used as a prelude to performing
other kinds of introspection, such as using **info body**,

Changes to tip/428.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        16-Mar-2014
	Post-History:   
	Keywords:       socket,non-blocking,error reporting,option dictionary
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes a new method which allows to return the error message and the error code of a background socket error \(as reported by **fconfigure -error**\), similar to the option dictionaries produced by catch and try and consumed by return.

# Rationale






>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        16-Mar-2014
	Post-History:   
	Keywords:       socket,non-blocking,error reporting,option dictionary
	Tcl-Version:    8.7
	Tcl-Branch:     tip-428
-----

# Abstract

This TIP proposes a new method which allows to return the error message and the error code of a background socket error \(as reported by **fconfigure -error**\), similar to the option dictionaries produced by catch and try and consumed by return.

# Rationale

Changes to tip/430.md.

9
10
11
12
13
14
15

16
17
18
19
20
21
22
	Created:        03-Sep-2014
	Post-History:
	Keywords:       virtual filesystem,zip,tclkit,boot,bootstrap
	Tcl-Version:    8.7
	Votes-For:      DKF, KBK, SL, AK, JD, JN (partially)
	Votes-Against:  JN (partially)
	Present:        JN (partially)

-----

# Abstract

This proposal will add basic support for mounting zip archive files as virtual
filesystems to the Tcl core.







>







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
	Created:        03-Sep-2014
	Post-History:
	Keywords:       virtual filesystem,zip,tclkit,boot,bootstrap
	Tcl-Version:    8.7
	Votes-For:      DKF, KBK, SL, AK, JD, JN (partially)
	Votes-Against:  JN (partially)
	Present:        JN (partially)
	Tcl-Branch:     core_zip_vfs
-----

# Abstract

This proposal will add basic support for mounting zip archive files as virtual
filesystems to the Tcl core.

Changes to tip/439.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Jan Nijtmans <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        08-Dec-2015
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

The version schema used by Tcl and Tk has the form MAJOR.MINOR.PATCH, which is
the same schema used by "Semantic Versioning" <http://semver.org/> . For alpha
and beta releases the schema is MAJOR.MINORaPATCH resp MAJOR.MINORbPATCH,






>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Jan Nijtmans <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        08-Dec-2015
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Branch:     semver
-----

# Abstract

The version schema used by Tcl and Tk has the form MAJOR.MINOR.PATCH, which is
the same schema used by "Semantic Versioning" <http://semver.org/> . For alpha
and beta releases the schema is MAJOR.MINORaPATCH resp MAJOR.MINORbPATCH,

Changes to tip/442.md.

6
7
8
9
10
11
12

13
14
15
16
17
18
19
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        17-Feb-2016
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7

-----

# Abstract

Horizontal progress bars should support the ability to display text inside the progress bar.
Buttons should allow justification of multiline texts.







>







6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        17-Feb-2016
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7
	Tk-Branch:      tip-442
-----

# Abstract

Horizontal progress bars should support the ability to display text inside the progress bar.
Buttons should allow justification of multiline texts.

Changes to tip/444.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Pietro Cerutti <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        23-Feb-2016
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes an enhancement to the **clock add** command to support
performing days arithmetic using weekdays only.







>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Pietro Cerutti <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        23-Feb-2016
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Branch:     tip-444
-----

# Abstract

This TIP proposes an enhancement to the **clock add** command to support
performing days arithmetic using weekdays only.

Changes to tip/445.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Don Porter <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        18-Mar-2016
	Post-History:   
	Tcl-Version:	8.7

-----

# Abstract

Proposes additional public routines useful for extensions that implement
custom **Tcl\_ObjType_s.







>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Don Porter <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        18-Mar-2016
	Post-History:   
	Tcl-Version:	8.7
	Tcl-Branch:     tip-445
-----

# Abstract

Proposes additional public routines useful for extensions that implement
custom **Tcl\_ObjType_s.

Changes to tip/447.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        20-Apr-2016
	Post-History:   
	Keywords:       Tcl,tcltest
	Tcl-Version:    8.7

-----

# Abstract

The **-verbose** option of the **tcltest::configure** command accepts a set of
verbosity levels to specify what pieces of information about tests the user
wants reported. This TIP proposes the addition of two new verbosity levels to






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        20-Apr-2016
	Post-History:   
	Keywords:       Tcl,tcltest
	Tcl-Version:    8.7
	Tcl-Branch:     gahr-tip-447
-----

# Abstract

The **-verbose** option of the **tcltest::configure** command accepts a set of
verbosity levels to specify what pieces of information about tests the user
wants reported. This TIP proposes the addition of two new verbosity levels to

Changes to tip/449.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        07-Jun-2016
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7

-----

# Abstract

Tk features an undo/redo mechanism for the **text** widget. This TIP
proposes that the **edit undo** and **edit redo** commands of the text
widget return the ranges of characters impacted by the undo or redo operation.






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        07-Jun-2016
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7
	Tk-Branch:      tip-449
-----

# Abstract

Tk features an undo/redo mechanism for the **text** widget. This TIP
proposes that the **edit undo** and **edit redo** commands of the text
widget return the ranges of characters impacted by the undo or redo operation.

Changes to tip/451.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        10-Aug-2016
	Post-History:   
	Keywords:       Tcl,event loop
	Tcl-Version:    8.7

-----

# Abstract

This TIP add flags to **update** to represent all the flag values available
to the underlying API, _Tcl\_DoOneEvent\(\)_, exposing them to script access.







>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        10-Aug-2016
	Post-History:   
	Keywords:       Tcl,event loop
	Tcl-Version:    8.7
	Tcl-Branch:     updateextended
-----

# Abstract

This TIP add flags to **update** to represent all the flag values available
to the underlying API, _Tcl\_DoOneEvent\(\)_, exposing them to script access.

Changes to tip/452.md.

8
9
10
11
12
13
14

15
16
17
18
19
20
21
	Created:        10-Aug-2016
	Post-History:   
	Tcl-Version:    8.7
	Vote-Results:   2/4/3 rejection in favour of further work
	Votes-For:      KBK, JD
	Votes-Against:  DKF, JN, DGP, AK
	Votes-Present:  BG, FV, SL

-----

# Abstract

This TIP proposes an enhancement to the **tcltest** package to add support
for easy creation of test stubs, mocks and seams.







>







8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
	Created:        10-Aug-2016
	Post-History:   
	Tcl-Version:    8.7
	Vote-Results:   2/4/3 rejection in favour of further work
	Votes-For:      KBK, JD
	Votes-Against:  DKF, JN, DGP, AK
	Votes-Present:  BG, FV, SL
	Tcl-Branch:     tip-452
-----

# Abstract

This TIP proposes an enhancement to the **tcltest** package to add support
for easy creation of test stubs, mocks and seams.

Changes to tip/456.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        18-Nov-2016
	Post-History:   
	Keywords:       Tcl,socket,SO_REUSEPORT,SO_REUSEADDR
	Tcl-Version:    8.7

-----

# Abstract

The **Tcl\_OpenTcpServer** interface doesn't provide enough flexibility as
experienced during the implementation of the scaffolding necessary to support
the **SO\_REUSEPORT** flag for sockets. This TIP adds that capability through






>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        18-Nov-2016
	Post-History:   
	Keywords:       Tcl,socket,SO_REUSEPORT,SO_REUSEADDR
	Tcl-Version:    8.7
	Tcl-Branch:     tip-456
-----

# Abstract

The **Tcl\_OpenTcpServer** interface doesn't provide enough flexibility as
experienced during the implementation of the scaffolding necessary to support
the **SO\_REUSEPORT** flag for sockets. This TIP adds that capability through

Changes to tip/457.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        21-Nov-2016
	Post-History:   
	Keywords:       Tcl,procedure,argument handling
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes an enhancement of the Tcl language to support named
arguments and additional features when calling a procedure.







>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        21-Nov-2016
	Post-History:   
	Keywords:       Tcl,procedure,argument handling
	Tcl-Version:    8.7
	Tcl-Branch:     tip-457
-----

# Abstract

This TIP proposes an enhancement of the Tcl language to support named
arguments and additional features when calling a procedure.

Changes to tip/458.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        24-Nov-2016
	Post-History:   
	Keywords:       event loop,scalability
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes to replace _select_\(2\) in the notifier implementation with _epoll_\(7\) and _kqueue_\(2\) on Linux and DragonFly-, Free-, Net-, and OpenBSD respectively. This is to remove a major bottleneck in the ability of Tcl to scale up to thousands and tens of thousands of sockets \(aka **C10K**\).
Furthermore, this should also provide sufficient infrastructure in order to permit adding support for other platform-specific event mechanisms in the future, such as IOCPs on Solaris and Windows.







>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        24-Nov-2016
	Post-History:   
	Keywords:       event loop,scalability
	Tcl-Version:    8.7
	Tcl-Branch:     tip-458
-----

# Abstract

This TIP proposes to replace _select_\(2\) in the notifier implementation with _epoll_\(7\) and _kqueue_\(2\) on Linux and DragonFly-, Free-, Net-, and OpenBSD respectively. This is to remove a major bottleneck in the ability of Tcl to scale up to thousands and tens of thousands of sockets \(aka **C10K**\).
Furthermore, this should also provide sufficient infrastructure in order to permit adding support for other platform-specific event mechanisms in the future, such as IOCPs on Solaris and Windows.

Changes to tip/459.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        08-Dec-2016
	Post-History:   
	Keywords:       Tcl,package
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes to improve package introspection by providing a new command
**package files**.







>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        08-Dec-2016
	Post-History:   
	Keywords:       Tcl,package
	Tcl-Version:    8.7
	Tcl-Branch:     package_files
-----

# Abstract

This TIP proposes to improve package introspection by providing a new command
**package files**.

Changes to tip/460.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        08-Dec-2016
	Post-History:   
	Keywords:       Tcl,variable,link,upvar
	Tcl-Version:    9.0

-----

# Abstract

Variable linking with the _upvar_ command is not as intuitive or effecient
as it should be. This TIP proposes an alternative through automatic variable
linking.






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        08-Dec-2016
	Post-History:   
	Keywords:       Tcl,variable,link,upvar
	Tcl-Version:    9.0
	Tcl-Branch:     dah-proc-arg-upvar
-----

# Abstract

Variable linking with the _upvar_ command is not as intuitive or effecient
as it should be. This TIP proposes an alternative through automatic variable
linking.

Changes to tip/462.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Frédéric Bonnet <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        23-Jan-2017
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes to improve Tcl's handling of subprocesses created by the 
`exec` and `open` commands by adding a new `::tcl::process` ensemble.







>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Frédéric Bonnet <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        23-Jan-2017
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Branch:     tip-462
-----

# Abstract

This TIP proposes to improve Tcl's handling of subprocesses created by the 
`exec` and `open` commands by adding a new `::tcl::process` ensemble.

Changes to tip/463.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	Type:		Project
	Tcl-Version:	8.7
	Vote:		Done
	Post-History:	
	Author:		Donal Fellows <[email protected]>
	Created:	11-Feb-2017
	Keywords:	Tcl, regular expression

-----

# Abstract

The **regsub** command can only do substitutions of a limited complexity.
This TIP adds an option to generate substitution text using another Tcl
command, allowing a more complex range of substitutions to be performed easily






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	Type:		Project
	Tcl-Version:	8.7
	Vote:		Done
	Post-History:	
	Author:		Donal Fellows <[email protected]>
	Created:	11-Feb-2017
	Keywords:	Tcl, regular expression
	Tcl-Branch:	tip-463
-----

# Abstract

The **regsub** command can only do substitutions of a limited complexity.
This TIP adds an option to generate substitution text using another Tcl
command, allowing a more complex range of substitutions to be performed easily

Changes to tip/465.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Andreas Leitgeb <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        03-Mar-2017
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes to make **$**-substitution more conforming to naive
expectations and just rule out certain odd-ball uses that can safely be
assumed to not appear in serious use, but only in crafted examples "serving"






>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Andreas Leitgeb <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        03-Mar-2017
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Branch:     tip-465
-----

# Abstract

This TIP proposes to make **$**-substitution more conforming to naive
expectations and just rule out certain odd-ball uses that can safely be
assumed to not appear in serious use, but only in crafted examples "serving"

Changes to tip/466.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        10-Mar-2017
	Post-History:   
	Keywords:       Tk,text widget
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes the replacement of the current implementation of the text
widget \(the "legacy" text widget\) by a revised implementation offering a large
number of advantages.






>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        10-Mar-2017
	Post-History:   
	Keywords:       Tk,text widget
	Tcl-Version:    8.7
	Tk-Branch:      revised_text
-----

# Abstract

This TIP proposes the replacement of the current implementation of the text
widget \(the "legacy" text widget\) by a revised implementation offering a large
number of advantages.

Changes to tip/468.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:		Draft
	Type:		Project
	Vote:		Pending
	Created:	03-Apr-2017
	Post-History:  
	Keywords:	Tcl, socket, SOMAXCONN
	Tcl-Version:	8.7

-----

# Abstract

This TIP adds the ability to control the TCP backlog depth used by the
_listen_ system call within the **socket** Command. The API function,
**Tcl\_OpenTcpServerEx**, will be extended to allow the passing of the






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:		Draft
	Type:		Project
	Vote:		Pending
	Created:	03-Apr-2017
	Post-History:  
	Keywords:	Tcl, socket, SOMAXCONN
	Tcl-Version:	8.7
	Tcl-Branch:		tip-468-bis
-----

# Abstract

This TIP adds the ability to control the TCP backlog depth used by the
_listen_ system call within the **socket** Command. The API function,
**Tcl\_OpenTcpServerEx**, will be extended to allow the passing of the

Changes to tip/469.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        16-Apr-2017
	Post-History:   
	Keywords:       Tcl,event handling
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes to extend the **fileevent** Tcl command to also accept the
keyword **exception** for its second argument. This will allow to register a
callback for the specific event that the OS reports an exception on the






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        16-Apr-2017
	Post-History:   
	Keywords:       Tcl,event handling
	Tcl-Version:    8.7
	Tcl-Branch:     tip-469
-----

# Abstract

This TIP proposes to extend the **fileevent** Tcl command to also accept the
keyword **exception** for its second argument. This will allow to register a
callback for the specific event that the OS reports an exception on the

Changes to tip/470.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	Type:		Project
	Tcl-Version:	8.7
	Vote:		Done
	Post-History:	
	Author:		Donal Fellows <[email protected]>
	Created:	23-Apr-2017
	Keywords:	TclOO, metaprogramming

-----

# Abstract

This TIP makes it easier for people to write procedures to extend TclOO's
definition sublanguage.







>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	Type:		Project
	Tcl-Version:	8.7
	Vote:		Done
	Post-History:	
	Author:		Donal Fellows <[email protected]>
	Created:	23-Apr-2017
	Keywords:	TclOO, metaprogramming
	Tcl-Branch:	tip-470
-----

# Abstract

This TIP makes it easier for people to write procedures to extend TclOO's
definition sublanguage.

Changes to tip/471.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Mathieu Lafon <[email protected]>
	State:          Draft
	Type:           Project
	Created:        05-May-2017
	Tcl-Version:    8.7
	Vote:		Pending
	Post-History:

-----

# Abstract

This TIP proposes to improve link variable introspection by providing a new
**info linkedname** command.







>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Mathieu Lafon <[email protected]>
	State:          Draft
	Type:           Project
	Created:        05-May-2017
	Tcl-Version:    8.7
	Vote:		Pending
	Post-History:
	Tcl-Branch:     info-linkedname
-----

# Abstract

This TIP proposes to improve link variable introspection by providing a new
**info linkedname** command.

Changes to tip/472.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	Author:         Brian Griffin <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        25-May-2017
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes adding support for a **0d** decimal radix prefix to
complement the existing **0x** hexidecimal, **0o** octal and **0b**
binary radix prefixes.






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	Author:         Brian Griffin <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        25-May-2017
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Branch:     bsg-0d-radix-prefix
-----

# Abstract

This TIP proposes adding support for a **0d** decimal radix prefix to
complement the existing **0x** hexidecimal, **0o** octal and **0b**
binary radix prefixes.

Changes to tip/476.md.

2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
	Author: Jan Nijtmans ([email protected])
	State: Final
	Type: Project
	Vote: Done
	Created: 27-Sep-2017
	Post-history: PM
	Tcl-Version: 8.7
	Keywords: scan printf

-----

# Abstract

The Scan/Printf format handlers are originally derived from the
C-equivalent `scan()` and `printf()` functions. Since ISO C99 there is
the `inttypes.h` header file, which defines useful macros. But since






|
>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	Author: Jan Nijtmans ([email protected])
	State: Final
	Type: Project
	Vote: Done
	Created: 27-Sep-2017
	Post-history: PM
	Tcl-Version: 8.7
	Keywords: scan, printf
	Tcl-Branch: z_modifier
-----

# Abstract

The Scan/Printf format handlers are originally derived from the
C-equivalent `scan()` and `printf()` functions. Since ISO C99 there is
the `inttypes.h` header file, which defines useful macros. But since

Changes to tip/478.md.

6
7
8
9
10
11
12

13
14
15
16
17
18
19
	Vote:           Done
	Created:        18-Oct-2017
	Post-History:   
	Keywords:       Tcl
	Tcl-Version:    8.7
	Votes-For:      DKF, AK, JD, SL, JN
	Votes-Against:  none

-----
# Abstract

TclOO provides a native OO system for Tcl.  This TIP is to enhance it to meet some of the common expectations of people coming in from other languages.

# Rationale







>







6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
	Vote:           Done
	Created:        18-Oct-2017
	Post-History:   
	Keywords:       Tcl
	Tcl-Version:    8.7
	Votes-For:      DKF, AK, JD, SL, JN
	Votes-Against:  none
	Tcl-Branch:     tip-478
-----
# Abstract

TclOO provides a native OO system for Tcl.  This TIP is to enhance it to meet some of the common expectations of people coming in from other languages.

# Rationale

Changes to tip/479.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        23-Oct-2017
	Post-History:
	Keywords:       Tcl,procedure,argument handling
	Tcl-Version:    8.7

-----
# Abstract

This TIP proposes an enhancement of the Tcl language to support named
parameters when defining a procedure or OO method.

# Rationale






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        23-Oct-2017
	Post-History:
	Keywords:       Tcl,procedure,argument handling
	Tcl-Version:    8.7
	Tcl-Branch:     tip479
-----
# Abstract

This TIP proposes an enhancement of the Tcl language to support named
parameters when defining a procedure or OO method.

# Rationale

Changes to tip/481.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        27-Oct-2017
	Post-History:
	Keywords:       Tcl
	Tcl-Version:    8.7

-----
# Abstract

This TIP proposes enhancing various C API functions which having a `int *` parameter,
to be used with a `size_t *` parameter as well. In addition, a new `Tcl_GetValue()`
function is proposed which can retrieve a signed or unsigned (wide) integer or a
float/double/long double from a `Tcl_Obj`, .






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        27-Oct-2017
	Post-History:
	Keywords:       Tcl
	Tcl-Version:    8.7
	Tcl-Branch:     tip-481
-----
# Abstract

This TIP proposes enhancing various C API functions which having a `int *` parameter,
to be used with a `size_t *` parameter as well. In addition, a new `Tcl_GetValue()`
function is proposed which can retrieve a signed or unsigned (wide) integer or a
float/double/long double from a `Tcl_Obj`, .

Changes to tip/482.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Accepted
	Type:           Project
	Vote:           Done
	Created:        03-Nov-2017
	Post-History:   
	Keywords:       Tk, demos, configuration
	Tcl-Version:    8.7

-----
# Abstract

The Tk demos can be installed anywhere but this location is not recorded anywhere.
This TIP proposes recording the demo directory location.

# Rationale






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Accepted
	Type:           Project
	Vote:           Done
	Created:        03-Nov-2017
	Post-History:   
	Keywords:       Tk, demos, configuration
	Tcl-Version:    8.7
	Tk-Branch:      tk-stu-pkg
-----
# Abstract

The Tk demos can be installed anywhere but this location is not recorded anywhere.
This TIP proposes recording the demo directory location.

# Rationale

Changes to tip/483.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Accepted
	Type:           Project
	Vote:           Done
	Created:        03-Nov-2017
	Post-History:   
	Keywords:       Tk, configuration
	Tcl-Version:    8.7

-----
# Abstract

Initially implemented in TIP #205 [[205]](205.md), the TIP #59 [[59]](59.md) implementation for Tk is incomplete.

This TIP proposes a more complete TIP #59 implementation for Tk.







>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Accepted
	Type:           Project
	Vote:           Done
	Created:        03-Nov-2017
	Post-History:   
	Keywords:       Tk, configuration
	Tcl-Version:    8.7
	Tk-Branch:      tk-stu-pkg
-----
# Abstract

Initially implemented in TIP #205 [[205]](205.md), the TIP #59 [[59]](59.md) implementation for Tk is incomplete.

This TIP proposes a more complete TIP #59 implementation for Tk.

Changes to tip/484.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        06-Nov-2017
	Post-History:
	Keywords:       Tcl
	Tcl-Version:    8.7

-----
# Abstract

The 'wideInt' type was invented for Tcl because the 'int' type (which was
actually 'long') was not sufficient to store numbers larger than [+-]2**31.
This TIP proposes to merge the 'int' and the 'wideInt' Obj-types such that
'int' does all internal calculations using Tcl_WideInt in stead of long.






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        06-Nov-2017
	Post-History:
	Keywords:       Tcl
	Tcl-Version:    8.7
	Tcl-Branch:     no-wideint
-----
# Abstract

The 'wideInt' type was invented for Tcl because the 'int' type (which was
actually 'long') was not sufficient to store numbers larger than [+-]2**31.
This TIP proposes to merge the 'int' and the 'wideInt' Obj-types such that
'int' does all internal calculations using Tcl_WideInt in stead of long.

Changes to tip/485.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Jan Nijtmans <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        08-Nov-2017
	Post-History:   
	Tcl-Version:    9.0

-----

# Abstract

The "case" command, and the "read\|puts ... nonewline" construct are replaced
by better commands long ago (resp. "switch" and "read\|puts -nonewline ..."),
but the old forms were never actually removed from the Tcl code base. They still






>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Jan Nijtmans <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        08-Nov-2017
	Post-History:   
	Tcl-Version:    9.0
	Tcl-Branch:     tip-485
-----

# Abstract

The "case" command, and the "read\|puts ... nonewline" construct are replaced
by better commands long ago (resp. "switch" and "read\|puts -nonewline ..."),
but the old forms were never actually removed from the Tcl code base. They still

Changes to tip/487.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Jan Nijtmans <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        20-Nov-2017
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

Windows CE will be end-of-life in 2018, june 9 (See:
[here](http://rfsmart.com/blog/hardware-tip-operating-systems-end-of-life). This is
still about half a year away, but it seems counter-productive to support Pre-XP Windows






>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Jan Nijtmans <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        20-Nov-2017
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Branch:     tip-487
-----

# Abstract

Windows CE will be end-of-life in 2018, june 9 (See:
[here](http://rfsmart.com/blog/hardware-tip-operating-systems-end-of-life). This is
still about half a year away, but it seems counter-productive to support Pre-XP Windows

Changes to tip/488.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        24-Nov-2017
	Post-History:
	Keywords:       Tcl, string representation, floating-point
	Tcl-Version:    9.0

-----
<!-- TOC BEGIN (auto generated with tiptoc) -->
* <a href='#toc-2'>Abstract</a>
* <a href='#toc-3'>Rationale</a>
* <a href='#toc-4'>Proposal</a>
* <a href='#toc-5'>Compatibility considerations</a>
* <a href='#toc-6'>Reference Implementation</a>






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        24-Nov-2017
	Post-History:
	Keywords:       Tcl, string representation, floating-point
	Tcl-Version:    9.0
	Tcl-Branch:     tip-488
-----
<!-- TOC BEGIN (auto generated with tiptoc) -->
* <a href='#toc-2'>Abstract</a>
* <a href='#toc-3'>Rationale</a>
* <a href='#toc-4'>Proposal</a>
* <a href='#toc-5'>Compatibility considerations</a>
* <a href='#toc-6'>Reference Implementation</a>

Changes to tip/489.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        02-Dec-2017
	Post-History:
	Keywords:       canvas, image
	Tcl-Version:    8.7

-----

# Abstract

This TIP adds an **image** widget command to the Tk canvas. This new command provides a mechanism for the contents of the canvas to be drawn onto a Tk photo image.

# Rationale






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        02-Dec-2017
	Post-History:
	Keywords:       canvas, image
	Tcl-Version:    8.7
	Tk-Branch:      canvas_image
-----

# Abstract

This TIP adds an **image** widget command to the Tk canvas. This new command provides a mechanism for the contents of the canvas to be drawn onto a Tk photo image.

# Rationale

Changes to tip/490.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        07-Dec-2017
	Post-History:
	Keywords:       msgcat, oo
	Tcl-Version:    8.7

-----

# Abstract

Package **msgcat** implements message catalogues for packages organized in nested namespaces.
This TIP proposes the extension to TclOO.







>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        07-Dec-2017
	Post-History:
	Keywords:       msgcat, oo
	Tcl-Version:    8.7
	Tcl-Branch:     tip490-msgcat-oo-2
-----

# Abstract

Package **msgcat** implements message catalogues for packages organized in nested namespaces.
This TIP proposes the extension to TclOO.

Changes to tip/491.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        11-Dec-2017
	Post-History:
	Keywords:       threads
	Tcl-Version:    8.7

-----

# Abstract

Since [TIP #364](364.md) proposed improving thread support, time has come to gradually phase out
non-threaded builds on all platforms. On Windows and MacOSX, there are known problems
on non-threaded build. But also on UNIX it is becoming increasingly difficult to support






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        11-Dec-2017
	Post-History:
	Keywords:       threads
	Tcl-Version:    8.7
	Tcl-Branch:     tip-491
-----

# Abstract

Since [TIP #364](364.md) proposed improving thread support, time has come to gradually phase out
non-threaded builds on all platforms. On Windows and MacOSX, there are known problems
on non-threaded build. But also on UNIX it is becoming increasingly difficult to support

Changes to tip/492.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        19-Dec-2017
	Post-History:
	Keywords:       tk busy
	Tcl-Version:    8.7

-----

# Abstract

This TIP provides user access to the busy window that Tk uses to let a user think a widget is busy.

# Rationale






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        19-Dec-2017
	Post-History:
	Keywords:       tk busy
	Tcl-Version:    8.7
	Tk-Branch:      tip-492
-----

# Abstract

This TIP provides user access to the busy window that Tk uses to let a user think a widget is busy.

# Rationale

Changes to tip/493.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Don Porter <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        29-Dec-2017
	Post-History:   
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes to stop distributing package http 1.0 with Tcl source
code distributions.







>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Don Porter <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        29-Dec-2017
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Branch:     tip-493
-----

# Abstract

This TIP proposes to stop distributing package http 1.0 with Tcl source
code distributions.

Changes to tip/494.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        29-Dec-2017
	Post-History:
	Keywords:       tcl
	Tcl-Version:    9.0

-----

# Abstract

This TIP describes the non-controversial part of the Tcl 9 changes: Make Tcl 9 ready for the 64-bit era.

# Rationale






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        29-Dec-2017
	Post-History:
	Keywords:       tcl
	Tcl-Version:    9.0
	Tcl-Branch:     memory-API
-----

# Abstract

This TIP describes the non-controversial part of the Tcl 9 changes: Make Tcl 9 ready for the 64-bit era.

# Rationale

Changes to tip/495.md.

180
181
182
183
184
185
186
187
188
189
	  }
	}

# More Info

*This is a work in progress.*

Details are trickling in from the Practcl project

[http://www.etoyoc.com/tcl/Practcl.pdf]






<
<
|
180
181
182
183
184
185
186


187
	  }
	}

# More Info

*This is a work in progress.*



Details are trickling in from the [Practcl project](http://www.etoyoc.com/tcl/Practcl.pdf).

Changes to tip/496.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        17-Jan-2018
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7

-----

# Abstract

Entry fields should support the ability to display informational text when no text is given.

# Rationale






>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        17-Jan-2018
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7
	Tk-Branch:      tip-496
-----

# Abstract

Entry fields should support the ability to display informational text when no text is given.

# Rationale

Changes to tip/497.md.

6
7
8
9
10
11
12

13
14
15
16
17
18
19
	Type:           Project
	Vote:           Pending
	Created:        23-Jan-2018
	Post-History:   
	Discussions-To: Tcl Core list
	Keywords:       Tcl
	Tcl-Version:    9.0

-----

# Abstract

This TIP proposes to add full support for all characters in Unicode 10.0\+,
inclusive the characters >= **U\+010000**, even the adaptation in the regexp
engine. Also, the caveats remaining from TIP #389 will be handled here.






>







6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
	Type:           Project
	Vote:           Pending
	Created:        23-Jan-2018
	Post-History:   
	Discussions-To: Tcl Core list
	Keywords:       Tcl
	Tcl-Version:    9.0
	Tcl-Branch:     tip-497
-----

# Abstract

This TIP proposes to add full support for all characters in Unicode 10.0\+,
inclusive the characters >= **U\+010000**, even the adaptation in the regexp
engine. Also, the caveats remaining from TIP #389 will be handled here.

Changes to tip/498.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        18-Jan-2016
	Post-History:
	Keywords:       tcl
	Tcl-Version:    8.7

-----


# Abstract

Simplify the implementation of `Tcl_DeleteNamespace` in order to make behaviour
more consistent, facilitate the resolution of outstanding issues, and pave the






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        18-Jan-2016
	Post-History:
	Keywords:       tcl
	Tcl-Version:    8.7
	Tcl-Branch:     bug-e593adf103-core-8
-----


# Abstract

Simplify the implementation of `Tcl_DeleteNamespace` in order to make behaviour
more consistent, facilitate the resolution of outstanding issues, and pave the

Changes to tip/499.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        07-Dec-2017
	Post-History:
	Keywords:       msgcat, oo
	Tcl-Version:    8.7

-----

# Abstract

Package **msgcat** derives its locale search list from one specified locale by constructing a list of this locales and their precedor.
This TIP proposes to allow a custom locale search list, which may contain any locale.







>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        07-Dec-2017
	Post-History:
	Keywords:       msgcat, oo
	Tcl-Version:    8.7
	Tcl-Branch:     tip499-msgcat-custom-preferences
-----

# Abstract

Package **msgcat** derives its locale search list from one specified locale by constructing a list of this locales and their precedor.
This TIP proposes to allow a custom locale search list, which may contain any locale.

Changes to tip/500.md.

5
6
7
8
9
10
11

12
13
14
15
16
17
18
	Vote:           Done
	Created:        10-Feb-2018
	Post-History:
	Keywords:       Tcl, object orientation, visibility
	Tcl-Version:    8.7
	Votes-For:      DKF, JN, AF, JD, SL, AK, KBK
	Votes-Against:  none

-----

# Abstract

This TIP proposes a mechanism for private methods and variables in TclOO.
Private methods are methods that can only be called from methods of the same
class. Private variables have names so that they are unlikely to be used






>







5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
	Vote:           Done
	Created:        10-Feb-2018
	Post-History:
	Keywords:       Tcl, object orientation, visibility
	Tcl-Version:    8.7
	Votes-For:      DKF, JN, AF, JD, SL, AK, KBK
	Votes-Against:  none
	Tcl-Branch:     tip-500
-----

# Abstract

This TIP proposes a mechanism for private methods and variables in TclOO.
Private methods are methods that can only be called from methods of the same
class. Private variables have names so that they are unlikely to be used

Changes to tip/501.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        12-Feb-2018
	Post-History:
	Keywords:       Tcl,string
	Tcl-Version:    8.7

-----
# Abstract
This tip proposes the addition of an *is dict* test to the string ensemble. The command
will return true if the value is a valid dict, and false otherwise.

# Rationale







>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        12-Feb-2018
	Post-History:
	Keywords:       Tcl,string
	Tcl-Version:    8.7
	Tcl-Branch:     tip-501
-----
# Abstract
This tip proposes the addition of an *is dict* test to the string ensemble. The command
will return true if the value is a valid dict, and false otherwise.

# Rationale

Changes to tip/502.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Don Porter <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        26-Feb-2018
	Post-History:   
	Tcl-Version:	8.7

-----

# Abstract

Proposes reformed handling of Tcl index values.

# Background






>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Don Porter <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        26-Feb-2018
	Post-History:   
	Tcl-Version:	8.7
	Tcl-Branch:     tip-502
-----

# Abstract

Proposes reformed handling of Tcl index values.

# Background

Changes to tip/503.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Don Porter <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        05-Feb-2018
	Post-History:   
	Tcl-Version:	8.7

-----

# Abstract

Stop supporting source compatibility with pre-8.4 Tcl.

# Background






>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	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

Changes to tip/504.md.

4
5
6
7
8
9
10

11
12
13
14
15
16
17
	Type:           Project
	Vote:           Pending
	Created:        21-Mar-2018
	Obsoletes:	475
	Post-History:   
	Keywords:	Tcl,string,insert
	Tcl-Version:	8.7

-----

# Abstract

This TIP proposes a [`string insert`] subcommand for inserting a substring at a
given index.  This new [`string insert`] command is to be the string analogue of
[`linsert`].






>







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	Type:           Project
	Vote:           Pending
	Created:        21-Mar-2018
	Obsoletes:	475
	Post-History:   
	Keywords:	Tcl,string,insert
	Tcl-Version:	8.7
	Tcl-Branch:     dgp-string-insert
-----

# Abstract

This TIP proposes a [`string insert`] subcommand for inserting a substring at a
given index.  This new [`string insert`] command is to be the string analogue of
[`linsert`].

Changes to tip/506.md.

2
3
4
5
6
7
8

9
10
11
12
13
14
15
	Author:         Don Porter <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        30-Mar-2018
	Post-History:   
	Tcl-Version:	9.0

-----

# Abstract

Stop having all extensions and applications use macros to access the
**refCount** field of the **Tcl_Obj** struct.







>







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Don Porter <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        30-Mar-2018
	Post-History:   
	Tcl-Version:	9.0
	Tcl-Branch:     tip-506
-----

# Abstract

Stop having all extensions and applications use macros to access the
**refCount** field of the **Tcl_Obj** struct.

Changes to tip/507.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           
	Created:        9-May-2018
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7

-----

# Abstract

Tk needs scalable images on high res mobile devices. This TIP proposes to let Tk be able to read an SVG image (plus information about orientation and pixel scale) and make it into a photo. It is therefore a (lossy and single direction) conversion operation from an SVG format to a pixel format.

# Rationale






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           
	Created:        9-May-2018
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7
	Tk-Branch:      tip-507
-----

# Abstract

Tk needs scalable images on high res mobile devices. This TIP proposes to let Tk be able to read an SVG image (plus information about orientation and pixel scale) and make it into a photo. It is therefore a (lossy and single direction) conversion operation from an SVG format to a pixel format.

# Rationale

Changes to tip/508.md.

7
8
9
10
11
12
13

14
15
16
17
18
19
20
	Post-History:   
	Keywords:       Tcl,array
	Tcl-Version:	8.7
	Vote-Results:   9/0/0 accepted
	Votes-For:      DKF, BG, KBK, JN, JD, DGP, FV, SL, AK
	Votes-Against:  none
	Votes-Present:  none

-----

# Abstract

This TIP proposes a new **array default** subcommand that allows default values
for arrays, causing that value to be returned any time an attempt is made to
access an element of the array that isn't present.






>







7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
	Post-History:   
	Keywords:       Tcl,array
	Tcl-Version:	8.7
	Vote-Results:   9/0/0 accepted
	Votes-For:      DKF, BG, KBK, JN, JD, DGP, FV, SL, AK
	Votes-Against:  none
	Votes-Present:  none
	Tcl-Branch:     tip-508
-----

# Abstract

This TIP proposes a new **array default** subcommand that allows default values
for arrays, causing that value to be returned any time an attempt is made to
access an element of the array that isn't present.

Changes to tip/509.md.

7
8
9
10
11
12
13

14
15
16
17
18
19
20
	Post-History:   
	Keywords:       Tcl,threads
	Tcl-Version:	8.7
	Vote-Results:   8/0/1 accepted
	Votes-For:      DKF, KBK, JN, JD, DGP, FV, SL, AK
	Votes-Against:  none
	Votes-Present:  BG

-----

# Abstract

This TIP proposes to improve the `Tcl_Mutex` API by enforcing a consistent
behavior on all core-supported platforms regarding reentrancy.







>







7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
	Post-History:   
	Keywords:       Tcl,threads
	Tcl-Version:	8.7
	Vote-Results:   8/0/1 accepted
	Votes-For:      DKF, KBK, JN, JD, DGP, FV, SL, AK
	Votes-Against:  none
	Votes-Present:  BG
	Tcl-Branch:     tip-509
-----

# Abstract

This TIP proposes to improve the `Tcl_Mutex` API by enforcing a consistent
behavior on all core-supported platforms regarding reentrancy.

Changes to tip/510.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           
	Created:        5-Jun-2018
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7

-----

# Abstract

*Rbc* aka "Refactored BLT Components" provides some widgets which are missing in *Tk*.
This tip intend to add *Rbc* in the same way as *Ttk* to *Tk*.







>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           
	Created:        5-Jun-2018
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7
	Tk-Branch:      tip-510
-----

# Abstract

*Rbc* aka "Refactored BLT Components" provides some widgets which are missing in *Tk*.
This tip intend to add *Rbc* in the same way as *Ttk* to *Tk*.

Changes to tip/512.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        25-June-2018
	Post-History:   
	Keywords:       Tcl
	Tcl-Version:	8.7

-----

# Abstract

This TIP proposes to remove the stub entries for `Tcl_SetExitProc()`,
`Tcl_SetPanicProc()`, `Tcl_FindExecutable()` and (for Tk) `Tk_MainEx()`.
The normal exported symbols for those functions will be kept intact.






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        25-June-2018
	Post-History:   
	Keywords:       Tcl
	Tcl-Version:	8.7
	Tcl-Branch:     tip-512
-----

# Abstract

This TIP proposes to remove the stub entries for `Tcl_SetExitProc()`,
`Tcl_SetPanicProc()`, `Tcl_FindExecutable()` and (for Tk) `Tk_MainEx()`.
The normal exported symbols for those functions will be kept intact.

Changes to tip/514.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        20-Aug-2018
	Post-History:   
	Keywords:       Tcl
	Tcl-Version:	8.7

-----

# Abstract

This TIP proposes to resolve the platform differences between int/wide/entier math functions and commands like "sting is integer"/"string is wide"/"string is entier".
At the script level it should not be relevant whether the platform is 32-bit or 64-bit any more.







>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        20-Aug-2018
	Post-History:   
	Keywords:       Tcl
	Tcl-Version:	8.7
	Tcl-Branch:     tip-514
-----

# Abstract

This TIP proposes to resolve the platform differences between int/wide/entier math functions and commands like "sting is integer"/"string is wide"/"string is entier".
At the script level it should not be relevant whether the platform is 32-bit or 64-bit any more.

Changes to tip/515.md.

6
7
8
9
10
11
12

13
14
15
16
17
18
19
	Created:        7-Sept-2018
	Post-History:   
	Tcl-Version:	8.7
	Vote-Results:   8/0/1 accepted
	Votes-For:      DKF, KBK, JN, JD, DGP, FV, SL, AK
	Votes-Against:  none
	Votes-Present:  BG

-----

# Abstract

Proposes reformed handling of Tcl level values. This TIP is inspired by TIP #502, which handles "index" values, realizing that "level" values have
kind of the same problems as described there.







>







6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
	Created:        7-Sept-2018
	Post-History:   
	Tcl-Version:	8.7
	Vote-Results:   8/0/1 accepted
	Votes-For:      DKF, KBK, JN, JD, DGP, FV, SL, AK
	Votes-Against:  none
	Votes-Present:  BG
	Tcl-Branch:     tip-515
-----

# Abstract

Proposes reformed handling of Tcl level values. This TIP is inspired by TIP #502, which handles "index" values, realizing that "level" values have
kind of the same problems as described there.

Changes to tip/516.md.

7
8
9
10
11
12
13

14
15
16
17
18
19
20
	Post-History:   
	Tcl-Version:	8.7
	Keywords:       Tcl, TclOO
	Vote-Results:   4/0/5 accepted
	Votes-For:      DKF, JN, JD, AK
	Votes-Against:  none
	Votes-Present:  BG, KBK, DGP, FV, SL

-----

# Abstract

This TIP proposes to add some more operations to slots by updating the class
that implements them.







>







7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
	Post-History:   
	Tcl-Version:	8.7
	Keywords:       Tcl, TclOO
	Vote-Results:   4/0/5 accepted
	Votes-For:      DKF, JN, JD, AK
	Votes-Against:  none
	Votes-Present:  BG, KBK, DGP, FV, SL
	Tcl-Branch:     tip-516
-----

# Abstract

This TIP proposes to add some more operations to slots by updating the class
that implements them.

Changes to tip/517.md.

3
4
5
6
7
8
9

10
11
12
13
14
15
16
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        13-Sept-2018
	Post-History:
	Keywords:       tk menu
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes to get rid of the motif-style rendering that is still how the active menu entry is rendered on Linux.

# Rationale






>







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        13-Sept-2018
	Post-History:
	Keywords:       tk menu
	Tcl-Version:    8.7
	Tk-Branch:      tip-517
-----

# Abstract

This TIP proposes to get rid of the motif-style rendering that is still how the active menu entry is rendered on Linux.

# Rationale

Changes to tip/518.md.

2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
..
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

43
44
45

46

47

48
49
50
51
52
53
54
..
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
...
125
126
127
128
129
130
131
132
133
134
135
136
137
138
	Author:         Harald Oehlmann <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Done
	Created:        22-Sep-2018
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7.0

-----
# Abstract

A **frame**-like widget has 1x1 required size if created.
If children are added by pack/grid and the last children is unpacked/grid, the frame-like widget does not return to the 1x1 required size.
Instead, it keeps the size of the last packed item.
It should automatically or under control resize to the initial requested size of 1x1.
................................................................................
And there is nothing, a programmer can do, as the Configure event does not fire on the scrolled frame widget.

Another example is the scrolledwindow example by Emiliano in ticket 2863003fff <https://core.tcl.tk/tk/info/12006979562649c9> , where the solution 2 specific part may be removed \(or is ignored\).

A typical workaround is to configure the width/height manually after the last children was unmapped.
Unfortunately, this fact may not be determined for example by scrolling widgets etc. An eventual Configure binding is not firing.

Within this TIP, a new virtual event \<\<NoManagedChild\>\> is fired to inform about no remaining childs.

# Example

Here is an example to ilustrate the issue.
It consisting of a simple scrolling megawidget.
The megawidget exposes a frame where a user may pack or grid other widgets and the scrollbar is adjusted following the changing content.
This works well when widgets are added or removed. Only removing the last client will not update the scrollbar. With the proposed patch applied, it will update the scrollbar also when the last user widget is removed.

Please paste the code below to a wish console or execute it.
On startup it shows on the console:

	requested frame height: 1

Then press the "\+" button to add a user widget. The console output is:

	+

	requested frame height: 100

Technically, the frame ".c.f.i1" was packed into the client frame ".c.f".
The client frame ".c.f" changes its requested size to hold the new child, which invokes the Convigure event and adjustes the scrolling region of the canvas.
The new scrolling region is shown graphically by the scrollbar.

Then press the "-" button to remove the user widget. The console output is:
	-
So, the child widget ".c.f.i1" is destroyed, but the frame ".c.f" does not rechange its requested size to 1x1 \(initial value\) but stays at 100x100 showing an empty plane.
................................................................................
	    .c configure -scrollregion [list 0 0 100 $y]
	}
	frameConfigure
	bind .c.f <Configure> frameConfigure

# Proposal

The proposal is to fire the new virtual event \<\<NoManagedChild\>\> if the last children is unpacked/ungridded/destroyed.
A managing widget may bind to this event and do the resize of the widget or other appropriate action.

Here are additional lines for the example above.

	proc frameNoChild {} {
	    .c.f configure -height 1
	    .c.f configure -height 0
................................................................................
This is a logical and elegant proposal.

TIP 454 was withdrawn due to:

   1. if the geometry manager is changed (ex: pack to grid), there is a flickering introduced.
   2. an additional Configure event was introduced which breaks present script.

To invoke \<\<Configure\>\> instead \<\<NoManagedChild\>\> would trigger incompatibility 2 of TIP454.
Due to that, a new virtual event is proposed.

# Copyright

This document has been placed in the public domain.







|
>







 







|










>


|
>
|
>

>







 







|







 







|






2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
..
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
..
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
...
130
131
132
133
134
135
136
137
138
139
140
141
142
143
	Author:         Harald Oehlmann <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Done
	Created:        22-Sep-2018
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7
	Tk-Branch:      tip518-event-last-child-unmanaged
-----
# Abstract

A **frame**-like widget has 1x1 required size if created.
If children are added by pack/grid and the last children is unpacked/grid, the frame-like widget does not return to the 1x1 required size.
Instead, it keeps the size of the last packed item.
It should automatically or under control resize to the initial requested size of 1x1.
................................................................................
And there is nothing, a programmer can do, as the Configure event does not fire on the scrolled frame widget.

Another example is the scrolledwindow example by Emiliano in ticket 2863003fff <https://core.tcl.tk/tk/info/12006979562649c9> , where the solution 2 specific part may be removed \(or is ignored\).

A typical workaround is to configure the width/height manually after the last children was unmapped.
Unfortunately, this fact may not be determined for example by scrolling widgets etc. An eventual Configure binding is not firing.

Within this TIP, a new virtual event `<<NoManagedChild>>` is fired to inform about no remaining childs.

# Example

Here is an example to ilustrate the issue.
It consisting of a simple scrolling megawidget.
The megawidget exposes a frame where a user may pack or grid other widgets and the scrollbar is adjusted following the changing content.
This works well when widgets are added or removed. Only removing the last client will not update the scrollbar. With the proposed patch applied, it will update the scrollbar also when the last user widget is removed.

Please paste the code below to a wish console or execute it.
On startup it shows on the console:

	requested frame height: 1

Then press the "\+" button to add a user widget. The console output
is:

	+
	requested frame height: 100

Technically, the frame ".c.f.i1" was packed into the client frame ".c.f".
The client frame ".c.f" changes its requested size to hold the new child, which invokes the Convigure event and adjustes the scrolling region of the canvas.
The new scrolling region is shown graphically by the scrollbar.

Then press the "-" button to remove the user widget. The console output is:
	-
So, the child widget ".c.f.i1" is destroyed, but the frame ".c.f" does not rechange its requested size to 1x1 \(initial value\) but stays at 100x100 showing an empty plane.
................................................................................
	    .c configure -scrollregion [list 0 0 100 $y]
	}
	frameConfigure
	bind .c.f <Configure> frameConfigure

# Proposal

The proposal is to fire the new virtual event `<<NoManagedChild>>` if the last children is unpacked/ungridded/destroyed.
A managing widget may bind to this event and do the resize of the widget or other appropriate action.

Here are additional lines for the example above.

	proc frameNoChild {} {
	    .c.f configure -height 1
	    .c.f configure -height 0
................................................................................
This is a logical and elegant proposal.

TIP 454 was withdrawn due to:

   1. if the geometry manager is changed (ex: pack to grid), there is a flickering introduced.
   2. an additional Configure event was introduced which breaks present script.

To invoke `<<Configure>>` instead `<<NoManagedChild>>` would trigger incompatibility 2 of TIP454.
Due to that, a new virtual event is proposed.

# Copyright

This document has been placed in the public domain.