- Covers R7RS, almost.
- Both R7RS high-level macro and legacy define-macro are supported.
- Numeric operations are supported on fixnum, bignum, flonum and complex.
- Supports the following SRFIs.
- SRFI-0 Feature based conditional expansion construct
- SRFI-1 List library
- SRFI-2 And-let*
- SRFI-4 Homogeneous numeric vector datatypes
- SRFI-5 A compatible let form with signatures and rest arguments
- SRFI-6 String ports
- SRFI-7 Feature-based program configuration language
- SRFI-8 Receive
- SRFI-9 Record Types
- SRFI-10 Sharp-comma external form
- SRFI-11 Let-values
- SRFI-13 String Library
- SRFI-14 Character Set Library
- SRFI-16 Syntax for procedures of variable arity
- SRFI-17 Generalized set!
- SRFI-18 Multithreading support
- SRFI-19 Time data types and procedures
- SRFI-22 Running Scheme Scripts on Unix
- SRFI-23 Error reporting mechanism
- SRFI-25 Multi-dimensional array primitives
- SRFI-26 Notation for Specializing Parameters without Currying
- SRFI-27 Sources of random bits
- SRFI-28 Basic format strings
- SRFI-29 Localization
- SRFI-30 Nested Multi-line comments
- SRFI-31 A special form rec for recursive evaluation
- SRFI-34 Exception Handling for Programs
- SRFI-35 Conditions
- SRFI-36 I/O Conditions (partly)
- SRFI-37 args-fold: a program argument processor
- SRFI-38 External Representation for Data With Shared Structure
- SRFI-39 Parameter objects
- SRFI-40 A Library of Streams
- SRFI-42 Eager comprehenshion
- SRFI-43 Vector Library
- SRFI-45 Primitives for Expressing Iterative Lazy Algorithms
- SRFI-46 Basic Syntax-rules Extensions
- SRFI-55 require-extension
- SRFI-60 Integers as bits
- SRFI-61 A more general cond clause
- SRFI-62 S-expression comments
- SRFI-87 => in case clauses
- SRFI-95 Sorting and merging
- SRFI-98 An interface to access environment variables
- SRFI-99 ERR5RS Records
- SRFI-106 Basic socket interface
- 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.4||Linux (Ubuntu 12.04)||x86, x86_64||gcc||OK||Passes all tests.|
|Windows Vista SP2 (MinGW)||x86_64||gcc||OK||Passes all tests.|
|MacOSX Version 10.9.3||x86_64||gcc||OK||Passes all tests.|
|0.9.3.3||Linux (Ubuntu 10.04)||x86, x86_64||gcc||OK||Passes all tests.|
|Windows Vista SP2 (Cygwin-NT 5.1)||x86_64||gcc||OK||One new GC test fails, which is under investigation. Gauche tests pass.|
|Windows Vista SP2 (MinGW)||x86_64||gcc||OK||Some GC tests fail, though I believe it is test build process problem.|
|MacOS X 10.7||x86_64||gcc||OK||Passes all tests.|
|0.9.3||FreeBSD 9||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.|
There must be a lot, but I list a few important ones.
- Character classes are correct only in ASCII range, even if you compile Gauche with UTF-8 native encoding. I'm not sure how soon I can fix this.
- R5RS define-syntax macros that generate define-syntax macros don't work.