Check-in [5a4bdf8c67]

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:Change a lot of paths from core.tcl.tk to core.tcl-lang.org, preventing unnecessary re-directs to be done by fossil. Also change http:// to https:// where appropriate.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 5a4bdf8c673b62e42cf2940c754a25e4c1ba42a7308f7fed1dbf99db24091a7d
User & Date: jan.nijtmans 2019-06-17 15:22:28
Context
2019-06-18
11:37
TIP #547 now in Voting check-in: def5628334 user: jan.nijtmans tags: trunk
2019-06-17
15:22
Change a lot of paths from core.tcl.tk to core.tcl-lang.org, preventing unnecessary re-directs to be done by fossil. Also change http:// to https:// where appropriate. check-in: 5a4bdf8c67 user: jan.nijtmans tags: trunk
08:00
Merge fork check-in: 314c847ea0 user: jan.nijtmans tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to doc/help.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
..
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
..
84
85
86
87
88
89
90
91
92
1. [Download](http://fossil-scm.org/index.html/uv/download.html)
fossil if you do not already have it set up on your system. It is
distributed as a single file executable so installation consists of
simply placing it in some suitable directory in your `PATH` environment
variable.

1. Create a user account on the [TIP repository](https://core.tcl.tk/tips) if
you do not have one already.
You can create one yourself, but the administrator needs to
assign you commit privileges.

1. [Clone](http://fossil-scm.org/index.html/help?cmd=clone) the
repository into a suitable directory. For example,

        cd ~/repos
        fossil clone https://[email protected].tk/tips tips.fossil

1. Checkout the TIP sources into your working directory with the
fossil [`open`](http://fossil-scm.org/index.html/help?cmd=open) command.

        cd ~/tips
        fossil open ~/repos/tips.fossil

................................................................................
# Adding the new TIP

To add a new TIP,

1. Create a file in the `tip` subdirectory.  Choose a name of the
format `NNN.md`, for example 467.md. The TIP numbering is currently
not enforced by the system, so pick the next unused number based on
the [current TIPs](https://core.tcl.tk/tips/doc/trunk/index.md).

1. [TIP 2](https://core.tcl.tk/tips/doc/trunk/tip/2.md)
specifies guidelines for writing a TIP.
Write up the text, using [Markdown mark-up](/md_rules) (plenty of
examples are available - pay attention to the header as described below).
**NOTE:** if you already have the TIP text written in the old TIP format,
you can use the `tip2md.tcl` script in the `scripts` subdirectory
to convert it to Markdown.

................................................................................
	    Vote:           Done
	    Post-History:
	------

The meta-data is terminated by `------` and indented with tabs
(for nicer display in fossil).

See [TIP 3](https://core.tcl.tk/tips/doc/trunk/tip/3.md) for a detailed
specification of the header format and meaning of each header field.






|








|







 







|

|







 







|

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
..
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
..
84
85
86
87
88
89
90
91
92
1. [Download](http://fossil-scm.org/index.html/uv/download.html)
fossil if you do not already have it set up on your system. It is
distributed as a single file executable so installation consists of
simply placing it in some suitable directory in your `PATH` environment
variable.

1. Create a user account on the [TIP repository](https://core.tcl-lang.org/tips) if
you do not have one already.
You can create one yourself, but the administrator needs to
assign you commit privileges.

1. [Clone](http://fossil-scm.org/index.html/help?cmd=clone) the
repository into a suitable directory. For example,

        cd ~/repos
        fossil clone https://[email protected]-lang.org/tips tips.fossil

1. Checkout the TIP sources into your working directory with the
fossil [`open`](http://fossil-scm.org/index.html/help?cmd=open) command.

        cd ~/tips
        fossil open ~/repos/tips.fossil

................................................................................
# Adding the new TIP

To add a new TIP,

1. Create a file in the `tip` subdirectory.  Choose a name of the
format `NNN.md`, for example 467.md. The TIP numbering is currently
not enforced by the system, so pick the next unused number based on
the [current TIPs](https://core.tcl-lang.org/tips/doc/trunk/index.md).

1. [TIP 2](https://core.tcl-lang.org/tips/doc/trunk/tip/2.md)
specifies guidelines for writing a TIP.
Write up the text, using [Markdown mark-up](/md_rules) (plenty of
examples are available - pay attention to the header as described below).
**NOTE:** if you already have the TIP text written in the old TIP format,
you can use the `tip2md.tcl` script in the `scripts` subdirectory
to convert it to Markdown.

................................................................................
	    Vote:           Done
	    Post-History:
	------

The meta-data is terminated by `------` and indented with tabs
(for nicer display in fossil).

See [TIP 3](https://core.tcl-lang.org/tips/doc/trunk/tip/3.md) for a detailed
specification of the header format and meaning of each header field.

Changes to index.json.

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
..
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
...
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
...
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
...
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
...
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
...
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
	"520":{"url":"./tip/520.md","keywords":"Tcl, floating point, NaN, not a number","created":"18 October 2018","post-history":"","state":"Draft","tcl-branch":"tip-520","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 520: Make NaN Quiet","author":["Kevin B. Kenny <[email protected]>"],"is-jest":false},
	"519":{"url":"./tip/519.md","":"","keywords":"TclOO","state":"Final","vote-summary":"Accepted 4/0/2","this tip proposes to extend the `method` subcommand of the `oo":":define` command","type":"Project","author":["Pietro Cerutti <[email protected]>"],"votes-against":"none","votes-for":"DKF, KBK, JN, SL","follows":"","oo":":define RPCClient {","created":"18-Oct-2018","title":"# TIP 519: Inline export/unexport option to TclOO method definition","the class definition in the previous example would then be as follows":"","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-519","votes-present":"BG, FV","is-jest":false},
	"518":{"url":"./tip/518.md","keywords":"Tk","state":"Final","vote-summary":"Accepted 6/0/0","type":"Project","tk-branch":"tip518-event-last-child-unmanaged","author":["Harald Oehlmann <[email protected]>"],"votes-against":"none","votes-for":"DKF, BG, KBK, JN, FV, SL","created":"22-Sep-2018","title":"# TIP 518: Virtual Event when Last Child is not Managed any more","post-history":"","vote":"Done","tcl-version":"8.7","votes-present":"none","is-jest":false},
	"517":{"url":"./tip/517.md","keywords":"tk menu","created":"13-Sept-2018","post-history":"","state":"Final","tk-branch":"tip-517","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 517: Add -activerelief Configuration Option to the menu widget","author":["François Vogel <[email protected]>"],"is-jest":false},
	"516":{"url":"./tip/516.md","keywords":"Tcl, TclOO","state":"Final","type":"Project","author":["Donal K. Fellows <[email protected]>"],"vote-results":"4/0/5 accepted","votes-for":"DKF, JN, JD, AK","votes-against":"none","created":"7-Sept-2018","title":"# TIP 516: More OO Slot Operations","post-history":"","tcl-branch":"tip-516","vote":"Done","tcl-version":"8.7","votes-present":"BG, KBK, DGP, FV, SL","is-jest":false},
	"515":{"url":"./tip/515.md","state":"Final","type":"Project","author":["Jan Nijtmans <[email protected]>"],"vote-results":"8/0/1 accepted","votes-for":"DKF, KBK, JN, JD, DGP, FV, SL, AK","votes-against":"none","created":"7-Sept-2018","title":"# TIP 515: Level Value Reform","post-history":"","tcl-branch":"tip-515","vote":"Done","tcl-version":"8.7","votes-present":"BG","is-jest":false},
	"514":{"url":"./tip/514.md","keywords":"Tcl","created":"20-Aug-2018","post-history":"","state":"Final","tcl-branch":"tip-514","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 514: Platform differences in handling int/wide","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"513":{"url":"./tip/513.md","keywords":"Tcl,data structure","created":"02-Aug-2017","post-history":"","state":"Draft","implementation-url":"https://core.tcl.tk/tips/doc/trunk/attach/513/agendas.tcl","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 513: Better support for 'agendas' as arrays, dictionaries or lists","author":["Florian Murr <[email protected]>"],"is-jest":false},
	"512":{"url":"./tip/512.md","keywords":"Tcl","created":"25-June-2018","post-history":"","state":"Final","tcl-branch":"tip-512","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 512: No stub for Tcl_SetExitProc()","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"511":{"url":"./tip/511.md","keywords":"Tcl,threads","state":"Accepted","type":"Project","author":["Christian Werner <[email protected]>"],"vote-results":"4/0/5 accepted","votes-for":"DKF, BG, KBK, JN, JD, SL","votes-against":"none","created":"14-June-2018","title":"# TIP 511: Implement Tcl_AsyncMarkFromSignal()","post-history":"","implementation-url":"https://www.androwish.org/index.html/info/40790af1e8e4ec9f","vote":"Done","tcl-version":"8.7","votes-present":"DGP, FV, AK","is-jest":false},
	"510":{"url":"./tip/510.md","":"might be to just co-distribute, just as TDBC is with Tcl","keywords":"Tk","state":"Draft","vote-summary":"Rejected 1/3/1","type":"Project","tk-branch":"tip-510","author":["René Zaumseil <[email protected]>"],"votes-against":"KBK, JN, FV","votes-for":"DKF","created":"5-Jun-2018","vote-comments":"code not yet ready, needs porting to macOS; alternate","title":"# TIP 510: Add Rbc and Tkpath widgets to Tk","post-history":"","vote":"Done","tcl-version":"8.7","votes-present":"BG","is-jest":false},
	"509":{"url":"./tip/509.md","keywords":"Tcl,threads","state":"Final","type":"Project","author":["Frédéric Bonnet <[email protected]>"],"vote-results":"8/0/1 accepted","votes-for":"DKF, KBK, JN, JD, DGP, FV, SL, AK","votes-against":"none","created":"24-May-2018","title":"# TIP 509: Implement reentrant mutexes on all platforms","post-history":"","tcl-branch":"tip-509","vote":"Done","tcl-version":"8.7","votes-present":"BG","is-jest":false},
	"508":{"url":"./tip/508.md","keywords":"Tcl,array","state":"Final","type":"Project","author":["Frédéric Bonnet <[email protected]>"],"vote-results":"9/0/0 accepted","votes-for":"DKF, BG, KBK, JN, JD, DGP, FV, SL, AK","votes-against":"none","created":"13-May-2018","title":"# TIP 508: New subcommand [array default]","post-history":"","tcl-branch":"tip-508","vote":"Done","tcl-version":"8.7","votes-present":"none","is-jest":false},
	"507":{"url":"./tip/507.md","keywords":"Tk","state":"Final","type":"Project","tk-branch":"tip-507","author":["René Zaumseil <[email protected]>"],"votes-for":"DKF, JN, FV, SL, AK","votes-against":"none","created":"9-May-2018","title":"# TIP 507: Include simple SVG support with nanosvg","post-history":"","vote":"Done","tcl-version":"8.7","votes-present":"none","is-jest":false},
	"506":{"url":"./tip/506.md","state":"Final","vote-summary":"Accepted 5/0/1","type":"Project","author":["Don Porter <[email protected]>"],"votes-for":"DKF, KBK, JN, DGP, SL","votes-against":"none","created":"30-Mar-2018","title":"# TIP 506: Purge RefCount Macros","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-506","votes-present":"BG, FV","is-jest":false},
................................................................................
	"460":{"url":"./tip/460.md","keywords":"Tcl,variable,link,upvar","created":"08-Dec-2016","post-history":"","state":"Draft","tcl-branch":"dah-proc-arg-upvar","tcl-version":"9.0","vote":"Pending","type":"Project","title":"# TIP 460: An Alternative to Upvar","author":["Don Hathway <[email protected]>"],"is-jest":false},
	"459":{"url":"./tip/459.md","keywords":"Tcl,package","created":"08-Dec-2016","post-history":"","state":"Final","tcl-branch":"package_files","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 459: Tcl Package Introspection Improvements","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"458":{"url":"./tip/458.md","keywords":"event loop,scalability","created":"24-Nov-2016","post-history":"","state":"Final","tcl-branch":"tip-458","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 458: Add Support for epoll() and kqueue() in the Notifier","author":["Lucio Andrés Illanes Albornoz <[email protected]>","Lucio Andrés Illanes Albornoz <[email protected]>"],"is-jest":false},
	"457":{"url":"./tip/457.md","keywords":"Tcl,procedure,argument handling","created":"21-Nov-2016","post-history":"","state":"Draft","tcl-branch":"tip-457","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 457: Add Support for Named Arguments","author":["Mathieu Lafon <[email protected]>","Andreas Leitgeb <[email protected]>"],"is-jest":false},
	"456":{"url":"./tip/456.md","keywords":"Tcl,socket,SO_REUSEPORT,SO_REUSEADDR","created":"18-Nov-2016","post-history":"","state":"Final","tcl-branch":"tip-456","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 456: Extend the C API to Support Passing Options to TCP Server Creation","author":["LemonBoy <[email protected]>","lime boy <[email protected]>"],"is-jest":false},
	"455":{"url":"./tip/455.md","keywords":"Tcl, event loop","created":"07-Oct-2016","post-history":"","state":"Draft","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 455: Extensions to [vwait]: Variable Sets and Scripted Access to Tcl_DoOneEvent","author":["Christian Werner <[email protected]>"],"is-jest":false},
	"454":{"url":"./tip/454.md","keywords":"Tk","created":"21-Sep-2016","post-history":"","state":"Withdrawn","tcl-version":"8.6.6","vote":"Done","type":"Project","title":"# TIP 454: Automatically Resize Frames After Last Child Removed","author":["Harald Oehlmann <[email protected]>","Harald Oehlmann <[email protected]>","François Vogel <[email protected]>"],"is-jest":false},
	"453":{"url":"./tip/453.md","keywords":"Build tooling","created":"13-Sep-2016","post-history":"","state":"Draft","implementation-url":"https://core.tcl.tk/tclconfig/timeline?r=practcl","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 453: Tcl Based Automation for tcl/pkgs","author":["Sean Woods <[email protected]>"],"is-jest":false},
	"452":{"url":"./tip/452.md","state":"Draft","type":"Project","author":["Gerald Lester <[email protected]>","Gerald W. Lester <[email protected]>","Gerald W. Lester <[email protected]>"],"vote-results":"2/4/3 rejection in favour of further work","votes-for":"KBK, JD","votes-against":"DKF, JN, DGP, AK","created":"10-Aug-2016","title":"# TIP 452: Add \"stubs\" Package to or Along Side of TclTest","post-history":"","tcl-branch":"tip-452","vote":"Pending","tcl-version":"8.7","votes-present":"BG, FV, SL","is-jest":false},
	"451":{"url":"./tip/451.md","keywords":"Tcl,event loop","created":"10-Aug-2016","post-history":"","state":"Draft","tcl-branch":"updateextended","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 451: Modify [update] to Give Full Script Access to Tcl_DoOneEvent","author":["Colin McCormack <[email protected]>"],"is-jest":false},
	"450":{"url":"./tip/450.md","keywords":"Tcl, binary data","created":"18-Jul-2016","post-history":"","state":"Draft","tcl-branch":"tip-450","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 450: Add [binary] subcommand \"set\" for in-place modification","author":["Arjen Markus <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"449":{"url":"./tip/449.md","keywords":"Tk","created":"07-Jun-2016","post-history":"","state":"Final","tk-branch":"tip-449","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 449: [text] undo/redo to Return Range of Characters","author":["François Vogel <[email protected]>"],"is-jest":false},
	"448":{"url":"./tip/448.md","keywords":"Tcl, C API","created":"24-May-2016","post-history":"","state":"Draft","implementation-url":"http://fossil.etoyoc.com/sandbox/tcllib/artifact/b2b272a285811272","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 448: Update Tcl_SetNotifier to Reinitialize Event Loop","author":["Jeff Rogers <[email protected]>"],"is-jest":false},
	"447":{"url":"./tip/447.md","keywords":"Tcl,tcltest","created":"20-Apr-2016","post-history":"","state":"Final","tcl-branch":"gahr-tip-447","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 447: Execution Time Verbosity Levels in tcltest::configure","author":["Pietro Cerutti <[email protected]>"],"is-jest":false},
	"446":{"url":"./tip/446.md","keywords":"Tk","created":"05-Apr-2016","post-history":"","state":"Final","tk-branch":"tip-446","tcl-version":"8.6.6","vote":"Done","type":"Project","title":"# TIP 446: Introspect Undo/Redo Stack Depths","author":["François Vogel <[email protected]>"],"is-jest":false},
................................................................................
	"443":{"url":"./tip/443.md","keywords":"Tk","created":"09-Feb-2016","post-history":"","state":"Final","tk-branch":"tip-443","tcl-version":"8.6.6","vote":"Done","type":"Project","title":"# TIP 443: More Tag Configuration Options for the Text Widget","author":["François Vogel <[email protected]>"],"is-jest":false},
	"442":{"url":"./tip/442.md","keywords":"Tk","created":"17-Feb-2016","post-history":"","state":"Final","tk-branch":"tip-442","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 442: Display text in progressbars","author":["René Zaumseil <[email protected]>","Kevin B Kenny <[email protected]>","Andreas Leitgeb <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"441":{"url":"./tip/441.md","keywords":"Tk,listbox","created":"18-Jan-2016","post-history":"","state":"Final","tk-branch":"tip-441","tcl-version":"8.6.5","vote":"Done","type":"Project","title":"# TIP 441: Add -justify Configuration Option to the listbox Widget","author":["François Vogel <[email protected]>","François Vogel <[email protected]>"],"is-jest":false},
	"440":{"url":"./tip/440.md","keywords":"language implementation,platform","created":"14-Jan-2016","post-history":"","state":"Final","tcl-branch":"tclPlatformEngine","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 440: Add engine to tcl_platform Array","author":["Joe Mistachkin <[email protected]>","Jan Nijtmans <[email protected]>"],"is-jest":false},
	"439":{"url":"./tip/439.md","created":"08-Dec-2015","post-history":"","state":"Draft","tcl-branch":"semver","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 439: Semantic Versioning","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"438":{"url":"./tip/438.md","keywords":"Tk,text","created":"01-Nov-2015","post-history":"","state":"Final","tk-branch":"tip-438","tcl-version":"8.6.5","vote":"Done","type":"Project","title":"# TIP 438: Ensure Line Metrics are Up-to-Date","author":["François Vogel <[email protected]>","Jan Nijtmans <[email protected]>"],"is-jest":false},
	"437":{"url":"./tip/437.md","keywords":"Tk","created":"14-Jul-2015","post-history":"","state":"Final","tk-branch":"tip-437","vote":"Done","tcl-version":"8.5.18","type":"Project","title":"# TIP 437: Tk panedwindow options for proxy window","author":["Eric Boudaillier <[email protected]>","François Vogel <[email protected]>"],"is-jest":false},
	"436":{"url":"./tip/436.md","created":"30-Jun-2015","post-history":"","state":"Final","implementation-url":"https://core.tcl.tk/tcloo/info/5fa1374aa026d4c7","vote":"Done","tcl-version":"8.6.5","type":"Project","title":"# TIP 436: Improve TclOO isa Introspection","author":["Donal Fellows <[email protected]>"],"is-jest":false},
	"435":{"url":"./tip/435.md","created":"16-May-2015","post-history":"","state":"Rejected","vote":"Done","tcl-version":"8.6.5","type":"Project","title":"# TIP 435: Safe Mutex Disposal API","author":["Donal Fellows <[email protected]>","Joe Mistachkin <[email protected]>"],"is-jest":false},
	"434":{"url":"./tip/434.md","created":"26-Feb-2015","post-history":"","state":"Withdrawn","vote":"Pending","tcl-version":"8.6","type":"Project","title":"# TIP 434: Specify Event Sources for 'vwait'","author":["Jos Decoster <[email protected]>"],"is-jest":false},
	"433":{"url":"./tip/433.md","created":"25-Feb-2015","post-history":"","state":"Final","tk-branch":"bindScriptCount","tcl-version":"8.6.4","vote":"Done","type":"Project","title":"# TIP 433: Add %M binding substitution","author":["Joe Mistachkin <[email protected]>","Brian Griffin <[email protected]>","Don Porter <[email protected]>"],"is-jest":false},
	"432":{"url":"./tip/432.md","created":"20-Sep-2014","post-history":"","state":"Final","tk-branch":"apn-win-filedialogs","tcl-version":"8.6.3","vote":"Done","type":"Project","title":"# TIP 432: Support for New Windows File Dialogs in Vista and Later","author":["Ashok P. Nadkarni <[email protected]>"],"is-jest":false},
	"431":{"url":"./tip/431.md","keywords":"Tcl, directory, file","state":"Final","type":"Project","author":["Kevin Pasko <[email protected]>"],"votes-for":"DKF, FV, KBK, JN, SL","votes-against":"none","created":"10-Sep-2014","title":"# TIP 431: Add 'tempdir' Subcommand to 'file'","post-history":"","tcl-version":"8.7","vote":"Done","tcl-branch":"tip-431","votes-present":"none","is-jest":false},
	"430":{"url":"./tip/430.md","keywords":"virtual filesystem,zip,tclkit,boot,bootstrap","state":"Final","type":"Project","author":["Sean Woods <[email protected]>","Donal Fellows <[email protected]>","Poor Yorick <[email protected]>","Harald Oehlmann <[email protected]>"],"votes-for":"DKF, KBK, SL, AK, JD, JN (partially)","votes-against":"JN (partially)","created":"03-Sep-2014","present":"JN (partially)","title":"# TIP 430: Add basic ZIP archive support to Tcl","post-history":"","tcl-branch":"core_zip_vfs","vote":"Done","tcl-version":"8.7","is-jest":false},
	"429":{"url":"./tip/429.md","keywords":"Tcl,cat,scriptlet result","created":"27-Jul-2014","post-history":"","state":"Final","tcl-branch":"tip-429","tcl-version":"8.6.2","vote":"Done","type":"Project","title":"# TIP 429: A 'string' Subcommand for Concatenation","author":["Andreas Leitgeb <[email protected]>","Alexandre Ferrieux <[email protected]>"],"is-jest":false},
................................................................................
	"404":{"url":"./tip/404.md","tcl-ticket":"3544988","keywords":"msgcat, convention","created":"17-Jul-2011","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 404: Let Message Catalogs get the Locale from their File Name","discussions-to":"Tcl Core list","author":["Harald Oehlmann <[email protected]>"],"is-jest":false},
	"403":{"url":"./tip/403.md","keywords":"Tk","created":"17-Jul-2011","post-history":"","state":"Final","tk-branch":"jn-web-colors","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 403: Web Colors for Tk","discussions-to":"Tcl Core list","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"402":{"url":"./tip/402.md","keywords":"Tcl","created":"16-Jul-2011","post-history":"","state":"Draft","tcl-branch":"jn-unc-vfs","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 402: General Platform UNC Support","discussions-to":"Tcl Core list","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"401":{"url":"./tip/401.md","created":"29-Apr-2012","post-history":"","state":"Draft","tcl-branch":"tip-401","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 401: Comment Words with Leading {#}","author":["Lars Hellström <[email protected]>"],"is-jest":false},
	"400":{"url":"./tip/400.md","keywords":"Tcl, zlib","created":"30-Mar-2012","post-history":"","state":"Final","tcl-branch":"tip-400-impl","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 400: Setting the Compression Dictionary and Other 'zlib' Updates","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"399":{"url":"./tip/399.md","keywords":"Tcl,localization,msgcat","created":"27-Mar-2012","obsoleted-by":"412","post-history":"","state":"Accepted","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 399: Dynamic Locale Changing for msgcat","author":["Harald Oehlmann <[email protected]>"],"is-jest":false},
	"398":{"url":"./tip/398.md","keywords":"close,exit,flush,blocking,nonblocking","created":"24-Feb-2012","post-history":"","state":"Final","tcl-branch":"tip-398-impl","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 398: Quickly Exit with Non-Blocking Blocked Channels","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"397":{"url":"./tip/397.md","keywords":"Tcl, TclOO, copy, clone","created":"13-Feb-2012","post-history":"","state":"Final","implementation-url":"https://core.tcl.tk/tcloo/timeline?r=development-rfe3485060","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 397: Extensible Object Copying","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"396":{"url":"./tip/396.md","obsoletes":"372","keywords":"coroutine,yield,yieldto","created":"11-Feb-2012","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 396: Symmetric Coroutines, Multiple Args, and yieldto","author":["Kevin Kenny <[email protected]>"],"is-jest":false},
	"395":{"url":"./tip/395.md","keywords":"Tcl","state":"Final","type":"Project","author":["Jos Decoster <[email protected]>"],"created":"13-Dec-2011","obsoletes":"347","title":"# TIP 395: New 'string is entier' Command","post-history":"","vote":"Done","tcl-version":"8.6","implementation-url":"http://sites.google.com/site/josdecoster/Home/tip_string_is_entier.diff","discussions-to":"news:comp.lang.tcl","is-jest":false},
	"394":{"url":"./tip/394.md","created":"30-Nov-2011","post-history":"","state":"Draft","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 394: Platform-Independent Handling of Contemporary Mice","author":["Andreas Leitgeb <[email protected]>"],"is-jest":false},
	"393":{"url":"./tip/393.md","created":"25-Apr-2011","post-history":"","state":"Draft","implementation-url":"http://sqlitestudio.pl/tcl/patches/tip-393-lsearch-command.patch","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 393: Add -command Option to lsearch","author":["Pawel Salawa <[email protected]>"],"is-jest":false},
	"392":{"url":"./tip/392.md","keywords":"bignum,runaway,safe,math,precision,integer,tcl","created":"30-Oct-2011","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 392: Allow Bignums to be Disabled at Runtime on a Per-Interp Basis","author":["Joe Mistachkin <[email protected]>"],"is-jest":false},
	"391":{"url":"./tip/391.md","created":"26-Oct-2011","obsoleted-by":"409","post-history":"","state":"Withdrawn","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 391: Support for UDP Sockets in Tcl","author":["Jeff Rogers <[email protected]>"],"is-jest":false},
	"390":{"url":"./tip/390.md","created":"27-Oct-2011","post-history":"","state":"Draft","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 390: A Logging API for Tcl","author":["Jeff Rogers <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
................................................................................
	"388":{"url":"./tip/388.md","keywords":"Tcl","created":"10-Aug-2011","post-history":"","state":"Final","tcl-branch":"tip-388-impl","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 388: Extending Unicode literals past the BMP","discussions-to":"Tcl Core list","author":["Jan Nijtmans <[email protected]>","Jan Nijtmans <[email protected]>"],"is-jest":false},
	"387":{"url":"./tip/387.md","keywords":"Tcl, coroutine","created":"30-May-2011","post-history":"","obsoleted-by":"396","state":"Withdrawn","tcl-version":"8.6","vote":"Pending","type":"Project","title":"# TIP 387: Unified Yield Command Syntax","author":["Lars Hellström <[email protected]>"],"is-jest":false},
	"386":{"url":"./tip/386.md","keywords":"Fossil,DVCS","created":"01-Mar-2011","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 386: Relocation of Tcl/Tk Source Control Repositories","author":["Kevin B. Kenny <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"385":{"url":"./tip/385.md","keywords":"Tcl, traces","created":"13-Feb-2011","post-history":"","state":"Draft","tcl-version":"9.0","vote":"Pending","type":"Project","title":"# TIP 385: Functional Traces On Variables","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"384":{"url":"./tip/384.md","keywords":"kqueue,inotify,dnotify,gamin,FSevents,fam","created":"02-Dec-2010","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 384: Add File Alteration Monitoring to the Tcl Core","author":["Reinhard Max <[email protected]>","Gerald W. Lester <[email protected]>"],"is-jest":false},
	"383":{"url":"./tip/383.md","keywords":"debugging,coroutine,yielded","state":"Final","type":"Project","author":["Alexandre Ferrieux <[email protected]>","Miguel Sofer <[email protected]>","Donal K. Fellows <[email protected]>"],"votes-for":"DKF, KBK, JN","votes-against":"none","created":"03-Dec-2010","title":"# TIP 383: Injecting Code into Suspended Coroutines","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-383","votes-present":"FV, SL","is-jest":false},
	"382":{"url":"./tip/382.md","keywords":"Tk, dialog","created":"02-Nov-2010","post-history":"","state":"Final","tk-branch":"tip-382","vote":"Done","tcl-version":"8.5.11","type":"Project","title":"# TIP 382: Let tk_getSaveFile ignore file overwrites","author":["Pawel Salawa <[email protected]>","Don Porter <[email protected]>"],"is-jest":false},
	"381":{"url":"./tip/381.md","keywords":"TclOO, iTcl","created":"20-Oct-2010","post-history":"","state":"Final","implementation-url":"https://core.tcl.tk/tcloo/timeline?r=development-next2","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 381: Call Chain Introspection and Control","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"380":{"url":"./tip/380.md","tcl-ticket":"3084339","created":"20-Oct-2010","post-history":"","state":"Final","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 380: TclOO Slots for Flexible Declarations","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"379":{"url":"./tip/379.md","keywords":"event","created":"17-Oct-2010","post-history":"","state":"Draft","implementation-url":"http://www.wjduquette.com/notifier/hook-0.1.zip","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 379: Add a Command for Delivering Events Without Tk","author":["Will Duquette <[email protected]>"],"is-jest":false},
	"378":{"url":"./tip/378.md","tcl-ticket":"3081184","created":"04-Oct-2010","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 378: Fixing the Performance of TIP 280","author":["Andreas Kupries <[email protected]>","Jeff Hobbs <[email protected]>"],"is-jest":false},
	"377":{"url":"./tip/377.md","created":"13-Sep-2010","post-history":"","state":"Withdrawn","tcl-version":"8.6","vote":"Pending","type":"Project","title":"# TIP 377: Portably Determining the Number of Processors in the System","author":["Andreas Kupries <[email protected]>"],"is-jest":false},
	"376":{"url":"./tip/376.md","created":"14-Sep-2010","post-history":"","state":"Final","implementation-url":"https://core.tcl.tk/tdbc/","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 376: Bundle sqlite3 and tdbc::sqlite3 Packages","author":["Don Porter <[email protected]>","D. Richard Hipp <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"375":{"url":"./tip/375.md","obsoletes":"373","keywords":"coroutine,yield","created":"12-Aug-2010","obsoleted-by":"396","post-history":"","state":"Draft","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 375: Symmetric Coroutines and Yieldto","author":["Miguel Sofer <[email protected]>"],"is-jest":false},
	"374":{"url":"./tip/374.md","created":"13-Aug-2010","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 374: Stackless Vwait","author":["Thomas Perschak <[email protected]>","Trevor Davel <[email protected]>"],"is-jest":false},
	"373":{"url":"./tip/373.md","obsoletes":"372","keywords":"coroutine,yield","created":"12-Aug-2010","obsoleted-by":"375","post-history":"","state":"Withdrawn","tcl-version":"8.6","vote":"Pending","type":"Project","title":"# TIP 373: Improved Yielding Support for Coroutines","author":["Miguel Sofer <[email protected]>"],"is-jest":false},
	"372":{"url":"./tip/372.md","keywords":"coroutine, yield","created":"11-Aug-2010","obsoleted-by":"396","post-history":"","state":"Draft","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 372: Multi-argument Yield for Coroutines","discussions-to":"http://wiki.tcl.tk/26006","author":["Colin McCormack <[email protected]>"],"is-jest":false},
	"371":{"url":"./tip/371.md","created":"05-Aug-2010","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 371: Improvements for the dict command","author":["Thomas Perschak <[email protected]>","Trevor Davel <[email protected]>"],"is-jest":false},
	"370":{"url":"./tip/370.md","created":"04-Aug-2010","post-history":"","state":"Draft","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 370: Extend Tk's selection with a -time option","author":["George Petasis <[email protected]>"],"is-jest":false},
	"369":{"url":"./tip/369.md","tk-ticket":"3023578","keywords":"Tk,user-defined data,dictionary","created":"15-Jul-2010","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 369: Widget cargo command","author":["Russell Davidson <[email protected]>","Trevor Davel <[email protected]>"],"is-jest":false},
................................................................................
	"33":{"url":"./tip/33.md","created":"15-May-2001","post-history":"","state":"Final","tcl-version":"8.4","vote":"Done","type":"Project","title":"# TIP 33: Add 'lset' Command to Assign to List Elements.","discussions-to":"news:comp.lang.tcl,mailto:[email protected]","author":["Kevin Kenny <[email protected]>"],"is-jest":false},
	"32":{"url":"./tip/32.md","keywords":"trace,Tcl_Obj","created":"23-Mar-2001","post-history":"","state":"Final","tcl-version":"8.4a4","vote":"Done","type":"Project","title":"# TIP 32: Add Tcl_Obj-enabled counterpart to Tcl_CreateTrace","discussions-to":"news:comp.lang.tcl","author":["David Cuthbert <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"31":{"url":"./tip/31.md","created":"12-Mar-2001","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 31: CVS tags in the Tcl and Tk repositories","author":["Don Porter <[email protected]>","miguel sofer <[email protected]>","Jeff Hobbs <[email protected]>","Kevin Kenny <[email protected]>","David Gravereaux <[email protected]>","Donal K. Fellows <[email protected]>","Andreas Kupries <[email protected]>","Donal K. Fellows <[email protected]>","<[email protected]>","Kevin Kenny <[email protected] >"],"is-jest":false},
	"30":{"url":"./tip/30.md","created":"09-Mar-2001","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 30: Tk Toolkit Maintainer Assignments","author":["Don Porter <[email protected]>","Donal K. Fellows <[email protected]>","Jan Nijtmans <[email protected]>","Todd M. Helfter <[email protected]>","Chengye Mao <[email protected]>","George B. Smith <[email protected]>","Miguel Bañón <[email protected]>","Daniel Steffen <[email protected]>","Peter Spjuth <[email protected]>","Jeff Hobbs <[email protected]>","Vince Darley <[email protected]>","Donal K. Fellows <[email protected]>","Benjamin Riefenstahl <[email protected]>","Pat Thoyts <[email protected]>","Vince Darley <[email protected]>","Peter Spjuth <[email protected]>"],"is-jest":false},
	"29":{"url":"./tip/29.md","created":"07-Mar-2001","post-history":"","state":"Rejected","tcl-version":"9.0","vote":"Done","type":"Project","title":"# TIP 29: Allow array syntax for Tcl lists","discussions-to":"news:comp.lang.tcl,mailto:[email protected]","author":["Kevin Kenny <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"28":{"url":"./tip/28.md","created":"23-Feb-2001","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 28: How to be a good maintainer for Tcl/Tk","author":["Don Porter <[email protected]>"],"is-jest":false},
	"27":{"url":"./tip/27.md","created":"25-Feb-2001","post-history":"","state":"Final","tcl-version":"8.4","vote":"Done","type":"Project","title":"# TIP 27: CONST Qualification on Pointers in Tcl API's","discussions-to":"news:comp.lang.tcl,mailto:[email protected]","author":["Kevin Kenny <[email protected]>"],"is-jest":false},
	"26":{"url":"./tip/26.md","obsoletes":"19","created":"20-Feb-2001","post-history":"","state":"Final","implementation-url":"https://core.tcl.tk/tips/raw/assets/26.patch","tcl-version":"8.4","vote":"Done","type":"Project","title":"# TIP 26: Enhancements for the Tk Text Widget","discussions-to":"news:comp.lang.tcl","author":["Ludwig Callewaert <[email protected]>","Ludwig Callewaert <[email protected]>"],"is-jest":false},
	"25":{"url":"./tip/25.md","created":"07-Feb-2001","post-history":"","obsoleted-by":"152","state":"Withdrawn","vote":"Pending","tcl-version":"8.5","type":"Project","title":"# TIP 25: Native tk_messageBox  on Macintosh","author":["Mats Bengtsson <[email protected]>"],"is-jest":false},
	"24":{"url":"./tip/24.md","created":"29-Jan-2001","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 24: Tcl Maintainer Assignments","author":["Don Porter <[email protected]>","Donal K. Fellows <[email protected]>","Kevin B. Kenny <[email protected]>","Jeff Hobbs <[email protected]>","Pavel Goran <[email protected]>","Daniel A. Steffen <[email protected]>","miguel sofer <[email protected]>"],"is-jest":false},
	"23":{"url":"./tip/23.md","created":"22-Jan-2001","post-history":"","state":"Accepted","vote":"Done","type":"Process","title":"# TIP 23: Tk Toolkit Functional Areas for Maintainer Assignments","author":["Kevin Kenny <[email protected]>","Jim Ingham <[email protected]>","Don Porter <[email protected]>","Daniel A. Steffen <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"22":{"url":"./tip/22.md","keywords":"lindex,multiple arguments,sublists","created":"19-Jan-2001","post-history":"","state":"Final","tcl-version":"8.4a2","vote":"Done","type":"Project","title":"# TIP 22: Multiple Index Arguments to lindex","discussions-to":"news:comp.lang.tcl,mailto:[email protected]","author":["David Cuthbert <[email protected]>","Kevin Kenny <[email protected]>","Don Porter <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"21":{"url":"./tip/21.md","created":"14-Jan-2001","post-history":"","state":"Final","implementation-url":"http://www.hwaci.com/sw/asym_pad_patch_2.txt","tcl-version":"8.4","vote":"Done","type":"Project","title":"# TIP 21: Asymmetric Padding in the Pack and Grid Geometry Managers","author":["D. Richard Hipp <[email protected]>"],"is-jest":false},
	"20":{"url":"./tip/20.md","created":"08-Jan-2001","post-history":"","state":"Deferred","vote":"Pending","tcl-version":"8.5","type":"Project","title":"# TIP 20: Add C Locale-Exact CType Functions","author":["Jeffrey Hobbs <[email protected]>"],"is-jest":false},
	"19":{"url":"./tip/19.md","created":"03-Jan-2001","post-history":"","obsoleted-by":"26","state":"Final","tcl-version":"8.4a2","vote":"Done","type":"Project","title":"# TIP 19: Add a Text Changed Flag to Tk's Text Widget","author":["Neil McKay <[email protected]>"],"is-jest":false},
................................................................................
	"17":{"url":"./tip/17.md","created":"17-Nov-2000","post-history":"","state":"Final","tcl-version":"8.4.0","vote":"Done","type":"Project","title":"# TIP 17: Redo Tcl's filesystem","author":["Vince Darley <[email protected]>"],"is-jest":false},
	"16":{"url":"./tip/16.md","created":"21-Nov-2000","post-history":"","state":"Accepted","vote":"Done","type":"Process","title":"# TIP 16: Tcl Functional Areas for Maintainer Assignments","author":["Don Porter <[email protected]>","Daniel Steffen <[email protected]>"],"is-jest":false},
	"15":{"url":"./tip/15.md","keywords":"Tcl,expr,function,introspection","created":"22-Nov-2000","post-history":"","state":"Final","tcl-version":"8.4.0","vote":"Done","type":"Project","title":"# TIP 15: Functions to List and Detail Math Functions","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"14":{"url":"./tip/14.md","keywords":"Tk,photo,transparency,internal,access","created":"22-Nov-2000","post-history":"","state":"Final","implementation-url":"http://www.cs.man.ac.uk/~fellowsd/tcl/validRegion.patch","tcl-version":"8.4.0","vote":"Done","type":"Project","title":"# TIP 14: Access to Tk Photo Image Transparency","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"13":{"url":"./tip/13.md","created":"21-Nov-2000","obsoleted-by":"467","post-history":"","state":"Accepted","vote":"Done","type":"Process","title":"# TIP 13: Web Service for Drafting and Archiving TIPs","author":["Don Porter <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"12":{"url":"./tip/12.md","created":"15-Sep-2000","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 12: The \"Batteries Included\" Distribution","discussions-to":"news:comp.lang.tcl","author":["George A. Howlett <[email protected]>","Larry W. Virden <[email protected]>"],"is-jest":false},
	"11":{"url":"./tip/11.md","created":"16-Nov-2000","post-history":"","state":"Final","vote":"Done","tcl-version":"8.4","type":"Project","title":"# TIP 11: Tk Menubutton Enhancement: -compound option for menubutton","author":["Todd Helfter <[email protected]>"],"is-jest":false},
	"10":{"url":"./tip/10.md","created":"08-Nov-2000","post-history":"","state":"Final","implementation-url":"https://core.tcl.tk/tips/raw/assets/10.patch","tcl-version":"8.4","vote":"Done","type":"Project","title":"# TIP 10: Tcl I/O Enhancement: Thread-Aware Channels","author":["Andreas Kupries <[email protected]>"],"is-jest":false},
	"9":{"url":"./tip/9.md","created":"07-Nov-2000","post-history":"","state":"Withdrawn","tcl-version":"8.4","vote":"Pending","type":"Project","title":"# TIP 9: Tk Standard Library","author":["Marty Backe <[email protected]>","Larry W. Virden <[email protected]>","Jeff Hobbs <[email protected]>"],"is-jest":false},
	"8":{"url":"./tip/8.md","created":"06-Nov-2000","post-history":"","state":"Final","implementation-url":"ftp://ftp.ucsd.edu/pub/alpha/tcl/tkWinWm.diff","vote":"Done","tcl-version":"8.4.0","type":"Project","title":"# TIP 8: Add Winico support to the wm command on windows","author":["Vince Darley <[email protected]>"],"is-jest":false},
	"7":{"url":"./tip/7.md","created":"26-Oct-2000","post-history":"","state":"Final","tcl-version":"8.4","vote":"Done","type":"Project","title":"# TIP 7: Increased resolution for TclpGetTime on Windows","discussions-to":"news:comp.lang.tcl","author":["Kevin Kenny <[email protected]>"],"is-jest":false},
	"6":{"url":"./tip/6.md","created":"16-Oct-2000","post-history":"","state":"Rejected","tcl-version":"8.4.0","vote":"Done","type":"Project","title":"# TIP 6: Include [Incr Tcl] in the Core Tcl distribution","author":["Mark Harrison <[email protected]>"],"is-jest":false},
	"5":{"url":"./tip/5.md","created":"17-Oct-2000","post-history":"","state":"Final","vote":"Done","tcl-version":"8.4","type":"Project","title":"# TIP 5: Make TkClassProcs and TkSetClassProcs Public and Extensible","author":["Eric Melski <[email protected]>"],"is-jest":false},
	"4":{"url":"./tip/4.md","created":"26-Oct-2000","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 4: Tcl Release and Distribution Philosophy","discussions-to":"news:comp.lang.tcl","author":["Brent Welch <[email protected]>","Donal K. Fellows <[email protected]>","Larry W. Virden <[email protected]>","Larry W. Virden <[email protected]>"],"is-jest":false},
	"3":{"url":"./tip/3.md","created":"14-Sep-2000","obsoleted-by":"467","post-history":"","state":"Accepted","vote":"Done","type":"Process","title":"# TIP 3: TIP Format","author":["Andreas Kupries <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"2":{"url":"./tip/2.md","created":"12-Sep-2000","post-history":"","state":"Draft","vote":"Pending","type":"Process","title":"# TIP 2: TIP Guidelines","author":["Andreas Kupries <[email protected]>","Donal K. Fellows <[email protected]>","Don Porter <[email protected]>","Mo DeJong <[email protected]>","Larry W. Virden <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"1":{"url":"./tip/1.md","created":"14-Sep-2000","obsoleted-by":"386","post-history":"","state":"Withdrawn","vote":"No voting","type":"Informational","title":"# TIP 1: TIP Index","author":["TIP Editor <[email protected]>"],"is-jest":false},
	"0":{"url":"./tip/0.md","created":"11-Dec-2000","post-history":"","state":"Final","vote":"Done","type":"Process","title":"# TIP 0: Tcl Core Team Basic Rules","author":["John Ousterhout <[email protected]>"],"is-jest":false},
	"@min": 0,
	"@max": 550
}, "@timestamp": 1560758396}






|







 







|







 







|







 







|







 







|




|







 







|







 







|












|
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
..
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
...
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
...
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
...
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
...
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
...
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
	"520":{"url":"./tip/520.md","keywords":"Tcl, floating point, NaN, not a number","created":"18 October 2018","post-history":"","state":"Draft","tcl-branch":"tip-520","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 520: Make NaN Quiet","author":["Kevin B. Kenny <[email protected]>"],"is-jest":false},
	"519":{"url":"./tip/519.md","":"","keywords":"TclOO","state":"Final","vote-summary":"Accepted 4/0/2","this tip proposes to extend the `method` subcommand of the `oo":":define` command","type":"Project","author":["Pietro Cerutti <[email protected]>"],"votes-against":"none","votes-for":"DKF, KBK, JN, SL","follows":"","oo":":define RPCClient {","created":"18-Oct-2018","title":"# TIP 519: Inline export/unexport option to TclOO method definition","the class definition in the previous example would then be as follows":"","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-519","votes-present":"BG, FV","is-jest":false},
	"518":{"url":"./tip/518.md","keywords":"Tk","state":"Final","vote-summary":"Accepted 6/0/0","type":"Project","tk-branch":"tip518-event-last-child-unmanaged","author":["Harald Oehlmann <[email protected]>"],"votes-against":"none","votes-for":"DKF, BG, KBK, JN, FV, SL","created":"22-Sep-2018","title":"# TIP 518: Virtual Event when Last Child is not Managed any more","post-history":"","vote":"Done","tcl-version":"8.7","votes-present":"none","is-jest":false},
	"517":{"url":"./tip/517.md","keywords":"tk menu","created":"13-Sept-2018","post-history":"","state":"Final","tk-branch":"tip-517","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 517: Add -activerelief Configuration Option to the menu widget","author":["François Vogel <[email protected]>"],"is-jest":false},
	"516":{"url":"./tip/516.md","keywords":"Tcl, TclOO","state":"Final","type":"Project","author":["Donal K. Fellows <[email protected]>"],"vote-results":"4/0/5 accepted","votes-for":"DKF, JN, JD, AK","votes-against":"none","created":"7-Sept-2018","title":"# TIP 516: More OO Slot Operations","post-history":"","tcl-branch":"tip-516","vote":"Done","tcl-version":"8.7","votes-present":"BG, KBK, DGP, FV, SL","is-jest":false},
	"515":{"url":"./tip/515.md","state":"Final","type":"Project","author":["Jan Nijtmans <[email protected]>"],"vote-results":"8/0/1 accepted","votes-for":"DKF, KBK, JN, JD, DGP, FV, SL, AK","votes-against":"none","created":"7-Sept-2018","title":"# TIP 515: Level Value Reform","post-history":"","tcl-branch":"tip-515","vote":"Done","tcl-version":"8.7","votes-present":"BG","is-jest":false},
	"514":{"url":"./tip/514.md","keywords":"Tcl","created":"20-Aug-2018","post-history":"","state":"Final","tcl-branch":"tip-514","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 514: Platform differences in handling int/wide","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"513":{"url":"./tip/513.md","keywords":"Tcl,data structure","created":"02-Aug-2017","post-history":"","state":"Draft","implementation-url":"https://core.tcl-lang.org/tips/doc/trunk/attach/513/agendas.tcl","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 513: Better support for 'agendas' as arrays, dictionaries or lists","author":["Florian Murr <[email protected]>"],"is-jest":false},
	"512":{"url":"./tip/512.md","keywords":"Tcl","created":"25-June-2018","post-history":"","state":"Final","tcl-branch":"tip-512","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 512: No stub for Tcl_SetExitProc()","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"511":{"url":"./tip/511.md","keywords":"Tcl,threads","state":"Accepted","type":"Project","author":["Christian Werner <[email protected]>"],"vote-results":"4/0/5 accepted","votes-for":"DKF, BG, KBK, JN, JD, SL","votes-against":"none","created":"14-June-2018","title":"# TIP 511: Implement Tcl_AsyncMarkFromSignal()","post-history":"","implementation-url":"https://www.androwish.org/index.html/info/40790af1e8e4ec9f","vote":"Done","tcl-version":"8.7","votes-present":"DGP, FV, AK","is-jest":false},
	"510":{"url":"./tip/510.md","":"might be to just co-distribute, just as TDBC is with Tcl","keywords":"Tk","state":"Draft","vote-summary":"Rejected 1/3/1","type":"Project","tk-branch":"tip-510","author":["René Zaumseil <[email protected]>"],"votes-against":"KBK, JN, FV","votes-for":"DKF","created":"5-Jun-2018","vote-comments":"code not yet ready, needs porting to macOS; alternate","title":"# TIP 510: Add Rbc and Tkpath widgets to Tk","post-history":"","vote":"Done","tcl-version":"8.7","votes-present":"BG","is-jest":false},
	"509":{"url":"./tip/509.md","keywords":"Tcl,threads","state":"Final","type":"Project","author":["Frédéric Bonnet <[email protected]>"],"vote-results":"8/0/1 accepted","votes-for":"DKF, KBK, JN, JD, DGP, FV, SL, AK","votes-against":"none","created":"24-May-2018","title":"# TIP 509: Implement reentrant mutexes on all platforms","post-history":"","tcl-branch":"tip-509","vote":"Done","tcl-version":"8.7","votes-present":"BG","is-jest":false},
	"508":{"url":"./tip/508.md","keywords":"Tcl,array","state":"Final","type":"Project","author":["Frédéric Bonnet <[email protected]>"],"vote-results":"9/0/0 accepted","votes-for":"DKF, BG, KBK, JN, JD, DGP, FV, SL, AK","votes-against":"none","created":"13-May-2018","title":"# TIP 508: New subcommand [array default]","post-history":"","tcl-branch":"tip-508","vote":"Done","tcl-version":"8.7","votes-present":"none","is-jest":false},
	"507":{"url":"./tip/507.md","keywords":"Tk","state":"Final","type":"Project","tk-branch":"tip-507","author":["René Zaumseil <[email protected]>"],"votes-for":"DKF, JN, FV, SL, AK","votes-against":"none","created":"9-May-2018","title":"# TIP 507: Include simple SVG support with nanosvg","post-history":"","vote":"Done","tcl-version":"8.7","votes-present":"none","is-jest":false},
	"506":{"url":"./tip/506.md","state":"Final","vote-summary":"Accepted 5/0/1","type":"Project","author":["Don Porter <[email protected]>"],"votes-for":"DKF, KBK, JN, DGP, SL","votes-against":"none","created":"30-Mar-2018","title":"# TIP 506: Purge RefCount Macros","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-506","votes-present":"BG, FV","is-jest":false},
................................................................................
	"460":{"url":"./tip/460.md","keywords":"Tcl,variable,link,upvar","created":"08-Dec-2016","post-history":"","state":"Draft","tcl-branch":"dah-proc-arg-upvar","tcl-version":"9.0","vote":"Pending","type":"Project","title":"# TIP 460: An Alternative to Upvar","author":["Don Hathway <[email protected]>"],"is-jest":false},
	"459":{"url":"./tip/459.md","keywords":"Tcl,package","created":"08-Dec-2016","post-history":"","state":"Final","tcl-branch":"package_files","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 459: Tcl Package Introspection Improvements","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"458":{"url":"./tip/458.md","keywords":"event loop,scalability","created":"24-Nov-2016","post-history":"","state":"Final","tcl-branch":"tip-458","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 458: Add Support for epoll() and kqueue() in the Notifier","author":["Lucio Andrés Illanes Albornoz <[email protected]>","Lucio Andrés Illanes Albornoz <[email protected]>"],"is-jest":false},
	"457":{"url":"./tip/457.md","keywords":"Tcl,procedure,argument handling","created":"21-Nov-2016","post-history":"","state":"Draft","tcl-branch":"tip-457","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 457: Add Support for Named Arguments","author":["Mathieu Lafon <[email protected]>","Andreas Leitgeb <[email protected]>"],"is-jest":false},
	"456":{"url":"./tip/456.md","keywords":"Tcl,socket,SO_REUSEPORT,SO_REUSEADDR","created":"18-Nov-2016","post-history":"","state":"Final","tcl-branch":"tip-456","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 456: Extend the C API to Support Passing Options to TCP Server Creation","author":["LemonBoy <[email protected]>","lime boy <[email protected]>"],"is-jest":false},
	"455":{"url":"./tip/455.md","keywords":"Tcl, event loop","created":"07-Oct-2016","post-history":"","state":"Draft","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 455: Extensions to [vwait]: Variable Sets and Scripted Access to Tcl_DoOneEvent","author":["Christian Werner <[email protected]>"],"is-jest":false},
	"454":{"url":"./tip/454.md","keywords":"Tk","created":"21-Sep-2016","post-history":"","state":"Withdrawn","tcl-version":"8.6.6","vote":"Done","type":"Project","title":"# TIP 454: Automatically Resize Frames After Last Child Removed","author":["Harald Oehlmann <[email protected]>","Harald Oehlmann <[email protected]>","François Vogel <[email protected]>"],"is-jest":false},
	"453":{"url":"./tip/453.md","keywords":"Build tooling","created":"13-Sep-2016","post-history":"","state":"Draft","implementation-url":"https://core.tcl-lang.org/tclconfig/timeline?r=practcl","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 453: Tcl Based Automation for tcl/pkgs","author":["Sean Woods <[email protected]>"],"is-jest":false},
	"452":{"url":"./tip/452.md","state":"Draft","type":"Project","author":["Gerald Lester <[email protected]>","Gerald W. Lester <[email protected]>","Gerald W. Lester <[email protected]>"],"vote-results":"2/4/3 rejection in favour of further work","votes-for":"KBK, JD","votes-against":"DKF, JN, DGP, AK","created":"10-Aug-2016","title":"# TIP 452: Add \"stubs\" Package to or Along Side of TclTest","post-history":"","tcl-branch":"tip-452","vote":"Pending","tcl-version":"8.7","votes-present":"BG, FV, SL","is-jest":false},
	"451":{"url":"./tip/451.md","keywords":"Tcl,event loop","created":"10-Aug-2016","post-history":"","state":"Draft","tcl-branch":"updateextended","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 451: Modify [update] to Give Full Script Access to Tcl_DoOneEvent","author":["Colin McCormack <[email protected]>"],"is-jest":false},
	"450":{"url":"./tip/450.md","keywords":"Tcl, binary data","created":"18-Jul-2016","post-history":"","state":"Draft","tcl-branch":"tip-450","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 450: Add [binary] subcommand \"set\" for in-place modification","author":["Arjen Markus <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"449":{"url":"./tip/449.md","keywords":"Tk","created":"07-Jun-2016","post-history":"","state":"Final","tk-branch":"tip-449","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 449: [text] undo/redo to Return Range of Characters","author":["François Vogel <[email protected]>"],"is-jest":false},
	"448":{"url":"./tip/448.md","keywords":"Tcl, C API","created":"24-May-2016","post-history":"","state":"Draft","implementation-url":"http://fossil.etoyoc.com/sandbox/tcllib/artifact/b2b272a285811272","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 448: Update Tcl_SetNotifier to Reinitialize Event Loop","author":["Jeff Rogers <[email protected]>"],"is-jest":false},
	"447":{"url":"./tip/447.md","keywords":"Tcl,tcltest","created":"20-Apr-2016","post-history":"","state":"Final","tcl-branch":"gahr-tip-447","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 447: Execution Time Verbosity Levels in tcltest::configure","author":["Pietro Cerutti <[email protected]>"],"is-jest":false},
	"446":{"url":"./tip/446.md","keywords":"Tk","created":"05-Apr-2016","post-history":"","state":"Final","tk-branch":"tip-446","tcl-version":"8.6.6","vote":"Done","type":"Project","title":"# TIP 446: Introspect Undo/Redo Stack Depths","author":["François Vogel <[email protected]>"],"is-jest":false},
................................................................................
	"443":{"url":"./tip/443.md","keywords":"Tk","created":"09-Feb-2016","post-history":"","state":"Final","tk-branch":"tip-443","tcl-version":"8.6.6","vote":"Done","type":"Project","title":"# TIP 443: More Tag Configuration Options for the Text Widget","author":["François Vogel <[email protected]>"],"is-jest":false},
	"442":{"url":"./tip/442.md","keywords":"Tk","created":"17-Feb-2016","post-history":"","state":"Final","tk-branch":"tip-442","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 442: Display text in progressbars","author":["René Zaumseil <[email protected]>","Kevin B Kenny <[email protected]>","Andreas Leitgeb <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"441":{"url":"./tip/441.md","keywords":"Tk,listbox","created":"18-Jan-2016","post-history":"","state":"Final","tk-branch":"tip-441","tcl-version":"8.6.5","vote":"Done","type":"Project","title":"# TIP 441: Add -justify Configuration Option to the listbox Widget","author":["François Vogel <[email protected]>","François Vogel <[email protected]>"],"is-jest":false},
	"440":{"url":"./tip/440.md","keywords":"language implementation,platform","created":"14-Jan-2016","post-history":"","state":"Final","tcl-branch":"tclPlatformEngine","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 440: Add engine to tcl_platform Array","author":["Joe Mistachkin <[email protected]>","Jan Nijtmans <[email protected]>"],"is-jest":false},
	"439":{"url":"./tip/439.md","created":"08-Dec-2015","post-history":"","state":"Draft","tcl-branch":"semver","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 439: Semantic Versioning","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"438":{"url":"./tip/438.md","keywords":"Tk,text","created":"01-Nov-2015","post-history":"","state":"Final","tk-branch":"tip-438","tcl-version":"8.6.5","vote":"Done","type":"Project","title":"# TIP 438: Ensure Line Metrics are Up-to-Date","author":["François Vogel <[email protected]>","Jan Nijtmans <[email protected]>"],"is-jest":false},
	"437":{"url":"./tip/437.md","keywords":"Tk","created":"14-Jul-2015","post-history":"","state":"Final","tk-branch":"tip-437","vote":"Done","tcl-version":"8.5.18","type":"Project","title":"# TIP 437: Tk panedwindow options for proxy window","author":["Eric Boudaillier <[email protected]>","François Vogel <[email protected]>"],"is-jest":false},
	"436":{"url":"./tip/436.md","created":"30-Jun-2015","post-history":"","state":"Final","implementation-url":"https://core.tcl-lang.org/tcloo/info/5fa1374aa026d4c7","vote":"Done","tcl-version":"8.6.5","type":"Project","title":"# TIP 436: Improve TclOO isa Introspection","author":["Donal Fellows <[email protected]>"],"is-jest":false},
	"435":{"url":"./tip/435.md","created":"16-May-2015","post-history":"","state":"Rejected","vote":"Done","tcl-version":"8.6.5","type":"Project","title":"# TIP 435: Safe Mutex Disposal API","author":["Donal Fellows <[email protected]>","Joe Mistachkin <[email protected]>"],"is-jest":false},
	"434":{"url":"./tip/434.md","created":"26-Feb-2015","post-history":"","state":"Withdrawn","vote":"Pending","tcl-version":"8.6","type":"Project","title":"# TIP 434: Specify Event Sources for 'vwait'","author":["Jos Decoster <[email protected]>"],"is-jest":false},
	"433":{"url":"./tip/433.md","created":"25-Feb-2015","post-history":"","state":"Final","tk-branch":"bindScriptCount","tcl-version":"8.6.4","vote":"Done","type":"Project","title":"# TIP 433: Add %M binding substitution","author":["Joe Mistachkin <[email protected]>","Brian Griffin <[email protected]>","Don Porter <[email protected]>"],"is-jest":false},
	"432":{"url":"./tip/432.md","created":"20-Sep-2014","post-history":"","state":"Final","tk-branch":"apn-win-filedialogs","tcl-version":"8.6.3","vote":"Done","type":"Project","title":"# TIP 432: Support for New Windows File Dialogs in Vista and Later","author":["Ashok P. Nadkarni <[email protected]>"],"is-jest":false},
	"431":{"url":"./tip/431.md","keywords":"Tcl, directory, file","state":"Final","type":"Project","author":["Kevin Pasko <[email protected]>"],"votes-for":"DKF, FV, KBK, JN, SL","votes-against":"none","created":"10-Sep-2014","title":"# TIP 431: Add 'tempdir' Subcommand to 'file'","post-history":"","tcl-version":"8.7","vote":"Done","tcl-branch":"tip-431","votes-present":"none","is-jest":false},
	"430":{"url":"./tip/430.md","keywords":"virtual filesystem,zip,tclkit,boot,bootstrap","state":"Final","type":"Project","author":["Sean Woods <[email protected]>","Donal Fellows <[email protected]>","Poor Yorick <[email protected]>","Harald Oehlmann <[email protected]>"],"votes-for":"DKF, KBK, SL, AK, JD, JN (partially)","votes-against":"JN (partially)","created":"03-Sep-2014","present":"JN (partially)","title":"# TIP 430: Add basic ZIP archive support to Tcl","post-history":"","tcl-branch":"core_zip_vfs","vote":"Done","tcl-version":"8.7","is-jest":false},
	"429":{"url":"./tip/429.md","keywords":"Tcl,cat,scriptlet result","created":"27-Jul-2014","post-history":"","state":"Final","tcl-branch":"tip-429","tcl-version":"8.6.2","vote":"Done","type":"Project","title":"# TIP 429: A 'string' Subcommand for Concatenation","author":["Andreas Leitgeb <[email protected]>","Alexandre Ferrieux <[email protected]>"],"is-jest":false},
................................................................................
	"404":{"url":"./tip/404.md","tcl-ticket":"3544988","keywords":"msgcat, convention","created":"17-Jul-2011","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 404: Let Message Catalogs get the Locale from their File Name","discussions-to":"Tcl Core list","author":["Harald Oehlmann <[email protected]>"],"is-jest":false},
	"403":{"url":"./tip/403.md","keywords":"Tk","created":"17-Jul-2011","post-history":"","state":"Final","tk-branch":"jn-web-colors","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 403: Web Colors for Tk","discussions-to":"Tcl Core list","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"402":{"url":"./tip/402.md","keywords":"Tcl","created":"16-Jul-2011","post-history":"","state":"Draft","tcl-branch":"jn-unc-vfs","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 402: General Platform UNC Support","discussions-to":"Tcl Core list","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"401":{"url":"./tip/401.md","created":"29-Apr-2012","post-history":"","state":"Draft","tcl-branch":"tip-401","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 401: Comment Words with Leading {#}","author":["Lars Hellström <[email protected]>"],"is-jest":false},
	"400":{"url":"./tip/400.md","keywords":"Tcl, zlib","created":"30-Mar-2012","post-history":"","state":"Final","tcl-branch":"tip-400-impl","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 400: Setting the Compression Dictionary and Other 'zlib' Updates","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"399":{"url":"./tip/399.md","keywords":"Tcl,localization,msgcat","created":"27-Mar-2012","obsoleted-by":"412","post-history":"","state":"Accepted","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 399: Dynamic Locale Changing for msgcat","author":["Harald Oehlmann <[email protected]>"],"is-jest":false},
	"398":{"url":"./tip/398.md","keywords":"close,exit,flush,blocking,nonblocking","created":"24-Feb-2012","post-history":"","state":"Final","tcl-branch":"tip-398-impl","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 398: Quickly Exit with Non-Blocking Blocked Channels","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"397":{"url":"./tip/397.md","keywords":"Tcl, TclOO, copy, clone","created":"13-Feb-2012","post-history":"","state":"Final","implementation-url":"https://core.tcl-lang.org/tcloo/timeline?r=development-rfe3485060","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 397: Extensible Object Copying","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"396":{"url":"./tip/396.md","obsoletes":"372","keywords":"coroutine,yield,yieldto","created":"11-Feb-2012","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 396: Symmetric Coroutines, Multiple Args, and yieldto","author":["Kevin Kenny <[email protected]>"],"is-jest":false},
	"395":{"url":"./tip/395.md","keywords":"Tcl","state":"Final","type":"Project","author":["Jos Decoster <[email protected]>"],"created":"13-Dec-2011","obsoletes":"347","title":"# TIP 395: New 'string is entier' Command","post-history":"","vote":"Done","tcl-version":"8.6","implementation-url":"http://sites.google.com/site/josdecoster/Home/tip_string_is_entier.diff","discussions-to":"news:comp.lang.tcl","is-jest":false},
	"394":{"url":"./tip/394.md","created":"30-Nov-2011","post-history":"","state":"Draft","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 394: Platform-Independent Handling of Contemporary Mice","author":["Andreas Leitgeb <[email protected]>"],"is-jest":false},
	"393":{"url":"./tip/393.md","created":"25-Apr-2011","post-history":"","state":"Draft","implementation-url":"http://sqlitestudio.pl/tcl/patches/tip-393-lsearch-command.patch","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 393: Add -command Option to lsearch","author":["Pawel Salawa <[email protected]>"],"is-jest":false},
	"392":{"url":"./tip/392.md","keywords":"bignum,runaway,safe,math,precision,integer,tcl","created":"30-Oct-2011","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 392: Allow Bignums to be Disabled at Runtime on a Per-Interp Basis","author":["Joe Mistachkin <[email protected]>"],"is-jest":false},
	"391":{"url":"./tip/391.md","created":"26-Oct-2011","obsoleted-by":"409","post-history":"","state":"Withdrawn","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 391: Support for UDP Sockets in Tcl","author":["Jeff Rogers <[email protected]>"],"is-jest":false},
	"390":{"url":"./tip/390.md","created":"27-Oct-2011","post-history":"","state":"Draft","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 390: A Logging API for Tcl","author":["Jeff Rogers <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
................................................................................
	"388":{"url":"./tip/388.md","keywords":"Tcl","created":"10-Aug-2011","post-history":"","state":"Final","tcl-branch":"tip-388-impl","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 388: Extending Unicode literals past the BMP","discussions-to":"Tcl Core list","author":["Jan Nijtmans <[email protected]>","Jan Nijtmans <[email protected]>"],"is-jest":false},
	"387":{"url":"./tip/387.md","keywords":"Tcl, coroutine","created":"30-May-2011","post-history":"","obsoleted-by":"396","state":"Withdrawn","tcl-version":"8.6","vote":"Pending","type":"Project","title":"# TIP 387: Unified Yield Command Syntax","author":["Lars Hellström <[email protected]>"],"is-jest":false},
	"386":{"url":"./tip/386.md","keywords":"Fossil,DVCS","created":"01-Mar-2011","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 386: Relocation of Tcl/Tk Source Control Repositories","author":["Kevin B. Kenny <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"385":{"url":"./tip/385.md","keywords":"Tcl, traces","created":"13-Feb-2011","post-history":"","state":"Draft","tcl-version":"9.0","vote":"Pending","type":"Project","title":"# TIP 385: Functional Traces On Variables","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"384":{"url":"./tip/384.md","keywords":"kqueue,inotify,dnotify,gamin,FSevents,fam","created":"02-Dec-2010","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 384: Add File Alteration Monitoring to the Tcl Core","author":["Reinhard Max <[email protected]>","Gerald W. Lester <[email protected]>"],"is-jest":false},
	"383":{"url":"./tip/383.md","keywords":"debugging,coroutine,yielded","state":"Final","type":"Project","author":["Alexandre Ferrieux <[email protected]>","Miguel Sofer <[email protected]>","Donal K. Fellows <[email protected]>"],"votes-for":"DKF, KBK, JN","votes-against":"none","created":"03-Dec-2010","title":"# TIP 383: Injecting Code into Suspended Coroutines","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-383","votes-present":"FV, SL","is-jest":false},
	"382":{"url":"./tip/382.md","keywords":"Tk, dialog","created":"02-Nov-2010","post-history":"","state":"Final","tk-branch":"tip-382","vote":"Done","tcl-version":"8.5.11","type":"Project","title":"# TIP 382: Let tk_getSaveFile ignore file overwrites","author":["Pawel Salawa <[email protected]>","Don Porter <[email protected]>"],"is-jest":false},
	"381":{"url":"./tip/381.md","keywords":"TclOO, iTcl","created":"20-Oct-2010","post-history":"","state":"Final","implementation-url":"https://core.tcl-lang.org/tcloo/timeline?r=development-next2","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 381: Call Chain Introspection and Control","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"380":{"url":"./tip/380.md","tcl-ticket":"3084339","created":"20-Oct-2010","post-history":"","state":"Final","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 380: TclOO Slots for Flexible Declarations","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"379":{"url":"./tip/379.md","keywords":"event","created":"17-Oct-2010","post-history":"","state":"Draft","implementation-url":"http://www.wjduquette.com/notifier/hook-0.1.zip","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 379: Add a Command for Delivering Events Without Tk","author":["Will Duquette <[email protected]>"],"is-jest":false},
	"378":{"url":"./tip/378.md","tcl-ticket":"3081184","created":"04-Oct-2010","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 378: Fixing the Performance of TIP 280","author":["Andreas Kupries <[email protected]>","Jeff Hobbs <[email protected]>"],"is-jest":false},
	"377":{"url":"./tip/377.md","created":"13-Sep-2010","post-history":"","state":"Withdrawn","tcl-version":"8.6","vote":"Pending","type":"Project","title":"# TIP 377: Portably Determining the Number of Processors in the System","author":["Andreas Kupries <[email protected]>"],"is-jest":false},
	"376":{"url":"./tip/376.md","created":"14-Sep-2010","post-history":"","state":"Final","implementation-url":"https://core.tcl-lang.org/tdbc/","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 376: Bundle sqlite3 and tdbc::sqlite3 Packages","author":["Don Porter <[email protected]>","D. Richard Hipp <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"375":{"url":"./tip/375.md","obsoletes":"373","keywords":"coroutine,yield","created":"12-Aug-2010","obsoleted-by":"396","post-history":"","state":"Draft","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 375: Symmetric Coroutines and Yieldto","author":["Miguel Sofer <[email protected]>"],"is-jest":false},
	"374":{"url":"./tip/374.md","created":"13-Aug-2010","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 374: Stackless Vwait","author":["Thomas Perschak <[email protected]>","Trevor Davel <[email protected]>"],"is-jest":false},
	"373":{"url":"./tip/373.md","obsoletes":"372","keywords":"coroutine,yield","created":"12-Aug-2010","obsoleted-by":"375","post-history":"","state":"Withdrawn","tcl-version":"8.6","vote":"Pending","type":"Project","title":"# TIP 373: Improved Yielding Support for Coroutines","author":["Miguel Sofer <[email protected]>"],"is-jest":false},
	"372":{"url":"./tip/372.md","keywords":"coroutine, yield","created":"11-Aug-2010","obsoleted-by":"396","post-history":"","state":"Draft","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 372: Multi-argument Yield for Coroutines","discussions-to":"http://wiki.tcl.tk/26006","author":["Colin McCormack <[email protected]>"],"is-jest":false},
	"371":{"url":"./tip/371.md","created":"05-Aug-2010","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 371: Improvements for the dict command","author":["Thomas Perschak <[email protected]>","Trevor Davel <[email protected]>"],"is-jest":false},
	"370":{"url":"./tip/370.md","created":"04-Aug-2010","post-history":"","state":"Draft","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 370: Extend Tk's selection with a -time option","author":["George Petasis <[email protected]>"],"is-jest":false},
	"369":{"url":"./tip/369.md","tk-ticket":"3023578","keywords":"Tk,user-defined data,dictionary","created":"15-Jul-2010","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 369: Widget cargo command","author":["Russell Davidson <[email protected]>","Trevor Davel <[email protected]>"],"is-jest":false},
................................................................................
	"33":{"url":"./tip/33.md","created":"15-May-2001","post-history":"","state":"Final","tcl-version":"8.4","vote":"Done","type":"Project","title":"# TIP 33: Add 'lset' Command to Assign to List Elements.","discussions-to":"news:comp.lang.tcl,mailto:[email protected]","author":["Kevin Kenny <[email protected]>"],"is-jest":false},
	"32":{"url":"./tip/32.md","keywords":"trace,Tcl_Obj","created":"23-Mar-2001","post-history":"","state":"Final","tcl-version":"8.4a4","vote":"Done","type":"Project","title":"# TIP 32: Add Tcl_Obj-enabled counterpart to Tcl_CreateTrace","discussions-to":"news:comp.lang.tcl","author":["David Cuthbert <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"31":{"url":"./tip/31.md","created":"12-Mar-2001","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 31: CVS tags in the Tcl and Tk repositories","author":["Don Porter <[email protected]>","miguel sofer <[email protected]>","Jeff Hobbs <[email protected]>","Kevin Kenny <[email protected]>","David Gravereaux <[email protected]>","Donal K. Fellows <[email protected]>","Andreas Kupries <[email protected]>","Donal K. Fellows <[email protected]>","<[email protected]>","Kevin Kenny <[email protected] >"],"is-jest":false},
	"30":{"url":"./tip/30.md","created":"09-Mar-2001","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 30: Tk Toolkit Maintainer Assignments","author":["Don Porter <[email protected]forge.net>","Donal K. Fellows <[email protected]>","Jan Nijtmans <[email protected]>","Todd M. Helfter <[email protected]>","Chengye Mao <[email protected]>","George B. Smith <[email protected]>","Miguel Bañón <[email protected]>","Daniel Steffen <[email protected]>","Peter Spjuth <[email protected]>","Jeff Hobbs <[email protected]>","Vince Darley <[email protected]>","Donal K. Fellows <[email protected]>","Benjamin Riefenstahl <[email protected]>","Pat Thoyts <[email protected]>","Vince Darley <[email protected]>","Peter Spjuth <[email protected]>"],"is-jest":false},
	"29":{"url":"./tip/29.md","created":"07-Mar-2001","post-history":"","state":"Rejected","tcl-version":"9.0","vote":"Done","type":"Project","title":"# TIP 29: Allow array syntax for Tcl lists","discussions-to":"news:comp.lang.tcl,mailto:[email protected]","author":["Kevin Kenny <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"28":{"url":"./tip/28.md","created":"23-Feb-2001","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 28: How to be a good maintainer for Tcl/Tk","author":["Don Porter <[email protected]>"],"is-jest":false},
	"27":{"url":"./tip/27.md","created":"25-Feb-2001","post-history":"","state":"Final","tcl-version":"8.4","vote":"Done","type":"Project","title":"# TIP 27: CONST Qualification on Pointers in Tcl API's","discussions-to":"news:comp.lang.tcl,mailto:[email protected]","author":["Kevin Kenny <[email protected]>"],"is-jest":false},
	"26":{"url":"./tip/26.md","obsoletes":"19","created":"20-Feb-2001","post-history":"","state":"Final","implementation-url":"https://core.tcl-lang.org/tips/raw/assets/26.patch","tcl-version":"8.4","vote":"Done","type":"Project","title":"# TIP 26: Enhancements for the Tk Text Widget","discussions-to":"news:comp.lang.tcl","author":["Ludwig Callewaert <[email protected]>","Ludwig Callewaert <[email protected]>"],"is-jest":false},
	"25":{"url":"./tip/25.md","created":"07-Feb-2001","post-history":"","obsoleted-by":"152","state":"Withdrawn","vote":"Pending","tcl-version":"8.5","type":"Project","title":"# TIP 25: Native tk_messageBox  on Macintosh","author":["Mats Bengtsson <[email protected]>"],"is-jest":false},
	"24":{"url":"./tip/24.md","created":"29-Jan-2001","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 24: Tcl Maintainer Assignments","author":["Don Porter <[email protected]>","Donal K. Fellows <[email protected]>","Kevin B. Kenny <[email protected]>","Jeff Hobbs <[email protected]>","Pavel Goran <[email protected]>","Daniel A. Steffen <[email protected]>","miguel sofer <[email protected]>"],"is-jest":false},
	"23":{"url":"./tip/23.md","created":"22-Jan-2001","post-history":"","state":"Accepted","vote":"Done","type":"Process","title":"# TIP 23: Tk Toolkit Functional Areas for Maintainer Assignments","author":["Kevin Kenny <[email protected]>","Jim Ingham <[email protected]>","Don Porter <[email protected]>","Daniel A. Steffen <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"22":{"url":"./tip/22.md","keywords":"lindex,multiple arguments,sublists","created":"19-Jan-2001","post-history":"","state":"Final","tcl-version":"8.4a2","vote":"Done","type":"Project","title":"# TIP 22: Multiple Index Arguments to lindex","discussions-to":"news:comp.lang.tcl,mailto:[email protected]","author":["David Cuthbert <[email protected]>","Kevin Kenny <[email protected]>","Don Porter <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"21":{"url":"./tip/21.md","created":"14-Jan-2001","post-history":"","state":"Final","implementation-url":"http://www.hwaci.com/sw/asym_pad_patch_2.txt","tcl-version":"8.4","vote":"Done","type":"Project","title":"# TIP 21: Asymmetric Padding in the Pack and Grid Geometry Managers","author":["D. Richard Hipp <[email protected]>"],"is-jest":false},
	"20":{"url":"./tip/20.md","created":"08-Jan-2001","post-history":"","state":"Deferred","vote":"Pending","tcl-version":"8.5","type":"Project","title":"# TIP 20: Add C Locale-Exact CType Functions","author":["Jeffrey Hobbs <[email protected]>"],"is-jest":false},
	"19":{"url":"./tip/19.md","created":"03-Jan-2001","post-history":"","obsoleted-by":"26","state":"Final","tcl-version":"8.4a2","vote":"Done","type":"Project","title":"# TIP 19: Add a Text Changed Flag to Tk's Text Widget","author":["Neil McKay <[email protected]>"],"is-jest":false},
................................................................................
	"17":{"url":"./tip/17.md","created":"17-Nov-2000","post-history":"","state":"Final","tcl-version":"8.4.0","vote":"Done","type":"Project","title":"# TIP 17: Redo Tcl's filesystem","author":["Vince Darley <[email protected]>"],"is-jest":false},
	"16":{"url":"./tip/16.md","created":"21-Nov-2000","post-history":"","state":"Accepted","vote":"Done","type":"Process","title":"# TIP 16: Tcl Functional Areas for Maintainer Assignments","author":["Don Porter <[email protected]>","Daniel Steffen <[email protected]>"],"is-jest":false},
	"15":{"url":"./tip/15.md","keywords":"Tcl,expr,function,introspection","created":"22-Nov-2000","post-history":"","state":"Final","tcl-version":"8.4.0","vote":"Done","type":"Project","title":"# TIP 15: Functions to List and Detail Math Functions","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"14":{"url":"./tip/14.md","keywords":"Tk,photo,transparency,internal,access","created":"22-Nov-2000","post-history":"","state":"Final","implementation-url":"http://www.cs.man.ac.uk/~fellowsd/tcl/validRegion.patch","tcl-version":"8.4.0","vote":"Done","type":"Project","title":"# TIP 14: Access to Tk Photo Image Transparency","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"13":{"url":"./tip/13.md","created":"21-Nov-2000","obsoleted-by":"467","post-history":"","state":"Accepted","vote":"Done","type":"Process","title":"# TIP 13: Web Service for Drafting and Archiving TIPs","author":["Don Porter <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"12":{"url":"./tip/12.md","created":"15-Sep-2000","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 12: The \"Batteries Included\" Distribution","discussions-to":"news:comp.lang.tcl","author":["George A. Howlett <[email protected]>","Larry W. Virden <[email protected]>"],"is-jest":false},
	"11":{"url":"./tip/11.md","created":"16-Nov-2000","post-history":"","state":"Final","vote":"Done","tcl-version":"8.4","type":"Project","title":"# TIP 11: Tk Menubutton Enhancement: -compound option for menubutton","author":["Todd Helfter <[email protected]>"],"is-jest":false},
	"10":{"url":"./tip/10.md","created":"08-Nov-2000","post-history":"","state":"Final","implementation-url":"https://core.tcl-lang.org/tips/raw/assets/10.patch","tcl-version":"8.4","vote":"Done","type":"Project","title":"# TIP 10: Tcl I/O Enhancement: Thread-Aware Channels","author":["Andreas Kupries <[email protected]>"],"is-jest":false},
	"9":{"url":"./tip/9.md","created":"07-Nov-2000","post-history":"","state":"Withdrawn","tcl-version":"8.4","vote":"Pending","type":"Project","title":"# TIP 9: Tk Standard Library","author":["Marty Backe <[email protected]>","Larry W. Virden <[email protected]>","Jeff Hobbs <[email protected]>"],"is-jest":false},
	"8":{"url":"./tip/8.md","created":"06-Nov-2000","post-history":"","state":"Final","implementation-url":"ftp://ftp.ucsd.edu/pub/alpha/tcl/tkWinWm.diff","vote":"Done","tcl-version":"8.4.0","type":"Project","title":"# TIP 8: Add Winico support to the wm command on windows","author":["Vince Darley <[email protected]>"],"is-jest":false},
	"7":{"url":"./tip/7.md","created":"26-Oct-2000","post-history":"","state":"Final","tcl-version":"8.4","vote":"Done","type":"Project","title":"# TIP 7: Increased resolution for TclpGetTime on Windows","discussions-to":"news:comp.lang.tcl","author":["Kevin Kenny <[email protected]>"],"is-jest":false},
	"6":{"url":"./tip/6.md","created":"16-Oct-2000","post-history":"","state":"Rejected","tcl-version":"8.4.0","vote":"Done","type":"Project","title":"# TIP 6: Include [Incr Tcl] in the Core Tcl distribution","author":["Mark Harrison <[email protected]>"],"is-jest":false},
	"5":{"url":"./tip/5.md","created":"17-Oct-2000","post-history":"","state":"Final","vote":"Done","tcl-version":"8.4","type":"Project","title":"# TIP 5: Make TkClassProcs and TkSetClassProcs Public and Extensible","author":["Eric Melski <[email protected]>"],"is-jest":false},
	"4":{"url":"./tip/4.md","created":"26-Oct-2000","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 4: Tcl Release and Distribution Philosophy","discussions-to":"news:comp.lang.tcl","author":["Brent Welch <[email protected]>","Donal K. Fellows <[email protected]>","Larry W. Virden <[email protected]>","Larry W. Virden <[email protected]>"],"is-jest":false},
	"3":{"url":"./tip/3.md","created":"14-Sep-2000","obsoleted-by":"467","post-history":"","state":"Accepted","vote":"Done","type":"Process","title":"# TIP 3: TIP Format","author":["Andreas Kupries <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"2":{"url":"./tip/2.md","created":"12-Sep-2000","post-history":"","state":"Draft","vote":"Pending","type":"Process","title":"# TIP 2: TIP Guidelines","author":["Andreas Kupries <[email protected]>","Donal K. Fellows <[email protected]>","Don Porter <[email protected]>","Mo DeJong <[email protected]>","Larry W. Virden <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"1":{"url":"./tip/1.md","created":"14-Sep-2000","obsoleted-by":"386","post-history":"","state":"Withdrawn","vote":"No voting","type":"Informational","title":"# TIP 1: TIP Index","author":["TIP Editor <[email protected]>"],"is-jest":false},
	"0":{"url":"./tip/0.md","created":"11-Dec-2000","post-history":"","state":"Final","vote":"Done","type":"Process","title":"# TIP 0: Tcl Core Team Basic Rules","author":["John Ousterhout <[email protected]>"],"is-jest":false},
	"@min": 0,
	"@max": 550
}, "@timestamp": 1560763375}

Changes to index.md.

505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
...
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
....
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
....
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
....
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
....
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
....
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
....
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/513.md'>513</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top' ><a href='./tip/513.md'>Better support for &apos;agendas&apos; as arrays, dictionaries or lists</a></td>
<td valign='top'><a href='https://core.tcl.tk/tips/doc/trunk/attach/513/agendas.tcl'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/512.md'>512</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/512.md'>No stub for Tcl_SetExitProc()</a></td>
................................................................................
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/453.md'>453</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top' ><a href='./tip/453.md'>Tcl Based Automation for tcl/pkgs</a></td>
<td valign='top'><a href='https://core.tcl.tk/tclconfig/timeline?r=practcl'>Link</a></td>
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/452.md'>452</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top' ><a href='./tip/452.md'>Add &quot;stubs&quot; Package to or Along Side of TclTest</a></td>
................................................................................
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/436.md'>436</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6.5</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/436.md'>Improve TclOO isa Introspection</a></td>
<td valign='top'><a href='https://core.tcl.tk/tcloo/info/5fa1374aa026d4c7'>Link</a></td>
</tr>
<tr class='state-rejected type-project version-86'>
<td valign='top'><a href='./tip/435.md'>435</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6.5</td>
<td valign='top'>Rejected</td>
<td valign='top' ><a href='./tip/435.md'>Safe Mutex Disposal API</a></td>
................................................................................
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/397.md'>397</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/397.md'>Extensible Object Copying</a></td>
<td valign='top'><a href='https://core.tcl.tk/tcloo/timeline?r=development-rfe3485060'>Link</a></td>
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/396.md'>396</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/396.md'>Symmetric Coroutines, Multiple Args, and yieldto</a></td>
................................................................................
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/381.md'>381</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/381.md'>Call Chain Introspection and Control</a></td>
<td valign='top'><a href='https://core.tcl.tk/tcloo/timeline?r=development-next2'>Link</a></td>
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/380.md'>380</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/380.md'>TclOO Slots for Flexible Declarations</a></td>
................................................................................
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/376.md'>376</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/376.md'>Bundle sqlite3 and tdbc::sqlite3 Packages</a></td>
<td valign='top'><a href='https://core.tcl.tk/tdbc/'>Link</a></td>
</tr>
<tr class='state-obsoleted type-project version-86'>
<td valign='top'><a href='./tip/375.md'>375</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Obsoleted</td>
<td valign='top' ><a href='./tip/375.md'>Symmetric Coroutines and Yieldto</a></td>
................................................................................
</tr>
<tr class='state-final type-project version-84'>
<td valign='top'><a href='./tip/26.md'>26</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.4</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/26.md'>Enhancements for the Tk Text Widget</a></td>
<td valign='top'><a href='https://core.tcl.tk/tips/raw/assets/26.patch'>Link</a></td>
</tr>
<tr class='state-obsoleted type-project version-85'>
<td valign='top'><a href='./tip/25.md'>25</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5</td>
<td valign='top'>Obsoleted</td>
<td valign='top' ><a href='./tip/25.md'>Native tk_messageBox  on Macintosh</a></td>
................................................................................
</tr>
<tr class='state-final type-project version-84'>
<td valign='top'><a href='./tip/10.md'>10</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.4</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/10.md'>Tcl I/O Enhancement: Thread-Aware Channels</a></td>
<td valign='top'><a href='https://core.tcl.tk/tips/raw/assets/10.patch'>Link</a></td>
</tr>
<tr class='state-withdrawn type-project version-84'>
<td valign='top'><a href='./tip/9.md'>9</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.4</td>
<td valign='top'>Withdrawn</td>
<td valign='top' ><a href='./tip/9.md'>Tk Standard Library</a></td>






|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
...
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
....
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
....
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
....
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
....
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
....
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
....
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/513.md'>513</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top' ><a href='./tip/513.md'>Better support for &apos;agendas&apos; as arrays, dictionaries or lists</a></td>
<td valign='top'><a href='https://core.tcl-lang.org/tips/doc/trunk/attach/513/agendas.tcl'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/512.md'>512</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/512.md'>No stub for Tcl_SetExitProc()</a></td>
................................................................................
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/453.md'>453</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top' ><a href='./tip/453.md'>Tcl Based Automation for tcl/pkgs</a></td>
<td valign='top'><a href='https://core.tcl-lang.org/tclconfig/timeline?r=practcl'>Link</a></td>
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/452.md'>452</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top' ><a href='./tip/452.md'>Add &quot;stubs&quot; Package to or Along Side of TclTest</a></td>
................................................................................
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/436.md'>436</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6.5</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/436.md'>Improve TclOO isa Introspection</a></td>
<td valign='top'><a href='https://core.tcl-lang.org/tcloo/info/5fa1374aa026d4c7'>Link</a></td>
</tr>
<tr class='state-rejected type-project version-86'>
<td valign='top'><a href='./tip/435.md'>435</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6.5</td>
<td valign='top'>Rejected</td>
<td valign='top' ><a href='./tip/435.md'>Safe Mutex Disposal API</a></td>
................................................................................
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/397.md'>397</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/397.md'>Extensible Object Copying</a></td>
<td valign='top'><a href='https://core.tcl-lang.org/tcloo/timeline?r=development-rfe3485060'>Link</a></td>
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/396.md'>396</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/396.md'>Symmetric Coroutines, Multiple Args, and yieldto</a></td>
................................................................................
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/381.md'>381</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/381.md'>Call Chain Introspection and Control</a></td>
<td valign='top'><a href='https://core.tcl-lang.org/tcloo/timeline?r=development-next2'>Link</a></td>
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/380.md'>380</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/380.md'>TclOO Slots for Flexible Declarations</a></td>
................................................................................
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/376.md'>376</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/376.md'>Bundle sqlite3 and tdbc::sqlite3 Packages</a></td>
<td valign='top'><a href='https://core.tcl-lang.org/tdbc/'>Link</a></td>
</tr>
<tr class='state-obsoleted type-project version-86'>
<td valign='top'><a href='./tip/375.md'>375</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Obsoleted</td>
<td valign='top' ><a href='./tip/375.md'>Symmetric Coroutines and Yieldto</a></td>
................................................................................
</tr>
<tr class='state-final type-project version-84'>
<td valign='top'><a href='./tip/26.md'>26</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.4</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/26.md'>Enhancements for the Tk Text Widget</a></td>
<td valign='top'><a href='https://core.tcl-lang.org/tips/raw/assets/26.patch'>Link</a></td>
</tr>
<tr class='state-obsoleted type-project version-85'>
<td valign='top'><a href='./tip/25.md'>25</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5</td>
<td valign='top'>Obsoleted</td>
<td valign='top' ><a href='./tip/25.md'>Native tk_messageBox  on Macintosh</a></td>
................................................................................
</tr>
<tr class='state-final type-project version-84'>
<td valign='top'><a href='./tip/10.md'>10</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.4</td>
<td valign='top'>Final</td>
<td valign='top' ><a href='./tip/10.md'>Tcl I/O Enhancement: Thread-Aware Channels</a></td>
<td valign='top'><a href='https://core.tcl-lang.org/tips/raw/assets/10.patch'>Link</a></td>
</tr>
<tr class='state-withdrawn type-project version-84'>
<td valign='top'><a href='./tip/9.md'>9</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.4</td>
<td valign='top'>Withdrawn</td>
<td valign='top' ><a href='./tip/9.md'>Tk Standard Library</a></td>

Changes to tip/10.md.

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Andreas Kupries <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        08-Nov-2000
	Post-History:   
	Tcl-Version:    8.4
	Implementation-URL: https://core.tcl.tk/tips/raw/assets/10.patch
-----

# Abstract

This TIP describes how to change the generic I/O layer in the Tcl core
to make channels aware of the thread they are managed by.







|







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	Author:         Andreas Kupries <[email protected].com>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        08-Nov-2000
	Post-History:   
	Tcl-Version:    8.4
	Implementation-URL: https://core.tcl-lang.org/tips/raw/assets/10.patch
-----

# Abstract

This TIP describes how to change the generic I/O layer in the Tcl core
to make channels aware of the thread they are managed by.

Changes to tip/106.md.

52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
This is a reasonable solution, because any encoding including the system
encoding may be used as shown in the upper example.

# Reference Implementation

See the _tip-106-impl_ branch in Tcl's fossil repository
<https://core.tcl.tk/tcl/timeline?r=tip-106-impl> .

# Rejected Alternatives

I proposed to use a switch ?**-encoding** _encoding_? which would
avoid the preparation of an encoded string by **encoding convertto**.
DDE is so little used at those days so a minimal support is sufficient.







|







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
This is a reasonable solution, because any encoding including the system
encoding may be used as shown in the upper example.

# Reference Implementation

See the _tip-106-impl_ branch in Tcl's fossil repository
<https://core.tcl-lang.org/tcl/timeline?r=tip-106-impl> .

# Rejected Alternatives

I proposed to use a switch ?**-encoding** _encoding_? which would
avoid the preparation of an encoded string by **encoding convertto**.
DDE is so little used at those days so a minimal support is sufficient.

Changes to tip/161.md.

35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
..
74
75
76
77
78
79
80
81
82
83
84
85
86
Implementation of this TIP requires only changing a single default in
each of the platform specific _tk\*Default.h_ files, and updating the
documentation and test cases.

Note that this change was already done in Nov. 2004, on OS X only, by

<https://core.tcl.tk/tk/info/2cb92ba546de97e1>

Indeed on OS X menues cannot be torn off.

# Compatibility

Unfortunately, entries in menus are often accessed by index within
scripts, and the presence or absence of tearoff affects this index.
................................................................................
	  puts "Item_1 is item number [.m.file index Item_1]"


# Implementation

See branch tip-161:

<https://core.tcl.tk/tk/timeline?r=tip-161>

# Copyright

This document has been placed in the public domain.







|







 







|





35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
..
74
75
76
77
78
79
80
81
82
83
84
85
86
Implementation of this TIP requires only changing a single default in
each of the platform specific _tk\*Default.h_ files, and updating the
documentation and test cases.

Note that this change was already done in Nov. 2004, on OS X only, by

<https://core.tcl-lang.org/tk/info/2cb92ba546de97e1>

Indeed on OS X menues cannot be torn off.

# Compatibility

Unfortunately, entries in menus are often accessed by index within
scripts, and the presence or absence of tearoff affects this index.
................................................................................
	  puts "Item_1 is item number [.m.file index Item_1]"


# Implementation

See branch tip-161:

<https://core.tcl-lang.org/tk/timeline?r=tip-161>

# Copyright

This document has been placed in the public domain.

Changes to tip/26.md.

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
	Type:           Project
	Vote:           Done
	Created:        20-Feb-2001
	Post-History:   
	Discussions-To: news:comp.lang.tcl
	Obsoletes:      19
	Tcl-Version:    8.4
	Implementation-URL: https://core.tcl.tk/tips/raw/assets/26.patch
-----

# Abstract

This TIP proposes several enhancements for the Tk text widget.  An
unlimited undo/redo mechanism is proposed, with several user available
customisation features.  Related to this, a text modified indication






|







5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
	Type:           Project
	Vote:           Done
	Created:        20-Feb-2001
	Post-History:   
	Discussions-To: news:comp.lang.tcl
	Obsoletes:      19
	Tcl-Version:    8.4
	Implementation-URL: https://core.tcl-lang.org/tips/raw/assets/26.patch
-----

# Abstract

This TIP proposes several enhancements for the Tk text widget.  An
unlimited undo/redo mechanism is proposed, with several user available
customisation features.  Related to this, a text modified indication

Changes to tip/312.md.

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 TCL\_LINK\_BINARY: The address of the C variable is used as a _unsigned char
   *_. The address remains always the same. Read and write operations must
   always contain the full sized binary string.

# Reference Implementation

See [patch 1992842](https://sourceforge.net/support/tracker.php?aid=1992824).
See [`tip-312-new` branch](https://core.tcl.tk/tcl/timeline?r=tip-312-new).

# Notes

The original TIP proposed a _link_ command to allow these things to be done
from the script level; this has been removed in the test suite support because
of concerns about safety and security.

# Copyright

This document has been placed in the public domain.







|











67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 TCL\_LINK\_BINARY: The address of the C variable is used as a _unsigned char
   *_. The address remains always the same. Read and write operations must
   always contain the full sized binary string.

# Reference Implementation

See [patch 1992842](https://sourceforge.net/support/tracker.php?aid=1992824).
See [`tip-312-new` branch](https://core.tcl-lang.org/tcl/timeline?r=tip-312-new).

# Notes

The original TIP proposed a _link_ command to allow these things to be done
from the script level; this has been removed in the test suite support because
of concerns about safety and security.

# Copyright

This document has been placed in the public domain.

Changes to tip/346.md.

46
47
48
49
50
51
52
53
54
55
56
57
58
The second case does imply a Potential Incompatibility, since currently SBFA is documented to always return TCL\_OK. However, it is felt
that virtually all cases that are sensitive to this, are actually half-working
in a completely hidden manner. Hence the global effect is a healthy one.

# Reference Example

See [Bug 1665628](/tcl/tktview/1665628).

# Copyright

This document has been placed in the public domain.







|





46
47
48
49
50
51
52
53
54
55
56
57
58
The second case does imply a Potential Incompatibility, since currently SBFA is documented to always return TCL\_OK. However, it is felt
that virtually all cases that are sensitive to this, are actually half-working
in a completely hidden manner. Hence the global effect is a healthy one.

# Reference Example

See [Bug 1665628](https://core.tcl-lang.org/tcl/tktview/1665628).

# Copyright

This document has been placed in the public domain.

Changes to tip/376.md.

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	Author:		Kevin Kenny <[email protected]>
	State:		Final
	Type:		Project
	Vote:		Done
	Created:	14-Sep-2010
	Tcl-Version:	8.6
	Post-History:
	Implementation-URL: https://core.tcl.tk/tdbc/
-----

# Abstract

This TIP proposes the packages **sqlite3** and **tdbc::sqlite3** be
re-distributed as part of the Tcl source code distribution.







|







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	Author:		Kevin Kenny <[email protected]>
	State:		Final
	Type:		Project
	Vote:		Done
	Created:	14-Sep-2010
	Tcl-Version:	8.6
	Post-History:
	Implementation-URL: https://core.tcl-lang.org/tdbc/
-----

# Abstract

This TIP proposes the packages **sqlite3** and **tdbc::sqlite3** be
re-distributed as part of the Tcl source code distribution.

Changes to tip/381.md.

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
..
91
92
93
94
95
96
97
98
99
100
101
102
103
	Type:		Project
	Tcl-Version:	8.6
	Vote:		Done
	Post-History:	
	Author:		Donal K. Fellows <[email protected]>
	Created:	20-Oct-2010
	Keywords:	TclOO, iTcl
	Implementation-URL: https://core.tcl.tk/tcloo/timeline?r=development-next2
-----

# Abstract

This TIP proposes mechanisms for inspecting the TclOO call chain for a
particular method, both externally via **info** and from within a call to
that method. It also proposes a mechanism that will allow the traversal of the
................................................................................
_arg_uments given, of course\). It will be an error to attempt to call a
class's implementation of a method that is not on the chain, or that is
preceding the currently executing method implementation, and it will not be
possible to jump to filters applied to the method.

# Reference Implementation

See <https://core.tcl.tk/tcloo/timeline?r=development-next2> for the proposed
implementation \(notably commit-f5a2cfd0d4\).

# Copyright

This document has been placed in the public domain.






|







 







|





3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
..
91
92
93
94
95
96
97
98
99
100
101
102
103
	Type:		Project
	Tcl-Version:	8.6
	Vote:		Done
	Post-History:	
	Author:		Donal K. Fellows <[email protected]>
	Created:	20-Oct-2010
	Keywords:	TclOO, iTcl
	Implementation-URL: https://core.tcl-lang.org/tcloo/timeline?r=development-next2
-----

# Abstract

This TIP proposes mechanisms for inspecting the TclOO call chain for a
particular method, both externally via **info** and from within a call to
that method. It also proposes a mechanism that will allow the traversal of the
................................................................................
_arg_uments given, of course\). It will be an error to attempt to call a
class's implementation of a method that is not on the chain, or that is
preceding the currently executing method implementation, and it will not be
possible to jump to filters applied to the method.

# Reference Implementation

See <https://core.tcl-lang.org/tcloo/timeline?r=development-next2> for the proposed
implementation \(notably commit-f5a2cfd0d4\).

# Copyright

This document has been placed in the public domain.

Changes to tip/386.md.

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
..
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
...
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
SourceForge staff have formally designated CVS hosting to be a legacy product
and offered assistance with migration to Subversion.

Since for some time the Tcl/Tk maintainers have wanted to transfer the version
control repository to a distributed version control system \(DVCS\), the
decision has been made to abandon SourceForge and adopt a Fossil repository. A
donor who wishes to remain anonymous has given a reasonably powerful machine,
**core.tcl.tk** to the Tcl Community Association and is providing rack space
and bandwidth. The donor has also generously offered to make free shell
accounts to qualified Tcl/Tk developers for CPU- and bandwidth-intensive tasks
such as performance analysis and memory management audits. Interested
developers should contact one of the TCT members listed at the end of this
document.

Needless to say, given the distributed nature of Fossil, we expect several
mirrors to emerge; Richard Hipp of SQLite.org has provided the first one,
appropriately named **mirror1.tcl.tk**.

# Repository Locations

The code base for Tcl itself now resides in a Fossil repository at
<http://core.tcl.tk/tcl/> .  The Fossil repository is available for anonymous
cloning and for examination of version control history.  At present, the bug
tracker is disabled.  Similarly, the code base for Tk resides at
<http://core.tcl.tk/tk> .  Tcl and Tk developers shall be granted 'push' rights
to the respective repositories.

Developers who are unfamiliar with Fossil are strongly encouraged to consult
the documentation at <http://fossil-scm.org/> , in particular, the 'Fossil
Concepts' paper at
<http://fossil-scm.org/index.html/doc/trunk/www/concepts.wiki> .  Novices to
Fossil may want to work at least temporarily in 'autosync mode', which allows
................................................................................
SourceForge. Any developer hosting a mirror is expected to disable the bug
tracker \(it suffices to remove 't' permission from the 'anonymous' user\). At
some point we may use a SourceForge-to-Fossil converter for the existing
trackers, and we do not wish to worry about trying to keep SourceForge and
Fossil in sync.

**mirror1.tcl.tk** shall be kept up to date by a periodic automatic
synchronization with **core.tcl.tk**.  In order to avoid inadvertent
forking, developers are requested not to push to mirrors unless
**core.tcl.tk** suffers an extended outage.

Before using a clone from a mirror, developers should verify that it copies
the correct version of the repository at **core.tcl.tk**.  This can be
determined by examining the 'project ID', reported by the 'clone'
operation. For Tcl, the ID should be

	    1ec9da4c469c29f4717e2a967fe6b916d9c8c06e

and for Tk, it should be

	    b5a34cc57b6712927bc5fd34ae98433a14c9fdea 

**UPDATE, June 2013** The ticket trackers have now also been migrated
from SourceForge to **core.tcl.tk**.

# Workflow

Generally speaking, workflow will follow the description in 
<http://fossil-scm.org/index.html/doc/trunk/www/concepts.wiki#workflow> . 

It is expected that large projects will be conducted on named branches in the
................................................................................

Tcl and Tk maintainers may request repository access by emailing one of the
Tcl Core Team members on the following list:

   Joe English, Donal Fellows, Jeff Hobbs, Kevin Kenny, Andreas Kupries, Don
   Porter

all of whom have the required access to add new users to core.tcl.tk.

# Acknowledgments

Major thanks are due to Roy Keene, for leading the migration effort, to Jörg
Sonnenberger \(author of cvs2fossil\) and D. Richard Hipp \(author of fossil
itself\) for many hours of unpaid support in getting the conversion to go, to
Mark Janssen for developing scripts to audit the Fossil content against






|













|


|







 







|

|


|










|







 







|







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
..
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
...
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
SourceForge staff have formally designated CVS hosting to be a legacy product
and offered assistance with migration to Subversion.

Since for some time the Tcl/Tk maintainers have wanted to transfer the version
control repository to a distributed version control system \(DVCS\), the
decision has been made to abandon SourceForge and adopt a Fossil repository. A
donor who wishes to remain anonymous has given a reasonably powerful machine,
**core.tcl-lang.org** to the Tcl Community Association and is providing rack space
and bandwidth. The donor has also generously offered to make free shell
accounts to qualified Tcl/Tk developers for CPU- and bandwidth-intensive tasks
such as performance analysis and memory management audits. Interested
developers should contact one of the TCT members listed at the end of this
document.

Needless to say, given the distributed nature of Fossil, we expect several
mirrors to emerge; Richard Hipp of SQLite.org has provided the first one,
appropriately named **mirror1.tcl.tk**.

# Repository Locations

The code base for Tcl itself now resides in a Fossil repository at
<https://core.tcl-lang.org/tcl/> .  The Fossil repository is available for anonymous
cloning and for examination of version control history.  At present, the bug
tracker is disabled.  Similarly, the code base for Tk resides at
<https://core.tcl-lang.org/tk> .  Tcl and Tk developers shall be granted 'push' rights
to the respective repositories.

Developers who are unfamiliar with Fossil are strongly encouraged to consult
the documentation at <http://fossil-scm.org/> , in particular, the 'Fossil
Concepts' paper at
<http://fossil-scm.org/index.html/doc/trunk/www/concepts.wiki> .  Novices to
Fossil may want to work at least temporarily in 'autosync mode', which allows
................................................................................
SourceForge. Any developer hosting a mirror is expected to disable the bug
tracker \(it suffices to remove 't' permission from the 'anonymous' user\). At
some point we may use a SourceForge-to-Fossil converter for the existing
trackers, and we do not wish to worry about trying to keep SourceForge and
Fossil in sync.

**mirror1.tcl.tk** shall be kept up to date by a periodic automatic
synchronization with **core.tcl-lang.org**.  In order to avoid inadvertent
forking, developers are requested not to push to mirrors unless
**core.tcl-lang.org** suffers an extended outage.

Before using a clone from a mirror, developers should verify that it copies
the correct version of the repository at **core.tcl-lang.org**.  This can be
determined by examining the 'project ID', reported by the 'clone'
operation. For Tcl, the ID should be

	    1ec9da4c469c29f4717e2a967fe6b916d9c8c06e

and for Tk, it should be

	    b5a34cc57b6712927bc5fd34ae98433a14c9fdea 

**UPDATE, June 2013** The ticket trackers have now also been migrated
from SourceForge to **core.tcl-lang.org**.

# Workflow

Generally speaking, workflow will follow the description in 
<http://fossil-scm.org/index.html/doc/trunk/www/concepts.wiki#workflow> . 

It is expected that large projects will be conducted on named branches in the
................................................................................

Tcl and Tk maintainers may request repository access by emailing one of the
Tcl Core Team members on the following list:

   Joe English, Donal Fellows, Jeff Hobbs, Kevin Kenny, Andreas Kupries, Don
   Porter

all of whom have the required access to add new users to core.tcl-lang.org.

# Acknowledgments

Major thanks are due to Roy Keene, for leading the migration effort, to Jörg
Sonnenberger \(author of cvs2fossil\) and D. Richard Hipp \(author of fossil
itself\) for many hours of unpaid support in getting the conversion to go, to
Mark Janssen for developing scripts to audit the Fossil content against

Changes to tip/388.md.

120
121
122
123
124
125
126
127
128
129
130
131
132
133
This TIP does not propose that, because they may be used internally e.g. as
part of a character range in a regular expression. A better place to do
that is in the Utf8-To-Utf8 conversion, but that's outside the scope of
this TIP.

# Reference Implementation

A reference implementation is available at <http://core.tcl.tk/tcl> in branch
tip-388-impl

# Copyright

This document has been placed in the public domain.







|






120
121
122
123
124
125
126
127
128
129
130
131
132
133
This TIP does not propose that, because they may be used internally e.g. as
part of a character range in a regular expression. A better place to do
that is in the Utf8-To-Utf8 conversion, but that's outside the scope of
this TIP.

# Reference Implementation

A reference implementation is available at <https://core.tcl-lang.org/tcl> in branch
tip-388-impl

# Copyright

This document has been placed in the public domain.

Changes to tip/389.md.

167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
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

It would have been possible to give the new _Tcl\_GetUniChar_ and friends
a new stub entry and to deprecate the original one, as was done with
_Tcl\_Backslash_. However, _Tcl\_Backslash_ originally only returned
an ASCII character, which needed to be extended to UniChar. UniChar's






|







167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
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-lang.org/tk/timeline?r=tip-389).

# Rejected Alternatives

It would have been possible to give the new _Tcl\_GetUniChar_ and friends
a new stub entry and to deprecate the original one, as was done with
_Tcl\_Backslash_. However, _Tcl\_Backslash_ originally only returned
an ASCII character, which needed to be extended to UniChar. UniChar's

Changes to tip/397.md.

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
..
48
49
50
51
52
53
54
55
56
57
58
59
60
	Type:		Project
	Tcl-Version:	8.6
	Vote:		Done
	Post-History:	
	Author:		Donal K. Fellows <[email protected]>
	Created:	13-Feb-2012
	Keywords:	Tcl, TclOO, copy, clone
	Implementation-URL: https://core.tcl.tk/tcloo/timeline?r=development-rfe3485060
-----

# Abstract

This TIP proposes a mechanism whereby an object or class can provide
additional control over how it gets copied to a new one by the **oo::copy**
command.
................................................................................
\(note, not other commands\) of the source to the copy. This method will not be
exported by default \(nor should it be; the method is not intended to be called
directly\).

# Reference Implementation

See the "development-rfe3485060" branch of the tcloo repository:
<https://core.tcl.tk/tcloo/timeline?r=development-rfe3485060>

# Copyright

This document has been placed in the public domain.







|







 







|





3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
..
48
49
50
51
52
53
54
55
56
57
58
59
60
	Type:		Project
	Tcl-Version:	8.6
	Vote:		Done
	Post-History:	
	Author:		Donal K. Fellows <[email protected]>
	Created:	13-Feb-2012
	Keywords:	Tcl, TclOO, copy, clone
	Implementation-URL: https://core.tcl-lang.org/tcloo/timeline?r=development-rfe3485060
-----

# Abstract

This TIP proposes a mechanism whereby an object or class can provide
additional control over how it gets copied to a new one by the **oo::copy**
command.
................................................................................
\(note, not other commands\) of the source to the copy. This method will not be
exported by default \(nor should it be; the method is not intended to be called
directly\).

# Reference Implementation

See the "development-rfe3485060" branch of the tcloo repository:
<https://core.tcl-lang.org/tcloo/timeline?r=development-rfe3485060>

# Copyright

This document has been placed in the public domain.

Changes to tip/401.md.

507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
comment word is a comment word throughout so many contexts.

# Reference Implementation

A reference implementation is available as SF Tcl patch \#3522426
<https://sourceforge.net/support/tracker.php?aid=3522426> . It includes some
tests, but more could be needed. DGP has also created a branch 
**tip-401** <http://core.tcl.tk/tcl/timeline?r=tip-401>  for it in the 
core fossil respository; further development is best conducted in the 
latter.

Implementing comment words in lists and the like could be achieved by
modifications only in TclFindElement. Comment words in scripts are implemented
as argument expansion that does not contribute any word.

# Copyright

This document has been placed in the public domain.







|











507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
comment word is a comment word throughout so many contexts.

# Reference Implementation

A reference implementation is available as SF Tcl patch \#3522426
<https://sourceforge.net/support/tracker.php?aid=3522426> . It includes some
tests, but more could be needed. DGP has also created a branch 
**tip-401** <https://core.tcl-lang.org/tcl/timeline?r=tip-401>  for it in the 
core fossil respository; further development is best conducted in the 
latter.

Implementing comment words in lists and the like could be achieved by
modifications only in TclFindElement. Comment words in scripts are implemented
as argument expansion that does not contribute any word.

# Copyright

This document has been placed in the public domain.

Changes to tip/402.md.

72
73
74
75
76
77
78
79
80
81
82
83
84
85
Variations are possible in the handling of paths starting with 3 or more
slashes. The current TIP implementation collapes more than 2 slashes to
exactly 2 slashes, as the current Windows and Cygwin implementations do.

# Reference Implementation

A reference implementation is available at <http://core.tcl.tk/tcl> in branch
_jn-unc-vfs_.

# Copyright

This document has been placed in the public domain.







|






72
73
74
75
76
77
78
79
80
81
82
83
84
85
Variations are possible in the handling of paths starting with 3 or more
slashes. The current TIP implementation collapes more than 2 slashes to
exactly 2 slashes, as the current Windows and Cygwin implementations do.

# Reference Implementation

A reference implementation is available at <https://core.tcl-lang.org/tcl> in branch
_jn-unc-vfs_.

# Copyright

This document has been placed in the public domain.

Changes to tip/403.md.

54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Alternatives

None

# Reference Implementation

A reference implementation is available at <http://core.tcl.tk/tk> in branch
_jn-web-colors_. It contains a test-case _color-1.5_, which checkes the
RGB values of all known X11 colors with the above modifications. This test is
marked _nonPortable_, simply because I don't know how many older X11 color
lists are still in use. On win32, mac and any reasonable recent X11 package,
this test passes.

# Copyright

This document has been placed in the public domain.







|










54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Alternatives

None

# Reference Implementation

A reference implementation is available at <https://core.tcl-lang.org/tk> in branch
_jn-web-colors_. It contains a test-case _color-1.5_, which checkes the
RGB values of all known X11 colors with the above modifications. This test is
marked _nonPortable_, simply because I don't know how many older X11 color
lists are still in use. On win32, mac and any reasonable recent X11 package,
this test passes.

# Copyright

This document has been placed in the public domain.

Changes to tip/407.md.

266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
closely tied together with the rules for parsing and evaluating scripts, and
will need to evolve in sync.

# Origin of Document and Copyright Notice

This document is based "near-verbatim" on comments in _generic/tclUtil.c_ in
the Tcl source code distribution.
<http://core.tcl.tk/tcl/doc/trunk/generic/tclUtil.c> 

	Copyright (c) 1987-1993 The Regents of the University of California.
	Copyright (c) 1994-1998 Sun Microsystems, Inc.
	Copyright (c) 2001 by Kevin B. Kenny. All rights reserved.

This document is made available under the same license as Tcl.

[I, Kevin B. Kenny, dedicate any and all copyright interest in TIP #407 to the public domain. I make this dedication for the benefit of the public at large and to the detriment of my heirs and successors. I intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to TIP #407 under copyright law.]







|









266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
closely tied together with the rules for parsing and evaluating scripts, and
will need to evolve in sync.

# Origin of Document and Copyright Notice

This document is based "near-verbatim" on comments in _generic/tclUtil.c_ in
the Tcl source code distribution.
<https://core.tcl-lang.org/tcl/doc/trunk/generic/tclUtil.c> 

	Copyright (c) 1987-1993 The Regents of the University of California.
	Copyright (c) 1994-1998 Sun Microsystems, Inc.
	Copyright (c) 2001 by Kevin B. Kenny. All rights reserved.

This document is made available under the same license as Tcl.

[I, Kevin B. Kenny, dedicate any and all copyright interest in TIP #407 to the public domain. I make this dedication for the benefit of the public at large and to the detriment of my heirs and successors. I intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to TIP #407 under copyright law.]

Changes to tip/413.md.

112
113
114
115
116
117
118
119
120
121
122
123
124
	  > Those are clearly useful characters to be stripped, as they have no
    meaning and no visible appearance at the beginning or end of a string. But
    they are not spaces, so it would diverge the two commands.

# Reference Implementation

A reference implementation is available in the Tcl fossil repository on the
_tip-318-update_ branch <https://core.tcl.tk/tcl/timeline?r=tip-318-update> .

# Copyright

This document has been placed in the public domain.







|





112
113
114
115
116
117
118
119
120
121
122
123
124
	  > Those are clearly useful characters to be stripped, as they have no
    meaning and no visible appearance at the beginning or end of a string. But
    they are not spaces, so it would diverge the two commands.

# Reference Implementation

A reference implementation is available in the Tcl fossil repository on the
_tip-318-update_ branch <https://core.tcl-lang.org/tcl/timeline?r=tip-318-update> .

# Copyright

This document has been placed in the public domain.

Changes to tip/414.md.

35
36
37
38
39
40
41
42
43
44
45
46
from an initialized stubbed environment, as it is meant to be used prior to
the stub table being available. The full signature is:

 > void **Tcl\_InitSubsystems**\(void);

# Reference Implementation

A reference implementation is available in the [**initsubsystems**](http://core.tcl.tk/tcl/info/initsubsystems) branch.

# Copyright

This document has been placed in the public domain.






|




35
36
37
38
39
40
41
42
43
44
45
46
from an initialized stubbed environment, as it is meant to be used prior to
the stub table being available. The full signature is:

 > void **Tcl\_InitSubsystems**\(void);

# Reference Implementation

A reference implementation is available in the [**initsubsystems**](https://core.tcl-lang.org/tcl/info/initsubsystems) branch.

# Copyright

This document has been placed in the public domain.

Changes to tip/416.md.

125
126
127
128
129
130
131
132
133
134
135
136
137
Load the module with global scoping and lazy resolution

	 load -global -lazy module.so

# Reference Implementation

A reference implementation is available in the **frq-3579001** branch; see
<https://core.tcl.tk/tcl/timeline?r=frq-3579001>

# Copyright

This document has been placed in the public domain.







|





125
126
127
128
129
130
131
132
133
134
135
136
137
Load the module with global scoping and lazy resolution

	 load -global -lazy module.so

# Reference Implementation

A reference implementation is available in the **frq-3579001** branch; see
<https://core.tcl-lang.org/tcl/timeline?r=frq-3579001>

# Copyright

This document has been placed in the public domain.

Changes to tip/422.md.

93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
	     ^~~~~~~~~~~

And if Tcl 8.7 is compiled with the `-DTCL_NO_DEPREPATED` flag, those 5 functions will
not be exported as symbols from the DLL, and their entries in the stub table will be NULL.

# Reference Implementation

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

There is also a [tip-422-for-8](https://core.tcl.tk/tcl/timeline?r=tip-422-for-8) branch, which shows the implementation
for doing the deprecation in Tcl 8.7.

# Copyright

This document has been placed in the public domain.







|

|






93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
	     ^~~~~~~~~~~

And if Tcl 8.7 is compiled with the `-DTCL_NO_DEPREPATED` flag, those 5 functions will
not be exported as symbols from the DLL, and their entries in the stub table will be NULL.

# Reference Implementation

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

There is also a [tip-422-for-8](https://core.tcl-lang.org/tcl/timeline?r=tip-422-for-8) branch, which shows the implementation
for doing the deprecation in Tcl 8.7.

# Copyright

This document has been placed in the public domain.

Changes to tip/424.md.

149
150
151
152
153
154
155
156
157
158
159
160
161
 * Use a different toplevel command name.

	  > **exec2**...

# Reference Implementation

Branch "tip-improve-exec" on core.tcl.tk holds the implementation.

# Copyright

This document has been placed in the public domain.







|





149
150
151
152
153
154
155
156
157
158
159
160
161
 * Use a different toplevel command name.

	  > **exec2**...

# Reference Implementation

Branch "tip-improve-exec" on core.tcl-lang.org holds the implementation.

# Copyright

This document has been placed in the public domain.

Changes to tip/425.md.

126
127
128
129
130
131
132
133
134
135
136
137
as does the Windows panic proc, if stderr is not sent to a
character device. This improves the interoperability
between Cygwin and Windows.

# Reference Implementation

A reference implementation is available in the **win-console-panic** branch.
<https://core.tcl.tk/tcl/timeline?r=win-console-panic> 

# Copyright

This document has been placed in the public domain.






|




126
127
128
129
130
131
132
133
134
135
136
137
as does the Windows panic proc, if stderr is not sent to a
character device. This improves the interoperability
between Cygwin and Windows.

# Reference Implementation

A reference implementation is available in the **win-console-panic** branch.
<https://core.tcl-lang.org/tcl/timeline?r=win-console-panic> 

# Copyright

This document has been placed in the public domain.

Changes to tip/429.md.

56
57
58
59
60
61
62
63
64
65
66
67
Lars has mailed on tclcore that TclX has a command **cconcat** that does essentially what my proposed **string cat** is supposed to do \(not sure though whether that is compiled\). This proposal sticks to the **cat** subcommand, as that is generally the preferred way over new toplevel commands.

Also, **string concat** is added to this section, for it is a bit longer than **string cat**, and \(as Lars put it\) **string cat** is less likely to be misinterpreted as "concat, just moved into the string ensemble."

# Reference implementation

Available as branch tip-429 on core.tcl.tk.

# Copyright

This document has been placed in the public domain.






|




56
57
58
59
60
61
62
63
64
65
66
67
Lars has mailed on tclcore that TclX has a command **cconcat** that does essentially what my proposed **string cat** is supposed to do \(not sure though whether that is compiled\). This proposal sticks to the **cat** subcommand, as that is generally the preferred way over new toplevel commands.

Also, **string concat** is added to this section, for it is a bit longer than **string cat**, and \(as Lars put it\) **string cat** is less likely to be misinterpreted as "concat, just moved into the string ensemble."

# Reference implementation

Available as branch tip-429 on core.tcl-lang.org.

# Copyright

This document has been placed in the public domain.

Changes to tip/436.md.

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	State:		Final
	Type:		Project
	Tcl-Version:	8.6.5
	Vote:		Done
	Post-History:	
	Author:		Donal Fellows <[email protected]>
	Created:	30-Jun-2015
	Implementation-URL: https://core.tcl.tk/tcloo/info/5fa1374aa026d4c7
-----

# Abstract

The various **info object isa** introspectors should not produce errors when
given a non-object; the set membership tests should simply return boolean
false in those cases.






|







2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	State:		Final
	Type:		Project
	Tcl-Version:	8.6.5
	Vote:		Done
	Post-History:	
	Author:		Donal Fellows <[email protected]>
	Created:	30-Jun-2015
	Implementation-URL: https://core.tcl-lang.org/tcloo/info/5fa1374aa026d4c7
-----

# Abstract

The various **info object isa** introspectors should not produce errors when
given a non-object; the set membership tests should simply return boolean
false in those cases.

Changes to tip/437.md.

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
The proxy window \(i.e., the moving sash\) of the Tk paned window widget is hard
to see in some circumstances.  This TIP adds three options allowing more
control over the display of the proxy so that its visibility can be enhanced
where required.

# Rationale

As identified in [Bug: 1247115, <https://core.tcl.tk/tk/tktview/1247115],> a
flat sashrelief is common for **panedwindow** widgets, when it separates two
widgets with sunken relief.  For example, the left part can be a tree and the
right part a text widget, both with a white background.  Under Windows, the
paned window has a light grey color, and in this configuration, the proxy
window is not well visible when it is moved over its managed widgets.

# Proposed Change






|







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
The proxy window \(i.e., the moving sash\) of the Tk paned window widget is hard
to see in some circumstances.  This TIP adds three options allowing more
control over the display of the proxy so that its visibility can be enhanced
where required.

# Rationale

As identified in [Bug: 1247115, <https://core.tcl-lang.org/tk/tktview/1247115],> a
flat sashrelief is common for **panedwindow** widgets, when it separates two
widgets with sunken relief.  For example, the left part can be a tree and the
right part a text widget, both with a white background.  Under Windows, the
paned window has a light grey color, and in this configuration, the proxy
window is not well visible when it is moved over its managed widgets.

# Proposed Change

Changes to tip/438.md.

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
solved by adding a modifier **-update** allowing the user to be sure any
possible out of date line height information is recalculated.

It appears that aside of **.text count -ypixels** there are several other
cases where wrong results can be produced by text widget commands. These cases
are illustrated in several bug reports:

 * <http://core.tcl.tk/tk/tktview/1566949>   \(.text yview moveto\)

 * <http://core.tcl.tk/tk/tktview/e51941c>   \(.text yview\)

In all these cases, forcing the update by calling **.text count -update
-ypixels 1.0 end** before calling **.text yview**, or **.text yview
moveto** solves the issue presented in the ticket. This has however a
performance cost, of course, but the above tickets show that there are cases
where the programmer needs accurate results, be it at the cost of the time
needed to get the line heights calculations up-to-date.






|

|







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
solved by adding a modifier **-update** allowing the user to be sure any
possible out of date line height information is recalculated.

It appears that aside of **.text count -ypixels** there are several other
cases where wrong results can be produced by text widget commands. These cases
are illustrated in several bug reports:

 * <https://core.tcl-lang.org/tk/tktview/1566949>   \(.text yview moveto\)

 * <https://core.tcl-lang.org/tk/tktview/e51941c>   \(.text yview\)

In all these cases, forcing the update by calling **.text count -update
-ypixels 1.0 end** before calling **.text yview**, or **.text yview
moveto** solves the issue presented in the ticket. This has however a
performance cost, of course, but the above tickets show that there are cases
where the programmer needs accurate results, be it at the cost of the time
needed to get the line heights calculations up-to-date.

Changes to tip/439.md.

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
doesn't put a restriction to that, as Semantic Versioning only starts
with version 8.7. Still it would be desirable for the TCT to describe a
procedure for that, this is outside the scope of this TIP.

Semantic Versioning requires that any API which is removed in Tcl 9.0 must be
made deprecated in some earlier minor Tcl 8.x release.

An implementation of this TIP can be found at <http://core.tcl.tk/tcl> ; branch
"semver".

# Rejected Alternatives

TODO

# Copyright

This document has been placed in the public domain.






|









121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
doesn't put a restriction to that, as Semantic Versioning only starts
with version 8.7. Still it would be desirable for the TCT to describe a
procedure for that, this is outside the scope of this TIP.

Semantic Versioning requires that any API which is removed in Tcl 9.0 must be
made deprecated in some earlier minor Tcl 8.x release.

An implementation of this TIP can be found at <https://core.tcl-lang.org/tcl> ; branch
"semver".

# Rejected Alternatives

TODO

# Copyright

This document has been placed in the public domain.

Changes to tip/440.md.

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
The **engine** element will be added to the **tcl\_platform** array. Its
value will be set to **"Tcl"**.

# Reference Implementation

A reference implementation of this TIP is available
<https://core.tcl.tk/tcl/timeline?r=tclPlatformEngine> .

The TH1, Jim, Picol, JTcl, and Eagle implementations of the Tcl language already
implement this feature, each using the name of the project as the value of
the **tcl\_platform\(engine\)** element.

# Copyright

This document has been placed in the public domain.







|









28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
The **engine** element will be added to the **tcl\_platform** array. Its
value will be set to **"Tcl"**.

# Reference Implementation

A reference implementation of this TIP is available
<https://core.tcl-lang.org/tcl/timeline?r=tclPlatformEngine> .

The TH1, Jim, Picol, JTcl, and Eagle implementations of the Tcl language already
implement this feature, each using the name of the project as the value of
the **tcl\_platform\(engine\)** element.

# Copyright

This document has been placed in the public domain.

Changes to tip/441.md.

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Rationale

Currently the **listbox** widget always aligns its items leftwards. Some
users miss a configuration options allowing to justify items in the
**listbox** widget. These RFE include:

  * RFE 454303, <https://core.tcl.tk/tk/tktview/454303> 

  * RFE 3f456a5bb9, <https://core.tcl.tk/tk/tktview/3f456a5bb9> 

# Proposed Change

It is proposed to add the **-justify** configuration option to the Tk
**listbox** widget.

Possible values are as already documented in the **options** manual page






|

|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Rationale

Currently the **listbox** widget always aligns its items leftwards. Some
users miss a configuration options allowing to justify items in the
**listbox** widget. These RFE include:

  * RFE 454303, <https://core.tcl-lang.org/tk/tktview/454303> 

  * RFE 3f456a5bb9, <https://core.tcl-lang.org/tk/tktview/3f456a5bb9> 

# Proposed Change

It is proposed to add the **-justify** configuration option to the Tk
**listbox** widget.

Possible values are as already documented in the **options** manual page

Changes to tip/443.md.

18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
..
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# Rationale

Several users have reported they miss different tag configuration options in
the **text** widget, stating they cannot achieve the rendering they target.
Such RFE include:

 * RFE 1759972 <https://core.tcl.tk/tk/tktview/1759972> , with Patch
   3469780 <https://core.tcl.tk/tk/tktview/3469780> 

 * RFE 220889 <https://core.tcl.tk/tk/tktview/220889> 

 * RFE 1754048 <https://core.tcl.tk/tk/tktview/1754048> 

# Proposed Change

It is proposed to add the following tag configuration options to the Tk
**text** widget:

**-selectbackground** _color_:
................................................................................
   indented by **-rmargin**. It may have any of the forms accepted by
   **Tk\_GetColor**. If _color_ has not been specified, or if it is
   specified as an empty string, then the color specified by the
   **-background** widget option is used.

# Rejected additional tag configuration options

RFE 1759972 <https://core.tcl.tk/tk/tktview/1759972>  requested stippling
\(**-selectbgstipple**, **-selectfgstipple**\) for selected text. Also RFE 1754048 <https://core.tcl.tk/tk/tktview/1754048>  requested stippling in left and right margins of the text widget \(**-lmargin1stipple**, **-lmargin2stipple**, **rmarginstipple**\).

Any new stippling options was rejected during the discussion about this
TIP. Reasons were as follows:

 * "Stippling and anything related to Tk Bitmaps should be considered
   obsolete. Their use should be phased out, not expanded. \(Bitmaps have
   very limited support in Tk, and stippling is virtually never used in






|
|

|

|







 







|
|







18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
..
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# Rationale

Several users have reported they miss different tag configuration options in
the **text** widget, stating they cannot achieve the rendering they target.
Such RFE include:

 * RFE 1759972 <https://core.tcl-lang.org/tk/tktview/1759972> , with Patch
   3469780 <https://core.tcl-lang.org/tk/tktview/3469780> 

 * RFE 220889 <https://core.tcl-lang.org/tk/tktview/220889> 

 * RFE 1754048 <https://core.tcl-lang.org/tk/tktview/1754048> 

# Proposed Change

It is proposed to add the following tag configuration options to the Tk
**text** widget:

**-selectbackground** _color_:
................................................................................
   indented by **-rmargin**. It may have any of the forms accepted by
   **Tk\_GetColor**. If _color_ has not been specified, or if it is
   specified as an empty string, then the color specified by the
   **-background** widget option is used.

# Rejected additional tag configuration options

RFE 1759972 <https://core.tcl-lang.org/tk/tktview/1759972>  requested stippling
\(**-selectbgstipple**, **-selectfgstipple**\) for selected text. Also RFE 1754048 <https://core.tcl-lang.org/tk/tktview/1754048>  requested stippling in left and right margins of the text widget \(**-lmargin1stipple**, **-lmargin2stipple**, **rmarginstipple**\).

Any new stippling options was rejected during the discussion about this
TIP. Reasons were as follows:

 * "Stippling and anything related to Tk Bitmaps should be considered
   obsolete. Their use should be phased out, not expanded. \(Bitmaps have
   very limited support in Tk, and stippling is virtually never used in

Changes to tip/444.md.

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
add** command. The **count** argument represents weekdays \(Mon-Fri\) to be
added \(or subtracted in case of a negative value\) to the date. The result of
adding weekdays to a date is never a weekend day, unless the starting day is
itself a weekend day and **count** is 0.

# Reference Implementation

Available at <http://core.tcl.tk/tcl/timeline?t=tip-444>

# Discussion

A point has been raised as to whether _weekday_ is unambiguous enough. For instance, in Sweden there seems to be some disagreement on whether the translation _vardag_ includes Saturdays. As an alternative, the term _workday_ has been mentioned. This, however, has the downside of introducing the concept of working days vs. public holiday. Also, the working week is not Mon-Fri in all countries, see <https://en.wikipedia.org/wiki/Workweek_and_weekend#Around_the_world> .

TIP does not try to accomodate locale-specific features and characteristics. For this reason, it seems best to stick to _weekday_ as the name of the unit and specifically mention that \(Mon-Fri\) is intended in the documentation.

# Copyright

This document has been placed in the public domain.







|











28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
add** command. The **count** argument represents weekdays \(Mon-Fri\) to be
added \(or subtracted in case of a negative value\) to the date. The result of
adding weekdays to a date is never a weekend day, unless the starting day is
itself a weekend day and **count** is 0.

# Reference Implementation

Available at <https://core.tcl-lang.org/tcl/timeline?t=tip-444>

# Discussion

A point has been raised as to whether _weekday_ is unambiguous enough. For instance, in Sweden there seems to be some disagreement on whether the translation _vardag_ includes Saturdays. As an alternative, the term _workday_ has been mentioned. This, however, has the downside of introducing the concept of working days vs. public holiday. Also, the working week is not Mon-Fri in all countries, see <https://en.wikipedia.org/wiki/Workweek_and_weekend#Around_the_world> .

TIP does not try to accomodate locale-specific features and characteristics. For this reason, it seems best to stick to _weekday_ as the name of the unit and specifically mention that \(Mon-Fri\) is intended in the documentation.

# Copyright

This document has been placed in the public domain.

Changes to tip/446.md.

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
likewise for "Redo". It is good practice to enhance the user experience by
greying out or otherwise changing the button aspect when there is nothing to
undo \(or redo\). This cannot be achieved currently with the curent Tk
implementation because there is no way to know whether the undo and redo
stacks are empty or not.

This feature was requested for the text widget in RFE 1273358
<https://core.tcl.tk/tk/tktview/1273358> 

# Proposed Change

It is proposed to add the following subcommands to the **text** widget's
**edit** command:

**canundo**:






|







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
likewise for "Redo". It is good practice to enhance the user experience by
greying out or otherwise changing the button aspect when there is nothing to
undo \(or redo\). This cannot be achieved currently with the curent Tk
implementation because there is no way to know whether the undo and redo
stacks are empty or not.

This feature was requested for the text widget in RFE 1273358
<https://core.tcl-lang.org/tk/tktview/1273358> 

# Proposed Change

It is proposed to add the following subcommands to the **text** widget's
**edit** command:

**canundo**:

Changes to tip/449.md.

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
the undo or redo operation. This can be done by comparing the **text**
widget contents before the change with its contents after the change, but this
is very far from optimal especially with large texts.

Therefore a better way to get this information is proposed in the present TIP.

This feature was requested for the text widget in RFE 1217222
<https://core.tcl.tk/tk/tktview/1217222> 

# Proposed Change

Currently, **edit undo** and **edit redo** commands return the empty
string.

It is proposed to change this return value and make these commands return the






|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
the undo or redo operation. This can be done by comparing the **text**
widget contents before the change with its contents after the change, but this
is very far from optimal especially with large texts.

Therefore a better way to get this information is proposed in the present TIP.

This feature was requested for the text widget in RFE 1217222
<https://core.tcl-lang.org/tk/tktview/1217222> 

# Proposed Change

Currently, **edit undo** and **edit redo** commands return the empty
string.

It is proposed to change this return value and make these commands return the

Changes to tip/452.md.

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 * **::tcltest::CallProc** - Call the real implementation of a stubbed out
   procedure.

 * **::tcltest::Seam** - Test seam definition and injection \(aka enabling\).  This command is available without requiring the tcltest package. 

# Reference Implementation

See the [tip-452 branch](http://core.tcl.tk/tcl/timeline?n=100&r=tip-452), in particular, see `http-tip-452.test` for an example of using the procedures added by this package.

## Origins of Reference Implementation

The reference implementation was done at SAP Labs, LLC \(a subsidiary of SAP
Americal, Inc.\) and approved for release as Open Source under a BSD license.

# Copyright

This document has been placed in the public domain.







|










68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 * **::tcltest::CallProc** - Call the real implementation of a stubbed out
   procedure.

 * **::tcltest::Seam** - Test seam definition and injection \(aka enabling\).  This command is available without requiring the tcltest package. 

# Reference Implementation

See the [tip-452 branch](https://core.tcl-lang.org/tcl/timeline?n=100&r=tip-452), in particular, see `http-tip-452.test` for an example of using the procedures added by this package.

## Origins of Reference Implementation

The reference implementation was done at SAP Labs, LLC \(a subsidiary of SAP
Americal, Inc.\) and approved for release as Open Source under a BSD license.

# Copyright

This document has been placed in the public domain.

Changes to tip/453.md.

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        13-Sep-2016
	Post-History:   
	Keywords:       Build tooling
	Tcl-Version:    8.7
	Implementation-URL: https://core.tcl.tk/tclconfig/timeline?r=practcl
-----

# Abstract

This TIP proposes replacing the **make package** process currently employed
by the core with a Tcl-based build automation tool.

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

**packages.txt** contains a series of keywords populating a data structure.

A simple example would by the tclconfig templates from TEA:

	EXTENSION tclconfig {
	   tag  trunk
	   fossil_url http://core.tcl.tk/tclconfig
	}

The EXTENSION keyword is intended to take the following arguments:

 > _name_ _key/value-configuration-dict_

## Reserved keys






|







 







|







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        13-Sep-2016
	Post-History:   
	Keywords:       Build tooling
	Tcl-Version:    8.7
	Implementation-URL: https://core.tcl-lang.org/tclconfig/timeline?r=practcl
-----

# Abstract

This TIP proposes replacing the **make package** process currently employed
by the core with a Tcl-based build automation tool.

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

**packages.txt** contains a series of keywords populating a data structure.

A simple example would by the tclconfig templates from TEA:

	EXTENSION tclconfig {
	   tag  trunk
	   fossil_url https://core.tcl-lang.org/tclconfig
	}

The EXTENSION keyword is intended to take the following arguments:

 > _name_ _key/value-configuration-dict_

## Reserved keys

Changes to tip/454.md.

22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
..
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
...
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
A **frame** keeping a size without reason just feels like a bug and mostly leads to unwanted results.

Mostly, it looks just ugly, but there are critical use-cases, specially in scrolled frames.

When the BWidget autoscroll package is used, which displays scrollbars on demand, the scrollbars do not disappear if the contents is gone.
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.

# Example

Here is an example to ilustrate the issue.
................................................................................
	bind .c.f <Configure> frameConfigure

# Proposal

The proposal is to change request size of the frame automatically to 1x1 if the last children is unpacked/ungridded/destroyed.

Koen Dankart has passed a patch for this solution containing 3 additional lines of C code.
It is available in branch bug-d6b95ce492-alt: <http://core.tcl.tk/tk/timeline?r=bug-d6b95ce492-alt&nd&c=2016-09-22+09%3A16%3A21&n=200> .

It just solves the issue by restoring initial size if the last children is unpacked/ungridded.

This is not backward compatible.
But that is a side effect of fixing this bug.

# Rejected Proposal

Another proposal is to invoke the virtual event \<\<GeometryManager\>\> when the last children is unpacked/ungridded/destroyed.

Emiliano has provided a ticket 2863003fff <https://core.tcl.tk/tk/info/2863003fff>  with the implementation in branch bug-d6b95ce492 <https://core.tcl.tk/tk/timeline?r=bug-d6b95ce492&nd&c=2016-09-21+06%3A32%3A55&n=200> :

The virtual event **\<\<GeometryManager\>\>** is defined which informs the master \(a frame-like widget\) that it has no child widget any more and that its size is not managed any more by grid/pack.

The program may bind to this event and resize to size 1x1:

	   bind .c <<GeometryManager>> "resizeFrame %W"
	   proc resizeFrame w {
................................................................................
Due to those issues, the TIP is withdrawn.
A way to solve the issue in a compatible and working way is to use Emilianos additional virtual event, as described in the section 'rejected alternatives'.

# Additional information and examples

   *   frame wiki page <http://wiki.tcl.tk/frame>

   *   Tk bug ticket <https://core.tcl.tk/tk/info/d6b95ce49207c823> 

   *   Discussion on the core list <http://code.activestate.com/lists/tcl-core/16363/> 

# Compatibility

Fixing the issue breaks visual compatibility.  Nevertheless, as it is seen as a bug, this is OK.







|







 







|










|







 







|







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
..
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
...
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
A **frame** keeping a size without reason just feels like a bug and mostly leads to unwanted results.

Mostly, it looks just ugly, but there are critical use-cases, specially in scrolled frames.

When the BWidget autoscroll package is used, which displays scrollbars on demand, the scrollbars do not disappear if the contents is gone.
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-lang.org/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.

# Example

Here is an example to ilustrate the issue.
................................................................................
	bind .c.f <Configure> frameConfigure

# Proposal

The proposal is to change request size of the frame automatically to 1x1 if the last children is unpacked/ungridded/destroyed.

Koen Dankart has passed a patch for this solution containing 3 additional lines of C code.
It is available in branch bug-d6b95ce492-alt: <https://core.tcl-lang.org/tk/timeline?r=bug-d6b95ce492-alt&nd&c=2016-09-22+09%3A16%3A21&n=200> .

It just solves the issue by restoring initial size if the last children is unpacked/ungridded.

This is not backward compatible.
But that is a side effect of fixing this bug.

# Rejected Proposal

Another proposal is to invoke the virtual event \<\<GeometryManager\>\> when the last children is unpacked/ungridded/destroyed.

Emiliano has provided a ticket 2863003fff <https://core.tcl-lang.org/tk/info/2863003fff>  with the implementation in branch bug-d6b95ce492 <https://core.tcl-lang.org/tk/timeline?r=bug-d6b95ce492&nd&c=2016-09-21+06%3A32%3A55&n=200> :

The virtual event **\<\<GeometryManager\>\>** is defined which informs the master \(a frame-like widget\) that it has no child widget any more and that its size is not managed any more by grid/pack.

The program may bind to this event and resize to size 1x1:

	   bind .c <<GeometryManager>> "resizeFrame %W"
	   proc resizeFrame w {
................................................................................
Due to those issues, the TIP is withdrawn.
A way to solve the issue in a compatible and working way is to use Emilianos additional virtual event, as described in the section 'rejected alternatives'.

# Additional information and examples

   *   frame wiki page <http://wiki.tcl.tk/frame>

   *   Tk bug ticket <https://core.tcl-lang.org/tk/info/d6b95ce49207c823> 

   *   Discussion on the core list <http://code.activestate.com/lists/tcl-core/16363/> 

# Compatibility

Fixing the issue breaks visual compatibility.  Nevertheless, as it is seen as a bug, this is OK.

Changes to tip/457.md.

307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
 7. Update documentation in doc/proc.n and doc/info.n;

 8. Update impacted tests and add dedicated tests in tests/proc-enh.test.

## Reference Implementation

The reference implementation is available in the tip-457
<http://core.tcl.tk/tcl/timeline?r=tip-457>  branch.

The code is licensed under the BSD license.

# Discussion

This section details some of the alternate solutions for this feature or
specific comments about it.






|







307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
 7. Update documentation in doc/proc.n and doc/info.n;

 8. Update impacted tests and add dedicated tests in tests/proc-enh.test.

## Reference Implementation

The reference implementation is available in the tip-457
<https://core.tcl-lang.org/tcl/timeline?r=tip-457>  branch.

The code is licensed under the BSD license.

# Discussion

This section details some of the alternate solutions for this feature or
specific comments about it.

Changes to tip/459.md.

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
  suggested to be part of the introspection information, but this has been
  rejected as overkill. It is much more than requested in the Tcl-bounty, and
  it is difficult to imagine what actual use this would bring.

# Reference Implementation

This is available in the _package\_files_ branch
<http://core.tcl.tk/tcl/timeline?r=package_files> .

# Examples

	$ tclsh8.7
	% package files Tcl
	/usr/lib/tcl8.7/init.tcl
	% package require Tk






|







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
  suggested to be part of the introspection information, but this has been
  rejected as overkill. It is much more than requested in the Tcl-bounty, and
  it is difficult to imagine what actual use this would bring.

# Reference Implementation

This is available in the _package\_files_ branch
<https://core.tcl-lang.org/tcl/timeline?r=package_files> .

# Examples

	$ tclsh8.7
	% package files Tcl
	/usr/lib/tcl8.7/init.tcl
	% package require Tk

Changes to tip/461.md.

183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
		   % proc tcl::mathfunc::cat {args} { join $args {} }
		   % expr {cat(0x1,0x2,"a")}
		   0x10x2a
		   % expr {cat(0x1)}
		   1

      \(Bug [e7c21ed678](/tcl/tktview?name=e7c21ed678) is another
      manifestation of this general problem.\) Once again, adding additional
      string operations that behave, with respect to data types, exactly the
      same as ones that are already there will neither fix nor exacerbate the
      general problem.

   4. _Because **expr** has no interpreted form, the operations must have
      bytecode representations. The space of available bytecodes is under even






|







183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
		   % proc tcl::mathfunc::cat {args} { join $args {} }
		   % expr {cat(0x1,0x2,"a")}
		   0x10x2a
		   % expr {cat(0x1)}
		   1

      \(Bug [e7c21ed678](https://core.tcl-lang.org/tcl/tktview?name=e7c21ed678) is another
      manifestation of this general problem.\) Once again, adding additional
      string operations that behave, with respect to data types, exactly the
      same as ones that are already there will neither fix nor exacerbate the
      general problem.

   4. _Because **expr** has no interpreted form, the operations must have
      bytecode representations. The space of available bytecodes is under even

Changes to tip/463.md.

86
87
88
89
90
91
92
93
94
95
96
97
98
will produce this result:

	 ab cd%7bef gh,} ij

# Implementation

<http://core.tcl.tk/tcl/timeline?r=tip-463>

# Copyright

This document has been placed in the public domain.







|





86
87
88
89
90
91
92
93
94
95
96
97
98
will produce this result:

	 ab cd%7bef gh,} ij

# Implementation

<https://core.tcl-lang.org/tcl/timeline?r=tip-463>

# Copyright

This document has been placed in the public domain.

Changes to tip/464.md.

58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
The above list does not imply any ordering in the implementation.

# Implementation

The support can be added by extending some keymapping lookup tables in Tk.

A Ticket already exists with a proposed patch
<http://core.tcl.tk/tk/tktview/499526180d6cd5ca7c02eed96c10e9d3630a807c>  and
fvogel has also created a branch
<http://core.tcl.tk/tk/timeline?r=tip-464> .

# Copyright

This document has been placed in the public domain.







|

|





58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
The above list does not imply any ordering in the implementation.

# Implementation

The support can be added by extending some keymapping lookup tables in Tk.

A Ticket already exists with a proposed patch
<https://core.tcl-lang.org/tk/tktview/499526180d6cd5ca7c02eed96c10e9d3630a807c>  and
fvogel has also created a branch
<https://core.tcl-lang.org/tk/timeline?r=tip-464> .

# Copyright

This document has been placed in the public domain.

Changes to tip/466.md.

444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
Support of versions back to 8.5 is currently included in the revised code, but
will be removed \(because it's useless for use in trunk only\) at the time the
new code will get merged into trunk.

# Implementation

Implementation of the revised text widget code has been placed in branch
<http://core.tcl.tk/tk/timeline?r=revised_text>  of the fossil repository.

This implementation compiles on Linux, Windows, and OS X. It respects the
standards of Tk \(C99 standard, and also the Tcl source code formatting
described in [[247]](247.md)\).

The man page for the text widget has been contributed by jima and is included
in the revised\_text branch.






|







444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
Support of versions back to 8.5 is currently included in the revised code, but
will be removed \(because it's useless for use in trunk only\) at the time the
new code will get merged into trunk.

# Implementation

Implementation of the revised text widget code has been placed in branch
<https://core.tcl-lang.org/tk/timeline?r=revised_text>  of the fossil repository.

This implementation compiles on Linux, Windows, and OS X. It respects the
standards of Tk \(C99 standard, and also the Tcl source code formatting
described in [[247]](247.md)\).

The man page for the text widget has been contributed by jima and is included
in the revised\_text branch.

Changes to tip/467.md.

42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
requirements\). Markdown has widely available options to convert to other
formats without any need for the community to maintain the converters, and
supports key extra features such as embedded images \(which are important for
some Tk TIPs, and never worked particularly well with the old TIP format\).

# Specification

Proposed URL for the new repository will be <http://core.tcl.tk/tips>

## Backwards compatibility

 * _tip.tcl.tk/<NUM>.html_ should still show a rendered result. This could be redirected to _core.tcl.tk/tips/doc/trunk/tip/<NUM>.md_

 * _tip.tcl.tk_ offers several converted formats \(XML, \*roff, ...\). The fossil option will be to use the _core.tcl.tk/tips/file/tip/<NUM>.md?download_ URL to get the raw Markdown downloads. For getting the other options one could convert the markdown source file using something like pandoc.

 * E-mail address are not hidden in the source and in the rendered result.  If e-mail addresses need to be hidden there are two options

    1. Remove mails from source.

    2. Hide e-mails in fossil.







|



|

|







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
requirements\). Markdown has widely available options to convert to other
formats without any need for the community to maintain the converters, and
supports key extra features such as embedded images \(which are important for
some Tk TIPs, and never worked particularly well with the old TIP format\).

# Specification

Proposed URL for the new repository will be <https://core.tcl-lang.org/tips>

## Backwards compatibility

 * _tip.tcl.tk/<NUM>.html_ should still show a rendered result. This could be redirected to _core.tcl-lang.org/tips/doc/trunk/tip/<NUM>.md_

 * _tip.tcl.tk_ offers several converted formats \(XML, \*roff, ...\). The fossil option will be to use the _core.tcl-lang.org/tips/file/tip/<NUM>.md?download_ URL to get the raw Markdown downloads. For getting the other options one could convert the markdown source file using something like pandoc.

 * E-mail address are not hidden in the source and in the rendered result.  If e-mail addresses need to be hidden there are two options

    1. Remove mails from source.

    2. Hide e-mails in fossil.

Changes to tip/469.md.

69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Compatibility

No incompatibilities are introduced.

# Reference Implementation

A really bare-bones reference implementation is available as a patch
<http://paste.tclers.tk/4231> . Also, a branch named tip-469 in fossil has been created: <https://core.tcl.tk/tcl/timeline?r=tip-469> .

A thus-patched tclsh can successfully wait for input-level changes
on TIP-author's "nano-pi" raspberryPI-like platform with a chipset
not yet supported by piio.

Documentation and test updates yet to be done.

# Copyright

This document has been placed in the public domain.







|











69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Compatibility

No incompatibilities are introduced.

# Reference Implementation

A really bare-bones reference implementation is available as a patch
<http://paste.tclers.tk/4231> . Also, a branch named tip-469 in fossil has been created: <https://core.tcl-lang.org/tcl/timeline?r=tip-469> .

A thus-patched tclsh can successfully wait for input-level changes
on TIP-author's "nano-pi" raspberryPI-like platform with a chipset
not yet supported by piio.

Documentation and test updates yet to be done.

# Copyright

This document has been placed in the public domain.

Changes to tip/470.md.

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
..
51
52
53
54
55
56
57
58
59
60
61
62
63
64
capabilities by writing your own procedures \(and other commands, if you prefer
the C API\). However, it is somewhat awkward to do so when using TclOO, as the
**oo::define** and **oo::objdefine** commands don't make it easy to find
out what the context class or object is.

For example, in the _oo::util_ package of Tcllib, the code for discovering
what the context class is includes this
<http://core.tcl-lang.org/tcllib/artifact/51d71f560ceb7d63?ln=77> :

	    # Get the name of the current class or class delegate 
	    set cls [namespace which [lindex [info level -1] 1]]

That is ugly, and won't even work reliably for getting the context object in
**oo::objdefine** as that can be entered into by multiple paths \(i.e.,
there's a shortcut from **oo::define**\).
................................................................................

 > Tcl\_Object **Tcl\_GetDefineContextObject**\(Tcl\_Interp \*_interp_\)

which will get the context object, or return NULL and put an error in the
interpreter if there is no context object in the frame or the context object
has been deleted. The functionality is that of **TclOOGetDefineCmdContext**
in _tclOODefineCmds.c_
<http://core.tcl-lang.org/tcl/artifact/7d58f1a701168168?ln=682> , but the text
of the error messages might be changed.

# Copyright

This document has been placed in the public domain.







|







 







|






21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
..
51
52
53
54
55
56
57
58
59
60
61
62
63
64
capabilities by writing your own procedures \(and other commands, if you prefer
the C API\). However, it is somewhat awkward to do so when using TclOO, as the
**oo::define** and **oo::objdefine** commands don't make it easy to find
out what the context class or object is.

For example, in the _oo::util_ package of Tcllib, the code for discovering
what the context class is includes this
<https://core.tcl-lang.org/tcllib/artifact/51d71f560ceb7d63?ln=77> :

	    # Get the name of the current class or class delegate 
	    set cls [namespace which [lindex [info level -1] 1]]

That is ugly, and won't even work reliably for getting the context object in
**oo::objdefine** as that can be entered into by multiple paths \(i.e.,
there's a shortcut from **oo::define**\).
................................................................................

 > Tcl\_Object **Tcl\_GetDefineContextObject**\(Tcl\_Interp \*_interp_\)

which will get the context object, or return NULL and put an error in the
interpreter if there is no context object in the frame or the context object
has been deleted. The functionality is that of **TclOOGetDefineCmdContext**
in _tclOODefineCmds.c_
<https://core.tcl-lang.org/tcl/artifact/7d58f1a701168168?ln=682> , but the text
of the error messages might be changed.

# Copyright

This document has been placed in the public domain.

Changes to tip/471.md.

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
The _varname_ should be the name of a variable that has been linked to
another variable \(e.g., with **upvar**, **global**, **variable** or
**namespace upvar**\), and the result of the command will be the name of the
variable linked to.

# Reference Implementation

The reference implementation is available in the [info-linkedname](http://core.tcl.tk/tcl/timeline?r=info-linkedname) branch.

The code is licensed under the BSD license.

## Implementation Notes

Depending on the linked variable, the name is found using different methods:







|







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
The _varname_ should be the name of a variable that has been linked to
another variable \(e.g., with **upvar**, **global**, **variable** or
**namespace upvar**\), and the result of the command will be the name of the
variable linked to.

# Reference Implementation

The reference implementation is available in the [info-linkedname](https://core.tcl-lang.org/tcl/timeline?r=info-linkedname) branch.

The code is licensed under the BSD license.

## Implementation Notes

Depending on the linked variable, the name is found using different methods:

Changes to tip/473.md.

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
..
42
43
44
45
46
47
48
49
50
51
52
53
54
target object. It was always intended to have this \(and the functionality is
there in the C API\), but it was omitted from the Tcl-level interface.

Having this capability allows objects to be used as factories for namespaces,
which is in many ways an inversion of the way that TclOO was designed \(with
namespaces as the basis for objects\). It was requested by Nathan Coulter as a
way to enable more complex behaviour in Rivet and NaviServer. See Tcl Issue
dd3b844fda <http://core.tcl.tk/tcl/tktview/dd3b844fdabdeae5fcb0>  for more
information.

# Proposed Change

I propose to add one more optional argument to **oo::copy**,
_targetNamespace_, that if provided and non-empty will be the name of a
namespace \(resolved relative to the current namespace if not an absolute name\)
................................................................................

 > **oo::copy** _sourceObject_ ?_targetObject_? ?_targetNamespace_?

The meaning of the result of the command is unchanged.

# Implementation

See the oo-copy-ns branch. <http://core.tcl.tk/tcl/timeline?r=oo-copy-ns> 

# Copyright

This document has been placed in the public domain.







|







 







|





23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
..
42
43
44
45
46
47
48
49
50
51
52
53
54
target object. It was always intended to have this \(and the functionality is
there in the C API\), but it was omitted from the Tcl-level interface.

Having this capability allows objects to be used as factories for namespaces,
which is in many ways an inversion of the way that TclOO was designed \(with
namespaces as the basis for objects\). It was requested by Nathan Coulter as a
way to enable more complex behaviour in Rivet and NaviServer. See Tcl Issue
dd3b844fda <https://core.tcl-lang.org/tcl/tktview/dd3b844fdabdeae5fcb0>  for more
information.

# Proposed Change

I propose to add one more optional argument to **oo::copy**,
_targetNamespace_, that if provided and non-empty will be the name of a
namespace \(resolved relative to the current namespace if not an absolute name\)
................................................................................

 > **oo::copy** _sourceObject_ ?_targetObject_? ?_targetNamespace_?

The meaning of the result of the command is unchanged.

# Implementation

See the oo-copy-ns branch. <https://core.tcl-lang.org/tcl/timeline?r=oo-copy-ns> 

# Copyright

This document has been placed in the public domain.

Changes to tip/475.md.

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
..
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
...
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
index formats.  Thus it is reasonable to provide a standard substring insertion
command.

The current design of [`string replace`] expressly (albeit inexplicably)
prevents its use for performing string insertion.  TIP 323 originally proposed
to extend [`string replace`] to allow string insertion, but this aspect of TIP
323 was [withdrawn]
(https://core.tcl.tk/tips/fdiff?v1=6e0ba0ee9838accc&v2=34809f1432fc528f&sbs=1)
for the sake of compatibility.

> *Clarification: TIP 475 proposes no changes to the semantics of [`string
> replace`].*

To mirror the behavior of [`linsert`], [`string insert`] at `end` should append
to the string.  This is in conflict with [`string replace`], were it to be
................................................................................
optimization, improves instruction cache utilization, and reduces both the
possibility for bugs and the number of interactions to be audited.

Furthermore, this new function should be publicly exported using the stubs
interface so extension code can call it without having to enter the interpreter.
The desirability of providing C APIs is made clear by the existence of the the
[FlightAware [`array`] enumeration C API project]
(http://core.tcl.tk/tcl/timeline?t=amg-array-enum-c-api).

# Current Behavior

Currently available methods for string insertion are awkward and do not handle
end-relative and [TIP 176-style](176.md) indexing without extraordinary effort.
To demonstrate the surprising degree of complexity, the following is a pure Tcl
script reference implementation intended to handle all possible index formats
................................................................................
replace`] commands in terms of `Tcl_ReplaceObj`().

# Reference Implementation

A pure Tcl reference implementation is given [above](#ref).

The [`amg-string-insert`]
(http://core.tcl.tk/tcl/timeline?t=amg-string-insert) branch in the Tcl Fossil
repository provides an optimized C implementation, complete with documentation,
bytecode compilation, and a full set of test cases exercising all code paths.

This C implementation creates a new `strinsert` bytecode, also known as
`STR_INSERT` or `INST_STR_INSERT` in varying contexts.  The decision was made to
keep `strinsert` separate from the existing `strreplace` opcode due to
differences in end-relative indexing.

Implementing [`string insert`] in terms of `strreplace` would require modifying
the interface to `strreplace` and would therefore break compatibility with
[tclquadcode] (https://core.tcl.tk/tclquadcode/) and potentially other projects
that depend on the \[[`tcl::unsupported::assemble`](http://wiki.tcl.tk/28070)]
and \[[`tcl::unsupported::disassemble`](http://wiki.tcl.tk/21445)] commands.

Despite the use of the word "separate" above, the `strinsert` and `strreplace`
opcodes are both implemented in terms of the common `Tcl_ReplaceObj`() function,
as are the non-bytecoded [`string insert`] and [`string replace`] commands.
This function was written by distilling common code found across the baseline
implementations of the various subroutines that now call it.

# Open Issues

The `Tcl_ReplaceObj`() function header comment includes [this TODO note]
(https://core.tcl.tk/tcl/artifact?name=6934c9ea66d17949&ln=3312-3315):

> Memory allocation failure is only checked when concatenating shared, non-pure
> byte array, non-pure Unicode character array strings.  Need to commit to a
> consistent memory allocation failure handling policy.

This comment is describing the [case]
(https://core.tcl.tk/tcl/artifact?name=6934c9ea66d17949&ln=3575-3592) in which
`Tcl_ReplaceObj`() calls `TclStringCatObjv`() to concatenate its two arguments.
`TclStringCatObjv`() returns TCL_ERROR on memory allocation failure, and
`Tcl_ReplaceObj`() dutifully translates that to a NULL return, with detailed
error information in the interpreter result.

In every other circumstance, `Tcl_ReplaceObj`() does *not* check for memory
allocation errors.  Many, if not all, of the underlying functions it uses call






|







 







|







 







|










|












|






|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
..
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
...
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
index formats.  Thus it is reasonable to provide a standard substring insertion
command.

The current design of [`string replace`] expressly (albeit inexplicably)
prevents its use for performing string insertion.  TIP 323 originally proposed
to extend [`string replace`] to allow string insertion, but this aspect of TIP
323 was [withdrawn]
(https://core.tcl-lang.org/tips/fdiff?v1=6e0ba0ee9838accc&v2=34809f1432fc528f&sbs=1)
for the sake of compatibility.

> *Clarification: TIP 475 proposes no changes to the semantics of [`string
> replace`].*

To mirror the behavior of [`linsert`], [`string insert`] at `end` should append
to the string.  This is in conflict with [`string replace`], were it to be
................................................................................
optimization, improves instruction cache utilization, and reduces both the
possibility for bugs and the number of interactions to be audited.

Furthermore, this new function should be publicly exported using the stubs
interface so extension code can call it without having to enter the interpreter.
The desirability of providing C APIs is made clear by the existence of the the
[FlightAware [`array`] enumeration C API project]
(https://core.tcl-lang.org/tcl/timeline?t=amg-array-enum-c-api).

# Current Behavior

Currently available methods for string insertion are awkward and do not handle
end-relative and [TIP 176-style](176.md) indexing without extraordinary effort.
To demonstrate the surprising degree of complexity, the following is a pure Tcl
script reference implementation intended to handle all possible index formats
................................................................................
replace`] commands in terms of `Tcl_ReplaceObj`().

# Reference Implementation

A pure Tcl reference implementation is given [above](#ref).

The [`amg-string-insert`]
(https://core.tcl-lang.org/tcl/timeline?t=amg-string-insert) branch in the Tcl Fossil
repository provides an optimized C implementation, complete with documentation,
bytecode compilation, and a full set of test cases exercising all code paths.

This C implementation creates a new `strinsert` bytecode, also known as
`STR_INSERT` or `INST_STR_INSERT` in varying contexts.  The decision was made to
keep `strinsert` separate from the existing `strreplace` opcode due to
differences in end-relative indexing.

Implementing [`string insert`] in terms of `strreplace` would require modifying
the interface to `strreplace` and would therefore break compatibility with
[tclquadcode] (https://core.tcl-lang.org/tclquadcode/) and potentially other projects
that depend on the \[[`tcl::unsupported::assemble`](http://wiki.tcl.tk/28070)]
and \[[`tcl::unsupported::disassemble`](http://wiki.tcl.tk/21445)] commands.

Despite the use of the word "separate" above, the `strinsert` and `strreplace`
opcodes are both implemented in terms of the common `Tcl_ReplaceObj`() function,
as are the non-bytecoded [`string insert`] and [`string replace`] commands.
This function was written by distilling common code found across the baseline
implementations of the various subroutines that now call it.

# Open Issues

The `Tcl_ReplaceObj`() function header comment includes [this TODO note]
(https://core.tcl-lang.org/tcl/artifact?name=6934c9ea66d17949&ln=3312-3315):

> Memory allocation failure is only checked when concatenating shared, non-pure
> byte array, non-pure Unicode character array strings.  Need to commit to a
> consistent memory allocation failure handling policy.

This comment is describing the [case]
(https://core.tcl-lang.org/tcl/artifact?name=6934c9ea66d17949&ln=3575-3592) in which
`Tcl_ReplaceObj`() calls `TclStringCatObjv`() to concatenate its two arguments.
`TclStringCatObjv`() returns TCL_ERROR on memory allocation failure, and
`Tcl_ReplaceObj`() dutifully translates that to a NULL return, with detailed
error information in the interpreter result.

In every other circumstance, `Tcl_ReplaceObj`() does *not* check for memory
allocation errors.  Many, if not all, of the underlying functions it uses call

Changes to tip/476.md.

132
133
134
135
136
137
138
139
140
141
142
143
|  ---           |   ---      |    ---        | ---          |  ---
|    "%#o"       |     15     |     017       |   0o17       |    "0%o"
|    "%#0d"      |     15     |     15        |   0d15       |    "%0d"
|    "%#X"       |     15     |     0XF       |   0xF        |    "0X%X"

# Reference Implementation

<https://core.tcl.tk/tcl/timeline?r=z_modifier>

# Copyright

This document is placed in public domain.






|




132
133
134
135
136
137
138
139
140
141
142
143
|  ---           |   ---      |    ---        | ---          |  ---
|    "%#o"       |     15     |     017       |   0o17       |    "0%o"
|    "%#0d"      |     15     |     15        |   0d15       |    "%0d"
|    "%#X"       |     15     |     0XF       |   0xF        |    "0X%X"

# Reference Implementation

<https://core.tcl-lang.org/tcl/timeline?r=z_modifier>

# Copyright

This document is placed in public domain.

Changes to tip/477.md.

1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
printed on incompatibilities.

These checks can be disabled by including `noconfigcheck` as one of
the values passed through the `OPTS` macro on the command line.

# <a id='toc-53'></a>Reference implementation

The vc-reform branch in the core.tcl.tk repositories contains work-in-progress.
In addition to Tcl and Tk, the `sampleextension`, `thread`, `tclvfs`,
`tcludp`, `tdom`, `mpexpr` and `tktreectrl` have been converted.

# <a id='toc-54'></a>Examples

The aforementioned extensions may be used as examples of makefiles of
varying degrees of complexity.






|







1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
printed on incompatibilities.

These checks can be disabled by including `noconfigcheck` as one of
the values passed through the `OPTS` macro on the command line.

# <a id='toc-53'></a>Reference implementation

The vc-reform branch in the core.tcl-lang.org repositories contains work-in-progress.
In addition to Tcl and Tk, the `sampleextension`, `thread`, `tclvfs`,
`tcludp`, `tdom`, `mpexpr` and `tktreectrl` have been converted.

# <a id='toc-54'></a>Examples

The aforementioned extensions may be used as examples of makefiles of
varying degrees of complexity.

Changes to tip/479.md.

182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
		> {Don't be pedanditic} {a {Don't be pedantic} alpha {Less usefull}}

### type:
Type: string
Default: null
Options: null, boolean, integer, wide, entier, double

To support [tip#480](https://core.tcl.tk/tips/doc/trunk/tip/480.md). For now strictly advisory.
In the future this will check that the incoming values are the specified type.

# Implementation

This TIP will be rolled out in 3 stages.

## Stage 1 - Pure Tcl (finished)






|







182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
		> {Don't be pedanditic} {a {Don't be pedantic} alpha {Less usefull}}

### type:
Type: string
Default: null
Options: null, boolean, integer, wide, entier, double

To support [tip#480](https://core.tcl-lang.org/tips/doc/trunk/tip/480.md). For now strictly advisory.
In the future this will check that the incoming values are the specified type.

# Implementation

This TIP will be rolled out in 3 stages.

## Stage 1 - Pure Tcl (finished)

Changes to tip/480.md.

231
232
233
234
235
236
237
238
that today's `::control::assert` works.

# References

1.  Kenny, Kevin B. and Donal K. Fellows. 'The State of Quadcode 2017.'
    _Proc. 24th Annual Tcl/Tk Conf._ Houston, Tex.: Tcl Community Association,
    October 2017.
    <https://core.tcl.tk/tclquadcode/raw/doc/tcl2017/kbk-dkf-state-of-quadcode.odt?name=ed72b79c8b>






|
231
232
233
234
235
236
237
238
that today's `::control::assert` works.

# References

1.  Kenny, Kevin B. and Donal K. Fellows. 'The State of Quadcode 2017.'
    _Proc. 24th Annual Tcl/Tk Conf._ Houston, Tex.: Tcl Community Association,
    October 2017.
    <https://core.tcl-lang.org/tclquadcode/raw/doc/tcl2017/kbk-dkf-state-of-quadcode.odt?name=ed72b79c8b>

Changes to tip/481.md.

70
71
72
73
74
75
76
77
For Tcl 9.0, the function **Tcl\_GetIntFromObj** is modified to return 1 when the Tcl\_Obj
value is in the range -2147483648 .. 2147483647.

# Implementation

See the _tip-481_ branch in Tcl's fossil repository
<https://core.tcl.tk/tcl/timeline?r=tip-481> .






|
70
71
72
73
74
75
76
77
For Tcl 9.0, the function **Tcl\_GetIntFromObj** is modified to return 1 when the Tcl\_Obj
value is in the range -2147483648 .. 2147483647.

# Implementation

See the _tip-481_ branch in Tcl's fossil repository
<https://core.tcl-lang.org/tcl/timeline?r=tip-481> .

Changes to tip/482.md.

42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Current Uncertainties as of 2017/11/21:
* The function GetWidgetDemoPath in macosx/tkMacOSXMenus.c uses a different method
  to retrieve the value of the widget demo path. Is this ok?
* Only tested on Unix.

# Reference Implementation

The reference implementation is available in the tk-stu-pkg branch. <http://core.tcl.tk/tk/timeline?r=tk-stu-pkg>

The code is licensed under the same license as Tk.

# See Also

TIP #483 [[483]](483.md): Improved TIP #59 implementation for Tk.

# Copyright

This document has been placed in the public domain.






|










42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Current Uncertainties as of 2017/11/21:
* The function GetWidgetDemoPath in macosx/tkMacOSXMenus.c uses a different method
  to retrieve the value of the widget demo path. Is this ok?
* Only tested on Unix.

# Reference Implementation

The reference implementation is available in the tk-stu-pkg branch. <https://core.tcl-lang.org/tk/timeline?r=tk-stu-pkg>

The code is licensed under the same license as Tk.

# See Also

TIP #483 [[483]](483.md): Improved TIP #59 implementation for Tk.

# Copyright

This document has been placed in the public domain.

Changes to tip/483.md.

85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
  Should Tcl's example be followed?
* The new test file for Tk is named _pkgconfig.test_ while Tcl's is named _config.test_.
  The new name more accurately describes the tests but maybe it's better to go along with Tcl?
* Only tested on Unix.

# Status 2018/07/04:
* Changes made based on recommendations in <http://code.activestate.com/lists/tcl-core/19816/>
* Tk checkin: <https://core.tcl.tk/tk/info/d65d0705151eb38b>
* Tcl checkin: <https://core.tcl.tk/tcl/info/14bb7ec850ddaf66>

# Reference Implementation

The reference implementation is available in the tk-stu-pkg branch. <http://core.tcl.tk/tk/timeline?r=tk-stu-pkg>

The code is licensed under the same license as Tk.

# See Also

TIP #482 [[482]](482.md): Record Tk demo directory information.

# Copyright

This document has been placed in the public domain.






|
|



|










85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
  Should Tcl's example be followed?
* The new test file for Tk is named _pkgconfig.test_ while Tcl's is named _config.test_.
  The new name more accurately describes the tests but maybe it's better to go along with Tcl?
* Only tested on Unix.

# Status 2018/07/04:
* Changes made based on recommendations in <http://code.activestate.com/lists/tcl-core/19816/>
* Tk checkin: <https://core.tcl-lang.org/tk/info/d65d0705151eb38b>
* Tcl checkin: <https://core.tcl-lang.org/tcl/info/14bb7ec850ddaf66>

# Reference Implementation

The reference implementation is available in the tk-stu-pkg branch. <https://core.tcl-lang.org/tk/timeline?r=tk-stu-pkg>

The code is licensed under the same license as Tk.

# See Also

TIP #482 [[482]](482.md): Record Tk demo directory information.

# Copyright

This document has been placed in the public domain.

Changes to tip/484.md.

87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
test-cases continue to pass. This shows that separating the 'int'
and the 'wideInt' implementation is nowhere required to let
Tcl number handling function the way it functions now. At the
script level, the change is invisible.

# Reference Implementation

An implementation of this TIP can be found in the [no-wideint](https://core.tcl.tk/tcl/timeline?r=no-wideint) branch.

The code is licensed under the same license as Tcl.

# Caveats

* Starting with Tcl 9.0, Extensions which assume that Tcl_GetObjType("int") returns non-NULL
  will no longer work. No external code may make assumptions of implementation details for






|







87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
test-cases continue to pass. This shows that separating the 'int'
and the 'wideInt' implementation is nowhere required to let
Tcl number handling function the way it functions now. At the
script level, the change is invisible.

# Reference Implementation

An implementation of this TIP can be found in the [no-wideint](https://core.tcl-lang.org/tcl/timeline?r=no-wideint) branch.

The code is licensed under the same license as Tcl.

# Caveats

* Starting with Tcl 9.0, Extensions which assume that Tcl_GetObjType("int") returns non-NULL
  will no longer work. No external code may make assumptions of implementation details for

Changes to tip/485.md.

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
...
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
-----

# 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
work. See also [bug #3151675](https://core.tcl.tk/tcl/tktview/3151675).
For Tcl 9.0 it is finally time to actually remove it.

In addition, there are a number of C API's which have better successors
by now. Finally, there are a few C routines and other macros which were
never been properly documented before, like `CONST`, or macros needed for
supporting deprecated C features, like `_ANSI_ARGS_` and `TCL_VARARGS`.
This TIP proposes to finally remove all of those in Tcl 9.0, and mark
................................................................................

 * `Tcl_CreateMathFunc`

 * `Tcl_GetMathFuncInfo`

 * `Tcl_ListMathFuncs`

An implementation of this TIP can be found in the [tip-485](https://core.tcl.tk/tcl/timeline?r=tip-485) branch.
This branch is based on "core-8-branch" (Tcl 8.7), but can be trivially merged forward to trunk (Tcl 9.0).

# Rejected Alternatives

Originally, `Tcl_EvalFile` was a candidate for removal as well.

# Copyright

This document has been placed in the public domain.






|







 







|









10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
...
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
-----

# 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
work. See also [bug #3151675](https://core.tcl-lang.org/tcl/tktview/3151675).
For Tcl 9.0 it is finally time to actually remove it.

In addition, there are a number of C API's which have better successors
by now. Finally, there are a few C routines and other macros which were
never been properly documented before, like `CONST`, or macros needed for
supporting deprecated C features, like `_ANSI_ARGS_` and `TCL_VARARGS`.
This TIP proposes to finally remove all of those in Tcl 9.0, and mark
................................................................................

 * `Tcl_CreateMathFunc`

 * `Tcl_GetMathFuncInfo`

 * `Tcl_ListMathFuncs`

An implementation of this TIP can be found in the [tip-485](https://core.tcl-lang.org/tcl/timeline?r=tip-485) branch.
This branch is based on "core-8-branch" (Tcl 8.7), but can be trivially merged forward to trunk (Tcl 9.0).

# Rejected Alternatives

Originally, `Tcl_EvalFile` was a candidate for removal as well.

# Copyright

This document has been placed in the public domain.

Changes to tip/486.md.

28
29
30
31
32
33
34
35
36
37
38
39
When the time comes, Thread 3.0a1 will be released together with Tcl 9.0a1, and the same
with follow-up intermediate releases. Thread 3.0 will be released together with Tcl 9.0.0.


# Implementation

An implementation of this TIP can be found in the [novem](https://core.tcl.tk/thread/timeline?r=novem) branch.

# Copyright

This document has been placed in the public domain.






|




28
29
30
31
32
33
34
35
36
37
38
39
When the time comes, Thread 3.0a1 will be released together with Tcl 9.0a1, and the same
with follow-up intermediate releases. Thread 3.0 will be released together with Tcl 9.0.0.


# Implementation

An implementation of this TIP can be found in the [novem](https://core.tcl-lang.org/thread/timeline?r=novem) branch.

# Copyright

This document has been placed in the public domain.

Changes to tip/487.md.

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
the XP theme engine (part of ttk), has a lot of runtime checks making
it work on pre-XP machines. All of those runtime checks can be removed.
This means that Tk 8.7 will no longer compile and run when uxtheme.dll
is not available on your system. Windows XP and later will be OK.

# Implementation

An implementation of this TIP can be found in the [tip-487](https://core.tcl.tk/tcl/timeline?r=tip-487) branch.
Tk has a [tip-487](https://core.tcl.tk/tk/timeline?r=tip-487) branch as well.

# Rejected Alternatives

Originally, XP-support was suggested to be removed as well, but it turns out
that it's too early to do that now and gives too little benefit. Since XP
seems to be even more popular than Vista, support drop for both of those could
be done at the same time in a future Tcl/Tk release. But that decision will
be left up to another TIP. 

# Copyright

This document has been placed in the public domain.






|
|












34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
the XP theme engine (part of ttk), has a lot of runtime checks making
it work on pre-XP machines. All of those runtime checks can be removed.
This means that Tk 8.7 will no longer compile and run when uxtheme.dll
is not available on your system. Windows XP and later will be OK.

# Implementation

An implementation of this TIP can be found in the [tip-487](https://core.tcl-lang.org/tcl/timeline?r=tip-487) branch.
Tk has a [tip-487](https://core.tcl-lang.org/tk/timeline?r=tip-487) branch as well.

# Rejected Alternatives

Originally, XP-support was suggested to be removed as well, but it turns out
that it's too early to do that now and gives too little benefit. Since XP
seems to be even more popular than Vista, support drop for both of those could
be done at the same time in a future Tcl/Tk release. But that decision will
be left up to another TIP. 

# Copyright

This document has been placed in the public domain.

Changes to tip/488.md.

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
far as the string representation is concerned. If the numbers are converted back from
string to floating-point, then of course, differences may occur as well, but these should
be viewed as bugs in the original code, as a value for `tcl_precision` unequal to zero and
smaller than 17, will not guarantee a lossless conversion to and from strings.

# <a id='toc-6'></a>Reference Implementation

A [branch](http://core.tcl.tk/tcl/timeline?r=tip-488) is available.

# <a id='toc-7'></a>See Also

TIP #132: Revised Floating-Point Conversions in Tcl

# <a id='toc-8'></a>Copyright

This document has been placed in the public domain.







|









67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
far as the string representation is concerned. If the numbers are converted back from
string to floating-point, then of course, differences may occur as well, but these should
be viewed as bugs in the original code, as a value for `tcl_precision` unequal to zero and
smaller than 17, will not guarantee a lossless conversion to and from strings.

# <a id='toc-6'></a>Reference Implementation

A [branch](https://core.tcl-lang.org/tcl/timeline?r=tip-488) is available.

# <a id='toc-7'></a>See Also

TIP #132: Revised Floating-Point Conversions in Tcl

# <a id='toc-8'></a>Copyright

This document has been placed in the public domain.

Changes to tip/489.md.

48
49
50
51
52
53
54
55
56
57
58
59
60
And this time with _subsample_ of 1 and _zoom_ of 2, resulting in an image twice as large as the canvas source region.

    .c image testimage 1 2
 
# Implementation

An implementation of this TIP can be found in the [Tk canvas_image branch]
(https://core.tcl.tk/tk/timeline?r=canvas_image).

# Copyright

This document has been placed in the public domain.







|





48
49
50
51
52
53
54
55
56
57
58
59
60
And this time with _subsample_ of 1 and _zoom_ of 2, resulting in an image twice as large as the canvas source region.

    .c image testimage 1 2
 
# Implementation

An implementation of this TIP can be found in the [Tk canvas_image branch]
(https://core.tcl-lang.org/tk/timeline?r=canvas_image).

# Copyright

This document has been placed in the public domain.

Changes to tip/490-discussion.md.

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
        }
    }
}
package provide foo 1.0
</pre>

The implementation is in tcl fossil in branch
[tip490-msgcat-oo](https://core.tcl.tk/tcl/timeline?r=tip490-msgcat-oo).

## Use own commands for getting and setting message catalogues

Eric Boudallier proposed a solution on [Wiki page "msgcat and TclOO"](http://wiki.tcl.tk/39430)

There is also an addendum by Donal Fellows with an alternate implementation.







|







67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
        }
    }
}
package provide foo 1.0
</pre>

The implementation is in tcl fossil in branch
[tip490-msgcat-oo](https://core.tcl-lang.org/tcl/timeline?r=tip490-msgcat-oo).

## Use own commands for getting and setting message catalogues

Eric Boudallier proposed a solution on [Wiki page "msgcat and TclOO"](http://wiki.tcl.tk/39430)

There is also an addendum by Donal Fellows with an alternate implementation.

Changes to tip/490.md.

296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
	    }
	}
    }
}
</pre>

The implementation is in tcl fossil in branch
[tip490-msgcat-oo-2](https://core.tcl.tk/tcl/timeline?r=tip490-msgcat-oo-2).

There are tests but no man page changes yet.
Please use this text as man-page.

# Discussion

See [this page](490-discussion.md) for further discussion.






|







296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
	    }
	}
    }
}
</pre>

The implementation is in tcl fossil in branch
[tip490-msgcat-oo-2](https://core.tcl-lang.org/tcl/timeline?r=tip490-msgcat-oo-2).

There are tests but no man page changes yet.
Please use this text as man-page.

# Discussion

See [this page](490-discussion.md) for further discussion.

Changes to tip/491.md.

67
68
69
70
71
72
73
74
75
76
77
78
  * fully remove the use of `TCL_THREADS` throughout the whole source
    code. The value is assumed to be `1`
    everywhere. Non-threaded builds are no longer possible.

# Implementation

An implementation of this TIP can be found in the [tip-491](https://core.tcl.tk/tcl/timeline?r=tip-491) branch.

# Copyright

This document has been placed in the public domain.






|




67
68
69
70
71
72
73
74
75
76
77
78
  * fully remove the use of `TCL_THREADS` throughout the whole source
    code. The value is assumed to be `1`
    everywhere. Non-threaded builds are no longer possible.

# Implementation

An implementation of this TIP can be found in the [tip-491](https://core.tcl-lang.org/tcl/timeline?r=tip-491) branch.

# Copyright

This document has been placed in the public domain.

Changes to tip/492.md.

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
..
28
29
30
31
32
33
34
35
36
37
38
39
40
# Abstract

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

# Rationale

The tk::busy documentation describes how a busy window is created to block events. The path of this busy window can be used to handle some events. This path is dependent on whether the widget to be covered is a toplevel or not, see [implementation details here] (http://core.tcl.tk/tk/artifact/3a2775faf288a7c9?ln=535,556) and also the man page for **tk busy**.

As a consequence, this logic needs to be known by any user of the **tk busy** command. Offering  a way to get the path of the busy window would avoid this dependency on the implementation details.

# Proposal

It is proposed to:

................................................................................
2. Provide a new subcommand **tk busy busywindow** to return that same information, or the empty string if the windows passed to it is currently not busy.
3. Remove any mention of the details of the busy window naming from the man page.


# Implementation

An implementation of this TIP can be found in the [tip-492 branch]
(https://core.tcl.tk/tk/timeline?r=tip-492).

# Copyright

This document has been placed in the public domain.







|







 







|





12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
..
28
29
30
31
32
33
34
35
36
37
38
39
40
# Abstract

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

# Rationale

The tk::busy documentation describes how a busy window is created to block events. The path of this busy window can be used to handle some events. This path is dependent on whether the widget to be covered is a toplevel or not, see [implementation details here] (https://core.tcl-lang.org/tk/artifact/3a2775faf288a7c9?ln=535,556) and also the man page for **tk busy**.

As a consequence, this logic needs to be known by any user of the **tk busy** command. Offering  a way to get the path of the busy window would avoid this dependency on the implementation details.

# Proposal

It is proposed to:

................................................................................
2. Provide a new subcommand **tk busy busywindow** to return that same information, or the empty string if the windows passed to it is currently not busy.
3. Remove any mention of the details of the busy window naming from the man page.


# Implementation

An implementation of this TIP can be found in the [tip-492 branch]
(https://core.tcl-lang.org/tk/timeline?r=tip-492).

# Copyright

This document has been placed in the public domain.

Changes to tip/494.md.

74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
..
93
94
95
96
97
98
99
100
101
102
103
104
  * Tcl_Ungets

If the return value of such function is directly used in a compare, this could lead to the use of an unsigned compare in stead of a signed compare.
If you compile your extension with -D_TCL\_8\_COMPAT_, those 10 functions will be changed to wrapper macro's which makes everything behave as if those functions return Tcl_WideInt. That's the easiest way to resolve this potential problem.

There are 2 other ways to make this change, which can do it without the use of the _TCL\_8\_COMPAT_ macro:

  * Add _1_ to the left and right hand side of the comparison. E.g. [as here](https://core.tcl.tk/tk/fdiff?v1=100235897e9cf359&v2=9cf86629040df0d3)

  * Don't compare to -1 using < or >, but always to TCL\_IO\_FAILURE using == or != . E.g. [as here](https://core.tcl.tk/tk/info/abe0d3b121cbb12d)

Tk and [sqlite](http://cyqlite.sourceforge.net/cgi-bin/sqlite/info/17c148b94008df81) are already converted to make full use of TIP #494. Other extensions included with Tcl (e.g. tdbc) are unaffected.

# Open issues

There has been discussion, whether the return-type of these 10 functions (and possibly other functions) should actually be size\_t or maybe some other type.
A Tcl-specific type *Tcl\_Size* could also be defined for this. Actually, this TIP provides 2 possibilities: Without -D_TCL\_8\_COMPAT_, the type is size\_t, with -D_TCL\_8\_COMPAT_ it is Tcl_WideInt.
................................................................................
There - for sure - will be more future TIP's, which propose more API changes for 9.0.
This one - definitely - is not the last one.
So, this TIP doesn't make a final decision yet what will be the final type returned by those 10 functions.

# Implementation

The implementation of this TIP can be found in the [memory-API branch]
(https://core.tcl.tk/tcl/timeline?r=memory-API).

# Copyright

This document has been placed in the public domain.






|

|







 







|




74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
..
93
94
95
96
97
98
99
100
101
102
103
104
  * Tcl_Ungets

If the return value of such function is directly used in a compare, this could lead to the use of an unsigned compare in stead of a signed compare.
If you compile your extension with -D_TCL\_8\_COMPAT_, those 10 functions will be changed to wrapper macro's which makes everything behave as if those functions return Tcl_WideInt. That's the easiest way to resolve this potential problem.

There are 2 other ways to make this change, which can do it without the use of the _TCL\_8\_COMPAT_ macro:

  * Add _1_ to the left and right hand side of the comparison. E.g. [as here](https://core.tcl-lang.org/tk/fdiff?v1=100235897e9cf359&v2=9cf86629040df0d3)

  * Don't compare to -1 using < or >, but always to TCL\_IO\_FAILURE using == or != . E.g. [as here](https://core.tcl-lang.org/tk/info/abe0d3b121cbb12d)

Tk and [sqlite](http://cyqlite.sourceforge.net/cgi-bin/sqlite/info/17c148b94008df81) are already converted to make full use of TIP #494. Other extensions included with Tcl (e.g. tdbc) are unaffected.

# Open issues

There has been discussion, whether the return-type of these 10 functions (and possibly other functions) should actually be size\_t or maybe some other type.
A Tcl-specific type *Tcl\_Size* could also be defined for this. Actually, this TIP provides 2 possibilities: Without -D_TCL\_8\_COMPAT_, the type is size\_t, with -D_TCL\_8\_COMPAT_ it is Tcl_WideInt.
................................................................................
There - for sure - will be more future TIP's, which propose more API changes for 9.0.
This one - definitely - is not the last one.
So, this TIP doesn't make a final decision yet what will be the final type returned by those 10 functions.

# Implementation

The implementation of this TIP can be found in the [memory-API branch]
(https://core.tcl-lang.org/tcl/timeline?r=memory-API).

# Copyright

This document has been placed in the public domain.

Changes to tip/495.md.

101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
a key/value list readable by a Tcl script. *nmake* environments will
perform identical subsitutions to the same file.

## practcl

A standard library of tools (provisinally named "practcl") will be provided in
tcllib and as a single file distribution in the same repository as the TEA
reference files. (http://core.tcl.tk/tclconfig)

This library includes implementations for all build, installation, and integration tasks. The
file can be directly sourced, or invoked with `package require practcl`.

        ## Example make.tcl file

        set CWD [pwd]






|







101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
a key/value list readable by a Tcl script. *nmake* environments will
perform identical subsitutions to the same file.

## practcl

A standard library of tools (provisinally named "practcl") will be provided in
tcllib and as a single file distribution in the same repository as the TEA
reference files. (https://core.tcl-lang.org/tclconfig)

This library includes implementations for all build, installation, and integration tasks. The
file can be directly sourced, or invoked with `package require practcl`.

        ## Example make.tcl file

        set CWD [pwd]

Changes to tip/496.md.

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 **-placeholder**: The string to display. If empty (the default value) then nothing is displayed. This text value is always displayed with current font and justification. Note that justification can really be honored only if the available display space is large enough to contain the complete text value (this is anyway true also for the widget text itself, see [Tcl Core discussion] (http://code.activestate.com/lists/tcl-core/19657/)).

 **-placeholderforeground**: The color of the text. This is a normal option for the Tk widgets and a style option for the Ttk widgets. Default value is #b3b3b3 (gray70).

# Implementation

A patch implementing these changes is available in the fossil repository in the [tip-496 branch]
(https://core.tcl.tk/tk/timeline?r=tip-496).

Documentation updates are in the same branch.

# Example of use

	    package require Tk
	    # tk entry






|







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 **-placeholder**: The string to display. If empty (the default value) then nothing is displayed. This text value is always displayed with current font and justification. Note that justification can really be honored only if the available display space is large enough to contain the complete text value (this is anyway true also for the widget text itself, see [Tcl Core discussion] (http://code.activestate.com/lists/tcl-core/19657/)).

 **-placeholderforeground**: The color of the text. This is a normal option for the Tk widgets and a style option for the Ttk widgets. Default value is #b3b3b3 (gray70).

# Implementation

A patch implementing these changes is available in the fossil repository in the [tip-496 branch]
(https://core.tcl-lang.org/tk/timeline?r=tip-496).

Documentation updates are in the same branch.

# Example of use

	    package require Tk
	    # tk entry

Changes to tip/497.md.

49
50
51
52
53
54
55
56
57
58
59
60
TODO


# Reference Implementation

A reference implementation is ongoing in  the **tip-497** branch.
<https://core.tcl.tk/tcl/timeline?r=tip-497>

# Copyright

This document has been placed in the public domain.






|




49
50
51
52
53
54
55
56
57
58
59
60
TODO


# Reference Implementation

A reference implementation is ongoing in  the **tip-497** branch.
<https://core.tcl-lang.org/tcl/timeline?r=tip-497>

# Copyright

This document has been placed in the public domain.

Changes to tip/498.md.

43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
..
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
...
105
106
107
108
109
110
111
112
113
114
115
116
117
118
created in it but they disappear at some later point depending on the state of
the call stack.  Although this behaviour is documented, it was probably a
concession to the implementation rather than by original intent.  A further
complication is that it's possible to simultaneously access both the deleted
namespace and a new namespace having the same name.  Reports that illustrate
these issues include:

> [A namespace loses track of itself](https://core.tcl.tk/tcl/tktview?name=46450b464e)

> [command found in deleted namespace](https://core.tcl.tk/tcl/tktview?name=1655294fff)

> [namespace deletion: trace that calls [apply], specifying the namespace, doesn't fire.](https://core.tcl.tk/tcl/tktview/e86e178aff)

Finally, the current cleanup routines perform enough contortions to be a real
barrier to any further improvement of the system.  

The work to [simplify the TclOO
implementation](https://core.tcl.tk/tcl/info/0bae33cd39c2333e), lead to the
work to simplify Tcl_DeleteNamespace.

There are various reports about traces that that silently fail under one
condtition or another.  The simplification of `Tcl_DeleteNamespace` is a
precursor to the resolution of those issues.


................................................................................
easier to discover that the current namespace is the global namespace than it
is to determine why a namespace which exists at one point no longer exists at
another point, even though there is no point in between at which the namespace
is deleted.

The completion of this TIP will render more tractable the issue [trace deletes the namespace
when a command is replaced, producing "called Tcl_CreateHashEntry on deleted
table"](https://core.tcl.tk/tcl/info/0e4d88b650).

`activationCount` is removed from the `Namespace` structure, slightly reducing
its size.  See also, [Improve average size of
Namespace](https://core.tcl.tk/tcl/tktview?name=2694630fff).

`NS_KILLED` will no longer be needed.  A namespace being deleted is either
`NS_DYING` while deallocation of related resources is in progress or `NS_DEAD`
while it's still referenced somewhere.

The issue [(tailcall\|yieldto) failed to find the proper namespace
Abort](https://core.tcl.tk/tcl/tktview?name=3592747fff) becomes more
straightforward to reason about since there are no longer namespaces that
exist but that are not reachable by name.

It will be documented that when a namespace is deleted, ensemble commands,
child namespaces, commands in the namespace, and variables in the namespace are
deleted in that order.  Because the deletion of a resource can trigger the
creation of other resources, this process iterates until all relevant resources
................................................................................
to tear down the structure before removing the foundation.



# Implementation

See the [bug-e593adf103-core-8
branch](https://core.tcl.tk/tcl/timeline?n=100&r=bug-e593adf103-core-8).



# Copyright

This document has been placed in the public domain.






|

|

|





|







 







|



|






|







 







|






43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
..
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
...
105
106
107
108
109
110
111
112
113
114
115
116
117
118
created in it but they disappear at some later point depending on the state of
the call stack.  Although this behaviour is documented, it was probably a
concession to the implementation rather than by original intent.  A further
complication is that it's possible to simultaneously access both the deleted
namespace and a new namespace having the same name.  Reports that illustrate
these issues include:

> [A namespace loses track of itself](https://core.tcl-lang.org/tcl/tktview?name=46450b464e)

> [command found in deleted namespace](https://core.tcl-lang.org/tcl/tktview?name=1655294fff)

> [namespace deletion: trace that calls [apply], specifying the namespace, doesn't fire.](https://core.tcl-lang.org/tcl/tktview/e86e178aff)

Finally, the current cleanup routines perform enough contortions to be a real
barrier to any further improvement of the system.  

The work to [simplify the TclOO
implementation](https://core.tcl-lang.org/tcl/info/0bae33cd39c2333e), lead to the
work to simplify Tcl_DeleteNamespace.

There are various reports about traces that that silently fail under one
condtition or another.  The simplification of `Tcl_DeleteNamespace` is a
precursor to the resolution of those issues.


................................................................................
easier to discover that the current namespace is the global namespace than it
is to determine why a namespace which exists at one point no longer exists at
another point, even though there is no point in between at which the namespace
is deleted.

The completion of this TIP will render more tractable the issue [trace deletes the namespace
when a command is replaced, producing "called Tcl_CreateHashEntry on deleted
table"](https://core.tcl-lang.org/tcl/info/0e4d88b650).

`activationCount` is removed from the `Namespace` structure, slightly reducing
its size.  See also, [Improve average size of
Namespace](https://core.tcl-lang.org/tcl/tktview?name=2694630fff).

`NS_KILLED` will no longer be needed.  A namespace being deleted is either
`NS_DYING` while deallocation of related resources is in progress or `NS_DEAD`
while it's still referenced somewhere.

The issue [(tailcall\|yieldto) failed to find the proper namespace
Abort](https://core.tcl-lang.org/tcl/tktview?name=3592747fff) becomes more
straightforward to reason about since there are no longer namespaces that
exist but that are not reachable by name.

It will be documented that when a namespace is deleted, ensemble commands,
child namespaces, commands in the namespace, and variables in the namespace are
deleted in that order.  Because the deletion of a resource can trigger the
creation of other resources, this process iterates until all relevant resources
................................................................................
to tear down the structure before removing the foundation.



# Implementation

See the [bug-e593adf103-core-8
branch](https://core.tcl-lang.org/tcl/timeline?n=100&r=bug-e593adf103-core-8).



# Copyright

This document has been placed in the public domain.

Changes to tip/499.md.

167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
Compatibility issues arise, if a package expects, that exactly one catalog file is loaded, if it has only first level message files.

With this extension, multiple first-level message files may be loaded.

# Implementation

The implementation is in tcl fossil in branch
[tip499-msgcat-custom-preferences](https://core.tcl.tk/tcl/timeline?r=tip499-msgcat-custom-preferences).

There are tests but no man page jet.
Please use this text as man-page.

# Copyright

This document has been placed in the public domain.






|







167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
Compatibility issues arise, if a package expects, that exactly one catalog file is loaded, if it has only first level message files.

With this extension, multiple first-level message files may be loaded.

# Implementation

The implementation is in tcl fossil in branch
[tip499-msgcat-custom-preferences](https://core.tcl-lang.org/tcl/timeline?r=tip499-msgcat-custom-preferences).

There are tests but no man page jet.
Please use this text as man-page.

# Copyright

This document has been placed in the public domain.

Changes to tip/500.md.

533
534
535
536
537
538
539
540
541
542
543
544
    abc getPublicX
    # Prints, for example:
    #    ::oo::Obj13::x 

# Implementation

See the [`tip-500` branch](https://core.tcl.tk/tcl/timeline?r=tip-500).

# Copyright

This document has been placed in the public domain.






|




533
534
535
536
537
538
539
540
541
542
543
544
    abc getPublicX
    # Prints, for example:
    #    ::oo::Obj13::x 

# Implementation

See the [`tip-500` branch](https://core.tcl-lang.org/tcl/timeline?r=tip-500).

# Copyright

This document has been placed in the public domain.

Changes to tip/501.md.

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
the most common case (namely that the value is, indeed, a dict.)

This TIP proposes a shortcut in C to check to see if the internal representation is
already a dict, and provide a shortcut for the most common case.

# Implementation

A new branch has been added to the tcl fossil system [tip-501](https://core.tcl.tk/tcl/timeline?r=tip-501)

The crux of the implementation is adding "dict" to the IS ensemble:

    case STR_IS_DICT:
	/*
	 * We ignore the strictness here, since empty strings are always
	 * well-formed lists.
	 */
    int dresult, dsize;
	dresult = Tcl_DictObjSize(NULL, objPtr, &dsize);
	result = (dresult==TCL_OK) ? 1 : 0;
	break;







|













26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
the most common case (namely that the value is, indeed, a dict.)

This TIP proposes a shortcut in C to check to see if the internal representation is
already a dict, and provide a shortcut for the most common case.

# Implementation

A new branch has been added to the tcl fossil system [tip-501](https://core.tcl-lang.org/tcl/timeline?r=tip-501)

The crux of the implementation is adding "dict" to the IS ensemble:

    case STR_IS_DICT:
	/*
	 * We ignore the strictness here, since empty strings are always
	 * well-formed lists.
	 */
    int dresult, dsize;
	dresult = Tcl_DictObjSize(NULL, objPtr, &dsize);
	result = (dresult==TCL_OK) ? 1 : 0;
	break;

Changes to tip/507.md.

192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
- The included nanosvg header files will be remain diffable to the original ones. So changes in the original project can be ported to our implementation.
- The format options will be limited to a minimum. So the implementation can later be substituted with a full [SVG][] compatible one.
- If the implamenation will be replaced it will occur in a different tk version. So there is no need to create a scpecial variable describing the used [SVG][] implementation.
- To further reduce the interface it is possible to remove the **-dpi** and **-unit** options. There is currently no demand for this.

# Implementation

A patch implementing these changes is available in the fossil repository in the [tip-507 branch](https://core.tcl.tk/tk/timeline?r=tip-507).

The new format is described in the photo(n) man page.

# Example of use

    # the image data
    set data {<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">






|







192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
- The included nanosvg header files will be remain diffable to the original ones. So changes in the original project can be ported to our implementation.
- The format options will be limited to a minimum. So the implementation can later be substituted with a full [SVG][] compatible one.
- If the implamenation will be replaced it will occur in a different tk version. So there is no need to create a scpecial variable describing the used [SVG][] implementation.
- To further reduce the interface it is possible to remove the **-dpi** and **-unit** options. There is currently no demand for this.

# Implementation

A patch implementing these changes is available in the fossil repository in the [tip-507 branch](https://core.tcl-lang.org/tk/timeline?r=tip-507).

The new format is described in the photo(n) man page.

# Example of use

    # the image data
    set data {<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">

Changes to tip/508.md.

197
198
199
200
201
202
203
204
205
206
207
208
209
	% set var(foo)
	can't read "var(foo)": no such element in array


# Implementation

The proposed implementation is available on branch
[tip-508](https://core.tcl.tk/tcl/timeline?r=tip-508) in the Tcl Fossil
repository.

# Copyright

This document has been placed in the public domain.






|





197
198
199
200
201
202
203
204
205
206
207
208
209
	% set var(foo)
	can't read "var(foo)": no such element in array


# Implementation

The proposed implementation is available on branch
[tip-508](https://core.tcl-lang.org/tcl/timeline?r=tip-508) in the Tcl Fossil
repository.

# Copyright

This document has been placed in the public domain.

Changes to tip/509.md.

106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
- Multiplatform code in its current form behaves either inconsistently or
  consistently, depending on whether it uses reentrant mutexes or not.
  Consistent code will remain consistent, inconsistent code will become
  consistent as the Unix version aligns with the Windows version.

# Related Bugs

[Bug #f4f44174](https://core.tcl.tk/tcl/tktview/f4f44174) demonstrates the
deadlock issue with a script based on TclX. The root cause is the asynchronous
event handler's `Tcl_Mutex` being locked twice from the same thread when a
signal handler interrupts a thread in the middle of a mutex-protected section,
which on Unix platforms results in a deadlock. The proposed implementation fixes
this issue.

# Implementation

The proposed implementation is available on branch
[tip-509](https://core.tcl.tk/tcl/timeline?r=tip-509) in the Tcl Fossil
repository.

# Copyright

This document has been placed in the public domain.






|









|





106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
- Multiplatform code in its current form behaves either inconsistently or
  consistently, depending on whether it uses reentrant mutexes or not.
  Consistent code will remain consistent, inconsistent code will become
  consistent as the Unix version aligns with the Windows version.

# Related Bugs

[Bug #f4f44174](https://core.tcl-lang.org/tcl/tktview/f4f44174) demonstrates the
deadlock issue with a script based on TclX. The root cause is the asynchronous
event handler's `Tcl_Mutex` being locked twice from the same thread when a
signal handler interrupts a thread in the middle of a mutex-protected section,
which on Unix platforms results in a deadlock. The proposed implementation fixes
this issue.

# Implementation

The proposed implementation is available on branch
[tip-509](https://core.tcl-lang.org/timeline?r=tip-509) in the Tcl Fossil
repository.

# Copyright

This document has been placed in the public domain.

Changes to tip/510.md.

43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
..
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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
133
...
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
New oo::class like widgets **tko::frame**, **tko::labelframe** and **tko::toplevel**

> The new widgets will contain the same functionalite like the original *tk* widgets. They are *oo:class*'s and it is possible to add,change and delte methods and options dynamically. The widgets could also be used as oo *superclass*'s.

New **tko::widget** oo base class for widgets.

> The class provide the extended cget/configure tcl methods (see [`tkoWidget.n.md`](https://core.tcl.tk/tk/doc/tip-510/doc/tkoWidget.n.md)) and a C interface (see [`tkoWidget.3.md`](https://core.tcl.tk/tk/doc/tip-510/doc/tkoWidget.3.md)) to build new widgets.

# Rationale

## Rbc commands

*Tk* has already adopted some of [BLT][]/[Rbc][] commands.
Still missing are the above mentioned commands.
................................................................................
Currently there is no megawidget support core package. These tip will go some steps in this direction. With widgets as **oo::class**'s we can easyly extent existing widgets, just use it as a superclass. The provided cget/configure methods allow add, delete and changing of options. The implementation can be used in C and in Tcl.

The new widgets **graph** and **path** are also implemented as **oo::class**. This will make it easy to extent the functionality. As an example see the file `.../library/graph.tcl` in which the method **binding** of the **graph** widget is implemented.

# Implementation

A patch implementing these changes is available in the fossil
repository in the [tip-510 branch](https://core.tcl.tk/tk/timeline?r=tip-510).

## Documentation

Documentation is available in md-Format in the .../doc/ directory.

- [`tkoWidget.3.md`](https://core.tcl.tk/tk/doc/tip-510/doc/tkoWidget.3.md) C interface
- [`tkoWidget.n.md`](https://core.tcl.tk/tk/doc/tip-510/doc/tkoWidget.n.md) Tcl interface
- [`path.n.md`](https://core.tcl.tk/tk/doc/tip-510/doc/path.n.md) path widget documentation
- [`graph.n.md`](https://core.tcl.tk/tk/doc/tip-510/doc/graph.n.md) graph widget documentation
- [`vector.n.md`](https://core.tcl.tk/tk/doc/tip-510/doc/vector.n.md) graph::vector command documentation

## C interface

C-source interface files are in `.../generic/tko/`.  No functionality is currently exported.

- [`tkoWidget.h`](https://core.tcl.tk/tk/doc/tip-510/generic/tko/tkoWidget.h) **tko::widget** C functions and definitions.
- [`tkoPath.h`](https://core.tcl.tk/tk/doc/tip-510/generic/tko/tkoPath.h) **path** widget
- [`tkoGraph.h`](https://core.tcl.tk/tk/doc/tip-510/generic/tko/tkoGraph.h) **graph** widget

## C sources

C-source code files are in `.../generic/tko/`. The new files are  added to the makefiles. The calls to the initialization functions are added in tkWindow.c

- [`tkoFrame.c`](https://core.tcl.tk/tk/doc/tip-510/generic/tko/tkoFrame.c) **tko::frame**, **tko::labelframe** and **tko::toplevel** implementation
- `tkoGraph*.[ch]` **graph** widget implementation
- `tkoVector*.[ch]` **graph::vector** command implementation
- `tkoRbc*.[ch]` Additional [Rbc][] commands used in **graph** and **graph::vector**
- `tkoGraph*.[ch]` **path** widget implementation
- [`tkoWidget.c`](https://core.tcl.tk/tk/doc/tip-510/generic/tko/tkoWidget.c) **tko::widget** base class implementation

## Tcl sources

Tcl-source code is in `.../library/`. The new files are added into `tk.tcl`.

- [`graph.tcl`](https://core.tcl.tk/tk/doc/tip-510/library/graph.tcl) graph widget bindings
- [`path.tcl`](https://core.tcl.tk/tk/doc/tip-510/library/path.tcl) path widget helper function under **::path**

## Tests

Test files are available in the .../tests/tko/ directory.

- [`tkoFrame.test`](https://core.tcl.tk/tk/doc/tip-510/tests/tko/tkoFrame.test) tests from the tk frame.test file plus additional **oo::class** related tests
- [`tkoGraph.test`](https://core.tcl.tk/tk/doc/tip-510/tests/tko/tkoGraph.test) **graph** widget tests
- [`tkoGraph_vector.test`](https://core.tcl.tk/tk/doc/tip-510/tests/tko/tkoGraph_vector.test) **graph::vector** command tests
- [`tkoPath.test`](https://core.tcl.tk/tk/doc/tip-510/tests/tko/tkoPath.test) **path** widget tests

# Discussion

See also discussion at the [wiki](http://wiki.tcl.tk/55360).

A first voting was rejected, mostly because of the missing Mac implementation. See:

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

<http://code.activestate.com/lists/tcl-core/20384/>  

# Open issues

- Mac implementation of **graph** widget. May be borrow code from **path**
- Remove or change old code in `generic/tko/*` files <http://code.activestate.com/lists/tcl-core/20384/>
- Hardcoded usage of compiler and libraries in [`win/Makefile.in`](https://core.tcl.tk/tk/doc/tip-510/win/Makefile.in), [`win/makefile.vc`](https://core.tcl.tk/tk/doc/tip-510/win/makefile.vc) and [`unix/Makefile.in`](https://core.tcl.tk/tk/doc/tip-510/unix/Makefile.in) (search for "#RZ TODO").
- Add **path** files in Mac implementation. It works at least in [Androwish][].
- Which platforms should be used in **path**
  - SDL/AGG: platform independent, more work is needed using [`tkoPath_SDLAGG.cpp`](https://core.tcl.tk/tk/doc/tip-510/generic/tko/tkoPath_SDLAGG.cpp). See in [Androwish][]
  - GDI+ on Windows => working with [`tkoPath_WinGDIPlus.cpp`](https://core.tcl.tk/tk/doc/tip-510/generic/tko/tkoPath_WinGDIPlus.cpp)
  - Cairo on unix => working with [`tkoPath_UnixCairo.c`](https://core.tcl.tk/tk/doc/tip-510/generic/tko/tkoPath_UnixCairo.c)
  - For Mac see [`tkoPath_MacOSX.c`](https://core.tcl.tk/tk/doc/tip-510/generic/tko/tkoPath_MacOSX.c)
- Provide demos
- Add more **path** tests
- Is it necessary to translate the documentation into man format?
- It is currently not possible to use unique abbreviations of class method names p.e. "graph .g; .g conf" A workaround would be to add all those method names. May be this can be solved in tcl::oo directly?

Any help especially with the Mac implementation would be great!







|







 







|





|
|
|
|
|





|
|
|





|




|





|
|





|
|
|
|







 







|


|
|
|
|







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
..
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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
133
...
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
New oo::class like widgets **tko::frame**, **tko::labelframe** and **tko::toplevel**

> The new widgets will contain the same functionalite like the original *tk* widgets. They are *oo:class*'s and it is possible to add,change and delte methods and options dynamically. The widgets could also be used as oo *superclass*'s.

New **tko::widget** oo base class for widgets.

> The class provide the extended cget/configure tcl methods (see [`tkoWidget.n.md`](https://core.tcl-lang.org/tk/doc/tip-510/doc/tkoWidget.n.md)) and a C interface (see [`tkoWidget.3.md`](https://core.tcl-lang.org/tk/doc/tip-510/doc/tkoWidget.3.md)) to build new widgets.

# Rationale

## Rbc commands

*Tk* has already adopted some of [BLT][]/[Rbc][] commands.
Still missing are the above mentioned commands.
................................................................................
Currently there is no megawidget support core package. These tip will go some steps in this direction. With widgets as **oo::class**'s we can easyly extent existing widgets, just use it as a superclass. The provided cget/configure methods allow add, delete and changing of options. The implementation can be used in C and in Tcl.

The new widgets **graph** and **path** are also implemented as **oo::class**. This will make it easy to extent the functionality. As an example see the file `.../library/graph.tcl` in which the method **binding** of the **graph** widget is implemented.

# Implementation

A patch implementing these changes is available in the fossil
repository in the [tip-510 branch](https://core.tcl-lang.org/tk/timeline?r=tip-510).

## Documentation

Documentation is available in md-Format in the .../doc/ directory.

- [`tkoWidget.3.md`](https://core.tcl-lang.org/tk/doc/tip-510/doc/tkoWidget.3.md) C interface
- [`tkoWidget.n.md`](https://core.tcl-lang.org/tk/doc/tip-510/doc/tkoWidget.n.md) Tcl interface
- [`path.n.md`](https://core.tcl-lang.org/tk/doc/tip-510/doc/path.n.md) path widget documentation
- [`graph.n.md`](https://core.tcl-lang.org/tk/doc/tip-510/doc/graph.n.md) graph widget documentation
- [`vector.n.md`](https://core.tcl-lang.org/tk/doc/tip-510/doc/vector.n.md) graph::vector command documentation

## C interface

C-source interface files are in `.../generic/tko/`.  No functionality is currently exported.

- [`tkoWidget.h`](https://core.tcl-lang.org/tk/doc/tip-510/generic/tko/tkoWidget.h) **tko::widget** C functions and definitions.
- [`tkoPath.h`](https://core.tcl-lang.org/tk/doc/tip-510/generic/tko/tkoPath.h) **path** widget
- [`tkoGraph.h`](https://core.tcl-lang.org/tk/doc/tip-510/generic/tko/tkoGraph.h) **graph** widget

## C sources

C-source code files are in `.../generic/tko/`. The new files are  added to the makefiles. The calls to the initialization functions are added in tkWindow.c

- [`tkoFrame.c`](https://core.tcl-lang.org/tk/doc/tip-510/generic/tko/tkoFrame.c) **tko::frame**, **tko::labelframe** and **tko::toplevel** implementation
- `tkoGraph*.[ch]` **graph** widget implementation
- `tkoVector*.[ch]` **graph::vector** command implementation
- `tkoRbc*.[ch]` Additional [Rbc][] commands used in **graph** and **graph::vector**
- `tkoGraph*.[ch]` **path** widget implementation
- [`tkoWidget.c`](https://core.tcl-lang.org/tk/doc/tip-510/generic/tko/tkoWidget.c) **tko::widget** base class implementation

## Tcl sources

Tcl-source code is in `.../library/`. The new files are added into `tk.tcl`.

- [`graph.tcl`](https://core.tcl-lang.org/tk/doc/tip-510/library/graph.tcl) graph widget bindings
- [`path.tcl`](https://core.tcl-lang.org/tk/doc/tip-510/library/path.tcl) path widget helper function under **::path**

## Tests

Test files are available in the .../tests/tko/ directory.

- [`tkoFrame.test`](https://core.tcl-lang.org/tk/doc/tip-510/tests/tko/tkoFrame.test) tests from the tk frame.test file plus additional **oo::class** related tests
- [`tkoGraph.test`](https://core.tcl-lang.org/tk/doc/tip-510/tests/tko/tkoGraph.test) **graph** widget tests
- [`tkoGraph_vector.test`](https://core.tcl-lang.org/tk/doc/tip-510/tests/tko/tkoGraph_vector.test) **graph::vector** command tests
- [`tkoPath.test`](https://core.tcl-lang.org/tk/doc/tip-510/tests/tko/tkoPath.test) **path** widget tests

# Discussion

See also discussion at the [wiki](http://wiki.tcl.tk/55360).

A first voting was rejected, mostly because of the missing Mac implementation. See:

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

<http://code.activestate.com/lists/tcl-core/20384/>  

# Open issues

- Mac implementation of **graph** widget. May be borrow code from **path**
- Remove or change old code in `generic/tko/*` files <http://code.activestate.com/lists/tcl-core/20384/>
- Hardcoded usage of compiler and libraries in [`win/Makefile.in`](https://core.tcl-lang.org/tk/doc/tip-510/win/Makefile.in), [`win/makefile.vc`](https://core.tcl-lang.org/tk/doc/tip-510/win/makefile.vc) and [`unix/Makefile.in`](https://core.tcl-lang.org/tk/doc/tip-510/unix/Makefile.in) (search for "#RZ TODO").
- Add **path** files in Mac implementation. It works at least in [Androwish][].
- Which platforms should be used in **path**
  - SDL/AGG: platform independent, more work is needed using [`tkoPath_SDLAGG.cpp`](https://core.tcl-lang.org/tk/doc/tip-510/generic/tko/tkoPath_SDLAGG.cpp). See in [Androwish][]
  - GDI+ on Windows => working with [`tkoPath_WinGDIPlus.cpp`](https://core.tcl-lang.org/tk/doc/tip-510/generic/tko/tkoPath_WinGDIPlus.cpp)
  - Cairo on unix => working with [`tkoPath_UnixCairo.c`](https://core.tcl-lang.org/tk/doc/tip-510/generic/tko/tkoPath_UnixCairo.c)
  - For Mac see [`tkoPath_MacOSX.c`](https://core.tcl-lang.org/tk/doc/tip-510/generic/tko/tkoPath_MacOSX.c)
- Provide demos
- Add more **path** tests
- Is it necessary to translate the documentation into man format?
- It is currently not possible to use unique abbreviations of class method names p.e. "graph .g; .g conf" A workaround would be to add all those method names. May be this can be solved in tcl::oo directly?

Any help especially with the Mac implementation would be great!

Changes to tip/512.md.

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
..
67
68
69
70
71
72
73
74
75
76
77
78
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.

# Context

This TIP is inspired by Tcl commit ["Add custom exit procedure for
tcltests executable"](http://core.tcl.tk/tcl/info/6f650b4271a1ef2e).
This commit demonstrates exactly what's the problem when using
`Tcl_SetExitProc()` in a stub-enabled extension: On win32 this
caused a crash in many unit-tests, when tclsh ended. This problematic
commit was corrected in [this commit](http://core.tcl.tk/tcl/info/df825488e649e15b):
a thread exit handler is how this should have been done. 

# Rationale

When running test-cases in Windows (using mingw-64 or MSVC, but using the
win/Makefile system not the nmake system), the `tclsh` executable
crashes after shutdown in some tests. The reason for this is that
................................................................................
Starting with Tcl 9.0, those stub entries will be removed completely.
In stead, those functions will be defined in tcl.h, as normal
exported symbols, just like `Tcl_MainEx()` (for example).

# Implementation

Currently, the proposed implementation is available in [tip-512 branch]
(https://core.tcl.tk/tcl/timeline?r=tip-512).

# Copyright

This document has been placed in the public domain.






|



|







 







|




15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
..
67
68
69
70
71
72
73
74
75
76
77
78
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.

# Context

This TIP is inspired by Tcl commit ["Add custom exit procedure for
tcltests executable"](https://core.tcl-lang.org/tcl/info/6f650b4271a1ef2e).
This commit demonstrates exactly what's the problem when using
`Tcl_SetExitProc()` in a stub-enabled extension: On win32 this
caused a crash in many unit-tests, when tclsh ended. This problematic
commit was corrected in [this commit](https://core.tcl-lang.org/tcl/info/df825488e649e15b):
a thread exit handler is how this should have been done. 

# Rationale

When running test-cases in Windows (using mingw-64 or MSVC, but using the
win/Makefile system not the nmake system), the `tclsh` executable
crashes after shutdown in some tests. The reason for this is that
................................................................................
Starting with Tcl 9.0, those stub entries will be removed completely.
In stead, those functions will be defined in tcl.h, as normal
exported symbols, just like `Tcl_MainEx()` (for example).

# Implementation

Currently, the proposed implementation is available in [tip-512 branch]
(https://core.tcl-lang.org/tcl/timeline?r=tip-512).

# Copyright

This document has been placed in the public domain.

Changes to tip/513.md.

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        02-Aug-2017
	Post-History:   
	Keywords:       Tcl,data structure
	Tcl-Version:	8.7
	Implementation-URL: https://core.tcl.tk/tips/doc/trunk/attach/513/agendas.tcl
-----

# Abstract

This proposes new commands for Tcl to support efficient dynamically-changing
data structures.







|







3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        02-Aug-2017
	Post-History:   
	Keywords:       Tcl,data structure
	Tcl-Version:	8.7
	Implementation-URL: https://core.tcl-lang.org/tips/doc/trunk/attach/513/agendas.tcl
-----

# Abstract

This proposes new commands for Tcl to support efficient dynamically-changing
data structures.

Changes to tip/514.md.

94
95
96
97
98
99
100
101
102
103
104
105
 * If you still really want to protect some command argument from overflowing, Use Tcl\_GetWideIntFromObj() in this command, and use "string is wide" to check for proper range.
   But - still better - is use Tcl\_GetWideIntFromObj(), while falling back to Tcl\_GetBignumFromObj() if the range requires it.
   That's what Tcl itself is doing almost everywhere to prevent under/overflow errors.

# Implementation

Currently, the proposed implementation is available in the [tip-514 branch]
(https://core.tcl.tk/tcl/timeline?r=tip-514).

# Copyright

This document has been placed in the public domain.






|




94
95
96
97
98
99
100
101
102
103
104
105
 * If you still really want to protect some command argument from overflowing, Use Tcl\_GetWideIntFromObj() in this command, and use "string is wide" to check for proper range.
   But - still better - is use Tcl\_GetWideIntFromObj(), while falling back to Tcl\_GetBignumFromObj() if the range requires it.
   That's what Tcl itself is doing almost everywhere to prevent under/overflow errors.

# Implementation

Currently, the proposed implementation is available in the [tip-514 branch]
(https://core.tcl-lang.org/tcl/timeline?r=tip-514).

# Copyright

This document has been placed in the public domain.

Changes to tip/515.md.

70
71
72
73
74
75
76
77
78
79
80
81
    $ proc 2do arg {puts $arg}
	% apply {{} {uplevel 2do OK}}
	OK

# Implementation

Currently, the proposed implementation is available in the [tip-515 branch]
(https://core.tcl.tk/tcl/timeline?r=tip-515).

# Copyright

This document has been placed in the public domain.






|




70
71
72
73
74
75
76
77
78
79
80
81
    $ proc 2do arg {puts $arg}
	% apply {{} {uplevel 2do OK}}
	OK

# Implementation

Currently, the proposed implementation is available in the [tip-515 branch]
(https://core.tcl-lang.org/tcl/timeline?r=tip-515).

# Copyright

This document has been placed in the public domain.

Changes to tip/517.md.

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
For backwards compatibility reasons, this new option will have its defaults such that the rendering is unchanged compared to the current state of affairs, i.e. it will be **raised** on Linux, and **flat** on other platforms.

This new option will be accepted on all platforms, however on macOS it will be silently ignored since the native menues are used on this platform (***TkpDrawMenuEntry*** is an empty procedure on macOS).

# Implementation

An implementation of this TIP can be found in the [tip-517 branch]
(https://core.tcl.tk/tk/timeline?r=tip-517).

# Alternatives

Alternatively, instead of adding a new **-activerelief** menu option, the issue raised in [bug 43b596451e] (https://core.tcl-lang.org/tk/tktview/43b596451ec6b59359145ff32e689a2eec70bb85) could be resolved by changing the rendering of the active entry in Linux menues to become **TK\_RELIEF\_FLAT**, and keep the current **TK\_RELIEF\_RAISED** only if **tk\_strictMotif** is set. The drawback is that this would constitute a backwards incompatible change - However in turn this could be deemed acceptable in the current alpha state of 8.7.

An implementation for this alternate proposal can be found in [branch tip-517-alt] (https://core.tcl.tk/tk/timeline?r=tip-517-alt).

Having balanced the pros and cons between the two approaches, I'd prefer to add **-activerelief**, which in addition to be a backwards compatible change, has the merit of introducing additional configuration flexibility.

# Copyright

This document has been placed in the public domain.







|





|







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
For backwards compatibility reasons, this new option will have its defaults such that the rendering is unchanged compared to the current state of affairs, i.e. it will be **raised** on Linux, and **flat** on other platforms.

This new option will be accepted on all platforms, however on macOS it will be silently ignored since the native menues are used on this platform (***TkpDrawMenuEntry*** is an empty procedure on macOS).

# Implementation

An implementation of this TIP can be found in the [tip-517 branch]
(https://core.tcl-lang.org/tk/timeline?r=tip-517).

# Alternatives

Alternatively, instead of adding a new **-activerelief** menu option, the issue raised in [bug 43b596451e] (https://core.tcl-lang.org/tk/tktview/43b596451ec6b59359145ff32e689a2eec70bb85) could be resolved by changing the rendering of the active entry in Linux menues to become **TK\_RELIEF\_FLAT**, and keep the current **TK\_RELIEF\_RAISED** only if **tk\_strictMotif** is set. The drawback is that this would constitute a backwards incompatible change - However in turn this could be deemed acceptable in the current alpha state of 8.7.

An implementation for this alternate proposal can be found in [branch tip-517-alt] (https://core.tcl-lang.org/tk/timeline?r=tip-517-alt).

Having balanced the pros and cons between the two approaches, I'd prefer to add **-activerelief**, which in addition to be a backwards compatible change, has the merit of introducing additional configuration flexibility.

# Copyright

This document has been placed in the public domain.

Changes to tip/518.md.

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
...
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
A **frame** keeping a size without reason just feels like a bug and mostly leads to unwanted results.

Mostly, it looks just ugly, but there are critical use-cases, specially in scrolled frames.

When the BWidget autoscroll package is used, which displays scrollbars on demand, the scrollbars do not disappear if the contents is gone.
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
................................................................................
	    .c.f configure -height 1
	    .c.f configure -height 0
        }
	bind .c.f <<NoManagedChild>> frameNoChild

# Reference Implementation

Emiliano has provided a [ticket 2863003fff](https://core.tcl.tk/tk/info/2863003fff) with the implementation in [branch bug-d6b95ce492](https://core.tcl.tk/tk/timeline?r=bug-d6b95ce492&nd&c=2016-09-21+06%3A32%3A55&n=200).

This solution is now continued with the tag "tip518-event-last-child-unmanaged".

Koen Dankart and François Vogel have worked on the solution of the similar tip474, which is available in [branch tip-454](http://core.tcl.tk/tk/timeline?n=100&r=tip-454).
This information may eventually also be relevant.

# Rejected Proposal

[TIP 454](454.md) has proposed to set the size of the widget automatically to 1x1 (the initial size if no widget packed/gridded).

Please read the discussion within the TIP which led to withdraw the proposal.






|







 







|



|







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
...
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
A **frame** keeping a size without reason just feels like a bug and mostly leads to unwanted results.

Mostly, it looks just ugly, but there are critical use-cases, specially in scrolled frames.

When the BWidget autoscroll package is used, which displays scrollbars on demand, the scrollbars do not disappear if the contents is gone.
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-lang.org/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
................................................................................
	    .c.f configure -height 1
	    .c.f configure -height 0
        }
	bind .c.f <<NoManagedChild>> frameNoChild

# Reference Implementation

Emiliano has provided a [ticket 2863003fff](https://core.tcl-lang.org/tk/info/2863003fff) with the implementation in [branch bug-d6b95ce492](https://core.tcl-lang.org/tk/timeline?r=bug-d6b95ce492&nd&c=2016-09-21+06%3A32%3A55&n=200).

This solution is now continued with the tag "tip518-event-last-child-unmanaged".

Koen Dankart and François Vogel have worked on the solution of the similar tip474, which is available in [branch tip-454](https://core.tcl-lang.org/tk/timeline?n=100&r=tip-454).
This information may eventually also be relevant.

# Rejected Proposal

[TIP 454](454.md) has proposed to set the size of the widget automatically to 1x1 (the initial size if no widget packed/gridded).

Please read the discussion within the TIP which led to withdraw the proposal.

Changes to tip/527.md.

120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
...
280
281
282
283
284
285
286
287
288
289
290
	timerate -overhead $ovh {
	  clock format $tm -format %H
	  incr tm [expr {24*60*60}]; # overhead for this is ignored
	} 5000

### Impact

As the current implementation in [sebres-8-6-timerate](/tcl/timeline?n=100&r=sebres-8-6-timerate) 
(or, for Tcl 8.5, [sebres-8-5-timerate](/tcl/timeline?n=100&r=sebres-8-5-timerate)) shows, no public API's are affected by introducing this,
A few new functions are provided for Tcl's internal API (see `tclInt.h`).

Don Porter (`dgp`) has made a review of the version of this change that  targets Tcl 8.7, which can be found in branch [dgp-sebres-timerate-review](/tcl/timeline?n=100&r=dgp-sebres-timerate-review).
The branch already contains the performance testing  framework as well as a new script, `tests-perf/clock.perf.tcl` that instruments the `clock` command in preparation for integrating changes that improve its performance..

<hr/>
## II. Proposed performance-testing framework: `::tclTestPerf`

The small test suite in the `::tclTestPerf` namespace allows for batch-based measurement and diff-based results
to compare performamnce among revisions and detect performance regressions.
................................................................................
	Max:
	0.448517 µs/# 1015517 # 2229568 #/sec 455.477 nett-ms
	********************************************************************************

### Examples

For the usage examples of this test-framework, see 
[clock-speedup-branch - tests-perf/clock.perf.tcl](/tcl/artifact/afee4f40621652b1) or
[event-perf-branch - tests-perf/test-performance.tcl](/tcl/artifact/70523c268fdf9e3e).

For the result example (produced with clock.perf.tcl) see [diff in sebres/tcl#2](https://github.com/sebres/tcl/pull/2).






|
|


|







 







|
|


120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
...
280
281
282
283
284
285
286
287
288
289
290
	timerate -overhead $ovh {
	  clock format $tm -format %H
	  incr tm [expr {24*60*60}]; # overhead for this is ignored
	} 5000

### Impact

As the current implementation in [sebres-8-6-timerate](https://core.tcl-lang.org/tcl/timeline?n=100&r=sebres-8-6-timerate) 
(or, for Tcl 8.5, [sebres-8-5-timerate](https://core.tcl-lang.org/tcl/timeline?n=100&r=sebres-8-5-timerate)) shows, no public API's are affected by introducing this,
A few new functions are provided for Tcl's internal API (see `tclInt.h`).

Don Porter (`dgp`) has made a review of the version of this change that  targets Tcl 8.7, which can be found in branch [dgp-sebres-timerate-review](https://core.tcl-lang.org/tcl/timeline?n=100&r=dgp-sebres-timerate-review).
The branch already contains the performance testing  framework as well as a new script, `tests-perf/clock.perf.tcl` that instruments the `clock` command in preparation for integrating changes that improve its performance..

<hr/>
## II. Proposed performance-testing framework: `::tclTestPerf`

The small test suite in the `::tclTestPerf` namespace allows for batch-based measurement and diff-based results
to compare performamnce among revisions and detect performance regressions.
................................................................................
	Max:
	0.448517 µs/# 1015517 # 2229568 #/sec 455.477 nett-ms
	********************************************************************************

### Examples

For the usage examples of this test-framework, see 
[clock-speedup-branch - tests-perf/clock.perf.tcl](https://core.tcl-lang.org/tcl/artifact/afee4f40621652b1) or
[event-perf-branch - tests-perf/test-performance.tcl](https://core.tcl-lang.org/tcl/artifact/70523c268fdf9e3e).

For the result example (produced with clock.perf.tcl) see [diff in sebres/tcl#2](https://github.com/sebres/tcl/pull/2).

Changes to tip/537.md.

38
39
40
41
42
43
44
45
46
47
48
49
Also a new macro `TCL_INDEX_NONE` will be provided, which is the value of the
`start` and `end` fields when there is no match.
This macro will be provided to 8.7 as well, but in Tcl 8.7 it will have the value (-1).

# Implementation

An implementation of this TIP is present in the [regexp-api-64bit](/tcl/timeline?r=regexp-api-64bit) branch. 

# Copyright

This document has been placed in the public domain.






|




38
39
40
41
42
43
44
45
46
47
48
49
Also a new macro `TCL_INDEX_NONE` will be provided, which is the value of the
`start` and `end` fields when there is no match.
This macro will be provided to 8.7 as well, but in Tcl 8.7 it will have the value (-1).

# Implementation

An implementation of this TIP is present in the [regexp-api-64bit](https://core.tcl-lang.org/tcl/timeline?r=regexp-api-64bit) branch. 

# Copyright

This document has been placed in the public domain.

Changes to tip/539.md.

102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
      -foo|-bar|-baz

# Implementation Notes

An implementation exists (it's a very trivial to modify **dict filter** 
… **value** to work this way: just add an inner loop over the list of 
patterns); see [patch #2370575](/tcl/tktview/2370575).

What might be tricky is the case of **dict filter** … **key**, since 
this currently has an optimisation for the case of a pattern without glob 
metacharacters that would be very desirable to keep for the motivating 
use-case of selecting specific keys from a dictionary. The natural way to 
do that would be to make the loop over patterns the outer loop and the 
loop over dictionary entries the inner loop, which is only entered if the 






|







102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
      -foo|-bar|-baz

# Implementation Notes

An implementation exists (it's a very trivial to modify **dict filter** 
… **value** to work this way: just add an inner loop over the list of 
patterns); see [patch #2370575](https://core.tcl-lang.org/tcl/tktview/2370575).

What might be tricky is the case of **dict filter** … **key**, since 
this currently has an optimisation for the case of a pattern without glob 
metacharacters that would be very desirable to keep for the motivating 
use-case of selecting specific keys from a dictionary. The natural way to 
do that would be to make the loop over patterns the outer loop and the 
loop over dictionary entries the inner loop, which is only entered if the 

Changes to tip/542.md.

103
104
105
106
107
108
109
110
111
112
113
114
 * If Tcl is compiled with -DTCL\_UTF\_MAX=4, the deprecated functions will be gone. Any
   extension using those, even if the extesion is compiled with -DTCL\_UTF\_MAX=3, won't work any more.

# Reference Implementation

A reference implementation is available in  the **utf-max** branch.
<https://core.tcl.tk/tcl/timeline?r=utf-max>

# Copyright

This document has been placed in the public domain.






|




103
104
105
106
107
108
109
110
111
112
113
114
 * If Tcl is compiled with -DTCL\_UTF\_MAX=4, the deprecated functions will be gone. Any
   extension using those, even if the extesion is compiled with -DTCL\_UTF\_MAX=3, won't work any more.

# Reference Implementation

A reference implementation is available in  the **utf-max** branch.
<https://core.tcl-lang.org/tcl/timeline?r=utf-max>

# Copyright

This document has been placed in the public domain.

Changes to tip/544.md.

39
40
41
42
43
44
45
46
47
48
49
50
# Compatibility

This is fully upwards compatible with Tcl 8.6.

# Reference Implementation

Available on branch [tip-544](/tcl/timeline?t=tip-544).

# Copyright

This document has been placed in the public domain.






|




39
40
41
42
43
44
45
46
47
48
49
50
# Compatibility

This is fully upwards compatible with Tcl 8.6.

# Reference Implementation

Available on branch [tip-544](https://core.tcl-lang.org/tcl/timeline?t=tip-544).

# Copyright

This document has been placed in the public domain.

Changes to tip/546.md.

66
67
68
69
70
71
72
73
74
75
76
77
# Specification

# Compatibility

# Reference Implementation

Will be drafted in [tip-546](/tcl/timeline?r=tip-546) branches.

# Copyright

This document has been placed in the public domain.






|




66
67
68
69
70
71
72
73
74
75
76
77
# Specification

# Compatibility

# Reference Implementation

Will be drafted in [tip-546](https://core.tcl-lang.org/tcl/timeline?r=tip-546) branches.

# Copyright

This document has been placed in the public domain.

Changes to tip/547.md.

44
45
46
47
48
49
50
51
52
53
54
55
# Compatibility

This is fully upwards compatible, except when Tcl is compiled with `-DTCL_UTF_MAX=6` (which is - actually - not supported).

# Reference Implementation

A reference implementation is available in  the **tip-547** branch.
<https://core.tcl.tk/tcl/timeline?r=tip-547>

# Copyright

This document has been placed in the public domain.






|




44
45
46
47
48
49
50
51
52
53
54
55
# Compatibility

This is fully upwards compatible, except when Tcl is compiled with `-DTCL_UTF_MAX=6` (which is - actually - not supported).

# Reference Implementation

A reference implementation is available in  the **tip-547** branch.
<https://core.tcl-lang.org/tcl/timeline?r=tip-547>

# Copyright

This document has been placed in the public domain.

Changes to tip/548.md.

83
84
85
86
87
88
89
90
91
92
93
94
This is fully upwards compatible in Tcl 8.x, except if Tcl is compiled with `-DTCL_UTF_MAX=6` (not officially supported) or
`-DTCL_NO_DEPRECATED`. Starting with Tcl 9.0, the replacement functions should be used in stead.

# Reference Implementation

A reference implementation is available in  the **tip-548** branch.
<https://core.tcl.tk/tcl/timeline?r=tip-548>

# Copyright

This document has been placed in the public domain.






|




83
84
85
86
87
88
89
90
91
92
93
94
This is fully upwards compatible in Tcl 8.x, except if Tcl is compiled with `-DTCL_UTF_MAX=6` (not officially supported) or
`-DTCL_NO_DEPRECATED`. Starting with Tcl 9.0, the replacement functions should be used in stead.

# Reference Implementation

A reference implementation is available in  the **tip-548** branch.
<https://core.tcl-lang.org/tcl/timeline?r=tip-548>

# Copyright

This document has been placed in the public domain.

Changes to tip/549.md.

31
32
33
34
35
36
37
38
39
40
41
42
If you want a 32-bit build, you should explicitly specify `--disable-64bit` with `configure`.
That will work with any Tcl version, older ones too.

# Reference Implementation

A reference implementation is available in  the **tip-549** branch.
<https://core.tcl.tk/tcl/timeline?r=tip-549>

# Copyright

This document has been placed in the public domain.






|




31
32
33
34
35
36
37
38
39
40
41
42
If you want a 32-bit build, you should explicitly specify `--disable-64bit` with `configure`.
That will work with any Tcl version, older ones too.

# Reference Implementation

A reference implementation is available in  the **tip-549** branch.
<https://core.tcl-lang.org/tcl/timeline?r=tip-549>

# Copyright

This document has been placed in the public domain.