Version 50 of What feature or functionality is missing in Tcl

Updated 2003-01-20 18:42:43

Purpose: to outline and prioritize features and functionality that developers or users find missing in Tcl. As you think of things to add to the list below, please insert the things in the appropriate place. If someone is aware of code (patches, extensions, procs, etc.) which fulfills the need, please drop a URL or Wiki reference in place so that we know that requirement has/can be met.

Also, feel free to add, enhance, or expand on the categories and/or definitions below. I just took a first crack at this as a brain storming start place.


Missing Features - these have to do with how Tcl the language itself works, syntactically, gramatically, etc.

Critical Missing Features

Insert items here which are so needed in Tcl that until the feature is present, the language isn't suitable for use in your particular problem domain. If you have a lot of description, background, etc. drop in a Wikit or URI pointer to a seperate location.

Important Missing Features

Items inserted here will add to Tcl features which are needed to resolve major development or support issues.

  • A way to (efficiently) create commands that are deleted (garbage collected) as soon as the last reference to them vanishes. In particular, new references must not be obtainable through [info commands] (unless other references to the command still remain?)

Useful Missing Features

Items inserted here improve Tcl in significant ways.


Features Found In Every Program

Functions or commands you find yourself adding to every program you write. Sure, there's no need to add them to the core...but wouldn't it be nice if you could forget about them?

  • A command that returns a guaranteed unused command name, optionally using a template for the name.
  • An lshift command: return the first element of a list stored in a variable, removing it from the list and updating the variable (surely this would be faster in C?)

Missing Functionality - these items have more to do with extensions / bindings / etc. than with the language of Tcl itself. Often Tcl is taken to task as not having a batteries included mentality. However, I still haven't seen those in community who believe this come to an agreement on requirements that would satisfy them. Working on a 'sumo' software development kit, as I keep hearing people endorse, isn't a useful task if a set of requirements aren't clearly identified. What I find as a sufficient set of extensions may not have much overlap with someone else's needs. Identifying what is needed allows the community work towards that goal. Below, list the extensions that one would want to find in a single, huge, all inclusive extension distribution.

Note: if you see something listed as having never been written but you know that it is available, feel free to move the entry down and add to the entry the appropriate pointer to the package.

  • Critical Missing Functionality
  1. What we need here is a list of needs that have not even been written yet, as far as the writer knows.
  2. A general database interface, under which a person could plug in specific hooks to Oracle, Sybase, Postgres, msql, odbc, etc. without having application changes needing to be made. Work on this has gone on with tclodbc and [fill in other extension names here]
  3. Documentation, examples based on Functionality of frame and toplevel -container to enable swallowing of external X desktop applications, xterms, etc.
  4. Better Data Structure support, with garbage collection where appropriate
  5. True Multi-dimensional arrays (does nap satisfy here or BLT's data vectors?)
  6. Garbage Collected Reference style data objects
  7. Better Cross platform ability to print out GUI components
  8. Rich clipboard types
  9. Plugin style browser functionality, to allow seamless download and launch of Tcl/Tk application without a seperate install step (perhaps making use of starpacks?)
  10. More help from ProWrap to figure out what extensions can be included and which can't and help resolve the issue
  11. An http client package that supports async requests
  12. An http client package that supports persistent connections
  13. Lazy evaluation support
  14. Transmission of events/bindings between subwidgets of a megawidget
  15. Support for lists of pure strings (??)
  16. Generate procs from a string (why doesn't eval work here?)
  17. Documentation support (why doesn't autodoc, etc. work here?)
  18. Cross-platform ability in Tcl to get just one character from stdin.
  19. Named colors (similar to named fonts) and the system colors with names
  20. Option sets
  21. Ability to use all Windows (or other OS) native widgets - in the way that the MacOS X team is providing Aqua support
  22. Seperate events from Tk, so they could be used by Tcl only programs. Michael McLennan has something called a trigger command that may be relevant.
  23. Continuations combined with Tcl level events (What are continuations?) ("... a way to nest calls to VWait in a way that the outer calls can wake before the inner calls do. That's the difference between continuations and subroutines.)
  • Important Missing Functionality
  1. What goes in this part of the list would be functionality currently not distributed in the centralized package known as Tcl, but which people consider essential to be distributed.
  • One or more Object Oriented Extensions

This assumes that such a thing is of interest to people. Alternatives to including this functionality into Tcl itself are:

  1. incr Tcl [This one is on its way into the core distribution - if only someone steps forward and leads the work effort to make it happen.]
  2. stooop [This one is now in Tcllib ].
  3. pool
  4. XOTcl
  5. Snit's Not Incr Tcl
  • One or more Windowing Extensions
  1. Tk
  2. wxTcl (is that the right name?)
  3. Fltk Tcl binding
  1. incr Tk
  2. mkWidgets
  • One or more additional Extensions that add widgets to Tk
  1. BWidgets
  2. BLT
  3. Tix [L1 ] [L2 ]
  4. EffTcl (from the book Effective Tcl/Tk Programming)
  5. One of the HTML rendering widgets like TkHTML
  6. an OpenGL based widget set
  7. a multi-column listbox widget like mclistbox, but with image capability as well
  8. incr Widgets
  9. Drag and Drop support such as TkDND [L3 ] [L4 ] [L5 ]
  10. TkTable
  11. The vu widget set (part of TkTable SF project, but different widgets)
  12. A combobox
  13. A tree widget TkTreeCtrl
  14. A progress bar (This should use native progressbars on Windows and OS X)
  15. A tab notebook
  • Extensions of other types
  1. Critcl
  2. Img
  3. Expect
  4. TclX
  5. tcllib
  6. Snack
  7. tclSOAP
  8. tclxml
  9. tclDOM
  10. tclvfs
  11. tcl threads
  12. Provide http 1.1 support in Tcl's default http support (see TclSOAP for a beginning towards such support).
  • Useful Missing Functionality
  1. In this category are those things which if available would be pleasant to have, or even important in some cases, but, in general, are not needed.
  • Extended digit math support
  1. Mpexpr
  • Statistics calculation support (AM is working on a module for this)
  • Numerical analysis support (Some modules in Tcllib are available for the purpose, and there is the LA package)
  • Lambda In Tcl
  • Other
  1. LDAP
  2. Trf
  3. Memchan
  4. tkpiechart
  5. a port of the various widgets available for Perl/Tk but which are not currently available for Tcl/Tk
  6. UDP handling in the core (hopefully as versatile and elegant as the current sockets implementation)
  7. Tiled backgrounds in widgets
  8. Ability to attach user data to an event - particularly virtual events - so they could be used as general message passing mechanism.
  9. Ability to treat an event more like an object
  10. Ability to overload expr's operators, to add things like complex number calculation support.
  11. tclhttpd (What in the world does this mean?)

See also Tcl 9.0 WishList and Tk 9.0 WishList.


Category Suggestions