There are several reasons I love Tcl:
- It supports Unicode in code and GUI
- The community is great
- It is truly interactive: Open a console in your application and see what is really going on
- Tclkit or Starkit deployment is very, very convenient
- It is very easy to install libraries without changing config files all over the place
- The community is great
- Very simple syntax and everything is a string: This allows for some funky stuff like redefining proc
- The C-API is one of the easiest of any of the ones I have seen (Perl, Python, Ruby) this makes it very easy to wrap C libraries. See for an example readline
- The community is great
Current projects
- Embedding tcc in a Tcl extension. It can compile an example Tcl extension at the moment tdom and supports VFS
- Alternative Namespaces
- Tailing widget
- Tcl Interface to WinPCAP
- less
- readline
- Angles on a compass
- exec quotes problem
- SNMP parser
- WBXML
- tedit - Tcl only text editor with Emacs like functionality (sort of). Bindtags are so cool.
- newexec
- Self and my C-implementation at SELF extension
- scriptaculous
- SOCKS proxy
- XOTcl Objects as Tcl Commands with subcommands
- Tuplespace
- Event tutorial
- Engineering Notation
- Overridden commands - restoring Tcl internal commands that have been overridden beyond your control
- Wizard
- Retrieve file icon using the Win32 API
- Scratchpad
- NTLM
- cal
- chan mode
- Extending chan - Extending Tcl core commands implemented with namespace ensembles
- Tcl in a hybrid of RealLife and More Equal Pigs
- SCGI
- Splitting an amount in parts
- Retrieving movie information from IMDB
- TkTreeCtrl
- tcc - and more specifically tcltcc, a Tcl binding to tcc (hosted at [1])
- tunnel
- freezeconfig
- Entering Unicode characters in a widget
- Finding duplicate files
- Interfacing Windows Search
- A Simple Wiki with Outlook backend
- A DSL to generate XSD files
- Tcl2Exe Using sdx and a build file to quickly wrap tcl scripts and applications as executables.
- Example of a Tcl extension in Free Pascal Using FreePascal to write stub enabled Tcl extensions.
- Everything will be compiled (so not only procs)
- Image based Tcl ala Smalltalk
- Fast OO ala Self Extension
- Extensible parser allow {..}... to be extended from script level
- Better exec
- Faster Tcl IO performance
- Typed Tcl
- Tcl frontend to fossil db's
- Caching in the Self extension using epoch counters
% set m {matrix {{1 2 3} {4 5 6} {7 8 9}} } % proc matrix {matrix {method {}} args} { if {$method eq {}} { # return the 'typeless' matrix return $matrix } switch $method { row { return [lindex $matrix [lindex $args 0]] } } } % $m ; #gives the undecorated matrix {1 2 3} {4 5 6} {7 8 9} % $m row 1 4 5 6Which is a thing of beauty IMO.The git repo linked to is dead, but the change to enable autoexpansion seems to be almost trivial.
--- generic/tclParse.c +++ generic/tclParse.c @@ -301,11 +301,11 @@ parsePtr->commandStart = src; type = CHAR_TYPE(*src); scanned = 1; /* Can't have missing whitepsace before first word. */ while (1) { - int expandWord = 0; + int expandWord = (parsePtr->numWords==0); /* Are we at command termination? */ if ((numBytes == 0) || (type & terminators) != 0) { parsePtr->term = src;
Everything I post on the wiki is in the public domain unless explicitly marked otherwise. I would love to hear if some of it was useful to you though.