								-*-text-*-

This file lists user visible changes that were made between releases.

======================
New in release 0.0.31:
======================

======================
New in release 0.0.30:
======================

* Features:

- New data type `box' for holding Scheme objects and simulating
  call-by-reference semantics.

* Bugfixes:

- Several fixes for Windows (thx to ela)

* Other Changes:

- A lot of documentation updates.  The reference manual should be up to
  date now.  Unfortunately, the embedding manual still contains old
  reference material.

- Some procedures from the modules have been re-implemented in C.

======================
New in release 0.0.29:
======================

* Features:

- The Sizzle library is fully restartable now.  That means, that it is
  safe now to call zzz_initialize(); ... zzz_finalize(); more than
  once in an embedding program, and after each initialization the
  library is reset to the same state.

- New command line option `-n, --no-system-init-file', which inhibits
  loading of the system-wide initialization file
  `$prefix/share/sizzle/$version/core/init.scm'.  The option `-q,
  --no-init-file' now only inhibits loading the user's init file
  `~/.sizzle'.

- New primitive `trace' for switching on and off tracing of primitive and
  user-defined procedures.

- The Posix function are now only available after `(use-modules (core
  posix))', the networking functions after `(use-modules (core net))'.

- C primitives can now be placed in modules, so that they are
  available only if you issue an appropriate `use-modules' call.

- New module (core pipe) which provides the procedures
  `open-input-pipe', `open-output-pipe' and `close-pipe' for
  interfacing with external processes.

- New example file daemon.scm, taken from a Guile mailing list, which
  shows how to write networking daemons.

- Example CGI script cgi-test.cgi is now included in the `examples'
  directory.

* Other Changes:

- The procedure `load' is no longer a library procedured, but a builtin
  which is equivalent to `primitive-load-path'.

- Removed the limited support for high-level R5RS macros, because they
  were not properly implemented anyway, and will not be in the near
  future.

- New configure option `--enable-uvector' for including uniform vector
  support.  Uniform vectors are disabled by default now.

- The generated procedure names for `define-record' have changed: the
  setter procedure names do not begin with `set-' anymore, but end
  with `-set!'.  Example: `set-foo-bar!' is now `foo-bar-set!'.

- The `error' procedure does not throw an error anymore, but a `misc-error'
  exception.

- `autoload' procedures are not supported anymore.

- Procedure application with a wrong number of arguments does not
  signal an error anymore, but throws the exception
  `wrong-number-args'.

- Passing an argument of the wrong type to a procedure now throws a
  `wrong-type-argument' exception instead of signalling an error.

* Bugfixes:

- Quasi-quotation of hash table literals works now as expected again.

- Networking functions `bind' and `accept' now work as in Guile.


======================
New in release 0.0.28:
======================

- Some primitives and readline support have been factored out into a
  separate package called `sizzleopt', available via anonymuos CVS
  where Sizzle is located, too.  That package also contains code for
  interfacing to GDBM data bases, to the crypt(3) function, primitive
  X support, XML parsing with the xmltok library (former expat), and
  more U*ix functions.

- Project files for M$ Visual C are now included (thanks to ela).

- Hash tables are now a distinct data type and need no longer be
  quoted when entered literally in the #{foo => bar} notation.

- The distribution now contains the interface generator
  `sizzle-gen-if', which can be used to conveniently interface to C
  library functions.  The generator takes an interface specification
  as its input and puts out the C glue code necessary for calling the
  C function.

- `apply' is tail-recursive now (I know you've been waiting for this
  one).

- More procedures compatible with SRFI-13 added.

- CGI convenience module added.  It is now trivial to write CGI
  scripts with Sizzle.

- Can now be compiled with M$ Visual C (as reported by Ela).


======================
New in release 0.0.27:
======================

- More compatibility functions for Win32 (thanks, ela).

- Renamed the `lambda?' primitive to `closure?'.

