Features
Standard conformance
- Covers R7RS, almost.
- Both R7RS high-level macro and legacy define-macro, and explicit-renaming macro are supported.
- Numeric operations are supported on fixnum, bignum, flonum and complex.
- Supports lots of SRFIs (See the manual entry for the list fo supported SRFIs).
Additional features
- Module system:a simple module system, API compatible to STklos
- Object system:CLOS-like object system with metaobject protocol. Almost API compatible to STklos . It is also similar to Guile 's object system.
- Multibyte string support: Strings are represented by multibyte string internally. You can use UTF-8, EUC-JP, Shift-JIS or no multibyte encoding by configure-time choice. Conversion between native coding system and external coding system is supported by port objects.
- Multibyte regexp: Regular expression matcher is aware of multibyte string; you can use multibyte characters both in patterns and matched strings.
- Reader extension: literal regexp and char-set, string interpolation:
Extended reader recognizes #/.../ as an regular expression,
and #[...] as a character set. Handy to write one-liners.
(e.g. (rxmatch-substring (rxmatch #/(\d+)/ "abc123def")) ==> "123")
Also "string interpolation" is supported (e.g. (display #`"1 + 2 = ,(+ 1 2)\n")). - System interface: Covers most of POSIX.1 and some other features common in Unices. See section 6.19 of the reference manual for details.
- Network interface: Has API for socket-based network interface, including IPv6 if the OS suppots it.
- Multithreading: Based on native threads. Scheme-level API conforms SRFI-18.
- DBM interface: Interface to DBM-like libraries (dbm, ndbm and/or gdbm) if the system provides them.
- XML parsing: Oleg Kiselyov's SXML tools are included.
- OpenGL binding: OpenGL binding is provided in a separate package.
- GTK binding: GTK2 binding is provided in a separate package.
Performance
Gauche is a script engine in the sense that it reads and evaluates the source code, but internally it compiles Scheme expressions into an intermediate forma by optimizing compiler then executes it by a virtual machine. So far, the performance is comparable to other Scheme interpreters, I hope.