Jim is an opensource small-footprint implementation of the Tcl programming language. It implements a large subset of Tcl and adds new features like references with garbage collection, closures, built-in Object Oriented Programming system, Functional Programming commands, first-class arrays and UTF-8 support. All this with a binary size of about 100-200kB (depending upon selected options).

The Jim core is very stable. Jim passes over 3000 unit tests and many Tcl programs run unmodified. Jim is highly modular with the possiblity to configure many components as loadable modules, or omitted entirely. A number of extensions are included with Jim which may be built as loadable modules.

Jim cross compiles easily and is in use in many embedded environments. It runs under many operating systems, including Linux, FreeBSD, QNX, eCos, Windows (cygwin and mingw32).

Jim has built-in command line editing for the interactive shell, jimsh.


Jim’s goal is to provide a powerful language implemented in roughly 10k lines of code. Jim is designed to be easily embedded in applications as a scripting language or configuration file syntax without depending on external libraries or other big systems.

We believe scripting is a very interesting feature for many applications, but developers are often not encouraged to link the application to a big external system. Jim tries to address this problem by providing a very simple to understand and small footprint implementation of a language that is ideal for scripting, and at the same time is powerful and scalable.

Jim is also designed for deployment on Embedded Systems. It is easy to cross compile, written in portable ANSI-C, and is very small both in both binary size and memory requirements.