cyclone/_posts/2024-02-14-Released-Cyclone-Scheme-0.36.0.md
2024-02-13 18:41:56 -08:00

2 KiB

layout title excerpt
post Released Cyclone Scheme 0.36.0 Long time coming with many fixes to numeric operations.

Features

  • Enhanced the reader to parse rationals and store them as inexact numbers.
  • Add a stub for (rationalize x y) to (scheme base).

Bug Fixes

  • Yorick Hardy provided a fix to round so that Cyclone will round to even when x is halfway between two integers, as required by R7RS.
  • Updated various numeric functions to properly handle numeric type conversions, including quotient, remainder, numerator, denominator, truncate, truncate-quotient, and /.
  • Fix exact to properly handle complex numbers, including raising an error when passed nan or inf double values.
  • Ensure the runtime properly differentiates between +inf.0 and -inf.0. Thanks to jpellegrini for the bug report.
  • jpellegrini reported that Cyclone returns #f when comparing complex numbers using operators other than =. Instead it is better to raise an error in these situations.
  • lassik and jpellegrini reported that abs was incorrectly returning the real part of a complex number argument. Modified abs to properly handle complex numbers.
  • jpellegrini fixed (srfi 143) so that the following are constants instead of procedures: fx-width, fx-greatest, and fx-least.
  • Raise an error if odd? or even? is passed a decimal number. Thanks to jpellegrini for the bug report.
  • Fix read-line to read entire lines that consist of more than 1022 bytes. Previously the function would only return partial data up to this limit. Thanks to Robby Zambito for the bug report.
  • (include "body.scm") inside a file path/to/lib.sld will look for path/to/body.scm, then fallback to the legacy behavior, and look for $(pwd)/body.scm.
  • Pass append and prepend directories when compiling dependent libraries of a program. This prevents issues where the directories are not made available to any include directives within such libraries.
  • Updated the reader to throw an error if a number cannot be parsed, rather than returning #f.