******************************* Open Dylan 2013.1 Release Notes ******************************* Introduction ============ This document describes the 2013.1 release of Open Dylan, released July 11, 2013. * `Download the release `_ * `Report bugs `_ * `Source code `_ 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 ````, 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 ```` 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:`` 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.