Skip to content

LDC 1.29.0

Compare
Choose a tag to compare
@kinke kinke released this 08 Apr 04:19
6aa350a

(Changes since 1.29.0-beta1 are marked with (new).)

Big news

  • Frontend, druntime and Phobos are at version 2.099.1. (#3917, #3893, #3937, #3953) (new)
  • Support for LLVM 13 and 14. The prebuilt packages use v13.0.1. (#3842, #3951) (new)
  • On Linux, LDC doesn't default to the ld.gold linker anymore. The combination of LLVM 13+ and older gold linkers can apparently cause problems. We recommend using LLD, e.g., via -linker=lld or by setting your default /usr/bin/ld symlink; it's significantly faster too.
  • -linkonce-templates is less aggressive by default now and IMHO production-ready. (#3924)
  • When linking manually (not via LDC) against shared druntime, it is now required to link the bundled lib/ldc_rt.dso.o[bj] object file into each binary. It replaces the previously Windows-specific dso_windows.obj. (#3850)
  • Breaking extern(D) ABI change for all targets: formal parameters of non-variadic functions aren't reversed anymore, in line with the spec. For 32-bit x86, the first parameter is accordingly now potentially passed in EAX, not the last one. So non-variadic extern(D) functions with multiple explicit parameters will break if expecting parameters in specific registers or stack slots, e.g., naked DMD-style inline assembly. (#3873, ldc-developers/phobos@3d725fc)

Platform support

  • Supports LLVM 6.0 - 14.0. (new)
  • Basic compiler support for Newlib targets, i.e., triples like arm-none-newlibeabi. (#3946) (new)

Bug fixes

Known issues

  • When building LDC, old LDC 0.17.*/ltsmaster host compilers miscompile LDC ≥ 1.21, leading to potential segfaults of the built LDC. Ltsmaster can still be used to bootstrap a first compiler and then let that compiler compile itself. (#3354)