STklos News

All the news

2011/12/31 (version "1.10" released)

This version brings the support of UTF-8 encoding and begins to support some (future) R7RS traits:
  • Added full support for UTF-8 strings and symbols
  • Added support for Win32 support under Cygwin
  • Added some support for R7RS traits:
    • bytesvectors
    • hexadecimal chars in strings and symbols
    • continuations lines in strings
    • New primitives
      • char-foldcase
      • string-foldcase
      • string-foldcase!
      • make-list
      • string-map
      • string-for-each
      • vector-for-each
      • vector-map
  • Added support for MacOs X Lion
  • Added back support for Win32 using Cygwin (this support has still rough edges. See the file PORTING-NOTES in the distribution directory for details)
  • Bug Fixes
2010/12/30 (version "1.01" released)

This is mainly a maintenance version.
  • Documentation update
  • Modifications to support ScmPkg on MacOs MacPorts
  • Fix incompatibilities in FFI introduced in 1.00
  • Better x86_64 support
  • Bug fixes
2010/08/11 (version "1.00" released)

The version 1.00 is finally here (work on STklos started 10 years before ...).
The main difference with this version and the pre-1.0 ones is that it does not integrate GTK+ 1.x support. In fact, GTK+ support is now available through several ScmPkg packages. Otherwise:
  • Complete rewriting of GMP-lite, the provided gmp compatible package for system which does not provide it
  • Remove the old extension intsallation mechanism (stklos-install). Use the ScmPkg mechanism for extending STklos now
  • functions, generic functions and methods cans now have documentation strings
  • Added GNU readline support in REPL if the readline lib can be loaded dynamically
  • Configuration files location can now be changed
  • Added an interactive help system
  • libffi uptated to version 3.0.9
  • New implemented SRFIs
    • SRFI-74 (Octet-Addressed Binary Blocks)
    • SRFI-96 (SLIB Prerequisites )
    • SRFI-98 (Interface to access environment variables)
    • SRFI-100 (define-lambda-object)
  • New primitives
    • port?
    • help
    • make-directories
    • ensure-directories-exist
  • Bug fixes
2008/05/18 (version "0.98" released)

  • Replaced the C/invoke FFI library by libffi: Now GTk2 ScmPkg packages work on MacOs
  • Added option --build-sync-file to ease personal ScmPkg repository maintenance
  • Bug fixes
2008/04/15 Support for GTK2 (initial release)

Two new packages have been released. They permit to use GTK2 for making GUIs.

  • the package stklos-gtk-base is a wrapper which permits access the GTK toolkit.
  • the package stklos-gtk-glade permits to use interface built with the Glade interface builder

The packages are provided as ScmPkg packages. They have been tested only on Linux

2007/12/16 (version "0.97" released)

  • Fixed support for recent versions of SLIB
  • Added boxes: they were used by the system but unavailable to the user.
  • Improved the stklos-pkg command
  • Fixed several mutexes bugs
  • Minor improvements of the FFI
  • Updated PCRE to version 7.4
  • New implemented SRFIs
    • SRFI-45 (Optional positional and named parameters)
    • SRFI-59 (Vicinity)
    • SRFI-88 (Keyword Objects)
    • SRFI-89 (Optional Positional and Named Parameters)
  • Bug fixes
2007/09/27 Development tree access

The STklos development tree is now available at the following URL The development tree is managed by Mercurial Source Control Management system. Having Mercurial on your box may help, but is not necessary if you don't plan to modify STklos distribution. In effect, the Web interface to Mercurial tree gives easy access to developement versions in common archive formats.

2007/07/17 stklos-ssax package release

A port of SSAX, the Oleg Kiselyov's XML parser, is available as a ScmPkg package. SSAX defines itself as a full-featured, algorithmically optimal, pure-functional parser, which can act as a stream processor. SSAX is an efficient SAX parser that is easy to use.

More information on SSAX ...

2007/07/12 stklos-fuse package release

A new release of the stklos-fuse package is available through ScmPkg. This new release can be installed with the stklos-pkg command. This package permits to implement a fully functional filesystem in a Scheme program thanks to the FUSE package. Two exemples of Scheme file systems are provided with the distribution:

  • a simple filesystem which only contain one file named "hello", and whose content is of course "Hello, world!"
  • a more realistic filesystem, where all the files are stored in Scheme hash tables (a directory being a hash-table whose entries are the files of this directory. The program which implements this filesystem is about 250 lines long).

Since the support of ScmPkg is new, a simple session showing how to install this package is given below:

% mkdir /tmp/X			# create a temporary dir
% cd /tmp/X
% stklos-pkg --sync		# Sync with servers
% stklos-pkg -e stklos-fuse	# download package stklos-fuse
% make
% make install		# Install in ~/.stklos/pkg
install done

