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.<div><br></div>

<div>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.</div>

<div><br></div><div>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.</div>

<div><br></div><div>Tests are passed and I tried my best to get things right. The change alters ECL's behavior slightly. Formerly</div><div><div><br></div><div>> (let ((*read-base* 2)) (read-from-string "3d0"))</div>

<div>|3D0|</div><div>3</div></div><div><br></div><div>Now:</div><div><br></div><div><div>> (let ((*read-base* 2)) (read-from-string "3d0"))</div><div>3.0d0</div><div>3</div></div><div><br></div><div>SBCL and CLISP behave similarly.</div>

<div><br></div><div>Juanjo<br clear="all"><br>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com">http://juanjose.garciaripoll.googlepages.com</a><br>


</div>