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.
Download the release: https://opendylan.org/download
Read documentation: https://opendylan.org
Report problems: https://github.com/dylan-lang/opendylan/issues
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 thedylan
tool. Thedylan
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 thecollections
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¶
IO¶
The performance of several subclasses of
<wrapper-stream>
has been improved by sealing theinner-stream
method for each subclass.
System¶
The
$machine-name
constant has been renamed to$machine-architecture
. The old name will remain, for backward compatibility.
Other¶
The
dispatch-profiler
library is now usable and is documented.The obsolete (32-bit x86-only)
stack-walker
library was removed.