Check-in [8d29318a60]

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:merge trunk
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | evilotto-index
Files: files | file ages | folders
SHA3-256: 8d29318a6091cfd6aef7451c255536c1879f0cd625430e963a4b6e9cf3a801bd
User & Date: dkf 2019-04-29 08:17:54
Context
2019-04-29
08:20
Update from evilotto check-in: fca70f702b user: dkf tags: evilotto-index
08:17
merge trunk check-in: 8d29318a60 user: dkf tags: evilotto-index
2019-04-28
16:58
Updated TIP 383. Got a real implementation now. check-in: 8f3996df9a user: dkf tags: trunk
2019-04-12
10:25
Updated the index check-in: 4db101a6ea user: dkf tags: evilotto-index
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to index.json.

1

2
3
4
5
6
7
8
9
..
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
..
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
...
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
...
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
...
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
...
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
...
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
...
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
...
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
...
535
536
537
538
539
540
541
542
543
{"tip": {

	"538":{"url":"./tip/538.md","keywords":"Tcl","created":"9-April-2019","post-history":"","state":"Draft","tcl-branch":"digit-bit-60","tcl-version":"8.7","vote":"","type":"Project","title":"# TIP 538: Externalize libtommath","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"537":{"url":"./tip/537.md","keywords":"Tcl","created":"7-April-2019","post-history":"","state":"Draft","tcl-branch":"regexp-api-64bit","tcl-version":"9.0","vote":"","type":"Project","title":"# TIP 537: Enable 64-bit indexes in regexp matching","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"536":{"url":"./tip/536.md","keywords":"Tk","created":"29-March-2019","post-history":"","state":"Draft","tk-branch":"mac_services","tcl-version":"8.6","vote":"","type":"Project","title":"# TIP 536: Improvements to Mac-specific IPC in Tk","author":["Kevin Walzer <[email protected]>"],"is-jest":false},
	"535":{"url":"./tip/535.md","keywords":"Tcl","created":"10-March-2019","post-history":"","state":"Final","tcl-branch":"scale-tick-format","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 535: Remove trailing zeroes in scale ticks","author":["Francois Vogel <[email protected]>"],"is-jest":false},
	"534":{"url":"./tip/534.md","keywords":"Tcl","created":"02-March-2019","post-history":"","state":"Draft","tcl-branch":"dkf-experimental-fast-number-hash","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 534: Faster Hashing of Small Integers","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"533":{"url":"./tip/533.md","keywords":"Tk, menubutton","":"","[menu man page](https":"//www.tcl.tk/man/tcl/TkCmd/menu.htm).","state":"Final","type":"Project","tk-branch":"bug-70e531918e","author":["Marc Culler"],"three arguments":"two coordinates and an index.  That function uses the","[70e531918e](https":"//core.tcl-lang.org/tk/tktview/70e531918e6d99cbdd8b527386fec15872c64216).","created":"13-Jan-2019","by calling <b>":":tk::PostOverPoint</b> which, like the proposed extension, accepts","a method <b>[nsmenu popupmenupositioningitem":"atLocation:inView]</b> which draws the","title":"# TIP 533: Extension of the menu post command.","the [bug-70e531918e](https":"//core.tcl-lang.org/tk/timeline?r=bug-70e531918e)","post-history":"","vote":"Done","tcl-version":"8.6","is-jest":false},
	"532":{"url":"./tip/532.md","moreover the following issues have been solved":"","keywords":"Tk, bind, event, event loop","":"","[generic/tkbind.c](http":"//core.tcl.tk/tk/artifact/e41f45f7f6ac3447?ln=3287-3307).","this has been observed in applications [scid](http":"//scid.sourceforge.net), and","state":"Draft","branch [bug6e8afe516d-87](https":"//core.tcl-lang.org/tk/timeline?r=bug6e8afe516d-87)","type":"Project","tk-branch":"bug6e8afe516d","issue (1)":"Legacy implementation is computing the time difference of nth click with first click,","says (<code>man bind</code>)":"","author":["Gregor Cramer <[email protected]>"],"(same with applications [scid](http":"//scid.sourceforge.net), and","[bind-33.13](https":"//core.tcl-lang.org/tk/artifact/6377cb0d762b7261?ln=6550-6566).","5. legacy implementation cannot handle homogeneous equal sequences properly, see this script":"","branch [bug6e8afe516d](https":"//core.tcl-lang.org/tk/timeline?r=bug6e8afe516d)","2. immediately after startup of application [scidb](http":"//scidb.sourceforge.net)","[bug6e8afe516d](https":"//core.tcl-lang.org/tk/timeline?r=bug6e8afe516d)","created":"09-Jan-2019","manual (<code>man bind</code>) says":"","[bind-32.2](https":"//core.tcl-lang.org/tk/artifact/6377cb0d762b7261?ln=6123-6143)).","title":"# TIP 532: Re-implementation of event loop processing.","how to choose the most specific binding, has to be changed":"","4. see following code":"","can be expressed in a different way":"","[bind-32.4](https":"//core.tcl-lang.org/tk/artifact/6377cb0d762b7261?ln=6158-6171).","this problem occurs often in application [scidb](http":"//scidb.sourceforge.net),","post-history":"","[bind-32.6](https":"//core.tcl-lang.org/tk/artifact/6377cb0d762b7261?ln=6172-6191).","vote":"Pending","tcl-version":"8.6 and 8.7","[severe bugs in binding (tkbind.c)](https":"//core.tcl-lang.org/tk/tktview/6e8afe516df85f6213f436ef7c2fab2ec2d11c76).","[scid vs pc](http":"//scidvspc.sourceforge.net).","the following problems, caused by event ring overflow, have been solved":"","is-jest":false},
	"531":{"url":"./tip/531.md","keywords":"Tcl, stubs","":"","state":"Draft","type":"Project","author":["Shannon Noe <[email protected]>"],"created":"14-Dec-2018","title":"# TIP 531: Static Tcl Interpreter Creation Function","post-history":"","vote":"Pending","tcl-version":"8.7","tcl-branch":"tip-531","/usr/local/include/tcl8.6/tcldecls.h":"#define Tcl_CreateInterp \\","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","created":"9-May-2018","post-history":"","state":"Draft","tk-branch":"tip-507","tcl-version":"8.7","vote":"In progress","type":"Project","title":"# TIP 507: Include simple SVG support with nanosvg","author":["René Zaumseil <[email protected]>"],"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},
	"505":{"url":"./tip/505.md","state":"Final","type":"Project","author":["Don Porter <[email protected]>"],"vote-results":"8/0/1 accepted","votes-for":"DKF, KBK, JN, JD, DGP, FV, SL, AK","votes-against":"none","created":"26-Mar-2018","title":"# TIP 505: Make [lreplace] Accept All Out-of-Range Index Values","post-history":"","tcl-branch":"tip-505","vote":"Done","tcl-version":"8.6.9","votes-present":"BG","is-jest":false},
	"504":{"url":"./tip/504.md","keywords":"Tcl,string,insert","obsoletes":"475","created":"21-Mar-2018","post-history":"","state":"Draft","tcl-branch":"dgp-string-insert","tcl-version":"8.7","vote":"In progress","type":"Project","title":"# TIP 504: New subcommand [string insert]","author":["Don Porter <[email protected]>"],"is-jest":false},
	"503":{"url":"./tip/503.md","created":"05-Feb-2018","post-history":"","state":"Final","tcl-branch":"tip-503","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 503: End Tcl 8.3 Source Compatibility Support","author":["Don Porter <[email protected]>"],"is-jest":false},
	"502":{"url":"./tip/502.md","created":"26-Feb-2018","post-history":"","state":"Final","tcl-branch":"tip-502","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 502: Index Value Reform","author":["Don Porter <[email protected]>"],"is-jest":false},
	"501":{"url":"./tip/501.md","keywords":"Tcl,string","state":"Final","vote-summary":"Accepted 5/0/1","type":"Project","author":["Sean Woods <[email protected]>"],"votes-against":"none","votes-for":"DKF, KBK, JN, FV, SL","created":"12-Feb-2018","title":"# TIP 501: string is dict","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-501","votes-present":"BG","is-jest":false},
	"500":{"url":"./tip/500.md","keywords":"Tcl, object orientation, visibility","state":"Final","type":"Project","author":["Donal K. Fellows <[email protected]>"],"votes-for":"DKF, JN, AF, JD, SL, AK, KBK","votes-against":"none","created":"10-Feb-2018","title":"# TIP 500: Private Methods and Variables in TclOO","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-500","is-jest":false},
	"499":{"url":"./tip/499.md","keywords":"msgcat, oo","created":"07-Dec-2017","post-history":"","state":"Final","tcl-branch":"tip499-msgcat-custom-preferences","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 499: Custom locale search list for msgcat","author":["Harald Oehlmann <[email protected]>"],"is-jest":false},
	"498":{"url":"./tip/498.md","keywords":"tcl","created":"18-Jan-2016","post-history":"","state":"Draft","tcl-branch":"bug-e593adf103-core-8","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 498: Simplify Tcl_DeleteNamespace","author":["Nathan Coulter <[email protected]>"],"is-jest":false},
	"497":{"url":"./tip/497.md","keywords":"Tcl","created":"23-Jan-2018","post-history":"","state":"Draft","tcl-branch":"tip-497","tcl-version":"9.0","vote":"Pending","type":"Project","title":"# TIP 497: Full support for Unicode 11.0 and later (part 2)","discussions-to":"Tcl Core list","author":["Jan Nijtmans <[email protected]>","Jan Nijtmans <[email protected]>","Don Porter <[email protected]>"],"is-jest":false},
................................................................................
	"490":{"url":"./tip/490.md","keywords":"msgcat, oo","created":"07-Dec-2017","post-history":"","state":"Final","tcl-branch":"tip490-msgcat-oo-2","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 490: msgcat for TclOO","author":["Harald Oehlmann <[email protected]>"],"is-jest":false},
	"489":{"url":"./tip/489.md","keywords":"canvas, image","created":"02-Dec-2017","post-history":"","state":"Final","tk-branch":"canvas_image","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 489: Add image widget command to the Tk canvas","author":["Scott Pitcher <[email protected]>"],"is-jest":false},
	"488":{"url":"./tip/488.md","keywords":"Tcl, string representation, floating-point","created":"24-Nov-2017","post-history":"","state":"Final","tcl-branch":"tip-488","tcl-version":"9.0","vote":"Done","type":"Project","title":"# TIP 488: Remove tcl_precision","author":["Arjen Markus <[email protected]>"],"is-jest":false},
	"487":{"url":"./tip/487.md","created":"20-Nov-2017","post-history":"","state":"Final","tcl-branch":"tip-487","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 487: Stop support for Pre-XP Windows","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"486":{"url":"./tip/486.md","created":"13-Nov-2017","post-history":"","state":"Draft","tcl-version":"9.0","vote":"Pending","type":"Project","title":"# TIP 486: Thread 3.0 is for Tcl 9","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"485":{"url":"./tip/485.md","created":"08-Nov-2017","post-history":"","state":"Final","tcl-branch":"tip-485","tcl-version":"9.0","vote":"Done","type":"Project","title":"# TIP 485: Remove Deprecated API","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"484":{"url":"./tip/484.md","keywords":"Tcl","created":"06-Nov-2017","post-history":"","state":"Final","tcl-branch":"no-wideint","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 484: Merge 'int' and 'wideInt' Obj-type to a single 'int'","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"483":{"url":"./tip/483.md","keywords":"Tk, configuration","created":"03-Nov-2017","post-history":"","state":"Accepted","tk-branch":"tk-stu-pkg","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 483: Improved TIP #59 implementation for Tk","author":["Stuart Cassoff <[email protected]>"],"is-jest":false},
	"482":{"url":"./tip/482.md","keywords":"Tk, demos, configuration","created":"03-Nov-2017","post-history":"","state":"Accepted","tk-branch":"tk-stu-pkg","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 482: Record Tk demo directory information","author":["Stuart Cassoff <[email protected]>"],"is-jest":false},
	"481":{"url":"./tip/481.md","keywords":"Tcl","created":"27-Oct-2017","post-history":"","state":"Draft","tcl-branch":"tip-481","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 481: `Tcl_GetStringFromObj()` with `size_t` length parameter","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"480":{"url":"./tip/480.md","keywords":"assertion, pragma, type, alias, compilation","created":"25-Oct-2017","post-history":"","state":"Draft","tcl-branch":"tip-480","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 480: Type and Alias Assertions for Tcl","author":["Kevin B. Kenny <[email protected]>"],"is-jest":false},
	"479":{"url":"./tip/479.md","keywords":"Tcl,procedure,argument handling","created":"23-Oct-2017","post-history":"","state":"Draft","tcl-branch":"tip479","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 479: Add Named Procedures as a New Command in Tcl (dictargs::proc)","author":["Sean Woods <[email protected]>"],"is-jest":false},
	"478":{"url":"./tip/478.md","keywords":"Tcl","state":"Final","type":"Project","author":["Gerald Lester <[email protected]>","Donal K. Fellows <[email protected]>"],"votes-for":"DKF, AK, JD, SL, JN","votes-against":"none","created":"18-Oct-2017","title":"# TIP 478: Add Expected Class Level Behaviors to oo::class","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-478","is-jest":false},
	"477":{"url":"./tip/477.md","keywords":"Windows nmake build","created":"30-Sep-2017","post-history":"","state":"Final","tcl-branch":"vc-reform","tcl-version":"8.6.8","vote":"Done","type":"Project","title":"# TIP 477: Modernize the nmake build system","author":["Ashok P. Nadkarni <[email protected]>"],"is-jest":false},
	"476":{"url":"./tip/476.md","keywords":"scan, printf","created":"27-Sep-2017","post-history":"PM","state":"Final","tcl-branch":"z_modifier","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 476: Scan/Printf format consistency","author":["Jan Nijtmans ([email protected])"],"is-jest":false},
	"475":{"url":"./tip/475.md","keywords":"Tcl,string,insert","created":"22-Sep-2017","post-history":"","state":"Rejected","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 475: Add [string insert] Command and C API","author":["Andy Goth ([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]>"],"is-jest":false},
	"389":{"url":"./tip/389.md","keywords":"Tcl","created":"23-Aug-2011","post-history":"","state":"Final","tcl-branch":"tip-389","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 389: Full support for Unicode 10.0 and later (part 1)","discussions-to":"Tcl Core list","author":["Jan Nijtmans <[email protected]>","Jan Nijtmans <[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","created":"03-Dec-2010","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 383: Injecting Code into Suspended Coroutines","author":["Alexandre Ferrieux <[email protected]>","Miguel Sofer <[email protected]>"],"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},
................................................................................
	"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},
	"368":{"url":"./tip/368.md","keywords":"Tk","created":"10-May-2010","obsoleted-by":"441","post-history":"","state":"Withdrawn","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 368: Listbox Justification Option","author":["Russell Davidson <[email protected]>"],"is-jest":false},
	"367":{"url":"./tip/367.md","keywords":"Tcl, delete, item","created":"18-May-2010","post-history":"","state":"Draft","tcl-branch":"tip-367","vote":"In progress","tcl-version":"8.7","type":"Project","title":"# TIP 367: A Command to Remove Elements from a List","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"366":{"url":"./tip/366.md","tk-ticket":"2996760","keywords":"Tk","created":"29-Apr-2010","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 366: Variable Sized Indicators for Menubuttons","author":["Russell Davidson <[email protected]>"],"is-jest":false},
	"365":{"url":"./tip/365.md","keywords":"Look at the date","created":"01-Apr-2010","post-history":"","state":"Draft","vote":"No voting","tcl-version":"8.6","type":"Project","title":"# TIP 365: Add Python Compatibility Mode","author":["Donal K. Fellows <[email protected]>"],"is-jest":true},
	"364":{"url":"./tip/364.md","keywords":"Tcl","created":"19-Mar-2010","post-history":"","state":"Final","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 364: Threading Support: Configuration and Package","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"363":{"url":"./tip/363.md","keywords":"expand,{*},vector,math","created":"02-Mar-2010","post-history":"","state":"Draft","vote":"Pending","tcl-version":"9.0","type":"Project","title":"# TIP 363: Vector Math in the Tcl Core","author":["Karl C. Hansen <[email protected]>"],"is-jest":false},
	"362":{"url":"./tip/362.md","tcl-ticket":"2960976","keywords":"Windows,Tcl","created":"01-Mar-2010","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 362: Simple 32 and 64 bit Registry Support","author":["Damon Courtney <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"361":{"url":"./tip/361.md","created":"03-Feb-2010","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 361: Releasing Channel Buffers","author":["Wayne Cuddy <[email protected]>"],"is-jest":false},
	"360":{"url":"./tip/360.md","tk-ticket":"2920409","keywords":"Tk, X11, menu","created":"24-Dec-2009","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 360: Modernize X11 Menus","author":["Pat Thoyts <[email protected]>"],"is-jest":false},
................................................................................
	"349":{"url":"./tip/349.md","created":"17-Apr-2009","post-history":"","state":"Draft","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 349: New \"-cargo\" option for every Tk widget","author":["Zbigniew Baniewski <[email protected]>"],"is-jest":false},
	"348":{"url":"./tip/348.md","tcl-ticket":"2868499","keywords":"Tcl,debugging","created":"26-Feb-2009","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 348: Substituted 'errorstack' / 'traceback'","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"347":{"url":"./tip/347.md","keywords":"Tcl","created":"09-Feb-2009","obsoleted-by":"395","post-history":"","state":"Withdrawn","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 347: Align 'string is ...' to Type-Conversion Functions in 'expr'","discussions-to":"news:comp.lang.tcl","author":["Jos Decoster <[email protected]>"],"is-jest":false},
	"346":{"url":"./tip/346.md","tcl-ticket":"1665628","keywords":"Tcl,encoding,convertto,strict,Unicode,String,ByteArray","created":"02-Feb-2009","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 346: Error on Failed String Encodings","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"345":{"url":"./tip/345.md","tcl-ticket":"2564363","keywords":"Tcl,encoding,invalid UTF-8","created":"05-Feb-2009","post-history":"","state":"Final","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 345: Kill the 'identity' Encoding","discussions-to":"Tcl Core List","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"344":{"url":"./tip/344.md","created":"31-Dec-2008","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 344: Bring TCP_NODELAY and SO_KEEPALIVE to socket options","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"343":{"url":"./tip/343.md","tcl-ticket":"2368084","keywords":"Tcl,binary","created":"03-Dec-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 343: A Binary Specifier for [format/scan]","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"342":{"url":"./tip/342.md","keywords":"dictionary, default value","created":"27-Nov-2008","post-history":"","state":"Draft","tcl-branch":"tip-342","tcl-version":"8.7","vote":"In progress","type":"Project","title":"# TIP 342: Dict Get With Default","author":["Lars Hellström <[email protected]>"],"is-jest":false},
	"341":{"url":"./tip/341.md","tcl-ticket":"2370575","keywords":"Tcl, set intersection","created":"27-Nov-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 341: Multiple 'dict filter' Patterns","author":["Lars Hellström <[email protected]>"],"is-jest":false},
	"340":{"url":"./tip/340.md","keywords":"Tcl_SetResult","created":"14-Nov-2008","post-history":"","state":"Withdrawn","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 340: Const Qualification of Tcl_SetResult's Argument","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"339":{"url":"./tip/339.md","created":"14-Nov-2008","post-history":"","state":"Rejected","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 339: Case-Insensitive Package Names","author":["Andreas Kupries <[email protected]>"],"is-jest":false},
	"338":{"url":"./tip/338.md","keywords":"Tcl, Tk, tclsh, wish","created":"22-Oct-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 338: Embedder Access to Startup Scripts of *_Main()","author":["Don Porter <[email protected]>"],"is-jest":false},
	"337":{"url":"./tip/337.md","created":"21-Oct-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 337: Make TclBackgroundException() Public","author":["Don Porter <[email protected]>"],"is-jest":false},
	"336":{"url":"./tip/336.md","created":"21-Oct-2008","post-history":"","state":"Final","tcl-branch":"tip-330-336","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 336: Supported Access To interp->errorline","author":["Don Porter <[email protected]>"],"is-jest":false},
	"335":{"url":"./tip/335.md","keywords":"numLevels,embedding,terminate,async,thread,safe,gc","created":"13-Oct-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 335: An API for Detecting Active Interpreters","author":["Joe Mistachkin <[email protected]>"],"is-jest":false},
................................................................................
	"319":{"url":"./tip/319.md","created":"04-Jun-2008","post-history":"","state":"Draft","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 319: Implement Backwards Compatibility for ttk Themed Widgets in tk Widgets","author":["Eric Taylor <[email protected]>"],"is-jest":false},
	"318":{"url":"./tip/318.md","created":"13-May-2008","post-history":"","state":"Final","tcl-branch":"tip-318-update","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 318: Extend Default Whitespace in 'string trim' Beyond ASCII","author":["Bill Poser <[email protected]>"],"is-jest":false},
	"317":{"url":"./tip/317.md","tcl-ticket":"1956530","keywords":"base64,uuencode,hex,transfer encoding","created":"03-May-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 317: Extend binary Ensemble with Binary Encodings","author":["Pat Thoyts <[email protected]>"],"is-jest":false},
	"316":{"url":"./tip/316.md","created":"02-May-2008","post-history":"","state":"Final","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 316: Portable Access Functions for Stat Buffers","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"315":{"url":"./tip/315.md","created":"04-Apr-2008","post-history":"","state":"Final","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 315: Add pathSeparator to tcl_platform Array","author":["Hai Vu <[email protected]>"],"is-jest":false},
	"314":{"url":"./tip/314.md","tcl-ticket":"1901783","created":"26-Feb-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 314: Ensembles with Parameters","author":["Lars Hellström <[email protected]>"],"is-jest":false},
	"313":{"url":"./tip/313.md","tcl-ticket":"1894241","keywords":"Tcl","created":"14-Feb-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 313: Inexact Searching in Sorted List","author":["Peter Spjuth <[email protected]>"],"is-jest":false},
	"312":{"url":"./tip/312.md","tcl-ticket":"1992824","keywords":"variable,trace","created":"26-Jan-2008","post-history":"","state":"Draft","tcl-version":"8.7","vote":"In progress","type":"Project","title":"# TIP 312: Add More Link Types","author":["Rene Zaumseil <[email protected]>","Larry W. Virden <[email protected]>"],"is-jest":false},
	"311":{"url":"./tip/311.md","created":"08-Jan-2008","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 311: Tcl/Tk 8.6 Release Calendar","author":["Don Porter <[email protected]>","Larry W. Virden <[email protected]>","Joe Mistachkin <[email protected]>","Pat Thoyts <[email protected]>","Miguel Sofer <[email protected]>","Lars Hellström <[email protected]>","Alexandre Ferrieux <[email protected]>","Arnulf Wiedemann <[email protected]>","Trevor Davel <[email protected]>","Donal K. Fellows <[email protected]>","Jan Nijtmans <[email protected]>"],"is-jest":false},
	"310":{"url":"./tip/310.md","keywords":"expr","created":"07-Jan-2008","post-history":"","state":"Rejected","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 310: Add a New Pseudo-Random Number Generator","author":["Arjen Markus <[email protected]>"],"is-jest":false},
	"309":{"url":"./tip/309.md","keywords":"expr, parse","created":"07-Jan-2008","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 309: Expose the Expression Parsing","author":["Arjen Markus <[email protected]>"],"is-jest":false},
	"308":{"url":"./tip/308.md","created":"15-Nov-2007","obsoleted-by":"350","post-history":"","state":"Final","vote":"Done","type":"Informative","title":"# TIP 308: Tcl Database Connectivity (TDBC)","author":["Kevin B. Kenny <[email protected]>","Artur Trzewik <[email protected]>","Andreas Leitgeb <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"307":{"url":"./tip/307.md","tcl-ticket":"1723738","keywords":"Tcl, result, transfer, interpreter, API rename","created":"28-Sep-2007","post-history":"","state":"Final","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 307: Make TclTransferResult() Public","author":["Erik Leunissen <[email protected]>"],"is-jest":false},
	"306":{"url":"./tip/306.md","keywords":"automatic,Tk,widget,naming","created":"11-Jun-2007","post-history":"","state":"Rejected","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 306: Auto-Naming Widgets","author":["Koen Danckaert <[email protected]>","Richard Suchenwirth <[email protected]>"],"is-jest":false},
	"305":{"url":"./tip/305.md","created":"21-Feb-2007","post-history":"","state":"Withdrawn","tcl-version":"8.5","vote":"Pending","type":"Project","title":"# TIP 305: ANSI Escape Sequence Support for Windows's Console Channel Driver","discussions-to":"news:comp.lang.tcl","author":["David Gravereaux <[email protected]>"],"is-jest":false},
................................................................................
	"269":{"url":"./tip/269.md","tcl-ticket":"1491459","keywords":"Tcl,lists,strings","created":"19-May-2006","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 269: Add 'string is list' to the 'string is' Subcommand","author":["Joe Mistachkin <[email protected]>"],"is-jest":false},
	"268":{"url":"./tip/268.md","tcl-ticket":"1520767","created":"28-Apr-2006","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 268: Enhance 'package' Version Handling","author":["Jeff Hobbs <[email protected]>","Hemang Lavana <[email protected]>","Andreas Kupries <[email protected]>","Don Porter <[email protected]>"],"is-jest":false},
	"267":{"url":"./tip/267.md","tcl-ticket":"1476191","created":"25-Apr-2006","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 267: Allow 'exec' to Ignore Stderr","author":["Nathan Bell <[email protected]>"],"is-jest":false},
	"266":{"url":"./tip/266.md","keywords":"Tcl,unknown,expression","created":"11-Apr-2006","post-history":"","state":"Rejected","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 266: Numbers are Commands","author":["Kristoffer Lawson <[email protected]>","Michal Malecki <[email protected]>","Wolf-Dieter Busch <[email protected]>","Paul Nash <[email protected]>"],"is-jest":false},
	"265":{"url":"./tip/265.md","tcl-ticket":"1446696","keywords":"Command line parsing, C implementation","created":"03-Apr-2006","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 265: A Convenient C-side Command Option Parser for Tcl","author":["Sam Bromley <[email protected]>"],"is-jest":false},
	"264":{"url":"./tip/264.md","keywords":"Tk, C API","created":"01-Apr-2006","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 264: Add Function to Retrieve the Interpreter of a Window","author":["George Petasis <[email protected]>"],"is-jest":false},
	"263":{"url":"./tip/263.md","created":"01-Apr-2006","post-history":"","state":"Draft","tcl-version":"9.2","vote":"Pending","type":"Project","title":"# TIP 263: Quantum Tcl","author":["Lars Hellström <[email protected]>"],"is-jest":true},
	"262":{"url":"./tip/262.md","keywords":"Tk,option","created":"18-Mar-2006","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 262: Background Images for Frames","author":["Eric Taylor <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"261":{"url":"./tip/261.md","tcl-ticket":"1437008","created":"20-Dec-2005","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 261: Return Imported Commands from [namespace import]","author":["Martin Lemburg <[email protected]>","<[email protected]>"],"is-jest":false},
	"260":{"url":"./tip/260.md","created":"04-Jan-2006","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 260: Add Underline Option to Canvas Text Items","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"259":{"url":"./tip/259.md","created":"12-Dec-2005","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 259: Making 'exec' Optionally Binary Safe","author":["Andreas Leitgeb <[email protected]>"],"is-jest":false},
	"258":{"url":"./tip/258.md","tcl-ticket":"1413934","keywords":"encoding","created":"01-Oct-2005","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 258: Enhanced Interface for Encodings","author":["Don Porter <[email protected]>"],"is-jest":false},
	"257":{"url":"./tip/257.md","obsoletes":"50","created":"26-Sep-2005","post-history":"","state":"Final","tcl-branch":"tip-257-implementation-branch","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 257: Object Orientation for Tcl","author":["Donal K. Fellows <[email protected]>","Will Duquette <[email protected]>","Steve Landers <[email protected]>","Jeff Hobbs <[email protected]>","Kevin Kenny <[email protected]>","Miguel Sofer <[email protected]>","Richard Suchenwirth <[email protected]>","Larry W. Virden <[email protected]>"],"is-jest":false},
	"256":{"url":"./tip/256.md","tk-ticket":"1247835","created":"12-Aug-2005","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 256: Implement Tabular and Wordprocessor Style Tabbing","author":["Vince Darley <[email protected]>","Vince Darley <[email protected]>"],"is-jest":false},
	"255":{"url":"./tip/255.md","tcl-ticket":"1309020","created":"21-Jul-2005","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 255: Add 'min' and 'max' [expr] Functions","author":["Jeff Hobbs <[email protected]>"],"is-jest":false},
................................................................................
	"231":{"url":"./tip/231.md","tk-ticket":"1062022","created":"06-Nov-2004","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 231: Support for [wm attributes] on X11","author":["Joe English <[email protected]>"],"is-jest":false},
	"230":{"url":"./tip/230.md","tcl-ticket":"1163274","created":"02-Nov-2004","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 230: Tcl Channel Transformation Reflection API","author":["Andreas Kupries <[email protected]>","Andreas Kupries <[email protected]>","Andreas Kupries <[email protected]>"],"is-jest":false},
	"229":{"url":"./tip/229.md","tcl-ticket":"1159942","created":"03-Nov-2004","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 229: Scripted Control of Name Resolution in Namespaces","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"228":{"url":"./tip/228.md","created":"02-Nov-2004","post-history":"","state":"Draft","implementation-url":"http://sourceforge.net/projects/tclvfs/","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 228: Tcl Filesystem Reflection API","author":["Andreas Kupries <[email protected]>","Andreas Kupries <[email protected]>","Vince Darley <[email protected]>"],"is-jest":false},
	"227":{"url":"./tip/227.md","tcl-ticket":"1060579","keywords":"Tcl","created":"30-Oct-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 227: Interface to Get and Set the Return Options of an Interpreter","author":["Don Porter <[email protected]>"],"is-jest":false},
	"226":{"url":"./tip/226.md","tcl-ticket":"1060579","keywords":"Tcl","created":"30-Oct-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 226: Interface to Save and Restore Interpreter State","author":["Don Porter <[email protected]>"],"is-jest":false},
	"225":{"url":"./tip/225.md","tcl-ticket":"1052584","created":"25-Oct-2004","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 225: Arithmetic Series with Optimized Space Complexity","author":["Salvatore Sanfilippo <[email protected]>","Miguel Sofer <[email protected]>"],"is-jest":false},
	"224":{"url":"./tip/224.md","created":"28-Sep-2004","post-history":"","state":"Draft","tcl-branch":"tip-224","tcl-version":"8.7","vote":"In progress","type":"Project","title":"# TIP 224: Add New [array] Subcommand 'value'","author":["Peter MacDonald <[email protected]>","Robert Seeger <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"223":{"url":"./tip/223.md","tk-ticket":"1032982","created":"21-Sep-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 223: Full-Screen Toplevel Support for Tk","author":["Mo DeJong <[email protected]>"],"is-jest":false},
	"222":{"url":"./tip/222.md","tk-ticket":"892194","keywords":"Tk","created":"16-Sep-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 222: Add [wm attributes -alpha] Attribute on Windows","author":["Jeff Hobbs <[email protected]>","Andreas Kupries <[email protected]>"],"is-jest":false},
	"221":{"url":"./tip/221.md","tcl-ticket":"1060579","keywords":"bgerror,return,options","created":"15-Sep-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 221: Allow Background Error Handlers to Accept Return Options","author":["Don Porter <[email protected]>"],"is-jest":false},
	"220":{"url":"./tip/220.md","tcl-ticket":"1057093","created":"12-Sep-2004","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 220: Escalate Privileges in VFS Close Callback","author":["Colin McCormack <[email protected]>","Andreas Kupries <[email protected]>","Vince Darley <[email protected]>"],"is-jest":false},
	"219":{"url":"./tip/219.md","tcl-ticket":"1025294","created":"09-Sep-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 219: Tcl Channel Reflection API","author":["Andreas Kupries <[email protected]>","Andreas Kupries <[email protected]>"],"is-jest":false},
	"218":{"url":"./tip/218.md","tcl-ticket":"875701","created":"09-Sep-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 218: Tcl Channel Driver Thread State Actions","author":["Andreas Kupries <[email protected]>","Andreas Kupries <[email protected]>","Larry W. Virden <[email protected]>","David Gravereaux <[email protected]>"],"is-jest":false},
	"217":{"url":"./tip/217.md","tcl-ticket":"1017532","keywords":"Tcl,lsort,parallel lists","created":"26-Aug-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 217: Getting Sorted Indices out of Lsort","author":["James P. Salsman <[email protected]>"],"is-jest":false},
................................................................................
	"171":{"url":"./tip/171.md","created":"05-Mar-2004","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 171: Change Default <MouseWheel> Bindings Behavior","author":["Jeff Hobbs <[email protected]>","Keith Vetter <[email protected]>"],"is-jest":false},
	"170":{"url":"./tip/170.md","created":"30-Jan-2004","post-history":"","state":"Draft","implementation-url":"http://nac.sf.net/","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 170: Better Support for Nested Lists","author":["Sergey Babkin <[email protected]>","Don Porter <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"169":{"url":"./tip/169.md","tk-ticket":"994629","created":"28-Jan-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 169: Add Peer Text Widgets","author":["Brian Griffin <[email protected]>","Vince Darley <[email protected]>"],"is-jest":false},
	"168":{"url":"./tip/168.md","tk-ticket":"886240","created":"25-Jan-2004","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 168: Cubic Bezier Curves on the Canvas","author":["Lars Hellström <[email protected]>"],"is-jest":false},
	"167":{"url":"./tip/167.md","tk-ticket":"845248ffffffffffffff","created":"19-Nov-2003","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 167: Add a New Option for Context Help for Windows","author":["Ramon Ribó <[email protected]>"],"is-jest":false},
	"166":{"url":"./tip/166.md","keywords":"Tk,image get,image put","created":"19-Nov-2003","post-history":"","state":"Final","tk-branch":"tip-166","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 166: Reading and Writing the Photo Image Alpha Channel","author":["Donal K. Fellows <[email protected]>","Simon Bachmann <[email protected]>"],"is-jest":false},
	"165":{"url":"./tip/165.md","tk-ticket":"1008975","keywords":"Tk,substitution","created":"17-Nov-2003","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 165: A User-Data Field for Virtual Events","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"164":{"url":"./tip/164.md","keywords":"Tk,canvas","created":"17-Nov-2003","post-history":"","state":"Draft","tk-branch":"tip-164","tcl-version":"8.7","vote":"In progress","type":"Project","title":"# TIP 164: Add Rotate Subcommand to the Canvas Widget","author":["Arjen Markus <[email protected]>","Dimitrios Zachariadis <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"163":{"url":"./tip/163.md","tcl-ticket":"745851","created":"14-Nov-2003","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 163: A [dict merge] Subcommand","author":["Joe English <[email protected]>"],"is-jest":false},
	"162":{"url":"./tip/162.md","created":"23-Oct-2003","post-history":"","state":"Final","tcl-branch":"rmax-ipv6-branch","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 162: IPv6 Sockets for Tcl","author":["Rafael Martínez Torres <[email protected]>","Donal K. Fellows <[email protected]>","Reinhard Max <[email protected]>"],"is-jest":false},
	"161":{"url":"./tip/161.md","created":"19-Oct-2003","post-history":"","state":"Final","tk-branch":"tip-161","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 161: Change Default for Menu's -tearoff Option to False","author":["Mark Roseman <[email protected]>","Francois Vogel <[email protected]>"],"is-jest":false},
	"160":{"url":"./tip/160.md","created":"17-Oct-2003","post-history":"","state":"Draft","tcl-branch":"tip-160","vote":"In progress","tcl-version":"8.7","type":"Project","title":"# TIP 160: Improvements to Terminal and Serial Channel Handling","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"159":{"url":"./tip/159.md","tk-ticket":"815751","created":"01-Oct-2003","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 159: Extending Tk 'wm' Command to Support Coloured Icons","author":["Georgios Petasis <[email protected]>"],"is-jest":false},
	"158":{"url":"./tip/158.md","tk-ticket":"797404","created":"20-Sep-2003","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 158: Distinguish the two 'Enter' keys on Windows","discussions-to":"news:comp.lang.tcl","author":["Wolfgang Großbauer <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"157":{"url":"./tip/157.md","obsoletes":"144","created":"20-Sep-2003","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 157: Argument Expansion with Leading {expand}","author":["Kevin B. Kenny <[email protected]>","Peter Spjuth <[email protected]>","Donal K. Fellows <[email protected]>","Don Porter <[email protected]>"],"is-jest":false},
	"156":{"url":"./tip/156.md","tcl-ticket":"809825","created":"20-Sep-2003","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 156: Language-Neutral Root Locale for Msgcat","discussions-to":"news:comp.lang.tcl","author":["Kevin Kenny <[email protected]>"],"is-jest":false},
	"155":{"url":"./tip/155.md","tk-ticket":"791292","created":"08-Sep-2003","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 155: Fix Some of the Text Widget's Limitations","author":["Vince Darley <[email protected]>"],"is-jest":false},
	"154":{"url":"./tip/154.md","created":"03-Sep-2003","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 154: Add Named Colors to Tk","author":["Damon Courtney <[email protected]>"],"is-jest":false},
	"153":{"url":"./tip/153.md","created":"26-Aug-2003","post-history":"","state":"Final","implementation-url":"http://www.eecs.umich.edu/~mckay/computer/winfotop.patch","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 153: Enhancing the [winfo toplevel] Command","author":["Neil McKay <[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 <lvird[email protected]>"],"is-jest":false},
	"3":{"url":"./tip/3.md","created":"14-Sep-2000","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","post-history":"","state":"Active","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": 538
}, "@timestamp": 1555064725}
>
|







 







|


|







 







|
|







 







|







 







|







 







|







 







|







 







|







 







|







 







|



|







 







|
|
1
2
3
4
5
6
7
8
9
10
..
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
..
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
...
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
...
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
...
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
...
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
...
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
...
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
...
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
...
536
537
538
539
540
541
542
543
544
{"tip": {
	"539":{"url":"./tip/539.md","tcl-ticket":"2370575","keywords":"Tcl, dict filter, set intersection","created":"27-Nov-2008","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 539: Multiple dict filter patterns","author":["Lars Hellström <[email protected]>"],"is-jest":false},
	"538":{"url":"./tip/538.md","keywords":"Tcl","created":"9-April-2019","post-history":"","state":"Draft","tcl-branch":"digit-bit-60","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 538: Externalize libtommath","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"537":{"url":"./tip/537.md","keywords":"Tcl","created":"7-April-2019","post-history":"","state":"Draft","tcl-branch":"regexp-api-64bit","tcl-version":"9.0","vote":"","type":"Project","title":"# TIP 537: Enable 64-bit indexes in regexp matching","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"536":{"url":"./tip/536.md","keywords":"Tk","created":"29-March-2019","post-history":"","state":"Draft","tk-branch":"mac_services","tcl-version":"8.6","vote":"","type":"Project","title":"# TIP 536: Improvements to Mac-specific IPC in Tk","author":["Kevin Walzer <[email protected]>"],"is-jest":false},
	"535":{"url":"./tip/535.md","keywords":"Tcl","created":"10-March-2019","post-history":"","state":"Final","tcl-branch":"scale-tick-format","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 535: Remove trailing zeroes in scale ticks","author":["Francois Vogel <[email protected]>"],"is-jest":false},
	"534":{"url":"./tip/534.md","keywords":"Tcl","created":"02-March-2019","post-history":"","state":"Draft","tcl-branch":"dkf-experimental-fast-number-hash","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 534: Faster Hashing of Small Integers","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"533":{"url":"./tip/533.md","keywords":"Tk, menubutton","":"","[menu man page](https":"//www.tcl.tk/man/tcl/TkCmd/menu.htm).","state":"Final","type":"Project","tk-branch":"bug-70e531918e","author":["Marc Culler"],"three arguments":"two coordinates and an index.  That function uses the","[70e531918e](https":"//core.tcl-lang.org/tk/tktview/70e531918e6d99cbdd8b527386fec15872c64216).","created":"13-Jan-2019","by calling <b>":":tk::PostOverPoint</b> which, like the proposed extension, accepts","a method <b>[nsmenu popupmenupositioningitem":"atLocation:inView]</b> which draws the","title":"# TIP 533: Extension of the menu post command.","the [bug-70e531918e](https":"//core.tcl-lang.org/tk/timeline?r=bug-70e531918e)","post-history":"","vote":"Done","tcl-version":"8.6","is-jest":false},
	"532":{"url":"./tip/532.md","moreover the following issues have been solved":"","keywords":"Tk, bind, event, event loop","":"","[generic/tkbind.c](http":"//core.tcl.tk/tk/artifact/e41f45f7f6ac3447?ln=3287-3307).","this has been observed in applications [scid](http":"//scid.sourceforge.net), and","state":"Draft","branch [bug6e8afe516d-87](https":"//core.tcl-lang.org/tk/timeline?r=bug6e8afe516d-87)","type":"Project","tk-branch":"bug6e8afe516d","issue (1)":"Legacy implementation is computing the time difference of nth click with first click,","says (<code>man bind</code>)":"","author":["Gregor Cramer <[email protected]>"],"(same with applications [scid](http":"//scid.sourceforge.net), and","[bind-33.13](https":"//core.tcl-lang.org/tk/artifact/6377cb0d762b7261?ln=6550-6566).","5. legacy implementation cannot handle homogeneous equal sequences properly, see this script":"","branch [bug6e8afe516d](https":"//core.tcl-lang.org/tk/timeline?r=bug6e8afe516d)","2. immediately after startup of application [scidb](http":"//scidb.sourceforge.net)","[bug6e8afe516d](https":"//core.tcl-lang.org/tk/timeline?r=bug6e8afe516d)","created":"09-Jan-2019","manual (<code>man bind</code>) says":"","[bind-32.2](https":"//core.tcl-lang.org/tk/artifact/6377cb0d762b7261?ln=6123-6143)).","title":"# TIP 532: Re-implementation of event loop processing.","how to choose the most specific binding, has to be changed":"","4. see following code":"","can be expressed in a different way":"","[bind-32.4](https":"//core.tcl-lang.org/tk/artifact/6377cb0d762b7261?ln=6158-6171).","this problem occurs often in application [scidb](http":"//scidb.sourceforge.net),","post-history":"","[bind-32.6](https":"//core.tcl-lang.org/tk/artifact/6377cb0d762b7261?ln=6172-6191).","vote":"Pending","tcl-version":"8.6 and 8.7","[severe bugs in binding (tkbind.c)](https":"//core.tcl-lang.org/tk/tktview/6e8afe516df85f6213f436ef7c2fab2ec2d11c76).","[scid vs pc](http":"//scidvspc.sourceforge.net).","the following problems, caused by event ring overflow, have been solved":"","is-jest":false},
	"531":{"url":"./tip/531.md","keywords":"Tcl, stubs","":"","state":"Draft","type":"Project","author":["Shannon Noe <[email protected]>"],"created":"14-Dec-2018","title":"# TIP 531: Static Tcl Interpreter Creation Function","post-history":"","vote":"Pending","tcl-version":"8.7","tcl-branch":"tip-531","/usr/local/include/tcl8.6/tcldecls.h":"#define Tcl_CreateInterp \\","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},
	"505":{"url":"./tip/505.md","state":"Final","type":"Project","author":["Don Porter <[email protected]>"],"vote-results":"8/0/1 accepted","votes-for":"DKF, KBK, JN, JD, DGP, FV, SL, AK","votes-against":"none","created":"26-Mar-2018","title":"# TIP 505: Make [lreplace] Accept All Out-of-Range Index Values","post-history":"","tcl-branch":"tip-505","vote":"Done","tcl-version":"8.6.9","votes-present":"BG","is-jest":false},
	"504":{"url":"./tip/504.md","keywords":"Tcl,string,insert","state":"Final","type":"Project","author":["Don Porter <[email protected]>"],"votes-against":"none","votes-for":"DKF, JN, DGP, FV, SL, AK","created":"21-Mar-2018","obsoletes":"475","title":"# TIP 504: New subcommand [string insert]","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"dgp-string-insert","votes-present":"none","is-jest":false},
	"503":{"url":"./tip/503.md","created":"05-Feb-2018","post-history":"","state":"Final","tcl-branch":"tip-503","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 503: End Tcl 8.3 Source Compatibility Support","author":["Don Porter <[email protected]urceforge.net>"],"is-jest":false},
	"502":{"url":"./tip/502.md","created":"26-Feb-2018","post-history":"","state":"Final","tcl-branch":"tip-502","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 502: Index Value Reform","author":["Don Porter <[email protected]>"],"is-jest":false},
	"501":{"url":"./tip/501.md","keywords":"Tcl,string","state":"Final","vote-summary":"Accepted 5/0/1","type":"Project","author":["Sean Woods <[email protected]>"],"votes-against":"none","votes-for":"DKF, KBK, JN, FV, SL","created":"12-Feb-2018","title":"# TIP 501: string is dict","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-501","votes-present":"BG","is-jest":false},
	"500":{"url":"./tip/500.md","keywords":"Tcl, object orientation, visibility","state":"Final","type":"Project","author":["Donal K. Fellows <[email protected]>"],"votes-for":"DKF, JN, AF, JD, SL, AK, KBK","votes-against":"none","created":"10-Feb-2018","title":"# TIP 500: Private Methods and Variables in TclOO","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-500","is-jest":false},
	"499":{"url":"./tip/499.md","keywords":"msgcat, oo","created":"07-Dec-2017","post-history":"","state":"Final","tcl-branch":"tip499-msgcat-custom-preferences","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 499: Custom locale search list for msgcat","author":["Harald Oehlmann <[email protected]>"],"is-jest":false},
	"498":{"url":"./tip/498.md","keywords":"tcl","created":"18-Jan-2016","post-history":"","state":"Draft","tcl-branch":"bug-e593adf103-core-8","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 498: Simplify Tcl_DeleteNamespace","author":["Nathan Coulter <[email protected]>"],"is-jest":false},
	"497":{"url":"./tip/497.md","keywords":"Tcl","created":"23-Jan-2018","post-history":"","state":"Draft","tcl-branch":"tip-497","tcl-version":"9.0","vote":"Pending","type":"Project","title":"# TIP 497: Full support for Unicode 11.0 and later (part 2)","discussions-to":"Tcl Core list","author":["Jan Nijtmans <[email protected]>","Jan Nijtmans <[email protected]>","Don Porter <[email protected]>"],"is-jest":false},
................................................................................
	"490":{"url":"./tip/490.md","keywords":"msgcat, oo","created":"07-Dec-2017","post-history":"","state":"Final","tcl-branch":"tip490-msgcat-oo-2","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 490: msgcat for TclOO","author":["Harald Oehlmann <[email protected]>"],"is-jest":false},
	"489":{"url":"./tip/489.md","keywords":"canvas, image","created":"02-Dec-2017","post-history":"","state":"Final","tk-branch":"canvas_image","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 489: Add image widget command to the Tk canvas","author":["Scott Pitcher <[email protected]>"],"is-jest":false},
	"488":{"url":"./tip/488.md","keywords":"Tcl, string representation, floating-point","created":"24-Nov-2017","post-history":"","state":"Final","tcl-branch":"tip-488","tcl-version":"9.0","vote":"Done","type":"Project","title":"# TIP 488: Remove tcl_precision","author":["Arjen Markus <[email protected]>"],"is-jest":false},
	"487":{"url":"./tip/487.md","created":"20-Nov-2017","post-history":"","state":"Final","tcl-branch":"tip-487","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 487: Stop support for Pre-XP Windows","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"486":{"url":"./tip/486.md","created":"13-Nov-2017","post-history":"","state":"Draft","tcl-version":"9.0","vote":"Pending","type":"Project","title":"# TIP 486: Thread 3.0 is for Tcl 9","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"485":{"url":"./tip/485.md","created":"08-Nov-2017","post-history":"","state":"Final","tcl-branch":"tip-485","tcl-version":"9.0","vote":"Done","type":"Project","title":"# TIP 485: Remove Deprecated API","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"484":{"url":"./tip/484.md","keywords":"Tcl","created":"06-Nov-2017","post-history":"","state":"Final","tcl-branch":"no-wideint","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 484: Merge 'int' and 'wideInt' Obj-type to a single 'int'","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"483":{"url":"./tip/483.md","keywords":"Tk, configuration","created":"03-Nov-2017","post-history":"","state":"Final","tk-branch":"tk-stu-pkg","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 483: Improved TIP #59 implementation for Tk","author":["Stuart Cassoff <[email protected]>"],"is-jest":false},
	"482":{"url":"./tip/482.md","keywords":"Tk, demos, configuration","created":"03-Nov-2017","post-history":"","state":"Final","tk-branch":"tk-stu-pkg","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 482: Record Tk demo directory information","author":["Stuart Cassoff <[email protected]>"],"is-jest":false},
	"481":{"url":"./tip/481.md","keywords":"Tcl","created":"27-Oct-2017","post-history":"","state":"Draft","tcl-branch":"tip-481","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 481: `Tcl_GetStringFromObj()` with `size_t` length parameter","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"480":{"url":"./tip/480.md","keywords":"assertion, pragma, type, alias, compilation","created":"25-Oct-2017","post-history":"","state":"Draft","tcl-branch":"tip-480","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 480: Type and Alias Assertions for Tcl","author":["Kevin B. Kenny <[email protected]>"],"is-jest":false},
	"479":{"url":"./tip/479.md","keywords":"Tcl,procedure,argument handling","created":"23-Oct-2017","post-history":"","state":"Draft","tcl-branch":"tip479","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 479: Add Named Procedures as a New Command in Tcl (dictargs::proc)","author":["Sean Woods <[email protected]>"],"is-jest":false},
	"478":{"url":"./tip/478.md","keywords":"Tcl","state":"Final","type":"Project","author":["Gerald Lester <[email protected]>","Donal K. Fellows <[email protected]>"],"votes-for":"DKF, AK, JD, SL, JN","votes-against":"none","created":"18-Oct-2017","title":"# TIP 478: Add Expected Class Level Behaviors to oo::class","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-478","is-jest":false},
	"477":{"url":"./tip/477.md","keywords":"Windows nmake build","created":"30-Sep-2017","post-history":"","state":"Final","tcl-branch":"vc-reform","tcl-version":"8.6.8","vote":"Done","type":"Project","title":"# TIP 477: Modernize the nmake build system","author":["Ashok P. Nadkarni <[email protected]>"],"is-jest":false},
	"476":{"url":"./tip/476.md","keywords":"scan, printf","created":"27-Sep-2017","post-history":"PM","state":"Final","tcl-branch":"z_modifier","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 476: Scan/Printf format consistency","author":["Jan Nijtmans ([email protected])"],"is-jest":false},
	"475":{"url":"./tip/475.md","keywords":"Tcl,string,insert","created":"22-Sep-2017","post-history":"","state":"Rejected","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 475: Add [string insert] Command and C API","author":["Andy Goth ([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]>"],"is-jest":false},
	"389":{"url":"./tip/389.md","keywords":"Tcl","created":"23-Aug-2011","post-history":"","state":"Final","tcl-branch":"tip-389","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 389: Full support for Unicode 10.0 and later (part 1)","discussions-to":"Tcl Core list","author":["Jan Nijtmans <[email protected]>","Jan Nijtmans <[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","created":"03-Dec-2010","post-history":"","state":"Draft","tcl-branch":"tip-383","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 383: Injecting Code into Suspended Coroutines","author":["Alexandre Ferrieux <[email protected]>","Miguel Sofer <msofer@users.sourceforge.net>","Donal K. Fellows <dkf@users.sourceforge.net>"],"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},
................................................................................
	"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},
	"368":{"url":"./tip/368.md","keywords":"Tk","created":"10-May-2010","obsoleted-by":"441","post-history":"","state":"Withdrawn","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 368: Listbox Justification Option","author":["Russell Davidson <[email protected]>"],"is-jest":false},
	"367":{"url":"./tip/367.md","keywords":"Tcl, delete, item","state":"Final","type":"Project","author":["Donal K. Fellows <[email protected]>"],"votes-for":"DKF, JN, DGP, FV, SL, AK","votes-against":"none","created":"18-May-2010","title":"# TIP 367: A Command to Remove Elements from a List","post-history":"","tcl-version":"8.7","vote":"Done","tcl-branch":"tip-367","votes-present":"none","is-jest":false},
	"366":{"url":"./tip/366.md","tk-ticket":"2996760","keywords":"Tk","created":"29-Apr-2010","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 366: Variable Sized Indicators for Menubuttons","author":["Russell Davidson <[email protected]>"],"is-jest":false},
	"365":{"url":"./tip/365.md","keywords":"Look at the date","created":"01-Apr-2010","post-history":"","state":"Draft","vote":"No voting","tcl-version":"8.6","type":"Project","title":"# TIP 365: Add Python Compatibility Mode","author":["Donal K. Fellows <[email protected]>"],"is-jest":true},
	"364":{"url":"./tip/364.md","keywords":"Tcl","created":"19-Mar-2010","post-history":"","state":"Final","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 364: Threading Support: Configuration and Package","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"363":{"url":"./tip/363.md","keywords":"expand,{*},vector,math","created":"02-Mar-2010","post-history":"","state":"Draft","vote":"Pending","tcl-version":"9.0","type":"Project","title":"# TIP 363: Vector Math in the Tcl Core","author":["Karl C. Hansen <[email protected]>"],"is-jest":false},
	"362":{"url":"./tip/362.md","tcl-ticket":"2960976","keywords":"Windows,Tcl","created":"01-Mar-2010","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 362: Simple 32 and 64 bit Registry Support","author":["Damon Courtney <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"361":{"url":"./tip/361.md","created":"03-Feb-2010","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 361: Releasing Channel Buffers","author":["Wayne Cuddy <[email protected]>"],"is-jest":false},
	"360":{"url":"./tip/360.md","tk-ticket":"2920409","keywords":"Tk, X11, menu","created":"24-Dec-2009","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 360: Modernize X11 Menus","author":["Pat Thoyts <[email protected]>"],"is-jest":false},
................................................................................
	"349":{"url":"./tip/349.md","created":"17-Apr-2009","post-history":"","state":"Draft","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 349: New \"-cargo\" option for every Tk widget","author":["Zbigniew Baniewski <[email protected]>"],"is-jest":false},
	"348":{"url":"./tip/348.md","tcl-ticket":"2868499","keywords":"Tcl,debugging","created":"26-Feb-2009","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 348: Substituted 'errorstack' / 'traceback'","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"347":{"url":"./tip/347.md","keywords":"Tcl","created":"09-Feb-2009","obsoleted-by":"395","post-history":"","state":"Withdrawn","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 347: Align 'string is ...' to Type-Conversion Functions in 'expr'","discussions-to":"news:comp.lang.tcl","author":["Jos Decoster <[email protected]>"],"is-jest":false},
	"346":{"url":"./tip/346.md","tcl-ticket":"1665628","keywords":"Tcl,encoding,convertto,strict,Unicode,String,ByteArray","created":"02-Feb-2009","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 346: Error on Failed String Encodings","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"345":{"url":"./tip/345.md","tcl-ticket":"2564363","keywords":"Tcl,encoding,invalid UTF-8","created":"05-Feb-2009","post-history":"","state":"Final","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 345: Kill the 'identity' Encoding","discussions-to":"Tcl Core List","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"344":{"url":"./tip/344.md","created":"31-Dec-2008","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 344: Bring TCP_NODELAY and SO_KEEPALIVE to socket options","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"343":{"url":"./tip/343.md","tcl-ticket":"2368084","keywords":"Tcl,binary","created":"03-Dec-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 343: A Binary Specifier for [format/scan]","author":["Alexandre Ferrieux <[email protected]>"],"is-jest":false},
	"342":{"url":"./tip/342.md","keywords":"dictionary, default value","state":"Final","type":"Project","author":["Lars Hellström <[email protected]>"],"votes-for":"DKF, JN, DGP, SL, AK","votes-against":"none","created":"27-Nov-2008","title":"# TIP 342: Dict Get With Default","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-342","votes-present":"FV","is-jest":false},
	"341":{"url":"./tip/341.md","tcl-ticket":"2370575","keywords":"Tcl, set intersection","created":"27-Nov-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 341: Multiple 'dict filter' Patterns","author":["Lars Hellström <[email protected]>"],"is-jest":false},
	"340":{"url":"./tip/340.md","keywords":"Tcl_SetResult","created":"14-Nov-2008","post-history":"","state":"Withdrawn","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 340: Const Qualification of Tcl_SetResult's Argument","author":["Jan Nijtmans <[email protected]>"],"is-jest":false},
	"339":{"url":"./tip/339.md","created":"14-Nov-2008","post-history":"","state":"Rejected","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 339: Case-Insensitive Package Names","author":["Andreas Kupries <[email protected]>"],"is-jest":false},
	"338":{"url":"./tip/338.md","keywords":"Tcl, Tk, tclsh, wish","created":"22-Oct-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 338: Embedder Access to Startup Scripts of *_Main()","author":["Don Porter <[email protected]>"],"is-jest":false},
	"337":{"url":"./tip/337.md","created":"21-Oct-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 337: Make TclBackgroundException() Public","author":["Don Porter <[email protected]>"],"is-jest":false},
	"336":{"url":"./tip/336.md","created":"21-Oct-2008","post-history":"","state":"Final","tcl-branch":"tip-330-336","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 336: Supported Access To interp->errorline","author":["Don Porter <[email protected]>"],"is-jest":false},
	"335":{"url":"./tip/335.md","keywords":"numLevels,embedding,terminate,async,thread,safe,gc","created":"13-Oct-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 335: An API for Detecting Active Interpreters","author":["Joe Mistachkin <[email protected]>"],"is-jest":false},
................................................................................
	"319":{"url":"./tip/319.md","created":"04-Jun-2008","post-history":"","state":"Draft","vote":"Pending","tcl-version":"8.7","type":"Project","title":"# TIP 319: Implement Backwards Compatibility for ttk Themed Widgets in tk Widgets","author":["Eric Taylor <[email protected]>"],"is-jest":false},
	"318":{"url":"./tip/318.md","created":"13-May-2008","post-history":"","state":"Final","tcl-branch":"tip-318-update","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 318: Extend Default Whitespace in 'string trim' Beyond ASCII","author":["Bill Poser <[email protected]>"],"is-jest":false},
	"317":{"url":"./tip/317.md","tcl-ticket":"1956530","keywords":"base64,uuencode,hex,transfer encoding","created":"03-May-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 317: Extend binary Ensemble with Binary Encodings","author":["Pat Thoyts <[email protected]>"],"is-jest":false},
	"316":{"url":"./tip/316.md","created":"02-May-2008","post-history":"","state":"Final","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 316: Portable Access Functions for Stat Buffers","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"315":{"url":"./tip/315.md","created":"04-Apr-2008","post-history":"","state":"Final","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 315: Add pathSeparator to tcl_platform Array","author":["Hai Vu <[email protected]>"],"is-jest":false},
	"314":{"url":"./tip/314.md","tcl-ticket":"1901783","created":"26-Feb-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 314: Ensembles with Parameters","author":["Lars Hellström <[email protected]>"],"is-jest":false},
	"313":{"url":"./tip/313.md","tcl-ticket":"1894241","keywords":"Tcl","created":"14-Feb-2008","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 313: Inexact Searching in Sorted List","author":["Peter Spjuth <[email protected]>"],"is-jest":false},
	"312":{"url":"./tip/312.md","keywords":"variable,trace","state":"Final","type":"Project","author":["Rene Zaumseil <[email protected]>","Larry W. Virden <[email protected]>"],"votes-for":"DKF, JN, SL, AK","votes-against":"none","created":"26-Jan-2008","title":"# TIP 312: Add More Link Types","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-312-new","votes-present":"DGP, FV","is-jest":false},
	"311":{"url":"./tip/311.md","created":"08-Jan-2008","post-history":"","state":"Draft","vote":"Pending","type":"Informative","title":"# TIP 311: Tcl/Tk 8.6 Release Calendar","author":["Don Porter <[email protected]>","Larry W. Virden <[email protected]>","Joe Mistachkin <[email protected]>","Pat Thoyts <[email protected]>","Miguel Sofer <[email protected]>","Lars Hellström <[email protected]>","Alexandre Ferrieux <[email protected]>","Arnulf Wiedemann <[email protected]>","Trevor Davel <[email protected]>","Donal K. Fellows <[email protected]>","Jan Nijtmans <[email protected]>"],"is-jest":false},
	"310":{"url":"./tip/310.md","keywords":"expr","created":"07-Jan-2008","post-history":"","state":"Rejected","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 310: Add a New Pseudo-Random Number Generator","author":["Arjen Markus <[email protected]>"],"is-jest":false},
	"309":{"url":"./tip/309.md","keywords":"expr, parse","created":"07-Jan-2008","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 309: Expose the Expression Parsing","author":["Arjen Markus <[email protected]>"],"is-jest":false},
	"308":{"url":"./tip/308.md","created":"15-Nov-2007","obsoleted-by":"350","post-history":"","state":"Final","vote":"Done","type":"Informative","title":"# TIP 308: Tcl Database Connectivity (TDBC)","author":["Kevin B. Kenny <[email protected]>","Artur Trzewik <[email protected]>","Andreas Leitgeb <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"307":{"url":"./tip/307.md","tcl-ticket":"1723738","keywords":"Tcl, result, transfer, interpreter, API rename","created":"28-Sep-2007","post-history":"","state":"Final","vote":"Done","tcl-version":"8.6","type":"Project","title":"# TIP 307: Make TclTransferResult() Public","author":["Erik Leunissen <[email protected]>"],"is-jest":false},
	"306":{"url":"./tip/306.md","keywords":"automatic,Tk,widget,naming","created":"11-Jun-2007","post-history":"","state":"Rejected","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 306: Auto-Naming Widgets","author":["Koen Danckaert <[email protected]>","Richard Suchenwirth <[email protected]>"],"is-jest":false},
	"305":{"url":"./tip/305.md","created":"21-Feb-2007","post-history":"","state":"Withdrawn","tcl-version":"8.5","vote":"Pending","type":"Project","title":"# TIP 305: ANSI Escape Sequence Support for Windows's Console Channel Driver","discussions-to":"news:comp.lang.tcl","author":["David Gravereaux <[email protected]>"],"is-jest":false},
................................................................................
	"269":{"url":"./tip/269.md","tcl-ticket":"1491459","keywords":"Tcl,lists,strings","created":"19-May-2006","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 269: Add 'string is list' to the 'string is' Subcommand","author":["Joe Mistachkin <[email protected]>"],"is-jest":false},
	"268":{"url":"./tip/268.md","tcl-ticket":"1520767","created":"28-Apr-2006","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 268: Enhance 'package' Version Handling","author":["Jeff Hobbs <[email protected]>","Hemang Lavana <[email protected]>","Andreas Kupries <[email protected]>","Don Porter <[email protected]>"],"is-jest":false},
	"267":{"url":"./tip/267.md","tcl-ticket":"1476191","created":"25-Apr-2006","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 267: Allow 'exec' to Ignore Stderr","author":["Nathan Bell <[email protected]>"],"is-jest":false},
	"266":{"url":"./tip/266.md","keywords":"Tcl,unknown,expression","created":"11-Apr-2006","post-history":"","state":"Rejected","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 266: Numbers are Commands","author":["Kristoffer Lawson <[email protected]>","Michal Malecki <[email protected]>","Wolf-Dieter Busch <[email protected]>","Paul Nash <[email protected]>"],"is-jest":false},
	"265":{"url":"./tip/265.md","tcl-ticket":"1446696","keywords":"Command line parsing, C implementation","created":"03-Apr-2006","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 265: A Convenient C-side Command Option Parser for Tcl","author":["Sam Bromley <[email protected]>"],"is-jest":false},
	"264":{"url":"./tip/264.md","keywords":"Tk, C API","created":"01-Apr-2006","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 264: Add Function to Retrieve the Interpreter of a Window","author":["George Petasis <[email protected]>"],"is-jest":false},
	"263":{"url":"./tip/263.md","created":"01-Apr-2006","post-history":"","state":"Draft","tcl-version":"9.2","vote":"Pending","type":"Project","title":"# TIP 263: Quantum Tcl","author":["Lars Hellström <[email protected]>"],"is-jest":true},
	"262":{"url":"./tip/262.md","keywords":"Tk,option","created":"18-Mar-2006","post-history":"","state":"Draft","tk-branch":"tip-262","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 262: Background Images for Frames","author":["Eric Taylor <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"261":{"url":"./tip/261.md","tcl-ticket":"1437008","created":"20-Dec-2005","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 261: Return Imported Commands from [namespace import]","author":["Martin Lemburg <[email protected]>","<[email protected]>"],"is-jest":false},
	"260":{"url":"./tip/260.md","created":"04-Jan-2006","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 260: Add Underline Option to Canvas Text Items","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"259":{"url":"./tip/259.md","created":"12-Dec-2005","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 259: Making 'exec' Optionally Binary Safe","author":["Andreas Leitgeb <[email protected]>"],"is-jest":false},
	"258":{"url":"./tip/258.md","tcl-ticket":"1413934","keywords":"encoding","created":"01-Oct-2005","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 258: Enhanced Interface for Encodings","author":["Don Porter <[email protected]>"],"is-jest":false},
	"257":{"url":"./tip/257.md","obsoletes":"50","created":"26-Sep-2005","post-history":"","state":"Final","tcl-branch":"tip-257-implementation-branch","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 257: Object Orientation for Tcl","author":["Donal K. Fellows <[email protected]>","Will Duquette <[email protected]>","Steve Landers <[email protected]>","Jeff Hobbs <[email protected]>","Kevin Kenny <[email protected]>","Miguel Sofer <[email protected]>","Richard Suchenwirth <[email protected]>","Larry W. Virden <[email protected]>"],"is-jest":false},
	"256":{"url":"./tip/256.md","tk-ticket":"1247835","created":"12-Aug-2005","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 256: Implement Tabular and Wordprocessor Style Tabbing","author":["Vince Darley <[email protected]>","Vince Darley <[email protected]>"],"is-jest":false},
	"255":{"url":"./tip/255.md","tcl-ticket":"1309020","created":"21-Jul-2005","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 255: Add 'min' and 'max' [expr] Functions","author":["Jeff Hobbs <[email protected]>"],"is-jest":false},
................................................................................
	"231":{"url":"./tip/231.md","tk-ticket":"1062022","created":"06-Nov-2004","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 231: Support for [wm attributes] on X11","author":["Joe English <[email protected]>"],"is-jest":false},
	"230":{"url":"./tip/230.md","tcl-ticket":"1163274","created":"02-Nov-2004","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 230: Tcl Channel Transformation Reflection API","author":["Andreas Kupries <[email protected]>","Andreas Kupries <[email protected]>","Andreas Kupries <[email protected]>"],"is-jest":false},
	"229":{"url":"./tip/229.md","tcl-ticket":"1159942","created":"03-Nov-2004","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 229: Scripted Control of Name Resolution in Namespaces","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"228":{"url":"./tip/228.md","created":"02-Nov-2004","post-history":"","state":"Draft","implementation-url":"http://sourceforge.net/projects/tclvfs/","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 228: Tcl Filesystem Reflection API","author":["Andreas Kupries <[email protected]>","Andreas Kupries <[email protected]>","Vince Darley <[email protected]>"],"is-jest":false},
	"227":{"url":"./tip/227.md","tcl-ticket":"1060579","keywords":"Tcl","created":"30-Oct-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 227: Interface to Get and Set the Return Options of an Interpreter","author":["Don Porter <[email protected]>"],"is-jest":false},
	"226":{"url":"./tip/226.md","tcl-ticket":"1060579","keywords":"Tcl","created":"30-Oct-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 226: Interface to Save and Restore Interpreter State","author":["Don Porter <[email protected]>"],"is-jest":false},
	"225":{"url":"./tip/225.md","tcl-ticket":"1052584","created":"25-Oct-2004","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 225: Arithmetic Series with Optimized Space Complexity","author":["Salvatore Sanfilippo <[email protected]>","Miguel Sofer <[email protected]>"],"is-jest":false},
	"224":{"url":"./tip/224.md","":"sensible way.","state":"Rejected","type":"Project","author":["Peter MacDonald <[email protected]>","Robert Seeger <[email protected]>","Donal K. Fellows <[email protected]>"],"votes-for":"DKF, JN, SL","votes-against":"DGP, AK","rejection-reason":"","created":"28-Sep-2004","title":"# TIP 224: Add New [array] Subcommand 'value'","post-history":"","vote":"Done","tcl-version":"8.7","tcl-branch":"tip-224","votes-present":"FV","is-jest":false},
	"223":{"url":"./tip/223.md","tk-ticket":"1032982","created":"21-Sep-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 223: Full-Screen Toplevel Support for Tk","author":["Mo DeJong <[email protected]>"],"is-jest":false},
	"222":{"url":"./tip/222.md","tk-ticket":"892194","keywords":"Tk","created":"16-Sep-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 222: Add [wm attributes -alpha] Attribute on Windows","author":["Jeff Hobbs <[email protected]>","Andreas Kupries <[email protected]>"],"is-jest":false},
	"221":{"url":"./tip/221.md","tcl-ticket":"1060579","keywords":"bgerror,return,options","created":"15-Sep-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 221: Allow Background Error Handlers to Accept Return Options","author":["Don Porter <[email protected]>"],"is-jest":false},
	"220":{"url":"./tip/220.md","tcl-ticket":"1057093","created":"12-Sep-2004","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 220: Escalate Privileges in VFS Close Callback","author":["Colin McCormack <[email protected]>","Andreas Kupries <[email protected]>","Vince Darley <[email protected]>"],"is-jest":false},
	"219":{"url":"./tip/219.md","tcl-ticket":"1025294","created":"09-Sep-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 219: Tcl Channel Reflection API","author":["Andreas Kupries <[email protected]>","Andreas Kupries <[email protected]>"],"is-jest":false},
	"218":{"url":"./tip/218.md","tcl-ticket":"875701","created":"09-Sep-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 218: Tcl Channel Driver Thread State Actions","author":["Andreas Kupries <[email protected]>","Andreas Kupries <[email protected]>","Larry W. Virden <[email protected]>","David Gravereaux <[email protected]>"],"is-jest":false},
	"217":{"url":"./tip/217.md","tcl-ticket":"1017532","keywords":"Tcl,lsort,parallel lists","created":"26-Aug-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 217: Getting Sorted Indices out of Lsort","author":["James P. Salsman <[email protected]>"],"is-jest":false},
................................................................................
	"171":{"url":"./tip/171.md","created":"05-Mar-2004","post-history":"","state":"Final","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 171: Change Default <MouseWheel> Bindings Behavior","author":["Jeff Hobbs <[email protected]>","Keith Vetter <[email protected]>"],"is-jest":false},
	"170":{"url":"./tip/170.md","created":"30-Jan-2004","post-history":"","state":"Draft","implementation-url":"http://nac.sf.net/","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 170: Better Support for Nested Lists","author":["Sergey Babkin <[email protected]>","Don Porter <[email protected]>","Donal K. Fellows <[email protected]>"],"is-jest":false},
	"169":{"url":"./tip/169.md","tk-ticket":"994629","created":"28-Jan-2004","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 169: Add Peer Text Widgets","author":["Brian Griffin <[email protected]>","Vince Darley <[email protected]>"],"is-jest":false},
	"168":{"url":"./tip/168.md","tk-ticket":"886240","created":"25-Jan-2004","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 168: Cubic Bezier Curves on the Canvas","author":["Lars Hellström <[email protected]>"],"is-jest":false},
	"167":{"url":"./tip/167.md","tk-ticket":"845248ffffffffffffff","created":"19-Nov-2003","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 167: Add a New Option for Context Help for Windows","author":["Ramon Ribó <[email protected]>"],"is-jest":false},
	"166":{"url":"./tip/166.md","keywords":"Tk,image get,image put","created":"19-Nov-2003","post-history":"","state":"Final","tk-branch":"tip-166","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 166: Reading and Writing the Photo Image Alpha Channel","author":["Donal K. Fellows <[email protected]>","Simon Bachmann <[email protected]>"],"is-jest":false},
	"165":{"url":"./tip/165.md","tk-ticket":"1008975","keywords":"Tk,substitution","created":"17-Nov-2003","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 165: A User-Data Field for Virtual Events","author":["Donal K. Fellows <[email protected]>"],"is-jest":false},
	"164":{"url":"./tip/164.md","keywords":"Tk,canvas","state":"Final","type":"Project","tk-branch":"tip-164","author":["Arjen Markus <[email protected]>","Dimitrios Zachariadis <[email protected]>","Donal K. Fellows <[email protected]>"],"votes-for":"DKF, JN, FV, SL, AK","votes-against":"none","created":"17-Nov-2003","title":"# TIP 164: Add Rotate Subcommand to the Canvas Widget","post-history":"","vote":"Done","tcl-version":"8.7","votes-present":"none","is-jest":false},
	"163":{"url":"./tip/163.md","tcl-ticket":"745851","created":"14-Nov-2003","post-history":"","state":"Final","vote":"Done","tcl-version":"8.5","type":"Project","title":"# TIP 163: A [dict merge] Subcommand","author":["Joe English <[email protected]>"],"is-jest":false},
	"162":{"url":"./tip/162.md","created":"23-Oct-2003","post-history":"","state":"Final","tcl-branch":"rmax-ipv6-branch","tcl-version":"8.6","vote":"Done","type":"Project","title":"# TIP 162: IPv6 Sockets for Tcl","author":["Rafael Martínez Torres <[email protected]>","Donal K. Fellows <[email protected]>","Reinhard Max <[email protected]>"],"is-jest":false},
	"161":{"url":"./tip/161.md","created":"19-Oct-2003","post-history":"","state":"Final","tk-branch":"tip-161","tcl-version":"8.7","vote":"Done","type":"Project","title":"# TIP 161: Change Default for Menu's -tearoff Option to False","author":["Mark Roseman <[email protected]>","Francois Vogel <[email protected]>"],"is-jest":false},
	"160":{"url":"./tip/160.md","state":"Final","type":"Project","author":["Donal K. Fellows <[email protected]>"],"votes-for":"DKF, JN, SL, AK","votes-against":"none","created":"17-Oct-2003","title":"# TIP 160: Improvements to Terminal and Serial Channel Handling","post-history":"","tcl-version":"8.7","vote":"Done","tcl-branch":"tip-160","votes-present":"FV","is-jest":false},
	"159":{"url":"./tip/159.md","tk-ticket":"815751","created":"01-Oct-2003","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 159: Extending Tk 'wm' Command to Support Coloured Icons","author":["Georgios Petasis <[email protected]>"],"is-jest":false},
	"158":{"url":"./tip/158.md","tk-ticket":"797404","created":"20-Sep-2003","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 158: Distinguish the two 'Enter' keys on Windows","discussions-to":"news:comp.lang.tcl","author":["Wolfgang Großbauer <[email protected]>","Kevin Kenny <[email protected]>"],"is-jest":false},
	"157":{"url":"./tip/157.md","obsoletes":"144","created":"20-Sep-2003","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 157: Argument Expansion with Leading {expand}","author":["Kevin B. Kenny <[email protected]>","Peter Spjuth <[email protected]>","Donal K. Fellows <[email protected]>","Don Porter <[email protected]>"],"is-jest":false},
	"156":{"url":"./tip/156.md","tcl-ticket":"809825","created":"20-Sep-2003","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 156: Language-Neutral Root Locale for Msgcat","discussions-to":"news:comp.lang.tcl","author":["Kevin Kenny <[email protected]>"],"is-jest":false},
	"155":{"url":"./tip/155.md","tk-ticket":"791292","created":"08-Sep-2003","post-history":"","state":"Final","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 155: Fix Some of the Text Widget's Limitations","author":["Vince Darley <[email protected]>"],"is-jest":false},
	"154":{"url":"./tip/154.md","created":"03-Sep-2003","post-history":"","state":"Draft","tcl-version":"8.7","vote":"Pending","type":"Project","title":"# TIP 154: Add Named Colors to Tk","author":["Damon Courtney <[email protected]>"],"is-jest":false},
	"153":{"url":"./tip/153.md","created":"26-Aug-2003","post-history":"","state":"Final","implementation-url":"http://www.eecs.umich.edu/~mckay/computer/winfotop.patch","tcl-version":"8.5","vote":"Done","type":"Project","title":"# TIP 153: Enhancing the [winfo toplevel] Command","author":["Neil McKay <[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","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","post-history":"","state":"Active","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": 539
}, "@timestamp": 1556525827}

Changes to index.md.

93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
...
212
213
214
215
216
217
218








219
220
221
222
223
224
225
...
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
...
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
...
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
....
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
....
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
....
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
....
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
....
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
....
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
....
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
....
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233

    <input class="toggler-state"
        data-value="accepted"
        type="checkbox"
        onclick="toggleFacet('state')">Accepted</button>


    <input class="toggler-state"
        data-value="voting"
        type="checkbox"
        onclick="toggleFacet('state')">Voting</button>


    <input class="toggler-state"
        data-value="rejected"
        type="checkbox"
        onclick="toggleFacet('state')">Rejected</button>


................................................................................
<th>Type</th>
<th>Tcl Version</th>
<th>Status</th>
<th>Title</th>
<th>Impl.</th>
</tr></thead><tbody>









<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/538.md'>538</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top'># TIP 538: Externalize libtommath</td>
<td valign='top'><a href='/tcl/timeline?r=digit-bit-60'>Link</a></td>
................................................................................
<td valign='top'><a href='./tip/508.md'>508</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 508: New subcommand [array default]</td>
<td valign='top'><a href='/tcl/timeline?r=tip-508'>Link</a></td>
</tr>
<tr class='state-voting type-project'>
<td valign='top'><a href='./tip/507.md'>507</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Voting</td>
<td valign='top'># TIP 507: Include simple SVG support with nanosvg</td>
<td valign='top'><a href='/tk/timeline?r=tip-507'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/506.md'>506</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
................................................................................
<td valign='top'><a href='./tip/505.md'>505</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6.9</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 505: Make [lreplace] Accept All Out-of-Range Index Values</td>
<td valign='top'><a href='/tcl/timeline?r=tip-505'>Link</a></td>
</tr>
<tr class='state-voting type-project'>
<td valign='top'><a href='./tip/504.md'>504</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Voting</td>
<td valign='top'># TIP 504: New subcommand [string insert]</td>
<td valign='top'><a href='/tcl/timeline?r=dgp-string-insert'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/503.md'>503</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
................................................................................
<td valign='top'><a href='./tip/484.md'>484</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 484: Merge &apos;int&apos; and &apos;wideInt&apos; Obj-type to a single &apos;int&apos;</td>
<td valign='top'><a href='/tcl/timeline?r=no-wideint'>Link</a></td>
</tr>
<tr class='state-accepted type-project version-87'>
<td valign='top'><a href='./tip/483.md'>483</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Accepted</td>
<td valign='top'># TIP 483: Improved TIP #59 implementation for Tk</td>
<td valign='top'><a href='/tk/timeline?r=tk-stu-pkg'>Link</a></td>
</tr>
<tr class='state-accepted type-project version-87'>
<td valign='top'><a href='./tip/482.md'>482</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Accepted</td>
<td valign='top'># TIP 482: Record Tk demo directory information</td>
<td valign='top'><a href='/tk/timeline?r=tk-stu-pkg'>Link</a></td>
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/481.md'>481</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
................................................................................
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/383.md'>383</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top'># TIP 383: Injecting Code into Suspended Coroutines</td>
<td></td>
</tr>
<tr class='state-final type-project version-85'>
<td valign='top'><a href='./tip/382.md'>382</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5.11</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 382: Let tk_getSaveFile ignore file overwrites</td>
................................................................................
<td valign='top'><a href='./tip/368.md'>368</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Obsoleted</td>
<td valign='top'># TIP 368: Listbox Justification Option</td>
<td></td>
</tr>
<tr class='state-voting type-project'>
<td valign='top'><a href='./tip/367.md'>367</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Voting</td>
<td valign='top'># TIP 367: A Command to Remove Elements from a List</td>
<td valign='top'><a href='/tcl/timeline?r=tip-367'>Link</a></td>
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/366.md'>366</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
................................................................................
<td valign='top'><a href='./tip/343.md'>343</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 343: A Binary Specifier for [format/scan]</td>
<td valign='top'><a href='/tcl/tktview/2368084'>Link</a></td>
</tr>
<tr class='state-voting type-project'>
<td valign='top'><a href='./tip/342.md'>342</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Voting</td>
<td valign='top'># TIP 342: Dict Get With Default</td>
<td valign='top'><a href='/tcl/timeline?r=tip-342'>Link</a></td>
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/341.md'>341</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
................................................................................
<td valign='top'><a href='./tip/313.md'>313</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 313: Inexact Searching in Sorted List</td>
<td valign='top'><a href='/tcl/tktview/1894241'>Link</a></td>
</tr>
<tr class='state-voting type-project'>
<td valign='top'><a href='./tip/312.md'>312</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Voting</td>
<td valign='top'># TIP 312: Add More Link Types</td>
<td valign='top'><a href='/tcl/tktview/1992824'>Link</a></td>
</tr>
<tr class='state-draft type-informational'>
<td valign='top'><a href='./tip/311.md'>311</a></td>
<td valign='top' colspan=2>Informational</td>
<td valign='top'>Draft</td>
<td valign='top'># TIP 311: Tcl/Tk 8.6 Release Calendar</td>
</tr>
................................................................................
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/262.md'>262</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top'># TIP 262: Background Images for Frames</td>
<td></td>
</tr>
<tr class='state-final type-project version-85'>
<td valign='top'><a href='./tip/261.md'>261</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 261: Return Imported Commands from [namespace import]</td>
................................................................................
<td valign='top'><a href='./tip/225.md'>225</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top'># TIP 225: Arithmetic Series with Optimized Space Complexity</td>
<td valign='top'><a href='/tcl/tktview/1052584'>Link</a></td>
</tr>
<tr class='state-voting type-project'>
<td valign='top'><a href='./tip/224.md'>224</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Voting</td>
<td valign='top'># TIP 224: Add New [array] Subcommand &apos;value&apos;</td>
<td valign='top'><a href='/tcl/timeline?r=tip-224'>Link</a></td>
</tr>
<tr class='state-final type-project version-85'>
<td valign='top'><a href='./tip/223.md'>223</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5</td>
................................................................................
<td valign='top'><a href='./tip/165.md'>165</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 165: A User-Data Field for Virtual Events</td>
<td valign='top'><a href='/tk/tktview/1008975'>Link</a></td>
</tr>
<tr class='state-voting type-project'>
<td valign='top'><a href='./tip/164.md'>164</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Voting</td>
<td valign='top'># TIP 164: Add Rotate Subcommand to the Canvas Widget</td>
<td valign='top'><a href='/tk/timeline?r=tip-164'>Link</a></td>
</tr>
<tr class='state-final type-project version-85'>
<td valign='top'><a href='./tip/163.md'>163</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5</td>
................................................................................
<td valign='top'><a href='./tip/161.md'>161</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 161: Change Default for Menu&apos;s -tearoff Option to False</td>
<td valign='top'><a href='/tk/timeline?r=tip-161'>Link</a></td>
</tr>
<tr class='state-voting type-project'>
<td valign='top'><a href='./tip/160.md'>160</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Voting</td>
<td valign='top'># TIP 160: Improvements to Terminal and Serial Channel Handling</td>
<td valign='top'><a href='/tcl/timeline?r=tip-160'>Link</a></td>
</tr>
<tr class='state-final type-project version-85'>
<td valign='top'><a href='./tip/159.md'>159</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5</td>






<
<
<
<
<
<







 







>
>
>
>
>
>
>
>







 







|



|







 







|



|







 







|



|



|



|







 







|







 







|



|







 







|



|







 







|



|

|







 







|







 







|



|







 







|



|







 







|



|







93
94
95
96
97
98
99






100
101
102
103
104
105
106
...
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
...
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
...
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
...
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
....
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
....
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
....
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
....
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
....
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
....
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
....
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
....
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235

    <input class="toggler-state"
        data-value="accepted"
        type="checkbox"
        onclick="toggleFacet('state')">Accepted</button>








    <input class="toggler-state"
        data-value="rejected"
        type="checkbox"
        onclick="toggleFacet('state')">Rejected</button>


................................................................................
<th>Type</th>
<th>Tcl Version</th>
<th>Status</th>
<th>Title</th>
<th>Impl.</th>
</tr></thead><tbody>

<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/539.md'>539</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top'># TIP 539: Multiple dict filter patterns</td>
<td valign='top'><a href='/tcl/tktview/2370575'>Link</a></td>
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/538.md'>538</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top'># TIP 538: Externalize libtommath</td>
<td valign='top'><a href='/tcl/timeline?r=digit-bit-60'>Link</a></td>
................................................................................
<td valign='top'><a href='./tip/508.md'>508</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 508: New subcommand [array default]</td>
<td valign='top'><a href='/tcl/timeline?r=tip-508'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/507.md'>507</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 507: Include simple SVG support with nanosvg</td>
<td valign='top'><a href='/tk/timeline?r=tip-507'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/506.md'>506</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
................................................................................
<td valign='top'><a href='./tip/505.md'>505</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6.9</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 505: Make [lreplace] Accept All Out-of-Range Index Values</td>
<td valign='top'><a href='/tcl/timeline?r=tip-505'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/504.md'>504</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 504: New subcommand [string insert]</td>
<td valign='top'><a href='/tcl/timeline?r=dgp-string-insert'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/503.md'>503</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
................................................................................
<td valign='top'><a href='./tip/484.md'>484</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 484: Merge &apos;int&apos; and &apos;wideInt&apos; Obj-type to a single &apos;int&apos;</td>
<td valign='top'><a href='/tcl/timeline?r=no-wideint'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/483.md'>483</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 483: Improved TIP #59 implementation for Tk</td>
<td valign='top'><a href='/tk/timeline?r=tk-stu-pkg'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/482.md'>482</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 482: Record Tk demo directory information</td>
<td valign='top'><a href='/tk/timeline?r=tk-stu-pkg'>Link</a></td>
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/481.md'>481</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
................................................................................
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/383.md'>383</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top'># TIP 383: Injecting Code into Suspended Coroutines</td>
<td valign='top'><a href='/tcl/timeline?r=tip-383'>Link</a></td>
</tr>
<tr class='state-final type-project version-85'>
<td valign='top'><a href='./tip/382.md'>382</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5.11</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 382: Let tk_getSaveFile ignore file overwrites</td>
................................................................................
<td valign='top'><a href='./tip/368.md'>368</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Obsoleted</td>
<td valign='top'># TIP 368: Listbox Justification Option</td>
<td></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/367.md'>367</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 367: A Command to Remove Elements from a List</td>
<td valign='top'><a href='/tcl/timeline?r=tip-367'>Link</a></td>
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/366.md'>366</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
................................................................................
<td valign='top'><a href='./tip/343.md'>343</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 343: A Binary Specifier for [format/scan]</td>
<td valign='top'><a href='/tcl/tktview/2368084'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/342.md'>342</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 342: Dict Get With Default</td>
<td valign='top'><a href='/tcl/timeline?r=tip-342'>Link</a></td>
</tr>
<tr class='state-final type-project version-86'>
<td valign='top'><a href='./tip/341.md'>341</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
................................................................................
<td valign='top'><a href='./tip/313.md'>313</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.6</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 313: Inexact Searching in Sorted List</td>
<td valign='top'><a href='/tcl/tktview/1894241'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/312.md'>312</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 312: Add More Link Types</td>
<td valign='top'><a href='/tcl/timeline?r=tip-312-new'>Link</a></td>
</tr>
<tr class='state-draft type-informational'>
<td valign='top'><a href='./tip/311.md'>311</a></td>
<td valign='top' colspan=2>Informational</td>
<td valign='top'>Draft</td>
<td valign='top'># TIP 311: Tcl/Tk 8.6 Release Calendar</td>
</tr>
................................................................................
</tr>
<tr class='state-draft type-project version-87'>
<td valign='top'><a href='./tip/262.md'>262</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top'># TIP 262: Background Images for Frames</td>
<td valign='top'><a href='/tk/timeline?r=tip-262'>Link</a></td>
</tr>
<tr class='state-final type-project version-85'>
<td valign='top'><a href='./tip/261.md'>261</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 261: Return Imported Commands from [namespace import]</td>
................................................................................
<td valign='top'><a href='./tip/225.md'>225</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Draft</td>
<td valign='top'># TIP 225: Arithmetic Series with Optimized Space Complexity</td>
<td valign='top'><a href='/tcl/tktview/1052584'>Link</a></td>
</tr>
<tr class='state-rejected type-project'>
<td valign='top'><a href='./tip/224.md'>224</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Rejected</td>
<td valign='top'># TIP 224: Add New [array] Subcommand &apos;value&apos;</td>
<td valign='top'><a href='/tcl/timeline?r=tip-224'>Link</a></td>
</tr>
<tr class='state-final type-project version-85'>
<td valign='top'><a href='./tip/223.md'>223</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5</td>
................................................................................
<td valign='top'><a href='./tip/165.md'>165</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 165: A User-Data Field for Virtual Events</td>
<td valign='top'><a href='/tk/tktview/1008975'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/164.md'>164</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 164: Add Rotate Subcommand to the Canvas Widget</td>
<td valign='top'><a href='/tk/timeline?r=tip-164'>Link</a></td>
</tr>
<tr class='state-final type-project version-85'>
<td valign='top'><a href='./tip/163.md'>163</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5</td>
................................................................................
<td valign='top'><a href='./tip/161.md'>161</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 161: Change Default for Menu&apos;s -tearoff Option to False</td>
<td valign='top'><a href='/tk/timeline?r=tip-161'>Link</a></td>
</tr>
<tr class='state-final type-project version-87'>
<td valign='top'><a href='./tip/160.md'>160</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.7</td>
<td valign='top'>Final</td>
<td valign='top'># TIP 160: Improvements to Terminal and Serial Channel Handling</td>
<td valign='top'><a href='/tcl/timeline?r=tip-160'>Link</a></td>
</tr>
<tr class='state-final type-project version-85'>
<td valign='top'><a href='./tip/159.md'>159</a></td>
<td valign='top'>Project</td>
<td valign='top'>8.5</td>

Changes to tip/160.md.

1
2
3
4
5
6
7
8
9



10
11
12
13
14
15
16
..
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# TIP 160: Improvements to Terminal and Serial Channel Handling
	State:          Draft
	Type:           Project
	Tcl-Version:    8.7
	Vote:           In progress
	Post-History:	
	Author:         Donal K. Fellows <[email protected]>
	Created:        17-Oct-2003
	Tcl-Branch:     tip-160



-----

# Abstract

Terminals, consoles and other kinds of serial lines have other capabilities and
requirements that are not currently controllable using Tcl.  This TIP
adds new options to **fconfigure** to allow these advanced
................................................................................
preferable.  Example uses of raw input include text editors \(such as
vi or emacs\) or terminal-based menu systems.

I propose supporting these operation modes within Tcl through a single
new option to the **fconfigure** command \(to definitely be implemented
on Unix serial channels — because that is the type of stdin in a
normal interactive session — and suitably on other platforms if
possible\): **-inputmode**.  This will have three legal values:

 * **normal**: This will turn on both echoing and cooking of input, and can be
   considered to be the default configuration for all terminals.

 * **password**: This will turn off echoing but leave cooking turned on.  Note
   that on at least one platform (macOS) this additionally changes the cursor
   in the terminal.
|


|




>
>
>







 







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
..
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# TIP 160: Improvements to Terminal and Serial Channel Handling
	State:          Final
	Type:           Project
	Tcl-Version:    8.7
	Vote:           Done
	Post-History:	
	Author:         Donal K. Fellows <[email protected]>
	Created:        17-Oct-2003
	Tcl-Branch:     tip-160
	Votes-For:      DKF, JN, SL, AK
	Votes-Against:  none
	Votes-Present:  FV 
-----

# Abstract

Terminals, consoles and other kinds of serial lines have other capabilities and
requirements that are not currently controllable using Tcl.  This TIP
adds new options to **fconfigure** to allow these advanced
................................................................................
preferable.  Example uses of raw input include text editors \(such as
vi or emacs\) or terminal-based menu systems.

I propose supporting these operation modes within Tcl through a single
new option to the **fconfigure** command \(to definitely be implemented
on Unix serial channels — because that is the type of stdin in a
normal interactive session — and suitably on other platforms if
possible\): **-inputmode**.  This will have four legal values:

 * **normal**: This will turn on both echoing and cooking of input, and can be
   considered to be the default configuration for all terminals.

 * **password**: This will turn off echoing but leave cooking turned on.  Note
   that on at least one platform (macOS) this additionally changes the cursor
   in the terminal.

Changes to tip/164.md.

1
2
3
4
5
6
7
8
9
10
11
12



13
14
15
16
17
18
19
# TIP 164: Add Rotate Subcommand to the Canvas Widget
	Author:         Arjen Markus <[email protected]>
	Author:         Dimitrios Zachariadis <[email protected]>
	Author:         Donal K. Fellows <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           In progress
	Created:        17-Nov-2003
	Post-History:   
	Keywords:       Tk,canvas
	Tcl-Version:    8.7
	Tk-Branch:      tip-164



-----

# Abstract

This TIP proposes to add a **rotate** subcommand to the **canvas** widget
to facilitate rotating items in very much the same way as is now
possible with scaling and moving.



|

|





>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# TIP 164: Add Rotate Subcommand to the Canvas Widget
	Author:         Arjen Markus <[email protected]ft.nl>
	Author:         Dimitrios Zachariadis <[email protected]>
	Author:         Donal K. Fellows <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        17-Nov-2003
	Post-History:   
	Keywords:       Tk,canvas
	Tcl-Version:    8.7
	Tk-Branch:      tip-164
	Votes-For:      DKF, JN, FV, SL, AK
	Votes-Against:  none
	Votes-Present:  none
-----

# Abstract

This TIP proposes to add a **rotate** subcommand to the **canvas** widget
to facilitate rotating items in very much the same way as is now
possible with scaling and moving.

Changes to tip/224.md.

1
2
3
4
5
6
7
8
9
10
11







12
13
14
15
16
17
18
# TIP 224: Add New [array] Subcommand 'value'
	Author:         Peter MacDonald <[email protected]>
	Author:         Robert Seeger <[email protected]>
	Author:         Donal K. Fellows <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           In progress
	Created:        28-Sep-2004
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Branch:     tip-224







-----

# Abstract

The TIP proposes the addition of a new subcommand to the **array**
command: **value**.  The **value** subcommand would query, reference,
and/or initialize an array element with more options for complexity



|

|




>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# TIP 224: Add New [array] Subcommand 'value'
	Author:         Peter MacDonald <[email protected]>
	Author:         Robert Seeger <[email protected]>
	Author:         Donal K. Fellows <[email protected]>
	State:          Rejected
	Type:           Project
	Vote:           Done
	Created:        28-Sep-2004
	Post-History:   
	Tcl-Version:    8.7
	Tcl-Branch:     tip-224
	Votes-For:      DKF, JN, SL
	Votes-Against:  DGP, AK
	Votes-Present:  FV
	Rejection-Reason:
		Tcl 8.7 already has a new [array default] command from TIP 508. It
		does not appear to interact with the proposed [array value] in a
		sensible way.
-----

# Abstract

The TIP proposes the addition of a new subcommand to the **array**
command: **value**.  The **value** subcommand would query, reference,
and/or initialize an array element with more options for complexity

Changes to tip/262.md.

4
5
6
7
8
9
10

11
12
13
14
15

16
17
18
19
20
21
22
..
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55







56
57
58
59
60
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        18-Mar-2006
	Post-History:   
	Keywords:       Tk,option
	Tcl-Version:    8.7

-----

# Abstract

This TIP proposes an option for frames that allows users to set the

background of the window to be an image.

# Rationale

Just a there is an **-image** option for **button** widgets, this
TIP suggests that a **-backgroundimage** option for frames be
implemented. The image should be either an entire single image, or a
................................................................................
the frame.

If the image was tiled, then it should be re-tiled as needed during a
resize. The image would reside behind any other decoration or other
widgets that resided in the frame. The image should be re-configurable
to replace the image and/or remove it, as with a button image.

This TIP should allow some rather classy looking tcl/tk programs to be
created with much ease.

# Proposed Change

Two new options are proposed for **frame** widgets, to be
manipulated using the normal **configure** and **cget** methods:

 * **-backgroundimage** _imageName_ - This gives the name of an
   image \(as created by **image create**\) that is to be painted onto
   the widget immediately after the painting of the solid background
   colour. If _imageName_ is the empty string \(the default\) no image
   will be painted. The painting of the image will be controlled by
   the **-tile** option.

 * **-tile** _boolean_ - If this option gives _boolean_ as true,
   the image will be painted such that the top-left corner corresponds
   to the top-left corner of the frame, and then subsequently
   repeatedly painted \(with no gaps between the areas painted\) to the
   right and below that initial painting until such time as the entire
   widget is covered by copies of the image. If this option gives
   _boolean_ as false, the image will only be painted once, such
   that the center of the image painted is coincident with the center
   of the frame widget.








# Copyright

This document has been placed in the public domain.







>




|
>







 







|




|











|





|
>
>
>
>
>
>
>





4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
..
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        18-Mar-2006
	Post-History:   
	Keywords:       Tk,option
	Tcl-Version:    8.7
	Tk-Branch:      tip-262
-----

# Abstract

This TIP proposes an option for frames and toplevels (on the grounds
that they're virtually the same thing internally) that allows users to set the
background of the window to be an image.

# Rationale

Just a there is an **-image** option for **button** widgets, this
TIP suggests that a **-backgroundimage** option for frames be
implemented. The image should be either an entire single image, or a
................................................................................
the frame.

If the image was tiled, then it should be re-tiled as needed during a
resize. The image would reside behind any other decoration or other
widgets that resided in the frame. The image should be re-configurable
to replace the image and/or remove it, as with a button image.

This TIP should allow some rather classy looking Tcl/Tk programs to be
created with much ease.

# Proposed Change

Two new options are proposed for **frame** and **toplevel** widgets, to be
manipulated using the normal **configure** and **cget** methods:

 * **-backgroundimage** _imageName_ - This gives the name of an
   image \(as created by **image create**\) that is to be painted onto
   the widget immediately after the painting of the solid background
   colour. If _imageName_ is the empty string \(the default\) no image
   will be painted. The painting of the image will be controlled by
   the **-tile** option.

 * **-tile** _boolean_ - If this option gives _boolean_ as true,
   the image will be painted such that the top-left corner corresponds
   to the top-left corner of the frame (inside any border), and then subsequently
   repeatedly painted \(with no gaps between the areas painted\) to the
   right and below that initial painting until such time as the entire
   widget is covered by copies of the image. If this option gives
   _boolean_ as false, the image will only be painted once, such
   that the center of the image painted is coincident with the center
   of the frame widget. The default will be **false**.

For convenience, an alias for **-backgroundimage** will also be
provided: **-bgimg**

# Implementation

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

# Copyright

This document has been placed in the public domain.

Changes to tip/312.md.

1
2
3
4
5
6
7
8
9
10
11



12
13
14
15
16
17
18
# TIP 312: Add More Link Types
	Author:         Rene Zaumseil <[email protected]>
	Author:         Larry W. Virden <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           In progress
	Created:        26-Jan-2008
	Post-History:   
	Keywords:       variable,trace
	Tcl-Version:    8.7
	Tcl-Ticket:     1992824



-----

# Abstract

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



|

|




|
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# TIP 312: Add More Link Types
	Author:         Rene Zaumseil <[email protected]>
	Author:         Larry W. Virden <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        26-Jan-2008
	Post-History:   
	Keywords:       variable,trace
	Tcl-Version:    8.7
	Tcl-Branch:     tip-312-new
	Votes-For:      DKF, JN, SL, AK
	Votes-Against:  none
	Votes-Present:  DGP, FV
-----

# Abstract

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

Changes to tip/342.md.

1
2
3
4
5
6
7
8
9
10



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


41
42
43
44
45
46
47
...
144
145
146
147
148
149
150













151
152
153
154
# TIP 342: Dict Get With Default
	Author:		Lars Hellström <[email protected]>
	State:		Draft
	Type:		Project
	Vote:		In progress
	Tcl-Version:	8.7
	Created:	27-Nov-2008
	Keywords:	dictionary, default value
	Post-History:	
	Tcl-Branch:     tip-342



-----

# Abstract

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

# Specification

The **dict** command will get a new subcommand

 > **dict getwithdefault** _dictionary_ _key_ ?_key_ ...?  _value_

\(I consider the name of this subcommand very much open for discussion\) which
modulo error messages behaves like

	 proc dict_getwithdefault {D args} {
	     if {[dict exists $D {*}[lrange $args 0 end-1]]} then {
	         dict get $D {*}[lrange $args 0 end-1]
	     } else {
	         lindex $args end
	     }
................................................................................

i.e., it returns the value from the _dictionary_ corresponding to the
sequence of _key_s if it exists, or the default _value_ otherwise. As with
**dict exists**, it is OK \(and will cause the default _value_ to be
returned\) if one of the _key_s is missing from its dictionary, but an error
is thrown if this path of keys cannot be traversed because the value
associated with the previous key is not a dictionary.



# Rationale

It is clear that getting a value from a dictionary if it exists and using a
default otherwise is a common operation, but it is also clear that this can be
carried out with a combination of existing Tcl commands. Hence the issue is
whether a new subcommand for this improves efficiency and convenience of this
................................................................................
compared to the functional parts of the command and compared to the amount of
code needed to do it in the core.

# Reference Implementation

An implementation is provided, in [patch #2370575](https://core.tcl-lang.org/tcl/tktview/2370575).














# Copyright

This document has been placed in the public domain. 


|

|





>
>
>













<
|







 







>
>







 







>
>
>
>
>
>
>
>
>
>
>
>
>



<
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

27
28
29
30
31
32
33
34
..
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
...
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170

# TIP 342: Dict Get With Default
	Author:		Lars Hellström <[email protected]>
	State:		Final
	Type:		Project
	Vote:		Done
	Tcl-Version:	8.7
	Created:	27-Nov-2008
	Keywords:	dictionary, default value
	Post-History:	
	Tcl-Branch:     tip-342
	Votes-For:      DKF, JN, DGP, SL, AK
	Votes-Against:  none
	Votes-Present:  FV
-----

# Abstract

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

# Specification

The **dict** command will get a new subcommand

 > **dict getwithdefault** _dictionary_ _key_ ?_key_ ...?  _value_


which, modulo error messages, behaves like

	 proc dict_getwithdefault {D args} {
	     if {[dict exists $D {*}[lrange $args 0 end-1]]} then {
	         dict get $D {*}[lrange $args 0 end-1]
	     } else {
	         lindex $args end
	     }
................................................................................

i.e., it returns the value from the _dictionary_ corresponding to the
sequence of _key_s if it exists, or the default _value_ otherwise. As with
**dict exists**, it is OK \(and will cause the default _value_ to be
returned\) if one of the _key_s is missing from its dictionary, but an error
is thrown if this path of keys cannot be traversed because the value
associated with the previous key is not a dictionary.

To facilitate easy use by lazy programmers, it will be aliased as **dict getdef**.

# Rationale

It is clear that getting a value from a dictionary if it exists and using a
default otherwise is a common operation, but it is also clear that this can be
carried out with a combination of existing Tcl commands. Hence the issue is
whether a new subcommand for this improves efficiency and convenience of this
................................................................................
compared to the functional parts of the command and compared to the amount of
code needed to do it in the core.

# Reference Implementation

An implementation is provided, in [patch #2370575](https://core.tcl-lang.org/tcl/tktview/2370575).

# Alternate Names

The following alternate names were considered for **getwithdefault** during
the TIP voting period:

 * **getdef** — selected.
 * **default** — feels like it should address the topics of defaults more widely.
 * **fetch** — consensus is that this should be a command with a different
   return signature if/when such is created (e.g., a boolean to say whether
   the value was found).
 * **get?** — rejected as Tcl's own commands (mostly) do not use non-alpha
   characters in their names, leaving more space for user code.

# Copyright

This document has been placed in the public domain. 

Changes to tip/367.md.

1
2
3
4
5
6
7
8
9
10



11
12
13
14
15
16
17
..
64
65
66
67
68
69
70










71
72
73
74
# TIP 367: A Command to Remove Elements from a List
	State:          Draft
	Type:           Project
	Tcl-Version:    8.7
	Vote:           In progress
	Post-History:	
	Author:         Donal K. Fellows <[email protected]>
	Created:        18-May-2010
	Keywords:       Tcl, delete, item
	Tcl-Branch:     tip-367



-----

# Abstract

This TIP proposes a command, **lremove**, that takes a list value and a
collection of indices, and returns a list that is the input list with the
elements at those indices removed.
................................................................................
	% lremove {a b c d e} 1 3 1 4 0
	c

# Implementation

See the `tip-367` branch.











# Copyright

This document has been placed in the public domain.

|


|





>
>
>







 







>
>
>
>
>
>
>
>
>
>




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
..
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# TIP 367: A Command to Remove Elements from a List
	State:          Final
	Type:           Project
	Tcl-Version:    8.7
	Vote:           Done
	Post-History:	
	Author:         Donal K. Fellows <[email protected]>
	Created:        18-May-2010
	Keywords:       Tcl, delete, item
	Tcl-Branch:     tip-367
	Votes-For:      DKF, JN, DGP, FV, SL, AK
	Votes-Against:  none
	Votes-Present:  none 
-----

# Abstract

This TIP proposes a command, **lremove**, that takes a list value and a
collection of indices, and returns a list that is the input list with the
elements at those indices removed.
................................................................................
	% lremove {a b c d e} 1 3 1 4 0
	c

# Implementation

See the `tip-367` branch.

# Note

The author of this TIP considers it highly acceptable to extend it to make
each index be able to be an index list that addresses into a nested list (in
the manner of **lset**) to find elements to delete, so long as the constraint
remains that the indices can be provided in any order and it is not an error
to have one index mask another.

He does not provide an implementation that supports this.

# Copyright

This document has been placed in the public domain.

Changes to tip/383.md.

1
2
3

4
5
6
7
8
9
10

11
12
13
14
15
16
17


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
..
47
48
49
50
51
52
53






54
55
56
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
88




89
90
91


















92
93
94
95
96
# TIP 383: Injecting Code into Suspended Coroutines
	Author:         Alexandre Ferrieux <[email protected]>
	Author:         Miguel Sofer <[email protected]>

	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        03-Dec-2010
	Post-History:   
	Keywords:       debugging,coroutine,yielded
	Tcl-Version:    8.7

-----

# Abstract

This proposes a new command, **coroinject**, that allows a programmer to
inject arbitrary code into a suspended coroutine, for execution on next
resumption.



# Rationale

When debugging complex coroutines - with many yield points and possibly rich
state in local variables - sometimes one would like to inspect their state
"from the outside", i.e., at a point where they are suspended.

A typical situation is that of a big, single-threaded, event\+coro system,
where the coro happily enables/disables fileevents along its life, and the
fileevents are one way to resume the coro. At a given point \(bug\), things get
stalled, with the fileevents disabled. The obvious questions are:

 1. "where" is the coro \(at which yield site\)? and

 2. what are the values of its local variables?

Both these questions can be answered with the new **coroinject** primitive.
The idea is to force a resumption of the coro along with an "immediate
execution of extra code" directive, where the extra code says "dump the call
stack with **info level** and **info frame**", or "dump the locals", etc.

Another use would be to inject "**return -code return**", as an alternative
to renaming to \{\} for terminating the coro in a way that respects its
**catch**/**finally** termination handlers. Alternatively, returning with
an error code will have the effect of gathering call stack information in the
**-errorstack** options dictionary entry.

................................................................................
**yield**, or merely waiting for normal resumption when the app sees fit,
and injected code falling back to normal coro code.

Note that the feature is similar to a proc-entry trace, but coroutine
resumption is not currently a trace target.  Also, it is an intrinsically
"one-shot" mechanism, which makes it a better fit for its debugging purposes.







# Definition

The new command

 > **coroinject** _coroname_ _cmd_ ?_arg1 ..._?

prepends to the code to be executed on resumption of the currently suspended
coroutine, _coroname_, the following code:

 >  _cmd_ _arg1..._ _resumearg_





where _resumearg_ is the single argument passed to the resumption command






_coroname_.  In turn, the result from the execution of _cmd_ will be seen
by the coroutine's code as the result of **yield**.

Note that:

 1. Resumption itself must be done separately, by calling _coroname_ later,

 2. If **coroinject** is called several times on the same _coroname_
    before resuming it, the commands pile up in LIFO order.

 3. In combination, the appending of _resumearg_ and the use of the result
    of _cmd_ to provide the result of **yield**, will allow the following
    style of fully transparent injection:



		    proc probe {x y resumearg} {do things $x $y;return $resumearg}

		    coroinject C probe foo bar








































# Naming

Of course, the proposed **coroinject** is a placeholder for a suitable name. Alternatives that also make sense are: **::tcl::coroinject** and **interp coroinject**. Constructive bikeshedding welcome.




# Reference Implementation





The current **::tcl::unsupported::inject** implements most of the
functionality described here, minus the _resumearg_ passing.  It will be
updated to include it if consensus gathers on this style.



















# Copyright

This document has been placed in the public domain.



>







>




|
|
|
>
>





|






|




|
|
|







 







>
>
>
>
>
>
|

|






|

>
>
>
>
|
>
>
>
>
>
>
|
|












>
>
|
>
|

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>


|
>
>
>



>
>
>
>

|
<
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




<
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
..
51
52
53
54
55
56
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
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159

160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181

# TIP 383: Injecting Code into Suspended Coroutines
	Author:         Alexandre Ferrieux <[email protected]>
	Author:         Miguel Sofer <[email protected]>
	Author:         Donal K. Fellows <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        03-Dec-2010
	Post-History:   
	Keywords:       debugging,coroutine,yielded
	Tcl-Version:    8.7
	Tcl-Branch:     tip-383
-----

# Abstract

This proposes two new commands. One, **coroinject**, that allows a programmer
to inject arbitrary code into a suspended coroutine, for execution on next
resumption, and the other, **coroprobe**, that allows a programmer to inject
arbitrary code into a suspended coroutine for immediate execution (making it
much easier to use for introspection).

# Rationale

When debugging complex coroutines - with many yield points and possibly rich
state in local variables - sometimes one would like to inspect their state
from the outside, i.e., at a point where they are suspended.

A typical situation is that of a big, single-threaded, event\+coro system,
where the coro happily enables/disables fileevents along its life, and the
fileevents are one way to resume the coro. At a given point \(bug\), things get
stalled, with the fileevents disabled. The obvious questions are:

 1. where is the coro \(at which yield site\)? and

 2. what are the values of its local variables?

Both these questions can be answered with the new **coroinject** primitive.
The idea is to force a resumption of the coro along with an immediate
execution of extra code directive, where the extra code says dump the call
stack with **info level** and **info frame**”, or “dump the locals, etc.

Another use would be to inject "**return -code return**", as an alternative
to renaming to \{\} for terminating the coro in a way that respects its
**catch**/**finally** termination handlers. Alternatively, returning with
an error code will have the effect of gathering call stack information in the
**-errorstack** options dictionary entry.

................................................................................
**yield**, or merely waiting for normal resumption when the app sees fit,
and injected code falling back to normal coro code.

Note that the feature is similar to a proc-entry trace, but coroutine
resumption is not currently a trace target.  Also, it is an intrinsically
"one-shot" mechanism, which makes it a better fit for its debugging purposes.

To make the use of **coroinject** simpler for the common introspection use
case, an extra command, **coroprobe** is included. That runs the code
immediately and produces the results immediately, including _making errors_ in
the running of the code _not appear inside the coroutine;_ faults in debugging
code should not cause failures in the code being debugged.

# Definition of coroinject

The new command:

 > **coroinject** _coroname_ _cmd_ ?_arg1 ..._?

prepends to the code to be executed on resumption of the currently suspended
coroutine, _coroname_, the following code:

 >  _cmd_ _arg1..._ _yieldtype_ _resumearg_

where _yieldtype_ is either **yield** or **yieldto**, depending on how the
coroutine yielded (allowing generic injection handler commands to be used),
and_resumearg_ is:

 1. the single argument passed to the resumption command _coroname_ when
    **yield** is used by _coroname_. If there is no resumption argument,
    _resumearg_ will be the empty string.
 
 2. the list of arguments passed to the resumption command _coroname_ when
    **yieldto** is used by _coroname_.
 
In turn, the result from the execution of _cmd_ will be seen by the
coroutine's code as the result of **yield**/**yieldto**.

Note that:

 1. Resumption itself must be done separately, by calling _coroname_ later,

 2. If **coroinject** is called several times on the same _coroname_
    before resuming it, the commands pile up in LIFO order.

 3. In combination, the appending of _resumearg_ and the use of the result
    of _cmd_ to provide the result of **yield**, will allow the following
    style of fully transparent injection:

            proc probe {x y type resumearg} {
                do things $x $y
                return $resumearg
            }
            coroinject C probe foo bar

    However, probing is more simply done with **coroprobe**.

# Definition of coroprobe

 > **coroprobe** _coroname_ _cmd_ ?_arg1 ..._?

runs the command _cmd_ (with the given arguments) _immediately_ in the
currently suspended coroutine, _coroname_, and gives the results of that
execution as the results of the **coroprobe** command. Errors in _cmd_ result
in errors from **coroprobe**, and not errors in the coroutine, _coroname_; the
**return** command cannot be used to make the coroutine terminate early
either. After **coroprobe** has run, the state of the coroutine will be the
same as before (assuming _cmd_ does not delete _coroname_ or alter any of its
local variables); for example, if it was waiting for multiple arguments before
(because it had used **yieldto**, it will continue to do so afterwards, and it
will resume at the same point in the code as it would have if **coroprobe**
had not be run.

Unlike with **coroinject**, no extra arguments are appended to _cmd_ when it
is executed beyond those suppled as part of the **coroprobe** call.

This combination of features means that it is possible to use this command
usefully with, say, **info frame** and **info level** to examine the state of
the coroutine.

        set f [coroprobe C info frame]
        puts "coroutine C @$f: [coroprobe C info frame $f]"

However, in general it is easier to put a more complex probe into a procedure
or lambda term:

        set vars [coroprobe C apply {{} {
            lmap var [uplevel 1 info locals] {
                upvar 1 $var val
                string cat $var -> $val
            }
        }}]
        puts "The vars of C are: $vars"

# Naming

Of course, the proposed **coroinject** is a placeholder for a suitable name
(and similarly **coroprobe**). Alternatives that also make sense are:
**::tcl::coroinject** and **interp coroinject**. Constructive bikeshedding
welcome.

# Reference Implementation

See the `tip-383` branch.

# Notes

The current **::tcl::unsupported::inject** implements most of the
functionality described here, minus the _yieldtype_ and _resumearg_ passing.

The _yieldtype_ value is determinable with **::tcl::unsupported::corotype**.

**coroprobe** can be mostly implemented using **coroinject**, but not
easily. In particular, the error handling is non-trivial and **info frame**
will be able to tell the difference consistently.

The **coroprobe** command is less general than **coroinject**, but is quite a
bit easier to use by virtue of being immediate and able to pass errors out.
However, there are use cases out there that would not be supported by
**coroprobe**, such as the operations on [the ‘every’ wiki
page](https://wiki.tcl-lang.org/page/every) that use
**::tcl::unsupported::inject** to do nice early termination of the worker
coroutines. Thus, having two commands is jusifiable. The unsupported version
of this has problems with processing the resumption value, which isn't a
problem when the resumption is done straight away (making its resumption value
moot), but that in turn can have problems with knowing how to re-yield so as
to not disrupt the coroutine, which is why the _yieldtype_ value is added (to
_allow_ the injected code to yield correctly).

# Copyright

This document has been placed in the public domain.

Changes to tip/411.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
..
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
The **chan info** command will take a single mandatory argument,
_channelId_, which will be the name of a channel to retrieve information
about. This operation will always fail in a safe interpreter. The result of
the new **chan info** command would be a dictionary with following keys
always present:

 type: indicating a type of channel. Possible values are "**file**",
   "**socket**", "**process**" \(result of [**open** "\|..."]\), empty
   string \(in case of channel that doesn't support this information\), or any
   custom type, depending of refchan implementations. This is a mandatory key.

The remainder of the keys are optional and depend on the type.

For **file** channels, the dictionary shall include these:

 path: full, normalized path to the file, including the file name.

 new: boolean value indicating whether file already existed while opening, or
   it was created.

For **socket** channels, the dictionary shall include these:

 host: peer hostname, or local hostname for listening socket. This is
   partially equivalent to getting the first value returned by [**chan
   configure** _channelId_ **-peername**] for connected sockets.

 port: peer port, or listening port \(for listening socket\). This is partially
   equivalent to getting the third value returned by [**chan configure**
   _channelId_ **-peername**] for connected sockets.

 side: one of the
 following: "**client**", "**accepted**", or "**listening**".

For **process** channels, the dictionary shall include these:

 cmdline: copy of the command passed to **open**.

 pid: PID of a spawned process, as produced by **pid**.

Any key could be produced by other channel types, notably including reflected channels.

## The chaninfo Operation of Reflected Channel Implementations

The **chaninfo** subcommand of a reflected channel implementation command
returns a dict that is provided in response to a **chan info** request. If
................................................................................

If the operation is not supported, the baseline implementation will treat it
the same as if the operation returned an empty dictionary.

# Internals

Channel structure in Tcl core would require another API level indicating
channels that have a function returning an "info" dict. All core channels are
expected to migrate to this level, although it's possible to stay at current
API version - it will just cause the **type** in **chan info** dict to be
the _typeName_ field of the channel's _Tcl\_ChannelType_ structure, with no
additional keys in the dict.

# Examples

This is a a pure Tcl implementation of file type channel, so it supports new
information in **chan info**:

	oo::class create filechan {






|








|

|




|



|



|




|

|







 







|
|
|
|
|







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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
..
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
The **chan info** command will take a single mandatory argument,
_channelId_, which will be the name of a channel to retrieve information
about. This operation will always fail in a safe interpreter. The result of
the new **chan info** command would be a dictionary with following keys
always present:

 **type**: indicating a type of channel. Possible values are "**file**",
   "**socket**", "**process**" \(result of [**open** "\|..."]\), empty
   string \(in case of channel that doesn't support this information\), or any
   custom type, depending of refchan implementations. This is a mandatory key.

The remainder of the keys are optional and depend on the type.

For **file** channels, the dictionary shall include these:

 **path**: full, normalized path to the file, including the file name.

 **new**: boolean value indicating whether file already existed while opening, or
   it was created.

For **socket** channels, the dictionary shall include these:

 **host**: peer hostname, or local hostname for listening socket. This is
   partially equivalent to getting the first value returned by [**chan
   configure** _channelId_ **-peername**] for connected sockets.

 **port**: peer port, or listening port \(for listening socket\). This is partially
   equivalent to getting the third value returned by [**chan configure**
   _channelId_ **-peername**] for connected sockets.

 **side**: one of the
 following: "**client**", "**accepted**", or "**listening**".

For **process** channels, the dictionary shall include these:

 **cmdline**: copy of the command passed to **open**.

 **pid**: PID of a spawned process, as produced by **pid**.

Any key could be produced by other channel types, notably including reflected channels.

## The chaninfo Operation of Reflected Channel Implementations

The **chaninfo** subcommand of a reflected channel implementation command
returns a dict that is provided in response to a **chan info** request. If
................................................................................

If the operation is not supported, the baseline implementation will treat it
the same as if the operation returned an empty dictionary.

# Internals

Channel structure in Tcl core would require another API level indicating
channels that have a function returning an "info" dictionary. All core
channels are expected to migrate to this level, although it's possible to stay
at current API version - it will just cause the **type** in **chan info** dict
to be the _typeName_ field of the channel's _Tcl\_ChannelType_ structure, with
no additional keys in the dict.

# Examples

This is a a pure Tcl implementation of file type channel, so it supports new
information in **chan info**:

	oo::class create filechan {

Changes to tip/482.md.

1
2
3
4
5
6
7
8
9
10
# TIP 482: Record Tk demo directory information
	Author:         Stuart Cassoff <[email protected]>
	State:          Accepted
	Type:           Project
	Vote:           Done
	Created:        03-Nov-2017
	Post-History:   
	Keywords:       Tk, demos, configuration
	Tcl-Version:    8.7
	Tk-Branch:      tk-stu-pkg

|







1
2
3
4
5
6
7
8
9
10
# TIP 482: Record Tk demo directory information
	Author:         Stuart Cassoff <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        03-Nov-2017
	Post-History:   
	Keywords:       Tk, demos, configuration
	Tcl-Version:    8.7
	Tk-Branch:      tk-stu-pkg

Changes to tip/483.md.

1
2
3
4
5
6
7
8
9
10
# TIP 483: Improved TIP #59 implementation for Tk
	Author:         Stuart Cassoff <[email protected]>
	State:          Accepted
	Type:           Project
	Vote:           Done
	Created:        03-Nov-2017
	Post-History:   
	Keywords:       Tk, configuration
	Tcl-Version:    8.7
	Tk-Branch:      tk-stu-pkg

|







1
2
3
4
5
6
7
8
9
10
# TIP 483: Improved TIP #59 implementation for Tk
	Author:         Stuart Cassoff <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        03-Nov-2017
	Post-History:   
	Keywords:       Tk, configuration
	Tcl-Version:    8.7
	Tk-Branch:      tk-stu-pkg

Changes to tip/504.md.

1
2
3
4
5
6
7
8
9
10
11



12
13
14
15
16
17
18
..
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
...
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
...
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
...
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
...
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# TIP 504: New subcommand [string insert]
	Author:         Don Porter <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           In progress
	Created:        21-Mar-2018
	Obsoletes:	475
	Post-History:   
	Keywords:	Tcl,string,insert
	Tcl-Version:	8.7
	Tcl-Branch:     dgp-string-insert



-----

# Abstract

This TIP proposes a [`string insert`] subcommand for inserting a substring at a
given index.  This new [`string insert`] command is to be the string analogue of
[`linsert`].
................................................................................
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 504 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
................................................................................
>
    # Bind [string insert] to [::tcl::string::insert].
    namespace ensemble configure string -map [dict replace\
            [namespace ensemble configure string -map]\
            insert ::tcl::string::insert]

More sample implementations can be found on the [Additional String Functions]
(http://wiki.tcl.tk/44#pagetoc706ab8bb) page of the Tcler's Wiki, but at time of
writing, they do not handle end-relative indexing nor can be used to append to a
string.  Since they are implemented in terms of [`string replace`] and do not
perform any index arithmetic of their own, they actually do support TIP 176
indexes.

# Compatibility Considerations

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

Add a new [`string insert`] command:

> **string insert** *string index insertString*

> Returns a copy of *string* with *insertString* inserted at the *index*'th
> character.  *index* may be specified as described in the [**STRING
> INDICES**](https://www.tcl.tk/man/tcl/TclCmd/string.htm#M54) section.

> If *index* is start-relative, the first character inserted in the returned
> string will be at the specified index.  If *index* is end-relative, the last
> character inserted in the returned string will be at the specified index.

> If *index* is at or before the start of *string* (e.g., *index* is **0**),
> *insertString* is prepended to *string*.  If *index* is at or after the end of
................................................................................
> *string* (e.g., *index* is **end**), *insertString* is appended to *string*.

# Reference Implementation

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

The [`dgp-string-insert`]
(http://core.tcl.tk/tcl/timeline?t=dgp-string-insert) branch in the Tcl Fossil
repository provides an implementation of the proposed subcommand, complete
with documentation, bytecode compilation, and a set of test cases.

# Future Work

The direct evaluation of [`string insert`] is routed though a new 
internal routine `TclStringReplace`. It is a conventional substring
................................................................................
of functionality for other [`string foo`] subcommands.

The existing internal routine `TclStringReplace` does not include
the full collection of optimizations that the prior routine
`Tcl_ReplaceObj` did. Since this routine remains internal, it can
continue to gain these revisions without further TIP examination.
Likewise, alternative bytecode compiler and execution strategies may
also be pursuse internally.

These routines may be good candidates to become available to applications
and extensions in the public C API. The current TIP does not propose that.
It is out of scope. A set of questions will need to be addressed when
considering converting these routines into public ones. First it will
need to be determined what level of robustness to present in a public
interface. Should such a function be permitted to fail or even abort

|

|






>
>
>







 







|







 







|







 







|







 







|







 







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
..
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
...
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
...
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
...
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
...
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# TIP 504: New subcommand [string insert]
	Author:         Don Porter <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        21-Mar-2018
	Obsoletes:	475
	Post-History:   
	Keywords:	Tcl,string,insert
	Tcl-Version:	8.7
	Tcl-Branch:     dgp-string-insert
	Votes-For:      DKF, JN, DGP, FV, SL, AK
	Votes-Against:  none
	Votes-Present:  none
-----

# Abstract

This TIP proposes a [`string insert`] subcommand for inserting a substring at a
given index.  This new [`string insert`] command is to be the string analogue of
[`linsert`].
................................................................................
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 504 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
................................................................................
>
    # Bind [string insert] to [::tcl::string::insert].
    namespace ensemble configure string -map [dict replace\
            [namespace ensemble configure string -map]\
            insert ::tcl::string::insert]

More sample implementations can be found on the [Additional String Functions]
(https://wiki.tcl-lang.org/page/Additional+string+functions#d87fded503e2e2268e274b6a4d499750adb9d4c3e4dd2ec833c76a1d0a3254ca) page of the Tcler's Wiki, but at time of
writing, they do not handle end-relative indexing nor can be used to append to a
string.  Since they are implemented in terms of [`string replace`] and do not
perform any index arithmetic of their own, they actually do support TIP 176
indexes.

# Compatibility Considerations

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

Add a new [`string insert`] command:

> **string insert** *string index insertString*

> Returns a copy of *string* with *insertString* inserted at the *index*'th
> character.  *index* may be specified as described in the [**STRING
> INDICES**](https://www.tcl-lang.org/man/tcl/TclCmd/string.htm#M54) section.

> If *index* is start-relative, the first character inserted in the returned
> string will be at the specified index.  If *index* is end-relative, the last
> character inserted in the returned string will be at the specified index.

> If *index* is at or before the start of *string* (e.g., *index* is **0**),
> *insertString* is prepended to *string*.  If *index* is at or after the end of
................................................................................
> *string* (e.g., *index* is **end**), *insertString* is appended to *string*.

# Reference Implementation

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

The [`dgp-string-insert`]
(https://core.tcl-lang.org/tcl/timeline?t=dgp-string-insert) branch in the Tcl Fossil
repository provides an implementation of the proposed subcommand, complete
with documentation, bytecode compilation, and a set of test cases.

# Future Work

The direct evaluation of [`string insert`] is routed though a new 
internal routine `TclStringReplace`. It is a conventional substring
................................................................................
of functionality for other [`string foo`] subcommands.

The existing internal routine `TclStringReplace` does not include
the full collection of optimizations that the prior routine
`Tcl_ReplaceObj` did. Since this routine remains internal, it can
continue to gain these revisions without further TIP examination.
Likewise, alternative bytecode compiler and execution strategies may
also be pursued internally.

These routines may be good candidates to become available to applications
and extensions in the public C API. The current TIP does not propose that.
It is out of scope. A set of questions will need to be addressed when
considering converting these routines into public ones. First it will
need to be determined what level of robustness to present in a public
interface. Should such a function be permitted to fail or even abort

Changes to tip/507.md.

1
2
3
4
5
6
7
8
9
10



11
12
13
14
15
16
17
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
..
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# TIP 507: Include simple SVG support with nanosvg
	Author:         René Zaumseil <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           In progress
	Created:        9-May-2018
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7
	Tk-Branch:      tip-507



-----

# Abstract

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

# Rationale
................................................................................
image formats do not scale and are too tiny on high resolution mobile devices.
The same goes for the image formats provided by the [Img][] extension.

The response to this challenge in general (on the web, in applications, etc.)
has been to adopt the [SVG][] format, as that is scalable and does not
typically depend on being rendered at a particular resolution.
Moreover, there is already a Tk image extension to do the conversion,
[tksvg][]. The implementation is using the [nanosvg][] library It has no other
external dependencies and is only 2 header files.

[nanosvg][] was choosen because it:

- has a suitable license
- is written in 2 plain C header files and can be easily included
- is really lightweight
................................................................................
scope of this TIP.
A description of the features and limitations of the current implementation is in section [Supported SVG](#Supported-SVG). It will be also described in the photo(n) man page.

The **svg** image format has the following format suboptions:

 > **svg** **-dpi** _dpiValue_ **-scale** _scaleValue_ **-unit** _unitValue_

*dpiValue* is used in conversion between given coordiantes and screen resolution. The value must be greater then 0.0. The default value is `96`.

*scaleValue* is used to scale the resulting image. The value must be greater then 0.0. The default value is `1.0`.

*unitValue* is the unit of all coordinates in the svg data. Available units are `px` (default, coordinates in pixel), `pt` (1/72 inch), `pc` (12 pt), `mm`, `cm` and `in`.

The given format options are only used at creation time of the image and are not preserved in the image. This means that:


|

|





>
>
>







 







|







 







|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
..
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
..
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# TIP 507: Include simple SVG support with nanosvg
	Author:         René Zaumseil <[email protected]>
	State:          Final
	Type:           Project
	Vote:           Done
	Created:        9-May-2018
	Post-History:   
	Keywords:       Tk
	Tcl-Version:    8.7
	Tk-Branch:      tip-507
	Votes-For:      DKF, JN, FV, SL, AK
	Votes-Against:  none
	Votes-Present:  none
-----

# Abstract

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

# Rationale
................................................................................
image formats do not scale and are too tiny on high resolution mobile devices.
The same goes for the image formats provided by the [Img][] extension.

The response to this challenge in general (on the web, in applications, etc.)
has been to adopt the [SVG][] format, as that is scalable and does not
typically depend on being rendered at a particular resolution.
Moreover, there is already a Tk image extension to do the conversion,
[tksvg][]. The implementation is using the [nanosvg][] library. It has no other
external dependencies and is only 2 header files.

[nanosvg][] was choosen because it:

- has a suitable license
- is written in 2 plain C header files and can be easily included
- is really lightweight
................................................................................
scope of this TIP.
A description of the features and limitations of the current implementation is in section [Supported SVG](#Supported-SVG). It will be also described in the photo(n) man page.

The **svg** image format has the following format suboptions:

 > **svg** **-dpi** _dpiValue_ **-scale** _scaleValue_ **-unit** _unitValue_

*dpiValue* is used in conversion between given coordinates and screen resolution. The value must be greater then 0.0. The default value is `96`.

*scaleValue* is used to scale the resulting image. The value must be greater then 0.0. The default value is `1.0`.

*unitValue* is the unit of all coordinates in the svg data. Available units are `px` (default, coordinates in pixel), `pt` (1/72 inch), `pc` (12 pt), `mm`, `cm` and `in`.

The given format options are only used at creation time of the image and are not preserved in the image. This means that:

Changes to tip/510.md.

13
14
15
16
17
18
19
20












































21
22
23
24


25
26
27
28
29
30
31
32
..
37
38
39
40
41
42
43




44
45
46
47
48
49
50
..
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
88
89
90
91
92

93













94
95
96
97
98
99
100
...
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
134
135
136
137
138
139
140
141
142
	Votes-Against:  KBK, JN, FV
	Votes-Present:  BG
	Vote-Comments:  code not yet ready, needs porting to macOS; alternate
	                might be to just co-distribute, just as TDBC is with Tcl
-----

# Abstract













































[Rbc][] aka "Refactored [BLT][] Components" have graph widgets and Tk commands which are missing in *Tk*.

[Tkpath][] is a 2D-canvas like widget modelled after [SVG][].



This TIP intends to add the following command to Tk:

**rbc::graph**, **rbc::stripchart** and **rbc::barchart** as **graph**

> To get the original functionality a *-style* option will be added. This
option can only be set on creation time.

**rbc::vector** as **graph::vector**
................................................................................

> Only the snap functionality is needed here. The busy command already exists as "tk busy" :)

**tkp::canvas** as **path**

> The new path widget will contain the [SVG][] like items and an additional **window** item to include other windows. Support functions will be placed in the **::path** namespace.





# Rationale

## Rbc commands

*Tk* has already adopted some of [BLT][]/[Rbc][] commands.
Still missing are the above mentioned commands.

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

## Tkpath

The original developer of [Tkpath][] passed away. There are some mirrors, but with no real development. More information could be found on <https://wiki.tcl-lang.org/page/tkpath>.

The intent of [Tkpath][] was to substitute the *Tk* canvas. This leads to problems with advanced features (matrix transformations). Therefore the new **path** widget will only contain [SVG][] like items. The only exception is the **window** item. This item is necessary to embed other widgets.

# Specification

## Files


- C-source code will be put in `.../generic/rbc/`
  - `rcb*.[ch]` graph widget and vector command
  - `tk*.[ch]` tkpath widget

- Tcl-source code will be put in `.../library/`

  - [`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**
- Documentaion files will be put in `.../doc/`
  - [`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
  - [`path.n.md`](https://core.tcl.tk/tk/doc/tip-510/doc/path.n.md) path widget documentation

































- Test files will be put in `.../tests/rbc/`


  - [`graph.test`](https://core.tcl.tk/tk/doc/tip-510/tests/rbc/graph.test) graph widget tests
  - [`graph_vector.test`](https://core.tcl.tk/tk/doc/tip-510/tests/rbc/graph_vector.test) graph::vector command tests
  - [`path.test`](https://core.tcl.tk/tk/doc/tip-510/tests/rbc/path.test) path widget tests

The new files are  added to the makefiles.
The calls to the initialization functions are in tkWindow.c




## ::oo::class widgets











The new widgets **graph** and **path** are 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.

## C Interface

Alle new functionality is in the two header files [`rbcInt.h`](https://core.tcl.tk/tk/doc/tip-510/generic/rbc/rbcInt.h) and [`tkPathInt.h`]((https://core.tcl.tk/tk/doc/tip-510/generic/rbc/tkPathInt.h). No functionality is currently exported.

 













# 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/20357/>  
................................................................................
and with some analysis from Donal:

<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/rbc/rbc*` 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 [`tkSDLAGGPath.cpp`](https://core.tcl.tk/tk/doc/tip-510/generic/rbc/tkSDLAGGPath.cpp). See in [Androwish][]
  - GDI+ on Windows => working with [`tkWinGDIPlusPath.cpp`](https://core.tcl.tk/tk/doc/tip-510/generic/rbc/`tkWinGDIPlusPath.cpp)
  - Cairo on unix => working with [`tkUnixCairoPath.c`](https://core.tcl.tk/tk/doc/tip-510/generic/rbc/tkUnixCairoPath.c)
  - For Mac see [`tkMacOSXPath.c`](https://core.tcl.tk/tk/doc/tip-510/generic/rbc/tkMacOSXPath.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 slass 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!

And could please look someone with `configure` foo at the Makefile's

# 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).

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

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

# Alternatives

- Wait on new [BLT][].
- Develop widgets in extensions.

# Copyright








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




>
>
|







 







>
>
>
>







 







|

|
>

<
|
<
>
|
>
|
<
|
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
|
|
|

<
<
>

>
>
|
>
>
>
>
>
>
>
>
>
>
|
<
|
<

<
>
|
>
>
>
>
>
>
>
>
>
>
>
>
>







 







|



|
|
|
|









<
<
<
<
<
<
<
<
<







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
..
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
...
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167


168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183

184

185

186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
...
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
	Votes-Against:  KBK, JN, FV
	Votes-Present:  BG
	Vote-Comments:  code not yet ready, needs porting to macOS; alternate
	                might be to just co-distribute, just as TDBC is with Tcl
-----

# Abstract

## oo::class like widgets

The new widgets are implemented in C as oo::classes. The base class is **tko::widget**. These class create and handles the internal Tk\_Window and provide **cget** and **configure** methods. The **configure** method has additional functionality to add or delete options. The new widget functionality is documented in the [`tkoWidget.n.md`](https://core.tcl.tk/tk/doc/tip-510/doc/tkoWidget.n.md) file.

The new widgets **graph** and **path** are 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.

## Enhanced **configure** functionality

**configure** *args*

> **configure**

> > If *args* is empty the method will return a sorted list of all configuration options.

> **configure** *-option*

> > If we have one element in *args* starting with a minus sign ("-") then the method return the configuration list including the current value of the given *-option*.

> **configure** *-option value ..*

> > If we have an even number list in *args* and the first element starts with a minus sign ("-") then the method does configure all the given option-value pairs. If an error occurs the the corresponding element is not set and the method gives an error. Alrready successfull set options remain.

> **configure init**

> > This is an internal function used in constructing new widgets. It is used in the *unknown* method to initialize all options.

> **configure optionadd** *-synonym -option*

> > Add a *-synonym* for a given *-option*. The *-option* needs not to be defined at this time.

> **configure optionadd** *-synonym dbnam dbclass ?default? ?flags?*

> > Add a new option. If ?flags? is equal "1" then the option is readonly and can only be set in this call. Before adding a new option a *-option* method must created. The method will be called without any arguments. The method can access the new value using the *tko(-option)* array variable. If the method throws a n error the array variable will be reset to the old value.

> **configure optiondel** *-option*

> > Delete the given option and unset the entry in the tko array variable. The created *-option* method's are not deleted. This is the task of the caller.

> **configure optionvar**

> > The method return the global varname of the tko array variable holding all option values.

## New widgets

[Rbc][] aka "Refactored [BLT][] Components" have graph widgets and Tk commands which are missing in *Tk*.

[Tkpath][] is a 2D-canvas like widget modelled after [SVG][].

*Tk* has already **frame**, **labelframe** and **toplevel** widgets. These widgets have class like behaviour but are no real classes. It is p.e. not possible to add functionality to these widgets.

This TIP intends to add the following commands to Tk:

**rbc::graph**, **rbc::stripchart** and **rbc::barchart** as **graph**

> To get the original functionality a *-style* option will be added. This
option can only be set on creation time.

**rbc::vector** as **graph::vector**
................................................................................

> Only the snap functionality is needed here. The busy command already exists as "tk busy" :)

**tkp::canvas** as **path**

> The new path widget will contain the [SVG][] like items and an additional **window** item to include other windows. Support functions will be placed in the **::path** namespace.

**tko::frame** **tko::labelframe** and **tko::toplevel**

> These widgets have the same functionality like the normal tk widgets. They are implemented as oo::classes and it is possible to add/delete options.

# Rationale

## Rbc commands

*Tk* has already adopted some of [BLT][]/[Rbc][] commands.
Still missing are the above mentioned commands.

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

## Tkpath

The original developer of [Tkpath][] passed away. There are some mirrors, but with no real development. More information could be found on <https://wiki.tcl-lang.org/page/tkpath>.

The intent of [Tkpath][] was to substitute the *Tk* canvas. This leads to problems with advanced features (matrix transformations). Therefore the new **path** widget will only contain [SVG][] like items. The only exception is the **window** item. This item is necessary to embed other widgets.

# 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 in markdown syntax understood by fossil and can therefore accessed online. The files will be put in the directory `.../doc/`.

- [`tkoWidget.3.md`](https://core.tcl.tk/tk/doc/tip-510/doc/tkoWidget.3.md) tko::widget C-function documentation

- [`tkoWidget.n.md`](https://core.tcl.tk/tk/doc/tip-510/doc/tkoWidget.n.md) tko::widget Tcl command 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
- [`path.n.md`](https://core.tcl.tk/tk/doc/tip-510/doc/path.n.md) path widget documentation

## C interface

Alle new functionality is in the following header files:

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

No functionality is currently exported. The new files are  added to the makefiles.

The initialization function **Tko\_Init** is added to the *tkInt.h* file and will be called in *tkWindow.c*.

## C sources

C-source code will be put in the directory `.../generic/tko/`

- [`tkoWidget.c`](https://core.tcl.tk/tk/doc/tip-510/generic/tko/tkoWidget.c) tko::widget implementation
- [`tkoFrame.c`](https://core.tcl.tk/tk/doc/tip-510/generic/tko/tkoFrame.c) tko::frame, tko::labelframe and tko::toplevel implementation
- `tkoPath*.c` tkpath widget implementation
- `tkoGraph*.c` graph widget implementation
- `tkoRbc*.c` graph related common [Rbc][] functions.
- `tkoVector*.c` graph vector commadn implementation

## Tcl source

Tcl-source code will be put in the directory `.../library/`

- [`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 will be put in the directory `.../tests/tko/`

- [`tkoFrame.test`](https://core.tcl.tk/tk/doc/tip-510/tests/tko/tkoFrame.test) tko::frame, tko::labelframe and tko::toplevel widget tests. The tests are mostly identical to the corresponding tk widget 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



# Examples

Add options at class level:

    oo::class create myWidget {
      {*}$::tko::unknown
      superclass ::tko::frame
      variable tko
      method -myoption {} {puts $tko(-myoption)}
      method -myreadonly {} {puts $tko(-myreadonly)}
      constructor {optionlist arglist} {
        next [concat {
          {-myoption myOption MyOption value}
          {-myreadonly myReadonly MyReadonly value 1}
        } $optionlist] $arglist
      }

    }



Deal with optons at object level. This is the raw part. May be we should add some sugar to it.

    myWidget .w
    oo::objdefine .w method -o1 {} {puts $tko(-o1)}
    oo::objdefine .w method -o2 {} {puts $tko(-o2)}
    .w configure optionadd -o1 o1 O1 v1 1
    .w configure optionadd -o2 o2 O2 v2
    ...
    .w optiondel -o1

Widget option values are saved in an option array. The option name is the field name in the array. Additionally is an field "**.**" containing the tk widget path name of the widget. The name of the option array variable can be retrieved using the following code:
    set myVar [.w configure optionvar]
    parray $myVar


# 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/20357/>  
................................................................................
and with some analysis from Donal:

<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/tkoGraph*` and  `generic/tko/tkoRbc*` 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_SDLAGGPath.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 slass 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!

And could please look someone with `configure` foo at the Makefile's










# Alternatives

- Wait on new [BLT][].
- Develop widgets in extensions.

# Copyright

Changes to tip/536.md.

23
24
25
26
27
28
29
30

31
32
33
34
35
36
37
The following commands, which will all be documented in the tk::mac section of the Tk man page, will be added with this TIP: 

## ::tk::mac::PerformService

Executes a Tcl procedure called from the macOS "Services" menu by another application in the Apple menu item. The "Services" menu item allows for inter-application communication; data from one application, such as selected text, can be sent to another application for processing, for example to Safari as a search item for Google, or to TextEdit to be appended to a file. Tk will includes a stub version of this command that displays a dialog with the data sent. This procedure should be rewritten in an application script for customization, which will allow a Tk application to expose "Service" functionality to other programs: 

	proc ::tk::mac::PerformService {} {
		set w [pack [text .t]]

		set data [clipboard get]
		$w insert end $data
	}
	
Note that the mechanism for retrieving inter-application data is from the clipboard; there is no other supported way to obtain the data. If the Services process is not desired, the NSServices keys can be deleted from the application's Info.plist file. 

The underlying code supporting this command also allows the text, entry and ttk::entry widgets to access/consume services from other applications via the Services menu. 






|
>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
The following commands, which will all be documented in the tk::mac section of the Tk man page, will be added with this TIP: 

## ::tk::mac::PerformService

Executes a Tcl procedure called from the macOS "Services" menu by another application in the Apple menu item. The "Services" menu item allows for inter-application communication; data from one application, such as selected text, can be sent to another application for processing, for example to Safari as a search item for Google, or to TextEdit to be appended to a file. Tk will includes a stub version of this command that displays a dialog with the data sent. This procedure should be rewritten in an application script for customization, which will allow a Tk application to expose "Service" functionality to other programs: 

	proc ::tk::mac::PerformService {} {
		set w [text .t]
		pack $w
		set data [clipboard get]
		$w insert end $data
	}
	
Note that the mechanism for retrieving inter-application data is from the clipboard; there is no other supported way to obtain the data. If the Services process is not desired, the NSServices keys can be deleted from the application's Info.plist file. 

The underlying code supporting this command also allows the text, entry and ttk::entry widgets to access/consume services from other applications via the Services menu. 

Changes to tip/538.md.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# TIP 538: Externalize libtommath
	Author:         Jan Nijtmans <[email protected]>
	State:          Draft
	Type:           Project
	Vote:
	Created:        9-April-2019
	Post-History:
	Keywords:       Tcl
	Tcl-Version:    8.7
	Tcl-Branch:     digit-bit-60
-----

# Abstract

This TIP proposes to add the possibility to link Tcl with an external libtommath library, if available, for shared builds.

# Rationale

Tcl - since 8.6 - has a built-in libtommath library with modifications. By now, many of those modifications
were adopted upstream. This makes it possible to change the built Tcl library, using the external libtommath
library as-is, in stead of using it's own fork. libtommath will continue to be delivered together with
the Tcl source code.

# Specification and Documentation

Starting with libtommath 1.1.0, it is possible to build Tcl without the internal libtommath, but - in stead - linking
with the unmodified, externally built, libtommath. This has the following consequences:

  - On 64-bit platforms (win64, linux-64), libtommath will now be built in 64-bit mode, while Tcl's libtommath used to be
    built in 32-bit mode.  Extensions which depend on the internal structure of the libtommath types will need
    to be re-compiled.

  - On win32/win64, a pre-built libtommath dll will be available, so libtommath will get the same status as
    zlib. Only when Tcl is build statically (--disable-shared) a (subset of) libtommath will still be built-in,
    the same subset that Tcl depends on.

  - One of Tcl's modifications (in mp\_sqrt) [doesn't work in 64-bit mode](https://travis-ci.org/tcltk/tcl/builds/512875496).
    In the implementation branch this modification is reverted. It can be put back as soon as the code is fixed for
    64-bit mode and accepted upstream.

  - Extensions can now choose whether they want to depend on libtommath directly or not. When using "tclTomMath.h",
    they will be linked to Tcl's libtommath stub table, when using "tommath.h" they will be linked directly
    to the external libtommath library. Both ways will continue to be supported. Extensions using "tommath.h"
    can use all available libtommath functions. When using "tclTomMath.h" only a subset is available.

  - "tclTomMath.h" is no longer part of "tclInt.h". So extension depending on "tclInt.h" but using libtommath
    functions will need to be adapted.

  - The types "mp\_digit" and "mp\_word" are no longer declared by tcl.h.  Extensions using those types will need
    to start using the "tclTomMath.h" or "tommath.h" includes as well.

# Implementation

All makefiles are adapted to detect external presence of libtommath 1.1.0 or later. If so, this library will be used
for shared builds, otherwise the built-in libtommath will continue to be used as before.

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

# Copyright

This document has been placed in the public domain.



|













|

|




|


|



|
|


|



|
|
|
|

|


|
|











1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# TIP 538: Externalize libtommath
	Author:         Jan Nijtmans <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        9-April-2019
	Post-History:
	Keywords:       Tcl
	Tcl-Version:    8.7
	Tcl-Branch:     digit-bit-60
-----

# Abstract

This TIP proposes to add the possibility to link Tcl with an external libtommath library, if available, for shared builds.

# Rationale

Since 8.6, Tcl has had a built-in libtommath library with modifications. By now, many of those modifications
were adopted upstream. This makes it possible to change the built Tcl library, using the external libtommath
library as-is, instead of using it's own fork. libtommath will continue to be delivered together with
the Tcl source code.

# Specification and Documentation

Starting with libtommath 1.1.0, it is possible to build Tcl without the internal libtommath, instead linking
with the unmodified, externally built, libtommath. This has the following consequences:

  * On 64-bit platforms (win64, linux-64), libtommath will now be built in 64-bit mode, while Tcl's libtommath used to be
    built in 32-bit mode.  Extensions which depend on the internal structure of the libtommath types will need
    to be re-compiled.

  * On win32/win64, a pre-built libtommath dll will be available, so libtommath will get the same status as
    zlib. Only when Tcl is build statically (`--disable-shared`) a (subset of) libtommath will still be built-in,
    the same subset that Tcl depends on.

  * One of Tcl's modifications (in mp\_sqrt) [doesn't work in 64-bit mode](https://travis-ci.org/tcltk/tcl/builds/512875496).
    In the implementation branch this modification is reverted. It can be put back as soon as the code is fixed for
    64-bit mode and accepted upstream.

  * Extensions can now choose whether they want to depend on libtommath directly or not. When using "`tclTomMath.h`",
    they will be linked to Tcl's libtommath stub table, when using "`tommath.h`" they will be linked directly
    to the external libtommath library. Both ways will continue to be supported. Extensions using "`tommath.h`"
    can use all available libtommath functions. When using "`tclTomMath.h`" only a subset is available.

  * "`tclTomMath.h`" is no longer part of "`tclInt.h`". So extension depending on "`tclInt.h`" but using libtommath
    functions will need to be adapted.

  * The types "mp\_digit" and "mp\_word" are no longer declared by `tcl.h`.  Extensions using those types will need
    to start using the "`tclTomMath.h`" or "`tommath.h`" includes as well.

# Implementation

All makefiles are adapted to detect external presence of libtommath 1.1.0 or later. If so, this library will be used
for shared builds, otherwise the built-in libtommath will continue to be used as before.

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

# Copyright

This document has been placed in the public domain.

Added tip/539.md.


















































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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
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
134
135
136
137
# TIP 539: Multiple dict filter patterns
	Author:         Lars Hellström <[email protected]>
	State:          Draft
	Type:           Project
	Vote:           Pending
	Created:        27-Nov-2008
	Post-History:   
	Keywords:       Tcl, dict filter, set intersection
	Tcl-Version:	8.7
	Tcl-Ticket:     2370575
-----

# Abstract

The **key** and **value** forms of **dict filter** are generalised 
to allow an arbitrary number of patterns.

# Rationale

Although there are **dict** subcommands which allow deleting some keys 
from a dictionary (**dict remove**) and inserting some keys into a 
dictionary (**dict replace**), there is no direct way of requesting 
the sub-dictionary which only has keys from a given list; if we think 
of only the set of keys in the dictionary, then we have subcommands for 
set minus and set union, but none for set intersection. 
A situation where this would be useful is that the option dictionary for 
a high-level procedure can contain options meant to be passed on to 
lower level commands, and it is necessary to extract the subdictionary 
of options that the lower level command would accept (since passing one 
which is not supported would cause it to throw an error).

There is of course already the **dict filter** command, which indeed 
returns a subdictionary of an existing dictionary, but its **key** form 
only accepts one **string match** pattern and therefore cannot be used 
to, e.g., select all three of `-foo`, `-bar`, and `-baz`. (It could select both 
`-bar` and `-baz` through the pattern `-ba[rz]`, but that's neither common nor 
particularly readable.) However, in many instances where this kind of 
pattern is used (notably **glob**, **namespace export**, and 
**switch**), it is possible to give several such patterns and have it 
interpreted as the union of the patterns. Were that the case with 
**dict filter**, the "`-foo`, `-bar`, and `-baz`" problem could be solved as 
easily as:

      dict filter $opts key -foo -bar -baz

which is comparable to:

      dict remove $opts -foo -bar -baz
      dict replace $opts -foo 1 -bar off -baz 42

and much nicer than the **script** counterpart:

      dict filter $opts script {key val} {
          ::tcl::mathop::in $key {-foo -bar -baz}
      }

If the **key** form is generalised like this, then it seems appropriate 
to also generalise the **value** form in the same way to keep the 
symmetry, even though I have no immediate use-case for that feature.

Since it is generally good to Do Nothing Gracefully, the command syntax is
also generalised to allow the case of no patterns at all. The result in that
case will be the empty dictionary

# Specification

The two **dict filter** command forms:

 > **dict filter** _dictionary_ **key** _pattern_  
 > **dict filter** _dictionary_ **value** _pattern_

are generalised to accept an arbitrary number of <i>pattern</i>s:

 > **dict filter** _dictionary_ **key** ?_pattern_ …?  
 > **dict filter** _dictionary_ **value** ?_pattern_ …?

and the results are the sub-dictionaries of those keys and values 
respectively which match at least one of the <i>pattern</i>s.

# Rejected Alternatives

A more direct way of meeting the motivating need would be a command 
**dict select** with the same syntax as **dict remove** (no pattern 
matching) but logic reversed. This would however be so close to 
**dict filter** ... **key** that extending the syntax of the latter 
seemed more appropriate.

An alternative to allowing multiple patterns with **dict filter** could 
be to allow a regular expression pattern, since the union of two regular 
languages is again a regular language. Any syntax that could be picked for 
that would however on one hand already be rather close to:

      dict filter $opts script {key val} {regexp $RE $key}

and on the other it would be rather difficult to read, as the regular 
expression corresponding to "`-foo` or `-bar` or `-baz`" is:

      ^(-foo|-bar|-baz)$

which it is tempting but incorrect to simplify to:

      -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 
current pattern contains metacharacters. Such an optimisation would 
however have the script-level-visible consequence of having the keys show 
up in the order of the patterns rather than the order of the original 
dictionary, so it may be a good idea to also explicitly specify that 
**dict filter** does not guarantee keys in the result to be in the same 
order as in the input dictionary.

Indeed, a **dict filter** … **key** that reorders keys according to 
its pattern arguments could sometimes be useful in interactive situations, 
as a way of getting selected keys up from in a dictionary:

      set D {-baz 0 -bar 1 -foo 2}
      dict filter $D key -foo -bar *

On the other hand, this effect can mostly be obtained through use of 
**dict merge** already:

      dict merge {-foo x -bar x} $D

# Copyright

This document has been placed in the public domain.