tclc is a Tcl to C compiler. The primary goal of the tclc project is to improve startup and execution speed of tcl scripts. The secondary goal is to check the correctness of a tcl script at compile time.

It should be quite easy to mix interpreted and compiled scripts. Therefore tclc compiles a single source to a tcl extension which could be loaded with `load'. So you don't have to compile your complete program with tclc, but only the mature or performance critical parts.

tclc is in an early development phase, and may reject, miscompile or slow down your program.

Here is an example for an error that tclc catches at compile time, but tcl on runtime:

  proc test {} { return [expr {1.0+}] }

In tclsh this definition is just fine. tclc rejects this definition with

  tclc: parse error at (line 1, column 32):
  unexpected end of input  
  expecting "(", Variable, Application, "-", digit, "\"" or "{"

You can get the latest source with

  darcs get (link is 404 on Aug 13, 2011)

Also available as part of the geek project.