***************** Open Dylan 2025.1 ***************** This document describes the 2025.1 release of Open Dylan, released 21 June, 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 :drm:`if` expressions to be more accurately estimated have been improved. For example, in this function: .. code-block:: define function if-example (arg :: false-or()) => (result :: ); min(arg | 20, 30) end; the comparison can now be properly inlined because the first argument to :drm:`min` is known to be an :drm:``. * `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. * A bug in the LLVM back-end that could cause stack overflows in long-running functions that capture closures (such as for exception handlers) has been fixed. 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. A new command, `deft test `_, has been added to run tests defined in your workspace. See the `Deft 0.13.0 release notes `_ for a list of other Deft changes. 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 :drm:`` collectors has been fixed. See `the pull request `_ for details. Dylan ----- * The return value of :drm:`push-last` on :drm:`` now matches that specified in the Dylan Reference Manual. IO ---- * The performance of several subclasses of :class:`` has been improved by sealing the :func:`inner-stream` method for each subclass. System ------ * The :const:`$machine-name` constant has been renamed to :const:`$machine-architecture`. The old name will remain, for backward compatibility. * Add new functions :func:`create-symbolic-link` and :func:`create-hard-link` to the module ``file-system``. Windows is not yet supported. Other ----- * The :lib:`dispatch-profiler` library is now usable and is documented. * The obsolete (32-bit x86-only) ``stack-walker`` library was removed. Contributors ============ * Carl Gay * Peter Housel * Bruce Mitchener * Fernando Raya