*******************************
Open Dylan 2013.1 Release Notes
*******************************

Introduction
============

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

* `Download the release <http://opendylan.org/download/index.html>`_
* `Report bugs <https://github.com/dylan-lang/opendylan/issues>`_
* `Source code <https://github.com/dylan-lang/opendylan/tree/v2013.1>`_

Improvements
============

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.

Documentation
-------------

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.

Portability
-----------

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.

Runtime
-------

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
---------

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.

Libraries
---------

collections
^^^^^^^^^^^

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.

I/O
^^^

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.

Security
--------

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

Testing
-------

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.

Runtime
-------

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.

Compiler
--------

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.

Libraries
---------

dylan
^^^^^

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

common-dylan
^^^^^^^^^^^^

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.

network
^^^^^^^

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.

system
^^^^^^

Calling ``environment-variable-setter`` no longer leaks memory.
