Current status

In October 2006, the Tiny-Fu code was rolled in to the Script-Fu plug-in of GIMP. At the end of October 2007, updated Script-Fu code from GIMP 2.4 was rolled back in to Tiny-Fu as version 1.2.0. This merge brings an end to the version 1 series of Tiny-Fu.

On November 2, 2007 work began on the creation of version 2 of Tiny-Fu. The biggest change in version 2 will be the running of Scheme scripts as plug-ins.

The main changes to the build and installation system have already been commited to the Subversion repository. The restructuring of the code which forms the glue between the Scheme interpreter and GIMP is still to be done. Until the glue code is updated Tiny-Fu will not be capable of running any scripts.

If you are using GIMP 2.2, you should be using version 1.0.2 of Tiny-Fu. If you are using GIMP 2.4 or later, you do not need Tiny-Fu since the Tiny-Fu code was rolled in to the Script-Fu plug-in.

See the news page for more information about recent (and not so recent) changes.

Background

Tiny-Fu is a plug-in for the 2.2 version of GIMP. With this plug-in you can run scripts to automate the operation of GIMP. It is essentially a modified version of Script-Fu but with some major changes. The biggest change was the replacement of the old SIOD-based Scheme interpreter with TinyScheme. For now, it will happily co-exist with Script-Fu since the plug-ins install using different file names and they each have their own separate set of script files.

The Tiny-Fu plug-in has been running scripts since March 6, 2004. As of June 1, 2006, all scripts which are part of Script-Fu have been updated and are working in Tiny-Fu. For additional information about recent changes, you can check the ChangeLog.

How does it compare to Script-Fu?

The biggest and most fundamental change is the use of TinyScheme as the underlying Scheme interpreter instead of the much older SIOD. TinyScheme is a lightweight Scheme interpreter that implements as large a subset of R5RS as was possible without getting very large and complicated. It may not be as complete an implementation of Scheme compared to Guile (for example) but it has (almost?) everything needed to create scripts for GIMP.

The use of TinyScheme results in two other differences compared to Script-Fu. The first is that variables must be defined before first use. The second is that local variables are truly local where they could be accessed globally in Script-Fu.

What are the advantages of Tiny-Fu?

In addition to more closely following the Scheme standards, TinyScheme supports the inclusion of extensions as a way to add extra features for use in scripts. The Tiny-Fu plug-in uses the 're' and 'tsx' extensions.

The 're' extension adds regexp style pattern matching. The 'tsx' extension (which I am now calling 'ftx' since it deviates from the original version of 'tsx') adds time and date functions in addition to extra file I/O functions.

The most important change to Tiny-Fu was introduced as of the 0.9.8 release. It understands, and can work with, UTF-8 coded characters and strings. This allows Tiny-Fu to use characters that can not be represented using standard ASCII (ie. symbols and letters in non-English languages).

The words 'Middle East' in Bulgarian in a 90 degree arc

The text in the above image is "Middle East" in Bulgarian. It is an example of what is now possible. It was created with the logo script Text Circle using a 24-point Sans font, a start angle of -45, and a fill angle of 90. The final image was auto-cropped to remove excess white space.

Additional advantages are:

Known problems

This is a list of known problems and other issues that were noticed at one time. Some of the listed problems/issues may be obsolete.

ToDo list

The list which follows are some of the highlights from my ToDo list for the Tiny-Fu plug-in. The complete list, is available here.