Skip to content

LDC 1.23.0

Compare
Choose a tag to compare
@kinke kinke released this 19 Aug 16:08
a83dc56

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

Big news

  • Frontend, druntime and Phobos are at version 2.093.1+, incl. new command-line option -vtemplates. (#3476, #3538, #3541) (new)
  • Min required LLVM version raised to v6.0, dropping support for v3.9-5.0. (#3493)
  • LLVM for prebuilt packages bumped to v10.0.1. (#3513) (new)
  • The prebuilt Mac package now also includes prebuilt druntime/Phobos for the iOS/x86_64 simulator, making cross-compilation work out of the box with -mtriple=x86_64-apple-ios12.0. (#3478)
  • Windows: New -gdwarf CLI option to emit DWARF debuginfos for MSVC targets, e.g., for debugging with gdb/lldb. (#3533) (new)
  • New -platformlib CLI option to override the default linked-with platform libraries, e.g., when targeting bare-metal. (#3374, #3475) (new)

Platform support

  • Supports LLVM 6.0 - 10.0.

Bug fixes

  • Fix regression since v1.22: shared druntime potentially overriding libstdc++ symbols and breaking exceptions in C++ libraries. (#3530, #3537) (new)
  • Fix naked DMD-style asm emission for non-Mac x86 Darwin targets (e.g., iOS simulators). (#3478)
  • -betterC: Don't use unsupported EH for handling clean-ups. (#3479, #3482)
  • dcompute: Fix wrong address space loads and stores. Thx Rob! (#3428)
  • Fix ICE wrt. missing IR declarations for some forward-declared functions. (#3496, #3503)
  • Fix ICE wrt. inline IR and empty parameter types tuple. (#3509) (new)
  • Fix PGO issues. (#3375, #3511, #3512, #3524) (new)
  • Improve support for LLVM's ThreadSanitizer. (#3522) (new)
  • Fix linker cmdline length limitation via response files. (#3535, #3536) (new)

Internals

  • Compiler performance wrt. string literals emission has been improved. Thx @looked-at-me! (#3490, #3492)
  • Link libstdc++ statically for libldc-jit.so of prebuilt Linux packages, to increase portability. (#3473, #3474)
  • Set up Visual D when using the Visual Studio CMake generator, making LDC compiler development on Windows a smooth out-of-the-box experience. (#3494)

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)
  • Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
  • LDC does not zero the padding area of a real variable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply to real members inside structs etc.