Let's use now the package

% cd stklos-fuse/examples
% mkdir /tmp/HASH	# create mountpoint for the hashfs
% hashfs /tmp/HASH	# mount it
% cd /tmp/HASH		# An now manipulate files in our filesystem
% echo Hello > foo
% ls -l
total 1
-rw-r--r-- 1 eg stklos 6 Jul 12 17:53 foo
% cat foo
% mkdir bar
% cp foo bar
% ls -l
total 1
drwxr-xr-x 2 eg stklos 0 Jul 12 17:53 bar
-rw-r--r-- 1 eg stklos 6 Jul 12 17:53 foo
% cat bar/foo
2007/06/30 (version "0.96" released)

This release introduces a simple FFI (Foreign Function Interface).
  • Better support for FreeBSD
  • Fixed a bug when using the -j option of make during bootstrap
  • Fixed several problems with ScmPkg packages installation
2007/06/08 (version "0.95" released)

This is a major version introducing support for the ScmPkg source packaging system.
  • Better support for lexical analyzer generation
  • Added some support for fixnum operations
  • Added here-strings support
  • Added partial module import
  • Macros can be local
  • Added some peephole optimizations
  • Added new options to the compiler
  • Added support for reading the tar files
  • void and eof objects are now printed back as #void and #eof and can be read back
  • New primitives
    • signal-error
    • md5sum
    • md5sum-file
    • file-prefix
    • file-suffix
    • condition-set!
  • Bug fixes
2007/04/12 Posix version 0.60

Bug fix version: this version must be used with versions of STklos 0.80.

2006/12/19 (version "0.82" released)
  • Added the --debug option to the interpreter
  • Better error messages when in debug mode and more correct line numbers
  • Updated Dominique Boucher lalr parser to the latest version
  • Better error messages for POSIX functions
  • Internal macro definition are allowed now
  • New parameters for controlling compilation
  • New primitives
    • null-environment
    • scheme-report-environment
    • interaction-environment
    • directory-files
    • make-directory
    • delete-directory
  • Bug fixes
2006/11/06 (version "0.81" released)

This is a bug-fix version. Previous release had a bug which prevent to compile it on some architectures/systems.
  • Corrected a deadlock when compiling the system
  • Corrected bugs in SRFI-0 and SRFI-13
2006/10/27 (version "0.80" released)

This is a version with important changes to support multi-threading. This version provides two kinds of threads: LURC threads and Posix threads (aka pthreads). LURC threads are implemented using the LURC library, the Light ULM/Reactive library for C developed at INRIA. LURC supports the creation of synchronous cooperative threads, synchronizing and communicating with each other using signals in a deterministic scheduler (see for details).
  • Thread support
  • Better error messages
  • Added the possibility to compile byte-codes to a C file.
  • New peephole optimizations
  • More customizable REPL
  • New primitives
    • read-byte
    • write-byte
    • printf
    • fprintf
    • base64-{en|de}code
    • current-second
  • New implemented SRFIs
    • SRFI-18 (Multithreading support)
  • Bug fixes
2006/05/27 HtmlPrag Extension

This extension packages Neil Van Dykes HtmlPrag parser in a STklos extension.

HtmlPrag provides permissive HTML parsing and emitting capability to Scheme programs. The parser is useful for software agent extraction of information from Web pages, for programmatically transforming HTML files, and for implementing interactive Web browsers.

2006/01/15 Fuse 0.50 Extension Release

Ever dreamt to write your own file system in Scheme?

The fuse STklos extension, thanks to the FUSE package FUSE permits to make user lambdas being called by the kernel when performing I/O on a user Scheme file system. This extension indeed permits you to write your own file system in a bunch of Scheme lines. Two exemples of Scheme file systems are provided with the distribution.

2006/01/06 Posix 0.50 Extension Release
This new extension provides access to POSIX system calls.
2006/01/04 (version "0.72" released)

This is a minor version
  • New primitives
    • string-blit!
    • print
    • printerr
  • New implemented SRFIs
    • SRFI-66 (Octet Vectors)
  • Bug fixes
2005/11/03 (version "0.71" released)
  • Added virtual ports (ports defined by user functions)
  • The reader accepts now #eof to denote the eend of file object
  • Fix problems with SunOS support
  • Fix problems with gcc4 compilation
  • Hash tables are now compliant to SRFI-69 (Basic Hash Tables). This implies some (compatible) changes in the hash-tables function names.
  • New primitives
    • finite?
    • infinite?
    • unsetenv!
    • file-size
  • New implemented SRFIs
    • SRFI-62 (S-expression comments)
    • SRFI-69 (Basic Hash Tables)
    • SRFI-70 (Numbers)
  • Bug fixes
