NEWS for version 2.2 -*-text-*- Interpreter Enhancements ======================== 1. The ternary expression was added: expression = condition ? val1 : val2 If condition is non-zero, then expression = val1, otherwise expression = val2 2. The break and condition statements support an optional integer that indicates how many loop levels the statement affects, e.g., the break statement in while (1) { loop (10) { break 2; } } will cause both loops to be terminated. 3. Multiline strings have been added: "This is a \ multiline \ string" `This is another multiline string that does not require a \ for continuation` 4. List_Type objects may be indexed using an array of indices instead of just a single scalar index. Modules ======= 1. zlib: A module that wraps the popular z compression library. 2. fork: A module that wraps the fork, exec*, and waitpid functions. slsh/lib/process.sl utilizes this module to allow an application to easily create subprocesses and pipelines. 3. sysconf: Module that implements interfaces to the posix sysconf, pathconf, etc. functions. Intrinsic Functions =================== The following intrinsic functions have been added for 2.2: sumsq equivalent to sum(x*x) expm1 More accurate version of exp(x)-1 for x near 0. log1p More accurate version of log(1+x) for x near 0 list_to_array Creates an array from a list. string_matches A convenient alternative to string_match and string_match_nth functions. _close Close an integer descriptor _fileno Returns the descriptor as an integer dup2, getsid, killpg, getpriority/setpriority: Wraps the corresponding system functions. ldexp, frexp: If x == a*2^b, where 0.5<=a<1.0 then (a,b)=frexp(x), and x=ldexp(a,b). The following functions have been enhanced: hypot If given a single array argument, it returns the equivalent of sqrt(sum(X*X)). polynom The calling interface to this function was changed and support added for arrays. Misc ==== Unicode tables updated to version 5.1. =x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x=x NEWS for version 2.1 Building the library ==================== `make install' installs the shared version of the library. Previously `make install' installed just the static version and a separate step (`make install-elf') was required to install the shared version. Now, `make install-static' is necessary to install the static one. Interpreter News ================= Syntax enhancements: -------------------- 1. Short circuiting boolean operators: if ((x == y) || (y == 3) && (x != 4)) ... (orelse and andelse are deprecated) 2. Structure definitions allow embdedded assignment expressions: s = struct {x = 3, name="foo", a = [1:10]}; 3. Qualifiers (aka "keywords") added to the language: save_file ("foo.c"; overwrite=1); plot_points ([1:10], sin([1:10]); color="red", style="solid"); 3. Expressions such as (a < b < c) now interpreted to mean (a