Open Dylan 2025.1

This document describes the 2025.1 release of Open Dylan, released DD MMM, 2024. The highlights of the release are listed below. For complete details see the commit logs for this release.

Note

Some commit logs, for example for testworks and other libraries that are included in Open Dylan as git submodules, may be in other repositories.

Compiler

  • Unified executables now export symbols so that call stack dumping works properly.

  • The build rules for unified executables now properly depend on copying included run-time libraries such as libunwind.

  • Optimizations that allow the type of if expressions to be more accurately estimated have been improved. For example, in this function:

    define function if-example (arg :: false-or(<integer>)) => (result :: <integer>);
      min(arg | 20, 30)
    end;
    

    the comparison can now be properly inlined because the first argument to min is known to be an <integer>.

  • Issue 1523, which could result in a compiler abort during code generation, has been fixed.

  • A serious bug in the parsing of multi-line string literals has been fixed.

  • Issue 1647, which suppressed error reporting within macro calls in slot initializer expressions, is now fixed.

  • Issue 1660, which caused code generation failures for certain usages of multiple-value expressions, has been fixed.

  • Fixed issue 1395, which prevented some valid variable names with a leading numeric from being parsed correctly.

Tools

  • A new binary, dylan-lsp-server, is bundled in this release. This is a Language Server Protocol (LSP) implementation for use with VS Code and emacs. It currently supports jump to definition/declaration, compiler warnings, and hover text.

    See the lsp-server documentation for configuration details.

  • The dylan tool has been renamed to deft. This was done primarily because it avoids some awkwardness when having to distinguish between the Dylan language and the dylan tool. The dylan binary continues to exist for backward compatibility (for example in GitHub workflows) but it will be removed in a future release.

Library Updates

collections

  • The collections convenience module, which re-exported names from some (but not all) other modules in the collections library, has been removed as unnecessary complexity.

  • The collectors module is now fully documented, the API has been made more consistent, and a bug in <list> collectors has been fixed. See the pull request for details.

Dylan

  • The return value of push-last on <deque> now matches that specified in the Dylan Reference Manual.

IO

System

Other

  • The dispatch-profiler library is now usable and is documented.

  • The obsolete (32-bit x86-only) stack-walker library was removed.

Contributors