Projects / Gauche

Gauche

Gauche is an R5RS Scheme implementation that aims to be a handy tool for daily work. Quick startup, a built-in system interface, and native multilingual support are some of its goals. It has an OO system similar to STklos and Guile. It supports UTF-8, EUC-JP, and Shift-JIS multibyte encodings natively.

Tags
Licenses
Operating Systems
Implementation

Recent releases

  •  28 May 2012 21:33

    Release Notes: This release fixes a few build issues.

    •  10 May 2012 08:17

      Release Notes: This release added support for lazy sequences, a seamless integration of lazy evaluation with list manipulation. Threads are supported on the Windows native build. There were various bugfixes and performance improvements.

      •  06 Aug 2011 13:10

        Release Notes: Various minor feature enhancements and bugfixes were made in this release. New features include Unicode case-mapping support, a utility for atomic execution, a convenient benchmarking utility, and a public API for C code generation routines. The Windows binary installer now comes as an MS installer file, generated by WiX.

        •  13 Dec 2010 23:44

          Release Notes: This release adds many new features, including: efficient records, an enhanced module mechanism with renaming and prefixing, extended formals for optional and keyword arguments, partial continuations, thread pools, better Windows support, JSON parsing, Blowfish password hashing, and more.

          •  10 Dec 2009 22:32

            Release Notes: Major feature enhancements were made. Incompatible changes were made to the C API. The rfc.zlib and rfc.sha modules were added. The util.sparse module backs up sparse vectors with a space-efficient trie and hash-tables. The gauche.threads module has new procedures. The gauche.termios module provides a common high-level API for both POSIX and Windows. The gauche.net module provides low-level socket operations. Uninterned symbols are officially supported. A build problem on Mac OS X 10.6 was fixed. A precompiled binary installer for Windows is now available.

            Recent comments

            20 Feb 2006 07:18 EvanProdromou

            Gauche is the Scheme I always wanted
            I've been looking for a solid, high-performance Scheme implementation for general scripting and systems programming for several years now. I was really happy to find Gauche. It has an extensive library of support functions and binary extensions and great support for SRFIs (Scheme Requests for Implementation -- the "open standards" of the Scheme world).

            Most "modern" scripting issues -- networking, XML parsing, text manipulation, Web programming, embedding and extending -- are nicely handled with clean interfaces.

            I think that programmers who are looking for top-notch alternative to Python and Perl -- the crowd that is moving to e.g. Ruby and Groovy -- should take a close look at Gauche as a real alternative.

            28 May 2002 17:52 shirok

            Re: WHAT ??

            > It could be useful to compare [feature
            > by feature] Gauche vs Guile. That would
            > help to choose a right Scheme for the
            > right project. Guile was here for
            > awhile, why would we need another
            > Scheme? Is there anything wrong with
            > Guile?


            Good point. There's nothing wrong with Guile, but
            simply there are some features I needed that
            are (or were) not in Guile and was difficult to add
            to the existing implementation without changins its design policy.

            (1) Native multibyte string handling. I wanted string-ref
            (and its corresponding C API) to work correctly on a string that mixes latin and japanese characters. So as read-char. So as regexp.
            If it were easy to modify existing implementation to
            realize this, I'd done that. What I found was that
            the change would affect everywhere in the code. and sometimes it sacrifices the performance, so some users will not want to have it.

            (2) Use of Boehm GC. This is also a fundamental design policy issue. Changing this affects everywhere
            in the code.

            (3) VM architecture. The choice of interpreter engine
            greatly affects the interface how C-defined procedure
            is called. It is very difficult to change one to the other after you wrote large number of C-defined procedures.

            (4) Licensing issue. I'm not anti-GNU, but there are certain cases that I have to avoid GNU-ed code to achieve my goal.

            I have certain applications I want to write in Gauche,
            and design decisions are made according to that goal.
            Those design decisions need not agree with Guile's.

            I don't want to reinvent every wheels. I'm trying to
            keep the Scheme-level interface compatible to
            existing implementations as much as possible, so that
            the Scheme modules written in other implementations
            can be easily ported to Gauche.


            > I would recommend to compare first of
            > all the following features: XML
            > processing (including XPath and RDF),


            Oleg Kiselyov's SXML runs on Gauche. So on Guile.


            > integration with web servers (CGI,
            > Apache modules, standalone HTTPD),


            No standalone httpd, or Apache module.
            Simple CGI module is provided, but the API is
            Gauche specific.


            > integration with GUI (like GNOME, QT or
            > Win32), database API (PostgreSQL,
            > MySQL), other communications (CORBA,
            > SOAP).


            Not yet.


            > Also, it would be useful to show the
            > best and typical applications using
            > Gaucho.


            As I mentioned above, I started Gauche
            to satisfy the requirements for the applications
            I wanted to write. (Writing Scheme implementation
            is not my goal; it's just a preparation).
            Once Gauche become stable, I'll start writing applications.

            Meanwhile, Gauche looks like some 'yet another premature Scheme implementation'.
            If you need features like GUI or Database
            binding immediately, I don't recommend Gauche.

            If you deal with multibyte documents, however,
            Gauche may be some use.

            28 May 2002 08:21 panserg

            Re: WHAT ??
            It could be useful to compare [feature by feature] Gauche vs Guile. That would help to choose a right Scheme for the right project. Guile was here for awhile, why would we need another Scheme? Is there anything wrong with Guile?

            I would recommend to compare first of all the following features: XML processing (including XPath and RDF), integration with web servers (CGI, Apache modules, standalone HTTPD), integration with GUI (like GNOME, QT or Win32), database API (PostgreSQL, MySQL), other communications (CORBA, SOAP).

            Also, it would be useful to show the best and typical applications using Gaucho.

            16 Feb 2002 02:17 shirok

            Re: WHAT ??

            > Somebody please tell me what the HECK is
            > R5RS..
            >
            > What I mean is that how can something
            > that most people probably won't
            > understand the meaning of, be handy in
            > daily work ??

            R5RS stands for Revised^5 Report on the Algorithmic Language Scheme",
            the "standard" of the Scheme language.


            IMHO, handy tools need not be what is obvious to those who are not familiar with it,
            although to be so may be a plus. If you're curious, take a look at the following article:


            Being popular (http://www.paulgraham.com/popular.html)


            Of course, people can have different view.

            16 Feb 2002 01:51 mystran

            WHAT ??
            Somebody please tell me what the HECK is R5RS..

            What I mean is that how can something that most people probably won't understand the meaning of, be handy in daily work ??

            Screenshot

            Project Spotlight

            OpenStack4j

            A Fluent OpenStack client API for Java.

            Screenshot

            Project Spotlight

            TurnKey TWiki Appliance

            A TWiki appliance that is easy to use and lightweight.