The information on this page is only relevant to the 2.2, and earlier, versions of GIMP which use SIOD as the Scheme interpreter. As of the 2.4 version of GIMP, the Scheme interpreter of Script-Fu was replaced by TinyScheme.


The issue of which of the SIOD Scheme interpreter functions are available to scripts in the Script-Fu plug-in of GIMP came up again in November of 2005 on the Script-Fu mailing list. Thinking about this issue I remembered that SIOD, as used in Script-Fu, only uses two of the source files which define functions. These are the slib.c and sliba.c source files. It does not include the 105 functions defined in the slibu.c file.

Until now (February 12, 2006), anyone asking the question was usually pointed to the SIOD main site. I decided it was time to make a list of what is really available. I grepped the files to extract a list of supported functions in the portion of SIOD that is used in Script-Fu and sorted it alphabetically. I believe the following list is complete.

<, <=, =, >=, >, -, /, *, +, abs, acos, allocate-heap, and, append, append2, apply, apropos, aref, array->hexstr, aset, ash, asin, ass, ass, assoc, assq, assv, atan, atan2, base64decode, base64encode, begin, benchmark-eval, benchmark-funcall1, benchmark-funcall2, bit-and, bit-not, bit-or, bit-xor, butlast, bytes-append, caaar, caadr, caar, cadar, caddr, cadr, car, *catch, cdaar, cdadr, cdar, cddar, cdddr, cddr, cdr, %%closure, %%closure-code, %%closure-env, cond, cons, cons-array, copy-list, cos, define, delq, env-lookup, eof-val, eq?, equal?, eqv?, error, eval, exp, fast-load, fast-print, fast-read, fast-save, fclose, fflush, fmod, fopen, fread, fseek, ftell, fwrite, gc, gc-info, gc-status, get, getc, help, hexstr->bytes, href, hset, if, intern, lambda, larg-default, last, last-c-error, length, list, lkey-default, load, log, lref-default, make-list, mapcar, mapcar1, mapcar2, max, member, memq, memv, min, nconc, not, nreverse, nth, null?, number?, number->string, or, pair?, parse-number, parser_fasl, parser_fasl_hook, parser_read, pow, prin1, print, print-to-string, prog1, putc, putprop, puts, qsort, quit, quote, rand, read, read-from-string, realtime, regcomp, regerror, regexec, require, reverse, runtime, save-forms, set!, set-car!, set-cdr!, set-eval-history, setprop, set-symbol-value!, sin, sqrt, srand, %%stack-limit, strbreakup, strcat, strcmp, strcpy, strcspn, string?, string-append, string-dimension, string-downcase, string-length, string-lessp, string->number, string-search, string-trim, string-trim-left, string-trim-right, string-upcase, strspn, subset, substring, substring-equal?, swrite, sxhash, symbol?, symbol-bound?, symbolconc, symbol-value, tan, the-environment, *throw, trace, trunc, typeof, unbreakupstr, ungetc, untrace, verbose, while, writes

Keep in mind that some of the functions listed above may be for internal use only by the SIOD interpreter and not meant for use in scripts. You should also keep in mind that a number of the functions listed above are unique to the SIOD Scheme interpreter and are unlikely to be available in interpreters that follow the Scheme standard.

In addition, some of the SIOD functions behave in a way that is in direct conflict with the behaviour defined in the Scheme standard, take extra arguments over the Scheme standard definitions, or include extra functionality not defined in the Scheme standard.