2005/09/09 Extensions

Two extensions to STklos:

  • imap to access an IMAP mail server
  • ssl to extend STklos sockets and accepts SSL connections

For more informations on the extension mechanism, look at the extensions page.

2005/05/28 Common Music in STklos 0.70

Rick Taube has ported Common Music, an object-oridented music composition system, to STklos 0.70. The version of CM that runs in STklos is in the cvs head branch. See Common Music home page for CVS installation instructions.

To start up CM in STklos you can do:

cm/bin/ -l stklos

or to start it running under xemacs do:

cm/bin/ -l stklos -e xemacs

The file cm/etc/ is a good place to start. The distribution also contains loop.scm, an (almost) complete implementation of the common lisp LOOP macro. You should be able to load loop.scm into STklos without needing anything else from CM.

2005/05/27 (version "0.70" released)

The main changes in this release are: a new back-trace system, a conform call/cc/dynamic-wind implementation and some performance enhancements.
  • Added a way to have a back-trace when an error occurs
  • call/cc has been completely implemented. Its interaction with dynamic-wind is now conform to R5RS.
  • Performance improvements
  • Added some infrastructure for auto-testing a newly built system.
  • New primitives
    • port-rewind
    • port-seek
    • current-loading-file
    • decode-float
    • read/ss
    • write/ss
    • repl
  • Multiple EOF can be seen now on an input file to allow staged REPLs
  • Added the configure options --with-provided-gc and --with-provided-regexp to force the usage of our GC and PCRE versions, even if there are some version already installed on the system
  • The boot file is now integrated in the VM instead of being read from a file. This enhances the loading time of the interpreter a bit.
  • Describe shows more information for structures types and conditions.
  • The object system takes now into account conditions and conditions types
  • Documention updated
  • Bug fixes
2005/04/05 (version "0.61" released)
  • Documentation updated
  • Distribution uses now PCRE 5.0 for regexp
  • Build process has changed
  • Performance improvement thanks to VM and I/O optimizations
  • Added a way to download and install STklos extensions
  • Better error signaling on undefined variables when compiling files
  • Minor enhancements:
    • Some corrections in the reader
    • Parameter objects SRFI-39 (Parameters objects) can be used now in generalized set! SRFI-17 (Generalized set!)
    • Reader can be case-sensitive now (the system can be bootstraped using case sensitive read)
    • ...
  • New primitives
    • eval-from-string
    • require/provide
    • read-chars
    • read-chars!
    • write-chars
    • get-password
  • Implementation of SRFI-60 (Integers as bits)
  • Bug fixes
2004/11/29 (version "0.60" released)

This version is mostly a correcting version which fixes a serious bug on file loading introduced in release 0.59. Very minor changes since previous release
  • SRFIs can also have symbolic names
  • Minor modifications to allow the compilation of Skribe with STklos on Win32
  • Added a bunch of functions on dates
  • Implementation of SRFI-55 (Require-extension)
  • Bug fixes
2004/11/04 (version "0.59" released)
  • Documentation has been rewritten in Skribe
  • Added Dominique Boucher LALR(1) parser generator. Thanks to Dominique for allowing me to do so
  • Added the future R6RS comment syntax #;
  • New primitives
    • read-from-string
    • load-path
    • load-verbose
    • load-suffixes
    • fork
    • port-current-position
    • port-closed?
  • New implemented SRFIs
    • SRFI-10 (Sharp Comma External Form)
  • Bug fixes
2004/07/17 (version "0.58" released)
  • Better Win32 port (was no more fully functional since 0.55)
  • Added a way to configure the system with our version of GMP even if GMP is installed
  • Added structure types
  • Stack size can be changed when the VM is launched
  • New port on Octane/SGI Irix (by Joshua Boyd) and Itanium
  • Added the --interactive option for embedded VM
  • Compiler can add line information to the generated code to ease debugging
  • error locations are more accurate now
  • New primitives
    • winify-file-name (for Win32 only)
    • sleep
    • with-input-from-port
    • with-output-to-port
    • with-error-to-port
  • New implemented SRFIs
    • SRFI-34 (Exception Handling for Programs)
    • SRFI-35 (Conditions)
    • SRFI-36 (I/O Conditions)
    • SRFI-48 (Intermediate Format Strings)
  • Bug fixes
2004/01/14 (version "0.57" released)
  • Added support for non Finked Mac-OS X
  • Added the Danny Dubé ¬(ref :url "" :text "SIlex") lexical analyser generator to the distribution. Thanks to Danny for allowing me to do so
  • New primitives
    • fork
    • register-exit-function!
    • html->string
    • uri-parse
    • chmod
  • New implemented SRFIs
    • SRFI-16 (Syntax for procedures of variable arity)
    • SRFI-26 (Notation for Specializing Parameters without Currying)
  • Bug corrections
