(Changes since 1.41.0-beta1 are marked with (new).)
Big news
- Frontend, druntime and Phobos are at version 2.111.0+. (#4877, #4910, #4918, #4941) (new)
- Support for LLVM 20. The prebuilt packages use v20.1.5. (#4843, #4911, #4935) (new)
- The dynamic-compile (JIT) feature has regressed with LLVM 20. Use LLVM 18 or 19 for that feature.
- Keep frame pointers by default with
-O
for some targets, notably AArch64 (except Windows), x86_64 (except Windows and glibc Linux), Windows x86, and Android. This fixes druntime backtraces with optimized code (incl. prebuilt druntime/Phobos). (#4889) - The prebuilt (non-musl) Linux packages are now generated on Ubuntu 22.04; the minimum glibc version has accordingly been raised from v2.31 to v2.35. (#4893)
- druntime: Optimize
core.int128
via inline IR/assembly. (#4892) - Follow clang wrt. unwind tables emission, enabling them for most popular targets. (#4888)
- ldc2.conf: Arrays can now be appended to via the
~=
operator. (#4848, #4856) - New
--installWithSuffix
command-line option for theldc-build-runtime
tool, to simplify copying the libraries to an existing LDC installation. (#4870) - CMake changes (for building LDC itself):
- Minimum CMake version bumped to v3.16. (#4898)
- macOS: Fix weird linker error when running CMake the first time. (#3901, #4926) (new)
- Reworked integration of the LLVM compiler-rt libraries. Package maintainers may want to see docs/compiler_rt.md. (#4665)
- Somewhat simplify separate compiler and runtime builds, incl. cross-compiling LDC itself. (#4872)
Platform support
- Supports LLVM 15 - 20. (new)
- RISC-V: Fiber context switching is now implemented natively. (#4867) (new)
Bug fixes
- Prebuilt macOS packages: Fix
ldmd2
and other bundled executables crashing on macOS v15.4. (#4899, #4912) (new) - ImportC: Run C preprocessor in C11 mode. (#4933) (new)
- ImportC Windows: Disable clang headers when C-preprocessing with
clang-cl
. (#4934) (new) - Fix ICE on invalid constant address-of expressions. (#4938, #4939) (new)
- Allow Unicode in fully qualified label names. (#4927, #4929) (new)