- Some procedure renaming and other attempts to become more compatible
  with Guile: sys:open -> open-fdes, sys:close -> close.

- Made more Posix-primitives compatible with Guile: stat, getcwd.

- When readline support is enabled, the file ~/.sizzle_history is read
  on startup to initialize the readline history.  You have to set the
  variable `%write-history-file%' to #t if you want to save the
  history to that file on exit.

- Quoted expressions print in short form now, that means expressions
  like '(as) and (quote (as)) print both as `(as), not as (quote (as))
  like they did in earlier versions.

- Better source code location tracking.  Error backtrace now prints
  exact source code locations now.

- Support for loading shared libraries dynamically.  This feature can
  be disabled with the new --disable-dl configure option.

- A Module System which provides the possibility to define Scheme
  modules which only export a restricted set of their definitions and
  which can include other modules without exporting their exports
  recursively.  This should reduce the dange of name clashes
  considerably and improves the code structuring possibilities.  The
  module system's design was oriented at Guile's to support easier
  porting of Guile modules.

- Enhanced Scheme library, partly ported from Guile.  Includes
  extended regular expression handling and command line parsing with
  long and short options.

- New configure option --disable-readline to disable readline usage
  even if the library is found.

- Autoload facility added which speeds up startup time a bit.

- `apply' cannot be used with syntactic forms anymore.

- New `magic' variables, which have a handler function attached.  The
  handler is called whever the variable is fetched, set, marked or
  freed.  Replaces old C variable types, but the API did not change.


======================
New in release 0.0.26:
======================

- Initial support for general continuations.  They kindof work now,
  but are not enough tested and `dynamic-wind' does not work at all.

- Removed all predicate macros with prefix `n', because they do not
  add any useful functionality.  Use !cons_p(c) instead of ncons_p(c)
  now.

- New self-documentation interface.  The new primitives
  `documentation', `set-documentation!', `describe' and `apropos' can
  be used to get documentation about primitive procedures.  Only a few
  primitives are provided with documentation strings yet, though.

- New primitive `primitive-load-path', which works like
  `primitive-load' but searches the directories listed in `%load-path'
  for the given file.

- The functions zzz_evaluate_file() and zzz_evaluate_string() now take
  an environment as the first argument.  See the documentation
  (sizzle-embed.texi) for details.

- Uniform (homogenous) numeric vectors as defined in SRFI-4 for the
  types s8, u8, s16, u16, s32, u32, s64, u64 (if your compiler
  supports long long), f32 and f64.  The functions for dealing with
  these vectors are not documented yet, but they are similar to the
  normal vector functions, except that `vector' in the procedure names
  is replaced with `TAGvector', where TAG is one of the prefixes
  mentioned above.

- New primitive procedure `make-hash', which creates a hash table from
  its arguments, which all must be pairs.

- Sizzle has now support for the readline library.  If the library is
  found, the command line interpreter uses the library to provide
  command line editing and a history of the previous lines entered.

  Also supported is parentheses highlighting: Whenever the user types
  in a closing bracket, one of ])}, the cursor jumps to the opening
  counterpart for half a second.

  Another feature of the new command line interface is the new prompt,
  which changes to the number of unclosed bracket levels, whenever a
  list has been left open when finishing a line.

- Added the command line option `-q, --no-init-file' to sizzle, which
  inhibits loading of LIBARYDIR/init.scm on startup.


======================
New in release 0.0.25:
======================

- Not yet stabilized primitives for network programming, including
  `socket', `connect', `bind' etc.

- File descriptor ports now use buffering for reading and writing,
  all standard ports are now fdports instead of fports.

- Renamed the xmalloc() etc. functions to zzz_malloc() etc. to
  avoid name clashes, too.

- Renamed the files hash.? to hashtab.?, to avoid name clashes with
  serveez.

