Open Dylan 2013.1 Release Notes


This document describes the 2013.1 release of Open Dylan, released July 11, 2013.


Copyrights and Licensing

The copyright notices have been updated to include the relevant copyright notice from Carnegie Mellon University as parts of this software are derived from the Gwydion Dylan project at Carnegie Mellon University.


LID file keywords are better documented in the Library Reference.

The strings, bit-set, and bit-vector libraries have been documented in the Library Reference.

The join method in the common-extensions library has been documented in the Library Reference.

The table macro in the collections library has been documented in the Library Reference.

The machine-number and transcendentals documentation sections have been updated to current documentation format.


The configure script could fail on Gentoo Linux as there was not always a static libgc.a available. We now check for the file that we need on each platform.

The (incomplete) amd64-freebsd port has been renamed to x86_64-freebsd to be more consistent with our other platforms. Additionally, other fixes have been made to the 64 bit FreeBSD port.

Initial groundwork is in place for an ARM Linux build using the C compiler back-end.


The C run-time no longer attempts to drop into a debugger if you allocate more than roughly 100M of memory in a single allocation.

Debugging code generated by the C compiler back-end is much improved and is documented.


TestWorks has been re-arranged some to have a single git submodule which has resulted in a couple of directories moving around.

The gui-testworks library is now named testworks-gui to be consistent with the other TestWorks components.



The collections library now exports a collections convenience module that re-exports the set, bit-set, bit-vector and byte-vector modules. This simplifies using the additional collection types from within other libraries and applications.

The table-extensions module now exports <case-insensitive-string-table>, which is a table whose keys are strings and checked without case sensitivity.


Locking on streams has been reduced and eliminated in some cases. Previously, formatting to a string or formatting a date would engage in stream locking despite it not being necessary. This had a performance impact on the HTTP server among other applications.


The binaries generated by the HARP compiler back-end on x86-linux and x86-freebsd no longer have executable stacks.


Unit tests have been added to the byte-vector module.

Bug Fixes

Windows Support

The 2012.1 release introduced a bug with where settings were stored in the Windows registry. This has been corrected.

The Windows installer for Open Dylan now defaults to suggesting the Pelles C tools rather than Visual C 6. This is the start of improving the new user experience on Windows and having it work out of the box.

Build Tools

Directories listed in the shell environment variable OPEN_DYLAN_USER_REGISTRIES now take precedence over the ./registry directory, if any.

Warnings are now formatted in more standard way so that tools like Emacs can parse them, for example to jump to the source of the next error.

Some simplifications to cross-compilation have been made. Setting OPEN_DYLAN_PLATFORM_NAME will now try to set the correct default build script. Additionally, the configure script now supports cross-compilation.


A deadlock when using threads on x86-linux has been fixed. This bug was the result of signal handling code blocking signals that the GC required.


The compiler no longer asserts when compiling code that performs an rcurry on an element-setter method.

Construction of byte vector instances

When using the C backend fill: keyword parameter in <byte-vector> instance construction was not working properly and caused the byte vector to be initialized with a wrong value. This has been corrected.



The Dylan library now allows map, etc., on <explicit-key-collection> subclasses that have a key-test other than ==.


On Mac OS X, some code run at startup to get the application name and arguments would write past the end of a buffer, resulting in memory corruption and likely crashes.


Various errors on 64 bit platforms were fixed, including attempting to establish a new connection. These errors were the result of using a 64 bit value where a 32 bit value was required.


Calling environment-variable-setter no longer leaks memory.