macOS note: The original binary packages for OS X did not include some of the LLVM runtime support libraries (fuzzing, AddressSanitizer, etc.). This issue has been corrected in the archive named ldc2-1.5.0_2-osx-x86_64.tar.xz
, and the libraries are going to be shipped with future releases again.
(Changes from 1.5.0-beta1 release are marked with (new).)
Big news
- Frontend, druntime and Phobos are at version 2.075.1. (#2252)
- New command-line option
-fp-contract
to control fused floating-point math, as well as about 25 new hidden options influencing codegen, see-help-hidden
(-enable-unsafe-fp-math
,-debugger-tune
etc.). (#2148) - New command-line option
-linker
. Use-linker=lld-link
to use an external LLD executable for MSVC targets (with experimental LTO support) or-linker=<gold|bfd|lld>
for other targets. (#2386) (new)
Breaking changes
- Win32: the mangled names of D symbols now start with
_D
, not with__D
, compatible with DMD. (#2353)
Platform support
- Supports LLVM 3.7 - 5.0.
- Windows: Supports Visual Studio/C++ Build Tools 2015 and 2017.
Changes to the prebuilt packages
- LLVM upgraded to 5.0.0.
Bug fixes
- Cyclic dependencies with
-cov
. (#2177) (new) - ICE when capturing
this
in constructors. (#1728) (new) - Objective-C bugs. (#2387, #2388) (new)
- LLVM/LLD 5.0:
-link-internally
broken. (LLD patch) (new) - LLVM 5.0: need to build LDC with CMake option
-DLDC_WITH_LLD=OFF
to avoid conflicting command-line options. (#2148) - LLVM 5.0 & non-Windows targets: names of members in static libraries generated by LDC's internal archiver contain path information. (#2349)
Workaround for Xcode 9 ranlib bug: don't use internal (LLVM) archiver by default for OSX targets. (#2350)Xcode 9.0.1 fixes that bug, please upgrade. (new)- Captured lazy parameters may be garbage. (#2302, #2330)
- Packed struct layout regression (#2346) and
T.alignof
not respecting explicit type alignment viaalign(N)
. (#2347) - OSX and Win32: mangling issue for druntime's
rt_options
. (#1970, #2354) - MinGW Win64: ABI regression wrt. functions returning x87 reals. (#2358)
- Potential file permission problem when copying over LLVM libraries during LDC build. (#2337)
- PPC64: Forward reference error with 1.3 release. (#2200)
Known issues
- 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 toreal
members inside structs etc. - Phobos does not compile on MinGW platform.
- ThinLTO may not work well with the
ld.bfd
linker, useld.gold
instead (-Xcc=-fuse-ld=gold
-linker=gold
). - LLVM 5.0: potentially failing LLVM assertion when emitting debuginfos and using inlining at the same time. (#2361)