- In the examples/ directory, a simple web server written in Scheme is
  included. It does not much more than serving files, but features
  `dynamic URLs', which work like servlets.

- New Embedding Manual which has the C embedding parts from the old
  Reference Manual.  The Reference Manual is much slimmer now.

- Finally fixed SRFI-1 support.

- Documented all C API functions for public use.

- New primitives `open-input-string', `open-output-string' and
  `get-output-string', implementing SRFI-6.

- New primitives `read-line', `port-line', `set-port-line!',
  `port-column', `set-port-column!', `port-filename',
  `set-port-filename!'.

- Bugs fixed: The longstanding `modulo' bug.  Hash table literal
  bug. Bug in `write-char', which was using current-input-port.


======================
New in release 0.0.24:
======================

- New internal object representation.  Speeds up the interpreter for
  another 4-10%, depending on application.

- New configure option --enable-maximum-functionality.  Can be
  disabled to build slim version of Sizzle (especially for using it in
  Serveez).

- Removed configure option --enable-extended-math

- New C level accessors for hash tables.  See Section [Hash table
  handling] under [Embedding Sizzle] in the reference manual.


======================
New in release 0.0.23:
======================

- Nearly all list functions from SRFI-1.  Unfortunately, half of the
  procedures are still broken.


======================
New in release 0.0.22:
======================

- New primitives for time and date handling: `strptime', `strftime',
  `gmtime', `current-time'.

- Fixed a bug with an unititialized error string.


======================
New in release 0.0.21:
======================

- New input method for literal hash tables.  Hashes are denoted with
  #{key0 => val0 key1 => val0}.

- Added self-evaluating keywords of the form `#:sym' and `:sym'.

- New, improved error reporting: Syntax errors are now displayed
  including file name, line and column number in Emacs compatible
  style.

- New primitives `tmpnam', `tmpfile' and `umask'.

- New primitives `string-split', `dirname' and `basename'.

- Fixed several bugs in the reader which did not allow comments inside
  list and vector literals

- Fixed segfault when closing streams more than once.


======================
New in release 0.0.20:
======================

- zzz_evaluate_file() now returns -1 if file not found, -2 if an error
  occured during evaluation, 0 on success and any other value x if
  (exit x) was used in the file.

- New configure option --disable-debug, for disabling inclusion of
  assert() macro calls and other debugging code.

- New primitive `define-constant' for defining read-only variables.
  New C API function zzz_define_constant() for defining read-only
  variables from the C level.

- list? and append have been changed as to conform to R5RS.

- `and' and `or' may be given zero arguments as defined in R5RS.

- `define' may be used to define the same variable multiple times
  without an `variable already defined'-error.

 
======================
New in release 0.0.19:
======================

- New hash table primitives: hashq, hashv, hash, hashq-get-handle,
  hashv-get-handle, hash-get-handle, hashq-ref, hashv-ref, hash-ref,
  hashq-set!, hashv-set!, hash-set!, hashq-create-handle!,
  hashv-create-handle, hashq-remove!, hashv-remove, hash-remove.

- New list primitives:  remq, remv, remove.

- New control primitives:  dynamic-wind, signal.

- New arithmetic primitives: magnitude, angle, real-part, imag-part,
  numerator, denominator, gcd, lcm.

- New string primitives: string-index, string-rindex

- New configure option --disable-extended-math for switching off
  triginometric functions.

- (getenv) is compiled in even if --disable-posix configure option is
  given.

- New C API function for creating special forms: zzz_define_form()

- New configure option --with-mingw=DIR for specifying the location of
  the Mingw32 files under Win32.

======================
New in release 0.0.18:
======================

- Private release only, no changes recorded.


======================
New in release 0.0.17:
======================

- Distribution includes example for using libsizzle for init file
  parsing now.

================================
New in releases 0.0.6 to 0.0.16:
================================

- Private releases only, no changes recorded.


=====================
New in release 0.0.5:
=====================

- Sizzle is now built as a shared library - libsizzle


===============================
New in releases 0.0.0 to 0.0.5:
===============================

- Private releases only, no changes recorded.
