(Changes from 1.3.0-beta1 release are marked with (new).)
Big news
- Frontend, druntime and Phobos are at version 2.073.2.
- A first experimental version of DCompute for OpenCL/CUDA targets has landed. See announcement. (new)
- LLVM 3.9+: Experimental integration of LLD, the LLVM cross-linker, for MSVC targets. Check out these hassle-free instructions to make LDC emit Windows executables and DLLs on any host! (#2142) (new)
- libconfig was replaced by an ad-hoc parser (in D), getting rid of the build and runtime dependency and shrinking the license file by roughly 50%. Thanks again, Remi! (#2016)
- LDC now ships with static and shared runtime libs on supported platforms. (#1960)
- LLVM 3.9+: Static libraries are now generated by LDC (LLVM) by default, not by system
ar
orlib.exe
. This means that LDC can cross-compile and -archive static libs for all supported targets. Command-line option-ar
allows specifying an external archiver to be used. (#2030) - New command-line options
-dip1000
,-mv
and-mscrtlib
(#2041). - Ships with dlang tools rdmd, ddemangle and dustmite. (new)
New features
- Output LLVM optimization records via
-fsave-optimization-record
. (#2089) (new) - New
-Xcc
command-line option for C compiler flags when linking via gcc/clang. Thanks Adrian! (#2104) (new) - New function UDA
@ldc.attributes.llvmFastMathFlag("contract")
that specifically enables floating point operation fusing (fused multiply-add), previously only achievable with@fastmath
. (#2060)
Platform support
- Supports LLVM 3.5 - 4.0.
- Additional LLVM targets have been enabled for the prebuilt x86_64 packages: ARM, AArch64 and PowerPC. (new)
- Windows: Supports Visual Studio/Build Tools 2015 and 2017. (#2065)
- NetBSD: The 2.074 druntime patches have been cherry-picked. [new: some more cherry-picks and fixes]
Bug fixes
- LTO flags leaking into standard libraries when building LDC with LTO. (#2077) (new)
- Debug info fixes for class types - thanks Elie! (#2130) (new)
- OSX: Incomplete backtrace. (#2097) (new)
- Phobos on ARM: alignment and 64-bit
real
issues. (#2024) (new) - Windows: EH-related crashes when linking against shared MS runtimes. (#2080) (new)
- ICE when initializing vector with
TVector.init
. (#2101) (new) - Weird object file type autodetection. (#2105) (new)
- Typesafe variadics emitted as LLVM variadics. (#2121) (new)
- Superfluous masking of
bool
values. (#2131) (new) - Output for
-mcpu=help
or-mattr=help
printed multiple times. (#2073) (new) - LDMD refuses some duplicate command-line options. (#2110) (new)
- Change format of predefined versions output for DMD compatibility. (#1962)
Building LDC
- Building LDC requires a preinstalled D compiler.
Internals
- LDC now features D unittests itself. Just add some to LDC's D modules and they'll be compiled and executed by CI. (#2016)
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.