2003/11/14 New web site

The new web site is online now. It is written in Skribe and compiled using version 0.56 of STklos

2003/11/06 (version "0.56" released)
  • The reader recognizes now the DSSL keywords #!rest, #!optional and #!key.
  • Added the definition of feature stklos for SRFI-0 (Feature-based conditional expansion construct)
  • New parameter object: real-precision used to change the precision used when displaying a real number
  • New primitives
    • hostname
    • regexp-quote
    • make-path
    • file-separator
    • hash-table-update!
    • date
    • read-with-shared-structure
    • write-with-shared-structure
  • Extended procedures:
    • gensym
    • parse-arguments
  • New implemented SRFIs
    • SRFI-27 (Source of random bits)
    • SRFI-38 (External representation of shared structures)
    • SRFI-39 (Parameters objects)
  • Bug corrections
2003/06/25 (version "0.55" released)

This version of STklos is a maintenance release which corrects some bugs. No new feature

2003/02/14 (version "0.54" released)
  • Evaluation of parameters is now from left to right rather than the opposite.
  • Addded Sockets support
  • Changed the Boehm GC version to 6.1
  • Code cleaning (again) to be accepted by gcc-3.x
  • New Ports: Solaris, Win32, Mac OS X
  • New primitives
    • port-idle-register!
    • port-idle-unregister!
    • port-idle-reset!
    • glob
    • canonical-path-name
    • expand-file-name
    • basename
    • dirname
    • decompose-file-name
  • New implemented SRFIs
    • SRFI-23 (Error reporting mechanism)
    • SRFI-30 (Nested Multi-line Comments)
    • SRFI-31 (A special form for recursive evaluation)
  • Bug corrections
2002/08/06 (version "0.53" released)
  • Changed the Boehm GC version to 6.1 alpha5
  • Code cleaning to be accepted by gcc-3.x
  • New primitives
    • pretty-printer
    • trace
    • apropos
    • die
    • pair-mutable?
    • vector-mutable?
    • string-mutable?
    • string-titlecase
    • string-titlecase!
    • symbol-value*
  • New implemented SRFIs
    • SRFI-7 (Feature-based program configuration language )
    • SRFI-11 (Syntax for receiving multiple values)
    • SRFI-14 (Character-Set Library)
    • SRFI-28 (Basic Format Strings)
  • New syntax: in-module
  • Bug corrections
2002/04/10 (version "0.52" released)
  • Compiler has been rewritten and deliver code which is more efficient
  • New command compile-file to compile a STklos file to byte-codes
  • Complete rewriting of GTklos (support of GTK+ in STklos)
    • the rewriting is still incomplete and needs some work
    • support of the Canvas widget needs some work
    • more general event management
  • All the demos have been rewritten
  • Better error reporting
  • Errors can now be browsed with Emacs next-error and previous-error
  • Virtual slots can now have an initial value
  • new option: --no-init-file
  • Added bitwise operations on integers (and bignums)
  • New form parse-arguments to simplify command line arguments parsing
  • Better support of dynamic loading
  • Minimal LDAP support
  • Support of active-slots (as in old STk)
  • PCRE package version used is now 3.7
  • GC package used is now 6.0
  • More documentation
  • There are now man pages for stklos and utilities
  • Many small improvements
  • Added the Bigloo match-case and match-lambda
  • New primitives
    • key-delete!
    • key-delete
    • program-name
    • port-file-name
    • full-current-time
    • seconds->date
  • New implemented SRFIs
    • SRFI-2 (AND-LET*: an AND with local bindings, a guarded LET* special form)
    • SRFI-4 (Homogeneous numeric vector datatypes)
    • SRFI-8 (Receive: Binding to multiple values)
    • SRFI-9 (Defining Record Types)
    • SRFI-22 (Running Scheme Scripts on Unix)
  • Bug corrections
2001/03/12 (version "0.51" released)
  • Added R5RS hygienic macros
  • Added compatibility with the Aubrey Jaffer's SLIB
  • New port on Alpha/Linux
  • Some parts of the VM have been rewritten to integrate full call/cc (not yet finished)
  • New implemented SRFIs
    • SRFI-0 (Feature-based conditional expansion construct)
    • SRFI-1 (List Library)
  • Exact reals can be read now (e.g #e3.14 => 157/50)
  • New demo: edit.stk
  • New primitives
    • current-time
    • running-os
    • find-path
    • call/ec
    • load-path
    • set-load-path!
    • load-suffixes
    • set-load-suffixes!
  • Bug corrections
2001/01/17 (version "0.50" released)

First public release
This Html page has been produced by Skribe.
Last update Sat Dec 31 14:28:22 2011.