Released Cyclone Scheme 0.28.0
April 8th, 2021
Features
-
Updated the compiler and runtime to allow a practically unlimited number of function arguments.
Although the calling conventions of our generated C code and runtime functions were changed, there is no impact to application developers. Existing code will continue to work without requiring modifications. This includes code using our FFI, though it may be necessary to update
define-c
definitions if there are unused parameters in order to prevent warnings from the C compiler. For example by refactoring to use the new calling conventions:(define-c read-error "(void *data, object _, int argc, object *args)" " object port = args[1]; object filename = args[2]; object msg = args[3]; ...
No changes are a required if
(cyclone foreign)
is used to integrate with C. -
Provided alternative library names for each of the SRFI libraries. Generally these names follow the recommendations from R7RS Large - for example
(scheme list)
as a friendlier alternative to(srfi 1)
. Where such a name does not exist we provide a name with the(cyclone)
prefix:Library Name SRFI Number Description External Documentation scheme list
srfi 1
List library Link cyclone and-let*
srfi 2
AND-LET*
: anAND
with local bindings, a guardedLET*
special formLink N/A srfi 8
Binding to multiple values - Included as part of scheme base
.Link cyclone threads
srfi 18
Multithreading support Link cyclone random
srfi 27
Sources of random bits Link cyclone format
srfi 28
Basic format strings Link cyclone integer-bits
srfi 60
Integers as bits Link scheme hash-table
srfi 69
Basic hash tables Link cyclone socket
srfi 106
Basic socket interface Link scheme box
srfi 111
Boxes Link scheme set
srfi 113
Sets and bags Link scheme list-queue
srfi 117
Mutable queues Link scheme generator
srfi 121
Generators Link scheme comparator
srfi 128
Comparators Link scheme sort
srfi 132
Sort libraries Link scheme vector
srfi 133
Vector library (R7RS-compatible) Link cyclone fixnum
srfi 143
Fixnums Link -
We are modifying version numbers going forward to use explicit three digit semantic versioning
major.minor.bugfix
.
Bug Fixes
- Arthur Maciel replaced high resolution code in the runtime to use
clock_gettime
instead ofgettimeofday
. - Fixed the REPL to no longer automatically exit if an expression evaluates to EOF. However, the REPL will exit as a special case if the EOF character is entered directly, for example via CTRL-D on Linux.