Hi all, please note that since yesterday picoLisp-2.3.4 is out.
The release contains a number of bug fixes, most notably in 'pipe' (as discovered and discussed here), and in the 'http' and 'form' libraries. The bignum routines contained a bug which obviously had been there during all the years, but was rather improbable to show up. It could lead to wrong results (or even to an infinite loop) if a large number was compared to its negated and then absoluted value, e.g. : (let N 12345678901234567890 (> N (abs (- N)))) -> T # wrong! It appeared only if the internal data structure of numbers (here 'N') was shared. It did not appear in : (> 12345678901234567890 (abs (- 12345678901234567890))) -> NIL The reason was that the unary minus and the 'abs' function duplicate the first cell of a big number, so that the tails of the original 'N' and the results of '-' and 'abs' are shared. This could not be handled by the comparison routines. I discovered this bug in the course of re-writing these routines in assembly for picolisp-3. 'eval' and 'run' now accept a new optional argument that may hold a list of symbols to be excluded from the unbinding process. Cheers, - Alex -- UNSUBSCRIBE: mailto:picol...@software-lab.de?subject=unsubscribe