Released Cyclone Scheme 0.3.1
November 20th, 2016
Features:
- Thanks to ecraven, added R7RS function
exact-integer-sqrt
to(scheme base)
. - Allow the reader to recognize
+inf.0
,-inf.0
,+nan.0
, and-nan.0
. - Allow
cond-expand
to test for whether a library exists using the form(library {library name})
. - Added command line option
-O
to set the optimization level. For now there is-O0
to disable optimizations and the default setting to enable them. Going forward there will be more fine-grained control. - Reduce size of compiled code by inlining constant values. This reduced the code size of various cyclone libraries by approximately 33%. Added other inlining as well to slightly improve performance.
- Increased allocation speed when objects are moved to the heap during a major GC.
Bug Fixes
- Only throw a divide by zero error for integer division. Floating point divide by zero is allowed and evaluates to
nan
. - Modified SRFI 106 to be smarter about compiling
AI_V4MAPPED
andAI_ALL
, which are not defined on OpenBSD. - Fixed the
member
functions to always return the list when a value is found, instead of#t
. - Fixed
string->number
to return#f
if the string cannot be converted. - Fixed a bug where the optimizer would sometimes generate incorrect code when a mutating primitive (EG:
set-car!
) was passed an expression rather than an identifier as the variable argument. - Prevent the runtime from crashing when a non-numeric value type is passed to a numeric function.