in the release plans. This time it is the Common Lisp reader with a more or
less serious bug report. It involves strtod(), atoi(), etc, functions are
used by ECL which may be affected by the current C locale.

So far I have managed to fix the reader, spitting the functions
ecl_parse_integer and ecl_parse_number into separate, self contained files
(a step towards a deeper reorganization of ECL's code). The changed
functions now rely on bignums and bignum rounding to double/long-float
precision, and in the process I also had to fix ecl_to_double() which did
not round properly in the bignum->float conversion.

Still to be fixed: the printer, which still relies on strtod() to find out
the best precision. I will probably have to backport the function that is
used in FORMAT from Common Lisp to C or do some other trick.

Tests are passed and I tried my best to get things right. The change alters
ECL's behavior slightly. Formerly

> (let ((*read-base* 2)) (read-from-string "3d0"))
|3D0|
3

Now:

> (let ((*read-base* 2)) (read-from-string "3d0"))
3.0d0
3

SBCL and CLISP behave similarly.

Juanjo

-- 
Instituto de FĂ­sica Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com
------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Ecls-list mailing list
Ecls-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ecls-list

Reply via email to