Stutter 0.19

A programming language called Stutter.
It is intended to be an experimental, interpreted language based on the LISP,
Scheme & friends family, for personal/educational purposes. Portability is
desired, within reasonable limits.

All the software is open source, licensed on a "do whatever you want with it"
basis. (igor2 clarifies: this means that Stutter is public domain.)

There is an interpreter library and a command line environment (tested on
Linux, although they should compile on other similar platforms with little or
no modification). A simple C API exists for embedding the interpreter; also,
there is a script interface module for Stutter in GPMI, the General
Package/Module Interface. [http://sourceforge.net/projects/libgpmi]

Contact: k-zed@hactar.net

Capabilities:
    * Core language with integer, double, string, multidimensional array types
    * Lists
    * Macros
    * Closures
    * Tail recursion is optimised into iteration
    * Mark & sweep garbage collector
    * Embeddable interpreter library with simple C API
    * A subset of CLOS, defstruct
    * Modules that can be compiled in or loaded in run time
    * SETF architecture

Modules:
    * SQLite3
    * PostgreSQL
    * XML parser
    * Perl regex library

To learn programming in Stutter, you can read a basic LISP tutorial (most
of the simple list-related stuff might work), and browse the documentation.

VIM users, you can add this line to your .vimrc:

au BufNewFile,BufRead *.stt            setf lisp
au BufNewFile,BufRead *.stt            set expandtab

This will make VIM handle *.stt files as LISP source code (useful for syntax
highlighting and autoindent).


REVISION HISTORY

0.19:
    rewritten error message generation (again)
    module architecture
    blobs

0.18:
    standard library reorganization and automatic loading
    better setf mechanism, other new/improved macros and utilities
    symbol-macrolet
    some locale support (local-encoding and iconv)
    new error code management (register-error)
    better error trace

0.17:
    #N[=#] labels (list circularization)
    #'...' and #"..." python-style raw string literals
    pcre module
    PostgreSQL module
    moved rename and unlink from stserv to here
    some new builtins (eg. getenv, readdir)
    bugfixes

0.16:
    added support for x86_64
    added simple subset of CLOS
    XML parser module
    convenient macros for builtin definition
    weak pointers
    modified, faster memory allocator
    removed object finalizers
    removed object property lists

0.15:
    NO_READLINE compile flag
    added LOOP macro (and nested list support for ASSIGN)
    cached reusable objects for first N (256) integers
    added character type
    speed optimisations

0.14:
    new type: cookie
    object finalization
    sqlite module

0.13:
    tab-completion in shell
    shell registers *ARGV* and $0 for scripts

0.12:
    safer memory handling everywhere
    arrays store references instead of objects
    optimised GC data structures (significantly faster)
    error trace

0.11:
    rewritten parser from scratch
    streams, file i/o
    dictionaries
    setf
    comma-splice

0.10:
    closures
    symbolic macros
    object property lists
    keyword symbols now evaluate to themselves

0.9:
    optional function arguments with default values
    backquote and comma syntax
    structs

0.8:
    miscellaneous fixes

0.7:
    optimised name lookups
    new builtins: do, let, mapcar, filter, etc.
    improved shell (multiline editing)

0.6:
    optimisations, miscellaneous fixes

0.5:
    arrays

0.4:
    tail call optimisation
    saner macros
    assoclists