Version “1.50” released

This version enhances R7RS compliance and a lot of new SRFIs (thanks to the awesome work of Jeronimo Pellegrini — @jpellegrini)

Changes in this version are:

Exceptions behavior is now R7RS compliant

current{input,ouput,error}-port are now parameters as required by R7RS.

are now parameters as required by R7RS. Socket ports are now both binary and textual.

Added support for Android.

Better support of 32 bits big-endian architectures

Support of more architectures. STklos can be run now on GNU/Linux on x86_64 (64 bits) GNU/Linux on ARM v7l (32 bits) GNU/Linux on MIPS (32 bits little and big endian) FreeBSD OPenBSD MacOS X86_64 Windows 10 (on WSL) Android on ARM 64

Support of new SRFIs (most of them were implemented by @jpellegrini ): SRFI-37: args-fold: a program argument processor SRFI-51: Handling rest list SRFI-54: Formatting SRFI-64: A Scheme API for test suites SRFI-117: Queues based on lists SRFI-118: Simple adjustable-size strings SRFI-129: Titlecase procedures SRFI-141: Integer Division SRFI-145: Assumptions SRFI-151: Bitwise Operations SRFI-156: Syntactic combiners for binary predicates SRFI-158: Generators and Accumulators SRFI-161: Unifiable Boxes SRFI-169: Underscores in numbers SRFI-171: Transducers SRFI-173: Hooks SRFI-174: POSIX Timespecs SRFI-175: ASCII character library SRFI-176: Version flag SRFI-180: JSON SRFI-185: Linear adjustable-length strings SRFI-189: Maybe and Either: optional container types SRFI-190: Coroutines Generators

): Better documentation (thanks to @jpellegrini again! — need to be completed) description of the internals of STklos description of the VM instructions instructions to compile STklos on various OS updated manual’s bibliography

again! — need to be completed) Bug fixes

Version “1.40” released

Changes in this version are:

Updated the build tools

Now STklos is case sensitive by default as required by R7RS

the R5RS case insensitivity can be enable with the --case-insensitive option

the R5RS case insensitivity can be enable with the option New parameter: repl-theme permits to customize REPL prompt colors.

permits to customize REPL prompt colors. Added more tests

Added the #:xxx syntax for keywords for compatibility with other implementations

syntax for keywords for compatibility with other implementations Added the R7RS syntaxes letrec, let-values & let-values

Various bug fixes

Version “1.31” released

Bug fix version.

Changes in this version are:

Updated the version of the libraries included in the distribution

Bug fix of various problems when installing STklos

Bug fix for MacOs UTF8 detection

Added SRFI-112

Updated documentation

Version “1.30” released

The goal of this version consists to be more R7RS compliant. All the R5RS functions which have been extended in R7RS are now conform to R7RS (for instance assoc and member accept now an optional parameter which is a compare function, vector->list accepts the start and end parameters, …)

Changes in this version are:

Implementations R7RS I/O Ports can now be binary or textual (standard ports are both) New functions: write-string wite-shared & write-simple functions to input and output bytevectors read-u8 peek-u8 and u8-ready? call-with-port textual-port? binary-port? open-binary-input-file open-binary-output-file utf8->string & string->utf8

Updated various functions to be R7RS compliant.

Added the R7RS functions on bytevectors

Added R7RS #true and #false constants

and constants Added R7RS exceptions

Added R7RS system functions

Upgraded the libraries embedded in STklos source tree

Optimization of circular structure reading & writing

New primitives - display-simple & display-shared - R7RS symbol=? - R7RS boolean=?

& - R7RS - R7RS Updated documentation

Added SRFI-111

Bug fixes

Version “1.20” released

Even if previous version was released more than seven years ago, STklos is not completely dead.

Now the developement tree of STklos is available on Gitlab and Github.

Changes in this version are:

Corrected some problems on UTF8 encoding

Bug fix of a long standing bug on call/cc .

. Function can now be created with the UTF8 symbol λ

Added the #!fold-case and #!no-fold-case special notations of R7RS

and special notations of R7RS Updated documentation

Bug fixes

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

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

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

Version “0.98” released

Replaced the C/invoke FFI library by libffi: Now GTk2 *ScmPkg** packages work on MacOs

packages work on MacOs Added option –build-sync-file to ease personal ScmPkg repository maintenance

Bug fixes

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.

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

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

Development tree access

The STklos development tree is now available at the following URL http://www.stklos.net/hgweb.cgi. 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.

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 …

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

Let’s use now the package

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

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

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

Posix version 0.60

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

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

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

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 <http://www-sop.inria.fr/mimosa/Stephane.Epardaud/lurcfor 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

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.

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.

Posix 0.50 Extension Release

This new extension provides access to POSIX system calls.

Version “0.72” released

This is a minor version

New primitives string-blit! print printerr

New implemented SRFIs SRFI-66 (Octet Vectors)

Bug fixes

Version “0.71” released

Added virtual ports (ports defined by user functions)

The reader accepts now #eof to denote the eend of file object

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.

(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

Extensions

Two extensions to STklos:

imap to access an IMAP mail server

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.

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/cm.sh -l stklos -l stklos

or to start it running under xemacs do:

cm/bin/cm.sh -l stklos -e xemacs -l stklos -e xemacs

The file cm/etc/intro.cm 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.

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.

has been completely implemented. Its interaction with 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

and 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.

shows more information for structures types and conditions. The object system takes now into account conditions and conditions types

Documention updated

Bug fixes

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)

(Integers as bits) Bug fixes

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)

(Require-extension) Bug fixes

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

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

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

Version “0.57” released

Added support for non Finked Mac-OS X

Added the Danny Dub頬(ref :url “http://www.iro.umontreal.ca/~dube/” :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

New web site

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

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)

for (Feature-based conditional expansion construct) New parameter object: real-precision used to change the precision used when displaying a real number

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

Version “0.55” released

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

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

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

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

to compile a 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

and 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

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

package version used is now 3.7 GC package used is now 6.0

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

and 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

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)

(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

Version “0.50” released

First public release