![]() |
Cyclone Scheme
0.9
|
Features
if
expressions of the form (if (pred? ...) #t #f)
into (pred? ...)
.Bug Fixes
Bug Fixes
set_thread_blocked
, the collector may copy an object the mutator is using from the stack to the heap. In this case we need to ensure the object is not corrupted when it is copied and that we sync the object's fields back up once the mutator is unblocked. Currently this only affects port objects in the runtime. Generally read
was affected more than other I/O functions.This release significantly improves garbage collection performance by using lazy sweeping.
Features
car
, cdr
, and most built-in predicates.list
that contain less than five arguments.map
and for-each
that only pass a single list.Bug Fixes
current-jiffy
was returning total clock time of the process. Such an approach cannot be used to measure time accurately when more than one thread is executing concurrently.Features
-t
Cyclone will now emit less verbose S-expressions for code in CPS form. To support this effort and make debugging easier, added helper functions ast:ast->sexp
, ast:sexp->ast
, and ast:ast->pp-sexp
to (scheme cyclone ast)
.Features
(2 ^ 30) - 1
.hash-by-identity
to a high-performance builtin.repl
function to (scheme repl)
to make it easy to use a REPL from your own code.Bug Fixes
read-line
where the function erroneously reported an extra character was read from stdin
. Thanks to wasamasa for the bug report.\n
, \a
, etc) and inline hex escapes as part of a symbol.Features
(scheme cyclone match)
library based on Alex Shinn's match.scm
portable hygienic pattern matcher.apply
in cases where only two arguments are received.Bug Fixes
utf8->string
, string->utf8
, bytevector-copy
, list->vector
, and list->string
to heap allocate objects that exceed the maximum size for objects on the stack.+
or *
.Features
let-syntax
and letrec-syntax
.(scheme repl)
library and interaction-environment
function from R7RS.eval
to recognize syntax-rules
macros.read-u8
, peek-u8
, and write-u8
from R7RS.Internal Changes
(scheme eval)
module. Cyclone's (scheme cyclone macros)
library is now obsolete.Bug Fixes
full-unicode
feature since Unicode is supported as of the 0.7 release.Features
import
expression.Bug Fixes
thread-sleep!
instead of milliseconds. Fractional seconds are accepted as well for high-resolution timers.Features
+
, -
, *
, and /
that accept more than 2 arguments.bitwise-if
from SRFI 60.Bug Fixes
read-line
to remove trailing carriage return and/or newline characters. Thanks to wasamasa for the bug report!open-input-string
returned an extra garbage byte. This has been fixed by a patch from wasamasa.make-string
.write
.read-string
to return EOF when no characters can be read.Features
read
.remainder
function faster.string-join
to (scheme cyclone util)
and added a corresponding string-split
function.define-c
functions marked as inline
even if an alternative non-CPS version of the function is not defined.Bug Fixes
Bug Fixes
close-port
.Features
read
.Bug Fixes
remainder
from crashing the runtime due to divide by zero.Features
-A
and -I
options to icyc
for specifying additional library import directories.Bug Fixes
string->number
to return #f
for all bases when the conversion fails. Previously bases other than ten would return 0
instead.Features
CYCLONE_LIBRARY_PATH
environment variable may be set to force Cyclone to look in a specific place other than the system folder for libraries.thread-join!
function to (srfi 18)
.Bug Fixes
for-each
that was causing length
to be executed during each iteration.The main focus of 0.5.1
is performance but this is also the first release to provide installation instructions for both Windows and Mac.
Features
define-c
function definitions to optionally provide an additional non-CPS form of the function. This form is more efficient and will be used by compiled code whenever possible.icyc
for evaluating an S-expression from the command line and for running as a script without the Cyclone banner text.Bug Fixes
Features
import
. This is probably the most important change in this release and allows icyc
to be used to its full potential.Store parameter objects in such a way that changes to a parameter object do not affect other threads that use the same parameter object.
The specific requirement from R7RS is:
> parameterize
must not change the associated values of any parameters in any thread other than the current thread and threads created inside the parameterize
body.
string->number
such that bignums are only returned if the result truly is a bignum.(cyclone)
prefixed libraries installed in Cyclone's system folder.export
list.cyclone
from the Makefile when building generate-c
. Thanks!cyclone
to inline character comparison functions (char=?
, etc) when only two arguments are present, for a significant speed improvement.Bug Fixes
string->number
returns 0
on bad input instead of #f
.Features
import
declaration. A program can now also use cond-expand
to selectively expand import
declarations.-A
and -I
compiler options from SRFI 138 to cyclone
:
-A directory
Append directory to the list of directories that are searched in order to locate imported libraries.
-I directory
Prepend directory to the list of directories that are searched in order to locate imported libraries.
-CP
, -CE
, and -CL
compiler options to allow passing arbitrary flags to the C compiler:
-CP cc-commands
Specify a custom command line for the C compiler to compile a program module. See Makefile.config for an example of how to construct such a command line.
-CE cc-commands
Specify a custom command line for the C compiler to compile an executable.
-CL cc-commands
Specify a custom command line for the C compiler to compile a library module.
display
and write
.make_int
C macro which was deprecated and could cause problems when used in FFI functions.with-handler
exception handler form based on the syntax from Bigloo.Bug Fixes
equal?
has been updated to check bytevectors for deep equality.#\space
correctly when output via write
.ck_string.h
which is not provided in older versions of libck
.Features:
#true
and #false
.Bug Fixes
#\tab
, #\alarm
, and #\return
.+
or *
without any arguments.((lambda x x) 3 5)
.Features:
current-thread
to SRFI 18.include
and include-ci
macros.Bug Fixes
cyclone
on 32-bit platforms.Features:
exact-integer-sqrt
to (scheme base)
.+inf.0
, -inf.0
, +nan.0
, and -nan.0
.cond-expand
to test for whether a library exists using the form (library {library name})
.-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.Bug Fixes
nan
.AI_V4MAPPED
and AI_ALL
, which are not defined on OpenBSD.member
functions to always return the list when a value is found, instead of #t
.string->number
to return #f
if the string cannot be converted.set-car!
) was passed an expression rather than an identifier as the variable argument.Features:
assq
, assv
, memq
, and memv
back to primitives for improved performance. In addition the compiler was modified to allow for more efficient compilation of assoc
and member
.only
, except
, prefix
, and rename
.define-syntax
from eval
.get-environment-variables
function from R7RS.Bug Fixes
let-values
macro.error
by using write
to output objects as they are represented in memory.(random-source-randomize! default-random-source)
when using SRFI 27.list->string
encounters a list element that is not a character.Features:
and-let*
parameterize
from section 4.2.6 of R7RS to the (scheme base)
library.let-values
and let*-values
to (scheme base)
.infinite?
, finite?
, and nan?
to (scheme inexact)
.(scheme base)
- open-input-string
, open-output-string
, and get-output-string
.(scheme base)
- get-output-bytevector
, open-input-bytevector
, and open-output-bytevector
.cyclone
to also search the current working directory for built-in headers and libraries.Bug Fixes:
write
and display
.write
to display escaped character sequences (EG: \t
) instead of literal characters.((lambda test (write test)) 1 2 3 4)
eval
to handle functions that take an optional number of arguments.number->string
to omit leading zeros for binary conversions.apply
to use the proper semantics when receiving more than one data argument.assoc
and member
functions to accept an optional comparison function, and modified both families of functions to be native Scheme functions instead of C primitives.import
, begin
, and export
sections.