22mar10abu
(c) Software Lab. Alexander Burger


         Release Notes for picoLisp-3.0.2
         ================================

A. Norwegian localization by Jon Kleiser is now included.

B. There is now a method for converting 32-bit databases to 64-bits, with
   'export64' and 'import32' in "lib/db32-64.l". A short description is at the
   beginning of that file.

C. The 'vi' function now also works for kernel functions, accessing the 64-bit
   assembly sources.

D. For a portable (32 <-> 64) access to basic math functions there is now
   "lib/math.l", dispatching to "lib/math32.l" and "lib/math64.l".

E. C functions which were called by 'native' can in turn call a function

      long lisp(char*, long, long, long, long, long);

   which accepts a symbol name as the first argument, and up to 5 numbers.
   lisp() calls that symbol with the five numbers, and expects a numeric return
   value. All numbers in this context should not be larger than 60 bits
   (signed).

F. The speed of printing bignums is much higher now, e.g. 17-fold for a
   200000-digit bignum on the 64-bit version. The improvement is less on the
   32-bit version (about 8-fold) due to the smaller word size.

G. The implementation of 'scl', which dynamically bound '*Scl' during the
   execution of a 'Prg' body, was rather useless (or even confusing). '*Scl' is
   used by the reader, but when 'Prg' executes, reading of that expression is
   already done.

   Therefore, we changed 'scl' to simply set '*Scl' globally. (scl 6) now is a
   shortcut for (setq *Scl 6).

H. The 'for' conditional loop function at last supports a simple syntax for an
   incrementing index. It is recognized when the third argument evaluates to a
   number:

      (for I 9
         (printsp I) )

   This is equivalent to

      (for (I 1 (>= 9 I) (inc I))
         (printsp I) )

   or

      (for I (1 2 3 4 5 6 7 8 9)
         (printsp I) )
