| TIP: | 3 |
| Title: | TIP Format |
| Version: | $Revision: 1.8 $ |
| Authors: |
Andreas Kupries <a dot kupries at westend dot com> Donal K. Fellows <fellowsd at cs dot man dot ac dot uk> |
| State: | Accepted |
| Type: | Process |
| Vote: | Done |
| Created: | Thursday, 14 September 2000 |
This TIP is a companion document to the TIP Guidelines TIP #2 and describes the structure and formatting to use when writing a TIP.
The major goals of this document are to define a format that is
easy to write,
easy to read,
easy to search, and
acceptable to the community at large.
The latter is important because non-acceptance essentially means that the TIP process will be stillborn. This not only means basically plain text without much markup but also that we should reuse formats with which people are already acquainted.
As the concept of TIPs borrows heavily from Python's PEPs [1] their definition on how to structure and format a PEP was reviewed for its suitability of use by the TCT and the community at large.
The major points of the format are:
Plain ASCII text without special markup for references or highlighting of important parts.
Mail-like header section containing the meta-information.
Uses indentation to distinguish section headers from section text.
A header section like is used in mail or news is something people are acquainted with and fulfils the other criteria too. In addition it is extendable. Using indentation to convey semantic and syntactic information on the other hand is something Pythonistas are used to but here in the Tcl world we are not to the same extent.
Looking at bit closer to home we find the Tcl'ers Wiki [2]
It does use a plain text format with some very light formatting conventions to allow things like links, images, enumerated and itemized lists.
Given the rather high acceptance of this site by the community using its format should be beneficiary to the acceptance of TIPs too.
It is therefore proposed to use a combination of a header in mail/news style together with a body employing a slightly extended/modified Wiki format (mostly backward compatible) as the format for TIPs. This proposed format is specified in detail below.
Note that the use of TAB characters within a TIP is discouraged (but permitted) as some mailers (notably Outlook Express) make a mess of them. Please be considerate and avoid their use...
But before we specify the format a (short) discussion of possible alternatives and why they where rejected.
There were three primary competitors to the format specified below, these are SGML/XML, HTML and a markup based upon plain text with embedded tcl-commands, for example like ... [section Abstract] ...
The main disadvantage of SGML and XML based solutions is that they require a much more heavyweight infrastructure for editing and processing documents using them, like specialized editors and extensions for parsing. The format below on the other hand can be processed using pure tcl without extensions. with respect to the specialized editors it should be said that an editor operating on plain ASCII is possible too, but then the text will be difficult to read for humans because of the many occurrences of < and >, conflicting with the requirement to have an 'easy to read' format.
While there are commercial products which can gloss over this, making the editing of XML fairly easy, not everyone currently has access to one or the desire to spend what might be quite a lot of money to acquire one. It is far better to let everyone continue to use their current favourite plain-text editor.
The main problem of HTML is that it is focused on visual and not logical markup. This will make it, although not impossible, but very difficult to parse documents for automatic handling. It is also a poor format for producing printed versions of the documentation from. Experience has also shown that different people have widely different ideas about how the content of TIP documents should be rendered into HTML, an indication that using the language would prove problematic! We can still use HTML as a generated format, but we should not write the documents themselves in it.
The approach of embedding tcl commands into the text of a TIP is (at least) as powerful as XML when it comes to automatic processing of documents but much more lightweight. Because of this it is seen as the best of the three rejected alternatives. It was rejected in the end because it was still seen as too heavyweight/demanding for the casual user with respect to learning, easy writing and reading.
The general format of the header for a TIP is specified in RFC 822 [3]. This leaves us to define and explain the keywords, their meaning and their values. The following keywords are required, and unless otherwise stated, should occur exactly once:
The number of the TIP as assigned by the TIP editor. Unchangeable later on.
Defines the title of the document using plain text. May change during the discussion and review phases.
Specifies the version of the document. Usually something like $Revision: 1.8 $. (Initially $Revision: 1.8 $ should be used, which is then changed by the version control to contain the actual revision number.
Contact information (email address) for each author. The email address has to contain the real name of the author. If there are multiple authors of the document, this header may occur multiple times (once per author.) The format should be approximately like this: Firstname Lastname <emailaddress>
Defines the state the TIP is currently in. Allowed values are Draft, Active, Accepted, Deferred, Final, Rejected and Withdrawn. This list will be influenced by the finalization of the workflow in TIP #2.
The type of the TIP. Allowed values are Process, Project and Informative. See TIP #2 for more explanations about the various types.
The current state of voting for the TIP. Allowed values are Pending, In progress, Done and No voting. The latter is used to indicate a TIP which doesn't require a vote, for example TIP #1.
The date the TIP was created, in the format dd-mmm-yyyy. mmm is the (English) short name of the month. The other information is numerical. Example: 14-Sep-2000
All numeric dates, though more easily internationalised, are not used because the ordering of particularly the month and day is ambiguous and subject to some confusion between different locales. Unix-style timestamps are unreadable to the majority of people (as well as being over-precise,) and I (<fellowsd at cs dot man dot ac dot uk>) don't know ISO 8601 well enough to be able to comment on it.
A list of the dates the document was posted to the mailing list for discussion.
This indicates the version of Tcl that a Project TIP depends upon (where it is required.) Process and Informative TIPs must not have this keyword.
The following headers are optional and should (unless otherwise stated) occur at most once:
While a TIP is in private discussions (usually during the initial Draft phase), this header will indicate the mailing list or URL where the TIP is being discussed.
Indicates a TIP number that this TIP renders obsolete. (Thanks to Joel Saunier <Joel dot Saunier at agriculture dot gouv dot fr> for suggesting this!)
Indicates a TIP number that renders this TIP obsolete. (Thanks to Joel Saunier <Joel dot Saunier at agriculture dot gouv dot fr> for suggesting this!)
A comma-separated list of keywords relating to this TIP, to facilitate automated indexing and improve search engine results.
The following headers are proposed (by Donald G. Porter <dgp at cam dot nist dot gov>) but not currently supported:
A TCT member that is sponsoring this TIP. May occur multiple times, once per sponsor.
A person (not necessarily a TCT member) who is supporting this TIP. May occur multiple times, once per supporter.
A person (not necessarily a TCT member) who is opposed to this TIP. May occur multiple times, once per objector.
The body of a TIP is split by visually blank lines (i.e. lines containing nothing other than conventional whitespace) into units that will be called paragraphs. Each paragraph is in one of the following forms.
If the paragraph consists of exactly four minus symbols "----" then it is a separator paragraph and should be rendered as a horizonal rule.
If the paragraph consists of a vertical bar "|" followed by text, then it is a verbatim paragraph. The bar will be stripped from the front of each line and the rest of the text will be formatted literally. Tab characters will be expanded to 8-character boundaries. (Note that this is completely incompatible with the Tcl'ers Wiki.)
If the paragraph consists of one or more tildes "~" (which may be space-separated) followed by text, then it is a section heading. The text following is the name of the section. In the name of good style, the section heading should have its significant words capitalised. The number of tildes indicates whether this is a section heading, a subsection heading or a subsubsection heading (one, two or three tildes respectively.)
If the paragraph consists of the sequence "#index:" followed by some optional text, then it is a request to insert an index. The text following (after trimming spaces) indicates the kind of index desired. The default is a "medium" index, and fully compliant implementations should support "short" (expected to contain less detail) and "long" (expected to contain all header details plus the abstract) as well. Support for other kinds of indices is optional.
If the paragraph consists of the sequence "#image:" followed by some text, then it is a request to insert an image. The first word of the following text is a reference to the image, and the other words are an optional caption for the image (in plain text.) Image references that consist of just letters, numbers, hyphens and underscores are handled specially by the current implementation, which can map them to the correct media type for its current output format (assuming it has a suitable image in its repository.)
All other paragraphs that start with a non-whitespace character are ordinary paragraphs.
If a paragraph starts with a whitespace character sequence (use three spaces and keep the whole paragraph on a single line if you want compatability with the Tcl'ers Wiki,) a star "*" and another whitespace character, it is an item in a bulleted list.
If a paragraph starts with a whitespace character sequence, a number, a full stop "." and another whitespace character, it is an item in an enumerated list. If the number is 1 then the number of the item is guessed from the current list context, and any other value sets the number explicitly. If you want compatability with the Tcl'ers Wiki, make the initial whitespace sequence be three spaces, the number be 1, and keep the whole paragraph on a single line.
If a paragraph starts with a whitespace character sequence, some text (that includes no tabs or newlines but can include spaces), a colon and another whitespace character, then it is an item in a descriptive (a.k.a. definition) list. The item being described cannot contain advanced formatting (including any kind of emphasis) because this is not supported by all formats that a TIP may be viewed in.
If a paragraph does not start with a whitespace character sequence, a greater than symbol ">", and then another whitespace character, it is also an ordinary paragraph. (Note that this is completely incompatible with the Tcl'ers Wiki.)
Where a paragraph does begin with the sequence described in the preceding paragraph, it is a nested list item (if the paragraph contained is a list item) or a subsequent paragraph (if the paragraph contained is an ordinary paragraph.) If there's no suitable "enclosing" list context (i.e. if the preceding paragraph was not part of a list) the paragraph will be a quotation instead. (The rules for these continuation paras seem complex at first glance, but seem to work out fairly well in practise, especially since they are only rarely used.)
Within the body text of a (non-verbatim) paragraph, there are two styles of emphasis:
italicised emphasis is indicated by enclosing the text within inside double apostrophes "''"
emboldened emphasis is indicated by enclosing the text within inside triple apostrophes "'''".
The two emphasis styles should not be nested. Special URLs of the form tip:tipnumber are expanded into full URLs to the given TIP through the current formatting engine (where applicable.) References of the form [tipnumber] are also expanded as links to the given TIP, but are not displayed as URLs (the expansion is format dependent, of course.) Doubled up square brackets are converted into matching single square brackets. Email addresses (of the form <email at address>) and ordinary URLs in single square brackets might also be treated specially.
The first paragraph of the body of any TIP must be an abstract section title ("~Abstract" or "~ Abstract"), and the second must be an ordinary paragraph (and should normally be just plain text, to make processing by tools easier.)
You can compare these rules with those for the Tcl'ers Wiki which are described at http://wiki.tcl.tk/14.html, with the following modifications:
The text for an item in an itemized, enumerated or tagged list can be split over multiple physical lines. The text of the item will reach until the next empty line.
All paragraphs must be split with whitespace. This is a corollary of the above item.
A paragraph starting with the character ~ is interpreted as a section heading. Consequently it should be very short so that it renders onto a single line under most circumstances.
A full verbatim mode is added. Any line starting with the bar character is reproduced essentially verbatim (the bar character is removed). This allows embedding of code or other texts containing formatting usually recognized as special by the formatter without triggering this special processing. This applies especially to brackets and the hyperlinking they provide and their role in tcl code. This is used in preference to the whitespace rule of the Tcl'ers Wiki which is potentially far more sensitive. Our rule makes it extremely obvious what lines are verbatim, and what those lines will be rendered as.
Only one style of emphasis within paragraphs is supported. Having multiple emphasis styles (italic and bold) not only fails to carry across well in all media, but also makes for confusion on the part of authors and is more difficult to write renderers for too.
Images are only supported in a limited way, since under HTML the support for images varies a lot more than most people would like to think, and the concept of an inline image can vary quite a lot between different rendered formats too.
A reference renderer was created by Donal Fellows <fellowsd at cs dot man dot ac dot uk> and is installed (as a behind-the-scenes rendering engine) on a set of TIP documents [4] with the source code to the rendering engine being available [5]
Note that this code does support nested lists and multi-paragraph items, but this is experimental right now. Examples are presented behind the code itself.
This document itself is an example of the new format.
Examples for nested lists, multi-paragraph items in list's, and quotations.
Here is the source (itself a demonstration of verbatim text)
* This is a paragraph
> * This is an inner paragraph
that goes onto two lines.
> > * This one's even further in!
> > * So's this one.
> * Out again
> > And a second paragraph here...
> * Yet another item.
* Outermost level once more.
1. Enumerate?
> 1. Deeper?
2. Out again?
list item: body text that is relatively long so that we can tell
that it laps round properly as a paragraph even though this takes a
ridiculous amount of text on my browser...
| VERB IN LIST?
> nested: body
Top-level paragraph once more.
> A quotation from someone famous might be rendered something like
this. As you can see, it is inset somewhat from the surrounding
text. - ''Donal K. Fellows <fellowsd@cs.man.ac.uk>''
And back to the top-level yet again. Now we show off both ''italic''
and '''bold''' text.
----
and the rendered result
This is a paragraph
This is an inner paragraph that goes onto two lines.
This one's even further in!
So's this one.
Out again
And a second paragraph here...
Yet another item.
Outermost level once more.
Enumerate?
Deeper?
Out again?
body text that is relatively long so that we can tell that it laps round properly as a paragraph even though this takes a ridiculous amount of text on my browser...
VERB IN LIST?
body
Top-level paragraph once more.
A quotation from someone famous might be rendered something like this. As you can see, it is inset somewhat from the surrounding text. - Donal K. Fellows <fellowsd at cs dot man dot ac dot uk>
And back to the top-level yet again. Now we show off both italic and bold text.
Examples of index generation and image paragraphs.
Here is the code
#index: #index:short #index: long #image:3example This is a test caption This is an example long TIP reference tip:3 that should be expanded in a renderer-specific way... This is an example non-reference - ''index[[3]]'' - that should not be rendered as a link (to this document or anywhere else) at all. Note that the dashes in the previous sentence (with whitespace on each side) are candidates for rendering as long dashes (em-dashes) on output-media which support this. Supported URLs: should be http, https, mailto, news, newsrc, ftp and gopher. Test here... > HTTP URL - http://purl.org/thecliff/tcl/wiki/ > HTTP URL in brackets - [http://wiki.tcl.tk] > HTTPS URL - https://sourceforge.net/ > FTP URL - ftp://src.doc.ic.ac.uk/packages/tcl/tcl/ > NEWS URL - news:comp.lang.tcl > MAILTO URL - mailto:fellowsd@cs.man.ac.uk?subject=TIP3 > Others (might not be valid links!) - gopher://info.mcc.ac.uk, newsrc:2845823825
and here is the rendered result.
TIP #0:
Tcl Core Team Basic Rules
TIP #4: Draft
Tcl Release and Distribution Philosophy
TIP #5:
Make TkClassProcs and TkSetClassProcs Public and Extensible
TIP #6: Rejected
Include [Incr Tcl] in the Core Tcl distribution
TIP #7:
Increased resolution for TclpGetTime on Windows
TIP #8:
Add Winico support to the wm command on windows
TIP #9: Withdrawn
Tk Standard Library
TIP #10:
Tcl I/O Enhancement: Thread-Aware Channels
TIP #11:
Tk Menubutton Enhancement: -compound option for menubutton
TIP #12: Draft
The "Batteries Included" Distribution
TIP #13:
Web Service for Drafting and Archiving TIPs
TIP #14:
Access to Tk Photo Image Transparency
TIP #15:
Functions to List and Detail Math Functions
TIP #16:
Tcl Functional Areas for Maintainer Assignments
TIP #19:
Add a Text Changed Flag to Tk's Text Widget
TIP #20:
Add C Locale-Exact CType Functions
TIP #21:
Asymmetric Padding in the Pack and Grid Geometry Managers
TIP #22:
Multiple Index Arguments to lindex
TIP #23:
Tk Toolkit Functional Areas for Maintainer Assignments
TIP #24: Draft
Tcl Maintainer Assignments
TIP #25: Withdrawn
Native tk_messageBox on Macintosh
TIP #26:
Enhancements for the Tk Text Widget
TIP #27:
CONST Qualification on Pointers in Tcl API's
TIP #28: Draft
How to be a good maintainer for Tcl/Tk
TIP #29: Rejected
Allow array syntax for Tcl lists
TIP #30: Draft
Tk Toolkit Maintainer Assignments
TIP #31: Draft
CVS tags in the Tcl and Tk repositories
TIP #32:
Add Tcl_Obj-enabled counterpart to Tcl_CreateTrace
TIP #33:
Add 'lset' Command to Assign to List Elements.
TIP #34: Withdrawn
Modernize TEA Build System
TIP #35:
Enhanced Support for Serial Communications
TIP #36:
Library Access to 'Subst' Functionality
TIP #37:
Uniform Rows and Columns in Grid
TIP #38: Withdrawn
Add Support for Default Bindtags
TIP #39: Withdrawn
Add New Standard Tk Option: -component
TIP #40: Withdrawn
Documentation Generator for Tcl Scripts
TIP #41:
Paned Window Tk Widget
TIP #42: Withdrawn
Add New Standard Tk Option: -clientdata
TIP #43: Draft
How to be a TIP Editor
TIP #44:
Move Tk's Private Commands and Variables into ::tk Namespace
TIP #45:
Empty index lists for [lindex] and [lset]
TIP #46: Withdrawn
Consistent Overlap Behavior of Area-Defining Canvas Items
TIP #47:
Modifying Tk to Allow Writing X Window managers
TIP #48:
Tk Widget Styling Support
TIP #49:
I/O Subsystem: Add API Tcl_OutputBuffered(chan)
TIP #50:
Bundle [incr Tcl] with the Core Tcl distribution
TIP #51: Withdrawn
Native Menubutton on Macintosh
TIP #52: Withdrawn
Hierarchical Namespace Lookup of Commands and Variables
TIP #53: Withdrawn
Addition of 'assert' Command
TIP #54: Withdrawn
Using PURLs to Unite the Tcl Webspace
TIP #55: Draft
Package Format for Tcl Extensions
TIP #56:
Standardize Call Interface to Tcl_Eval* Functions
TIP #57:
Move TclX's [lassign] into the Tcl Core
TIP #58: Rejected
Extend [set] to Assign Multiple Values to Multiple Variables
TIP #59:
Embed Build Information in Tcl Binary Library
TIP #60: Rejected
EXTERN Macro Change to Support a Wider Set of Attributes
TIP #61:
Make TK_NO_SECURITY Run-Time Switchable
TIP #62:
Add Support for Command Tracing
TIP #63:
Add -compound Option to Menu Entries
TIP #64:
Improvements to Windows Font Handling
TIP #65: Rejected
Enhanced [info args]
TIP #66: Draft
Stand-alone and Embedded Tcl/Tk Applications
TIP #67: Withdrawn
Allow Subclassing of tk_getOpenFile, tk_getSaveFile on UNIX
TIP #68:
Dynamic Trace Result Handling
TIP #69: Draft
Improvements for the Tcl Hash Table
TIP #70: Withdrawn
A Relational Switch Control Structure
TIP #71: Withdrawn
Tk Bitmap Image Improvements
TIP #72:
64-Bit Value Support for Tcl on 32-Bit Platforms
TIP #73:
Export Tcl_GetTime in the Public API
TIP #75:
Refer to Sub-RegExps Inside 'switch -regexp' Bodies
TIP #76:
Make 'regsub' Return a String
TIP #77: Withdrawn
Support for Nested Paired Item Lists
TIP #78: Draft
TEA 2.0 Definitions
TIP #79:
Add Deletion Callback to Tcl_CreateObjTrace
TIP #80:
Additional Options for 'lsearch'
TIP #81:
[incr Tcl] Functional Areas for Maintainer Assignments
TIP #82:
Add -offrelief Option to Checkbutton and Radiobutton
TIP #83: Withdrawn
Augment Tcl_EvalFile with Tcl_EvalChannel and Tcl_EvalUrl
TIP #84:
Add control for mouse movement filtering
TIP #85:
Custom Comparisons in Tcltest
TIP #86: Draft
Improved Debugger Support
TIP #87:
Allow Tcl Access to the Recursion Limit
TIP #88: Rejected
Extend Tcl Process Id Control via 'pid'
TIP #89: Withdrawn
Try/Catch Exception Handling in the Core
TIP #90:
Enable [return -code] in Control Structure Procs
TIP #91:
Backward Compatibility for Channel Types with 32-bit SeekProcs
TIP #92: Withdrawn
Move Package Load Decisions to Application Developer
TIP #93:
Get/Delete Enhancement for the Tk Text Widget
TIP #94:
Add Listbox -activestyle Option
TIP #95:
Add [wm attributes] Command
TIP #96:
Add [tk caret] Command and Tk_SetCaretPos API
TIP #97:
Moving Vertices of Canvas Items
TIP #98:
Adding Transparency Compositing Rules to Photo Images
TIP #99:
Add 'file link' to Tcl
TIP #100:
Add Support for Unloading Dynamic Libraries Loaded with [load]
TIP #101:
Export Tcltest Configuration
TIP #102:
Change [trace list] to [trace info]
TIP #103: Rejected
Argument Expansion Command
TIP #104:
Generalization of the Tk Undo Subsystem
TIP #105: Withdrawn
Add Prefix Matching for Switch
TIP #106: Draft
Add Encoding Abilities to the [dde] Command
TIP #107:
Fix the 2-second "raise delay" in Tk
TIP #108:
Summary of Changes to Generic Tcl/Tk Code to Enable Mac OS X Port
TIP #109:
New Look for Checkbutton and Radiobutton on Unix
TIP #110:
Add a Tristate Mode to the Checkbutton and Radiobutton
TIP #111:
Dictionary Values and Manipulators
TIP #112:
Ensembles are Namespaces are Commands
TIP #113:
Multi-Line Searches in the Text Widget
TIP #114: Draft
Eliminate Octal Parsing of Leading Zero Integer Strings
TIP #115: Draft
Making Tcl Truly 64-Bit Ready
TIP #116:
More Safety for Large Images
TIP #117: Withdrawn
Object Type Introspection
TIP #118:
Enhance [file attributes] and [file copy] on Mac OS X & BSD
TIP #119:
Angled Text on a Canvas
TIP #120:
Restricted DDE Services
TIP #121:
Controlled Application Shutdown via Tcl_Exit
TIP #122: Rejected
Use tcl_{non,}wordchars Throughout Tcl/Tk
TIP #123:
Adding an Exponentiation Operator to the [expr] Command
TIP #124:
High-Resolution Absolute Time Values From [clock]
TIP #125:
Converting between Frame and Toplevel Windows
TIP #126: Draft
Rich Strings for Representation Persistence
TIP #127:
Add an -index Option to [lsearch]
TIP #128: Rejected
Ability to Install a Custom Memory Allocator
TIP #129:
New Format Codes for the [binary] Command
TIP #130:
Unique DDE server names.
TIP #131: Draft
Read My Mind and Do What I Mean
TIP #132:
Revised Floating-Point Conversions in Tcl
TIP #133: Draft
Extending [expr] Operators
TIP #134: Withdrawn
Subsystem Per-Thread Data Interfaces
TIP #135:
Change 'dde servername -exact' Option to -force
TIP #136:
Large List Initialisation
TIP #137:
Specifying Script Encodings for [source] and tclsh
TIP #138:
New TCL_HASH_KEY_SYSTEM_HASH option for Tcl hash tables
TIP #139:
Publish Part of Tcl's Namespace API
TIP #140:
Tracing Namespace Modifications
TIP #141:
Multiple Initial-Files in [tk_getOpenFile]
TIP #142: Withdrawn
Search Path Variable to Lookup Command Names in Namespaces
TIP #143:
An Interpreter Resource Limiting Framework
TIP #144: Withdrawn
Argument Expansion Syntax
TIP #145:
Enhanced Tk Font Handling
TIP #146:
Add Overall Anchoring to the Grid Geometry Manager
TIP #147:
Make Grid's Column/Row Configure Easier
TIP #148:
Correct [list]-Quoting of the '#' Character
TIP #149: Withdrawn
Allow "enabled" as Synonym for "normal" in -state Option
TIP #150:
Implement the Tk send Command for Windows
TIP #151:
Remove -e: Command Line Option from tclsh and wish
TIP #152:
New -detail Option for tk_messageBox
TIP #153:
Enhancing the [winfo toplevel] Command
TIP #154: Draft
Add Named Colors to Tk
TIP #155:
Fix Some of the Text Widget's Limitations
TIP #156:
Language-Neutral Root Locale for Msgcat
TIP #157:
Argument Expansion with Leading {expand}
TIP #158:
Distinguish the two 'Enter' keys on Windows
TIP #159:
Extending Tk 'wm' Command to Support Coloured Icons
TIP #160: Draft
Improvements to Terminal and Serial Channel Handling
TIP #161: Draft
Change Default for Menu's -tearoff Option to False
TIP #162: Draft
IPv6 Sockets for Tcl
TIP #163:
A [dict merge] Subcommand
TIP #164: Draft
Add Rotate Subcommand to the Canvas Widget
TIP #165:
A User-Data Field for Virtual Events
TIP #166: Draft
Reading and Writing the Photo Image Alpha Channel
TIP #167: Draft
Add a New Option for Context Help for Windows
TIP #168:
Cubic Bezier Curves on the Canvas
TIP #169:
Add Peer Text Widgets
TIP #170: Draft
Better Support for Nested Lists
TIP #171:
Change Default
TIP #172: Withdrawn
Improve UNIX Tk Look and Feel
TIP #173:
Internationalisation and Refactoring of the 'clock' Command
TIP #174:
Math Operators as Commands
TIP #175: Withdrawn
Add an -async Option to [open]
TIP #176:
Add String Index Values
TIP #177:
Add -stretch Option to panedwindow Widget
TIP #178: Draft
[info pid] and [info tid] Subcommands
TIP #179:
Add -hide Option to panedwindow Widget
TIP #180: Draft
Add a Megawidget Support Core Package
TIP #181:
Add a [namespace unknown] Command
TIP #182:
Add [expr bool] Math Function
TIP #183:
Add a Binary Flag to [open]
TIP #184:
Avoid Creating Unusable Variables
TIP #185: Rejected
Null Handling
TIP #186: Draft
Expose the Type and Modified-State of Widget Options
TIP #187: Rejected
Procedures as Values
TIP #188:
Add 'string is wideinteger' to the 'string is' Subcommand
TIP #190: Draft
Implementation Choices for Tcl Modules
TIP #191: Draft
Managing Tcl Packages and Modules in a Multi-Version Environment
TIP #193: Draft
Simple Syntax Help System
TIP #194:
Procedures as Values via '''apply'''
TIP #195:
A Unique Prefix Handling Command
TIP #196: Withdrawn
Tcl Commands as Values
TIP #197:
Unfocussed Text Widget Cursor Control
TIP #198: Draft
Image Command XPM Extension
TIP #199: Rejected
Specification of Alternatives to .wishrc/.tclshrc
TIP #200: Rejected
Listing the Values in an Array
TIP #201:
Add 'in' Operator to [expr]
TIP #202:
Add 2>@1 Special Case to [open] and [exec]
TIP #203: Withdrawn
Create tclConfig.sh-Equivalent in Tcl
TIP #204:
Virtual Events for Keyboard Traversal
TIP #205:
Use pkgconfig Database to Register Xft Support
TIP #206: Rejected
Add an [ftruncate] Command
TIP #207:
Add a -namespace Option to [interp invokehidden]
TIP #209:
Add [clock milliseconds], and [clock microseconds]
TIP #210:
Add 'tempfile' Subcommand to 'file'
TIP #211: Withdrawn
Add Full Stack Trace Capability
TIP #212:
Temporarily Opening out a Dictionary
TIP #213: Withdrawn
A Standard Dialog for Font Selection
TIP #214: Withdrawn
Add New Object Introspection Command
TIP #215:
Make [incr] Auto-Initialize Undefined Variables
TIP #216: Draft
Handling Command-Line Options in Tclsh and Wish
TIP #217:
Getting Sorted Indices out of Lsort
TIP #218:
Tcl Channel Driver Thread State Actions
TIP #219:
Tcl Channel Reflection API
TIP #220: Draft
Escalate Privileges in VFS Close Callback
TIP #221:
Allow Background Error Handlers to Accept Return Options
TIP #222:
Add [wm attributes -alpha] Attribute on Windows
TIP #223:
Full-Screen Toplevel Support for Tk
TIP #224: Draft
Add New [array] Subcommands 'incr' and 'value'
TIP #225: Draft
Arithmetic Series with Optimized Space Complexity
TIP #226:
Interface to Save and Restore Interpreter State
TIP #227:
Interface to Get and Set the Return Options of an Interpreter
TIP #228: Draft
Tcl Filesystem Reflection API
TIP #229:
Scripted Control of Name Resolution in Namespaces
TIP #230:
Tcl Channel Transformation Reflection API
TIP #231:
Support for [wm attributes] on X11
TIP #232:
Creating New Math Functions for the 'expr' Command
TIP #233:
Virtualization of Tcl's Sense of Time
TIP #234:
Add Support For Zlib Compression
TIP #235:
Exposing a C API for Ensembles
TIP #236:
Absolute Positioning of Canvas Items
TIP #237:
Arbitrary-Precision Integers for Tcl
TIP #238: Draft
Fire Event when Widget Created
TIP #239: Draft
Enhance the 'load' Command
TIP #240: Draft
An Ensemble Command to Manage Processes
TIP #241:
Case-Insensitive Switches and List Searching and Sorting
TIP #242:
Preselect Filter on tk_get*File Dialogs
TIP #243: Draft
Supply Find Dialog for the Text Widget
TIP #244:
PNG Photo Image Support for Tk
TIP #245:
Discover User Inactivity Time
TIP #246: Draft
Unify Pattern Matching
TIP #247: Draft
Tcl/Tk Engineering Manual
TIP #248:
Integrate Tile into Tk as Ttk
TIP #249: Draft
Unification of Tcl's Parsing of Numbers
TIP #250:
Efficient Access to Namespace Variables
TIP #251: Rejected
Enhance the 'list' Command
TIP #252: Rejected
Add New 'string' Command Options
TIP #253: Draft
Consolidate Package-Related Commands
TIP #254:
New Types for Tcl_LinkVar
TIP #255:
Add 'min' and 'max' [expr] Functions
TIP #256:
Implement Tabular and Wordprocessor Style Tabbing
TIP #257:
Object Orientation for Tcl
TIP #258:
Enhanced Interface for Encodings
TIP #259: Draft
Making 'exec' Optionally Binary Safe
TIP #260:
Add Underline Option to Canvas Text Items
TIP #261:
Return Imported Commands from [namespace import]
TIP #262: Draft
Background Images for Frames
TIP #264:
Add Function to Retrieve the Interpreter of a Window
TIP #265:
A Convenient C-side Command Option Parser for Tcl
TIP #266: Rejected
Numbers are Commands
TIP #267:
Allow 'exec' to Ignore Stderr
TIP #268:
Enhance 'package' Version Handling
TIP #269:
Add 'string is list' to the 'string is' Subcommand
TIP #270:
Utility C Routines for String Formatting
TIP #271: Draft
Windows-Style Open and Save File Dialog on Unix
TIP #272:
String and List Reversal Operations
TIP #273: Rejected
Add Tcl_Expr... Support to Tcl_Get... Functions
TIP #274:
Right-Associativity for the Exponentiation Operator
TIP #275:
Support Unsigned Values in binary Command
TIP #276: Draft
Specify and Unify Variable Linking Commands
TIP #277: Draft
Create Namespaces as Needed
TIP #278: Draft
Fix Variable Name Resolution Quirks
TIP #279: Draft
Adding an Extensible Object System to the Core
TIP #280:
Add Full Stack Trace Capability With Location Introspection
TIP #281: Draft
Improvements in System Error Handling
TIP #282: Draft
Enhanced Expression Syntax
TIP #283: Draft
Modify Ensemble Command Resolution Behaviour
TIP #284: Draft
New 'invoke' and 'namespace invoke' Commands
TIP #285:
Script Cancellation with [interp cancel] and Tcl_CancelEval
TIP #286:
Add 'xposition' Command to Menu Widgets
TIP #287:
Add a Commands for Determining Size of Buffered Data
TIP #288: Draft
Allow "args" Anywhere in Procedure Formal Arguments
TIP #289: Rejected
Revision of [lrepeat] Argument Order
TIP #290: Draft
Registration of Custom Error Handler Scripts
TIP #291:
Add the 'platform' Package to Tcl
TIP #292: Draft
Allow Unquoted Strings in Expressions
TIP #293:
Argument Expansion with Leading {*}
TIP #294: Rejected
The "entier" Function: It's Spelt "entire"
TIP #295: Draft
Enhance Arguments to lrange
TIP #296: Draft
Enhanced Syntax for Pair-Wise Indices
TIP #297: Draft
Integer Type Introspection and Conversion
TIP #298:
Revise Shared Value Rules for Tcl_GetBignumAndClearObj
TIP #299:
Add isqrt() Math Function
TIP #300:
Examine Glyph Substitution in the 'font actual' Command
TIP #301: Withdrawn
Split Bidirectional Channels For Half-Close
TIP #302: Draft
Fix "after"'s Sensitivity To Adjustments Of System Clock
TIP #303: Draft
Enhance 'llength' Command to Support Nested Lists
TIP #304:
A Standalone [chan pipe] Primitive for Advanced Child IPC
TIP #305: Withdrawn
ANSI Escape Sequence Support for Windows's Console Channel Driver
TIP #306: Rejected
Auto-Naming Widgets
TIP #307:
Make TclTransferResult() Public
TIP #308:
Tcl Database Connectivity (TDBC)
TIP #309: Draft
Expose the Expression Parsing
TIP #310: Rejected
Add a New Pseudo-Random Number Generator
TIP #311: Draft
Tcl/Tk 8.6 Release Calendar
TIP #312: Draft
Add More Link Types
TIP #313:
Inexact Searching in Sorted List
TIP #314:
Ensembles with Parameters
TIP #315:
Add pathSeparator to tcl_platform Array
TIP #316:
Portable Access Functions for Stat Buffers
TIP #317:
Extend binary Ensemble with Binary Encodings
TIP #318:
Extend Default Whitespace in 'string trim' Beyond ASCII
TIP #319: Draft
Implement Backwards Compatibility for ttk Themed Widgets in tk Widgets
TIP #320:
Improved Variable Handling in the Core Object System
TIP #321:
Add a [tk busy] Command
TIP #323:
Do Nothing Gracefully
TIP #324:
A Standard Dialog For Font Selection
TIP #325: Draft
System Tray Access
TIP #326:
Add -stride Option to lsort
TIP #329:
Try/Catch/Finally syntax
TIP #330:
Eliminate interp->result from the Public Headers
TIP #331:
Allow [lset] to Extend Lists
TIP #332:
Half-Close for Bidirectional Channels
TIP #333: Draft
New Variable and Namespace Resolving Interface
TIP #334: Withdrawn
Make 'lrepeat' Accept Zero as a Count
TIP #335:
An API for Detecting Active Interpreters
TIP #336:
Supported Access To interp->errorline
TIP #337:
Make TclBackgroundException() Public
TIP #338:
Embedder Access to Startup Scripts of *_Main()
TIP #339: Rejected
Case-Insensitive Package Names
TIP #340: Draft
Const Qualification of Tcl_SetResult's Argument
TIP #341:
Multiple 'dict filter' Patterns
TIP #342: Draft
Dict Get With Default
TIP #343:
A Binary Specifier for [format/scan]
TIP #344: Draft
Bring TCP_NODELAY and SO_KEEPALIVE to socket options
TIP #345: Draft
Kill the 'identity' Encoding
TIP #346: Draft
Error on Failed String Encodings
TIP #347: Draft
Align 'string is ...' to Type-Conversion Functions in 'expr'
TIP #348: Draft
Substituted 'errorStack' / 'traceback'
TIP #349: Draft
New "-cargo" option for every Tk widget
TIP #350: Draft
Tcl Database Connectivity - Corrigenda
TIP #351: Draft
Add Striding Support to lsearch
TIP #352: Draft
Tcl Style Guide
TIP #353:
NR-enabled Expressions for Extensions
TIP #354:
Minor Production-Driven TclOO Revisions
TIP #355: Draft
Stop Fast Recycling of Channel Names on Unix
TIP #356:
NR-enabled Substitutions for Extensions
TIP #357: Draft
Export TclLoadFile
TIP #358: Draft
Suppress Empty List Element Generation from the Split Command
TIP #10000: Draft
Dummy Proposal for Testing Editing Interfaces
TIP #0: Tcl Core Team Basic Rules
|
|
TIP #1: TIP Index
|
|
TIP #2: TIP Guidelines
|
|
TIP #3: TIP Format
|
|
TIP #4: Tcl Release and Distribution Philosophy
|
|
TIP #5: Make TkClassProcs and TkSetClassProcs Public and Extensible
|
|
TIP #6: Include [Incr Tcl] in the Core Tcl distribution
|
|
TIP #7: Increased resolution for TclpGetTime on Windows
|
|
TIP #8: Add Winico support to the wm command on windows
|
|
TIP #9: Tk Standard Library
|
|
TIP #10: Tcl I/O Enhancement: Thread-Aware Channels
|
|
TIP #11: Tk Menubutton Enhancement: -compound option for menubutton
|
|
TIP #12: The "Batteries Included" Distribution
|
|
TIP #13: Web Service for Drafting and Archiving TIPs
|
|
TIP #14: Access to Tk Photo Image Transparency
|
|
TIP #15: Functions to List and Detail Math Functions
|
|
TIP #16: Tcl Functional Areas for Maintainer Assignments
|
|
TIP #17: Redo Tcl's filesystem
|
|
TIP #18: Add Labels to Frames
|
|
TIP #19: Add a Text Changed Flag to Tk's Text Widget
|
|
TIP #20: Add C Locale-Exact CType Functions
|
|
TIP #21: Asymmetric Padding in the Pack and Grid Geometry Managers
|
|
TIP #22: Multiple Index Arguments to lindex
|
|
TIP #23: Tk Toolkit Functional Areas for Maintainer Assignments
|
|
TIP #24: Tcl Maintainer Assignments
|
|
TIP #25: Native tk_messageBox on Macintosh
|
|
TIP #26: Enhancements for the Tk Text Widget
|
|
TIP #27: CONST Qualification on Pointers in Tcl API's
|
|
TIP #28: How to be a good maintainer for Tcl/Tk
|
|
TIP #29: Allow array syntax for Tcl lists
|
|
TIP #30: Tk Toolkit Maintainer Assignments
|
|
TIP #31: CVS tags in the Tcl and Tk repositories
|
|
TIP #32: Add Tcl_Obj-enabled counterpart to Tcl_CreateTrace
|
|
TIP #33: Add 'lset' Command to Assign to List Elements.
|
|
TIP #34: Modernize TEA Build System
|
|
TIP #35: Enhanced Support for Serial Communications
|
|
TIP #36: Library Access to 'Subst' Functionality
|
|
TIP #37: Uniform Rows and Columns in Grid
|
|
TIP #38: Add Support for Default Bindtags
|
|
TIP #39: Add New Standard Tk Option: -component
|
|
TIP #40: Documentation Generator for Tcl Scripts
|
|
TIP #41: Paned Window Tk Widget
|
|
TIP #42: Add New Standard Tk Option: -clientdata
|
|
TIP #43: How to be a TIP Editor
|
|
TIP #44: Move Tk's Private Commands and Variables into ::tk Namespace
|
|
TIP #45: Empty index lists for [lindex] and [lset]
|
|
TIP #46: Consistent Overlap Behavior of Area-Defining Canvas Items
|
|
TIP #47: Modifying Tk to Allow Writing X Window managers
|
|
TIP #48: Tk Widget Styling Support
|
|
TIP #49: I/O Subsystem: Add API Tcl_OutputBuffered(chan)
|
|
TIP #50: Bundle [incr Tcl] with the Core Tcl distribution
|
|
TIP #51: Native Menubutton on Macintosh
|
|
TIP #52: Hierarchical Namespace Lookup of Commands and Variables
|
|
TIP #53: Addition of 'assert' Command
|
|
TIP #54: Using PURLs to Unite the Tcl Webspace
|
|
TIP #55: Package Format for Tcl Extensions
|
|
TIP #56: Standardize Call Interface to Tcl_Eval* Functions
|
|
TIP #57: Move TclX's [lassign] into the Tcl Core
|
|
TIP #58: Extend [set] to Assign Multiple Values to Multiple Variables
|
|
TIP #59: Embed Build Information in Tcl Binary Library
|
|
TIP #60: EXTERN Macro Change to Support a Wider Set of Attributes
|
|
TIP #61: Make TK_NO_SECURITY Run-Time Switchable
|
|
TIP #62: Add Support for Command Tracing
|
|
TIP #63: Add -compound Option to Menu Entries
|
|
TIP #64: Improvements to Windows Font Handling
|
|
TIP #65: Enhanced [info args]
|
|
TIP #66: Stand-alone and Embedded Tcl/Tk Applications
|
|
TIP #67: Allow Subclassing of tk_getOpenFile, tk_getSaveFile on UNIX
|
|
TIP #68: Dynamic Trace Result Handling
|
|
TIP #69: Improvements for the Tcl Hash Table
|
|
TIP #70: A Relational Switch Control Structure
|
|
TIP #71: Tk Bitmap Image Improvements
|
|
TIP #72: 64-Bit Value Support for Tcl on 32-Bit Platforms
|
|
TIP #73: Export Tcl_GetTime in the Public API
|
|
TIP #74: wm stackorder command
|
|
TIP #75: Refer to Sub-RegExps Inside 'switch -regexp' Bodies
|
|
TIP #76: Make 'regsub' Return a String
|
|
TIP #77: Support for Nested Paired Item Lists
|
|
TIP #78: TEA 2.0 Definitions
|
|
TIP #79: Add Deletion Callback to Tcl_CreateObjTrace
|
|
TIP #80: Additional Options for 'lsearch'
|
|
TIP #81: [incr Tcl] Functional Areas for Maintainer Assignments
|
|
TIP #82: Add -offrelief Option to Checkbutton and Radiobutton
|
|
TIP #83: Augment Tcl_EvalFile with Tcl_EvalChannel and Tcl_EvalUrl
|
|
TIP #84: Add control for mouse movement filtering
|
|
TIP #85: Custom Comparisons in Tcltest
|
|
TIP #86: Improved Debugger Support
|
|
TIP #87: Allow Tcl Access to the Recursion Limit
|
|
TIP #88: Extend Tcl Process Id Control via 'pid'
|
|
TIP #89: Try/Catch Exception Handling in the Core
|
|
TIP #90: Enable [return -code] in Control Structure Procs
|
|
TIP #91: Backward Compatibility for Channel Types with 32-bit SeekProcs
|
|
TIP #92: Move Package Load Decisions to Application Developer
|
|
TIP #93: Get/Delete Enhancement for the Tk Text Widget
|
|
TIP #94: Add Listbox -activestyle Option
|
|
TIP #95: Add [wm attributes] Command
|
|
TIP #96: Add [tk caret] Command and Tk_SetCaretPos API
|
|
TIP #97: Moving Vertices of Canvas Items
|
|
TIP #98: Adding Transparency Compositing Rules to Photo Images
|
|
TIP #99: Add 'file link' to Tcl
|
|
TIP #100: Add Support for Unloading Dynamic Libraries Loaded with [load]
|
|
TIP #101: Export Tcltest Configuration
|
|
TIP #102: Change [trace list] to [trace info]
|
|
TIP #103: Argument Expansion Command
|
|