Open Dylan 2013.2 Release Notes¶

Introduction¶

This document describes the 2013.2 release of Open Dylan, released December 23, 2013.

Improvements¶

Documentation¶

The logging library has been documented.

The regular-expressions library documentation has been greatly improved.

The date module documentation has been improved and now covers date formatting and parsing.

The C-FFI library now discusses linking against a library rather than assuming that people will find the LID file documentation. Tracing FFI calls has also been documented.

Build Tools¶

Architectures¶

Our configure script now supports the multiarch layout used on recent Debian systems.

OPEN_DYLAN_PLATFORM_NAME is now OPEN_DYLAN_TARGET_PLATFORM to make the intent more clear. Additionally, this value is available to Jam as TARGET_NAME.

Cross-compilation by setting OPEN_DYLAN_TARGET_PLATFORM in the environment is also improved, so long as the proper run-time libraries have been built.

Error Reporting¶

dylan-compiler now reports more information about circular references. Before, it reported:

.../opendylan/sources/dylan/multidimensional-array.dylan:19: Warning - The definition of $empty-dimensions is circular. --------------------------------------------------------------- define constant$empty-dimensions = make(<dimensions>, size: 0);
---------------------------------------------------------------


Now, it reports:

.../opendylan/sources/dylan/multidimensional-array.dylan:19: Warning - The definition of $empty-dimensions is circular among the following: #({ define method size (object :: {<simple-single-float-array> in dylan-extensions}, #next next-method) => (size :: <integer>) ... end }, { define constant$empty-dimensions }, { define method size (object :: {<simple-object-array> in internal}, #next next-method) => (size :: <integer>) ... end }, { define method <implementation-class> constructor (class :: <class>, #next next-method, #rest init-args, #key ..., #all-keys) => (object :: {<implementation-class> in dylan-extensions}) ... end }, { (implicit) define generic <implementation-class> constructor (class, #key ...) => (#rest results) })
---------------------------------------------------------------

runtime¶

The C runtime will now use compiler primitives for the primitives primitive-machine-word-count-low-zeros and primitive-machine-word-count-high-zeros.

System¶

Two new functions have been added: current-process-id and parent-process-id. On Unix these are equivalent to getpid and getppid respectively. On Windows they are equivalent to GetCurrentProcessId and method () 0 end respectively.

Testworks¶

• The documentation has been largely rewritten. Only names exported from the testworks module are documented.
• New assert-* macros replace the check-* macros, which are now deprecated. The assert-* macros make the assertion description optional and if it isn’t provided they use a description based on the printed representation of the argument expressions.
• assert-equal shows some additional details about why collections failed to match. (There are still improvements to be made here.) There is also a new assert-not-equal macro.
• There are several new command-line options:
• --list-suites to list suite names.
• --list-tests to list test names.
• --report-file to output the report to a file.
• --skip-suite used to be named --ignore-suite.
• --skip-test used to be named --ignore-test.
• --tag to run tests matching specific tags.
• The --progress flag now accepts options “none”, “default” (the default), and “verbose”. The default output format is to show suites and tests but not assertions, since they tend to be extremely verbose. Use --progress=verbose if you prefer to see assertion output.
• Benchmarks have been removed. Instead, timing and allocation stats are automatically recorded for all tests. Relatedly, the --profile option has been removed.
• The Testworks code has been simplified and overhauled in general.
• There is a new report format, “surefire”, which outputs Surefire XML, for use with Jenkins. (This was in 2013.1 but there was no release note.)

Bug Fixes¶

Common Dylan¶

application-arguments() will now work on x86_64-darwin.

The debug-message() function will now work around a possible clang compiler issue that causes a crash when printing integers.