Gauche

Gauche is a scheme implementation for system scripting.
Download

Gauche Ranking & Summary

Advertisement

  • Rating:
  • License:
  • BSD License
  • Price:
  • FREE
  • Publisher Name:
  • Shiro.k
  • Publisher web site:
  • http://www.shiro.dreamhost.com/scheme/gauche/

Gauche Tags


Gauche Description

Gauche is a scheme implementation for system scripting. Gauche is an R5RS Scheme implementation developed to be a handy script interpreter, which allows programmers and system administrators to write small to large scripts for their daily chores. Quick startup, built-in system interface, native multilingual support are some of my goals.Gauche application runs on several Unix-like platforms.Instalation% gzcat Gauche-0.8.3.tgz | tar xf -% cd Gauche-0.8.3% ./configure% make% make install Here are some key features of "Gauche": · Covers R5RS, almost. · R5RS macro is supported as all of define-syntax, let-syntax, letrec-syntax forms. I think the speed of macro expansion is important as a script interpreter, and wrote R5RS macro expander in C, integrated in the internal compiler engine. · Numeric operations are supported on fixnum, bignum, flonum and complex. · Supports the following 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: On some platforms, multithreading is supported on top of pthreads. 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 What's New in This Release: · C API incompatible changes: Several incompatible C API changes are introduced, which may cause some extension to fail to compile. See API Changes in 0.9 for the details. New features: · New module: rfc.zlib: Zlib compression/decompression. · New module: rfc.sha: SHA2 support. rfc.sha1 is superseded by this module. · New module: util.sparse: Sparse vectors backed up by space-efficient trie, and hash-tables implemented on top of sparse vectors. They are memory efficient than the builtin hash tables when you want to keep tens of millions of entries. · Autoprovide: You no longer need 'provide' form for most of times. If (require "X") successfully loads X.scm and it doesn't have a provide form, the feature "X" is automatically provided. See the "Require and provide" section of the reference for more details. · Module gauche.test: Improved testing for exceptions. You can now test whether a specific type of condition is thrown by giving (test-error condition-type) as the expected result. See the manual entry for more details. · Module rfc.http: Now handles proxy by :proxy keyword argument. You can also easily compose application/x-www-form-urlencoded and multipart/form-data message to send form parameters. New procedures: http-put and http-delete. · Module rfc.mime: Added support of composing a MIME message. · Module gauche.threads: New procedures: thread-stop!, thread-cont!, thread-state. · Module gauche.termios: On Windows native support, this module provides Windows Console API instead of POSIX termios API, since emulationg POSIX termios on Windows is too much. A set of common high-level API that can be used on both POSIX and Windows are also added. · Module gauche.dictionary provides a bidirectional map, . · run-process in module gauche.process, and builtin sys-exec and sys-fork-and-exec support :directory keyword argument to specify the working directory of the executed process. · Module file.util provides create-directory-tree and check-directory-tree. · Module gauche.net provides low-level socket operations: socket-sendmsg, socket-buildmsg, and socket-ioctl. Call-with-client-socket takes new keyword args to specify buffering mode for the socket. · Module www.cgi: cgi-main switches the buffering mode of stderr to line, so that the httpd log can record error messages line-by-line (much less clutter than before). Major fixes and improvements: · Fixed build problem on OSX 10.6 (Snow Leopard). · Performance is greatly improved on floating point number arithmetics, optional argument handling of builtin procedures, and case-lambda. · Now all whitespace characters defined in R6RS works as intertoken spaces in the source code. · A warning message is printed when a thread exits with an error and no other thread retrieve its status by thread-join! before the thread is GC-ed. This helps troubleshooting. Since thread-join! is the only way to know if the thread exitted by an error, you have either to call thread-join! to make sure to check the status, or to write the thread thunk to catch all errors and handle them properly. · Anonymous module name is #f now, instead of (somewhat arbitrarily chosen) |#|. · Some enhancements on symbols: 'uninterned' symbos are officially supported (symbols generated by gensym have been uninterned, but never been documented officially.) Uninterned symbols are written as #:symbol a la CommonLisp. Uninterned symbols are not registered to the internal symbol table, so there's no worry about name crash. The only way to refer to the same uninterned symbol from more than one place in the source code is to use srfi-38 notation (#n= and #n#). You can create uninterned symbol by string->uninterned-symbol and check whether a symbol is interned or not by symbol-intened?. There is also a new procedure, symbol-sans-prefix.


Gauche Related Software