- 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).
- 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.
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.
The table below lists the platforms Gauche runs on. If you can compile on the other platforms, let me know.
|0.9.8||Linux (Ubuntu 18.04)||x86, x86_64||gcc||OK||Passes all tests.|
|Windows 10 (Mingw-w64/MSYS2)||x86_64||gcc||OK||Passes all tests.|
|MacOSX Version 10.14.5||x86_64||gcc||OK||Passes all tests.|
|0.9.3||FreeBSD 9||x86_64||gcc||OK||Passes all tests.|
|0.9.3.3||MacOS X 10.7||x86_64||gcc||OK||Passes all tests.|
|0.8.8||Linux (Debian3.0)||Alpha||gcc||OK||Passes all tests.|
|Solaris 9||SPARC||gcc||OK||Use gmake to build. Passes all tests.|
|Solaris 9||x86||gcc||OK||Use gmake to build. Passes all tests.|
|0.9.2||NetBSD 5||x86||gcc||OK||Passes all tests.|
|NetBSD 5||x86_64||gcc||OK||Passes all tests.|
|0.9||NetBSD 5||Power PC||gcc||OK||Passes all tests.|
|0.8.9||HP-UX 11.11||PA RISC||gcc||N/A||Passes all tests except gauche.charconv. It seems to choke when compiled with the system provided iconv. We haven't dug it well, but if it bites you, try alternative iconv library.|
|0.7.1||Linux (Debian3.0)||SPARC||gcc||OK||Passes all tests.|
|0.8.12||Linux (Debian3.0)||Power PC||gcc||OK||Passes all tests|
|0.5.2||Irix 6.5||MIPS||gcc, MIPSPro CC||?||Passes all tests|
|FreeBSD 2.2.1||x86||gcc||?||Passes all tests (thanks to Abe Hiroshi)|
|0.5.4||MacOS 7.5.5||68k||sc||N/A||Reported to work with some modification by Yasunari Shimizu. Many system functions don't work. I don't have the porting code.|