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.6.0_2-osx-x86_64.tar.xz
, and the libraries are going to be shipped with future releases again.
(Changes from 1.6.0-beta1 release are marked with (new).)
Big news
- Frontend, druntime and Phobos are at version 2.076.1 (#2362), including
-betterC
semantics (#2365). - Experimental support for dynamic codegen at runtime (JIT-style) to tune performance-critical parts for the used CPU and/or treat special runtime variables as constants. See UDAs
@dynamicCompile
,@dynamicCompileConst
inldc.attributes
; compile with command-line option-enable-dynamic-compile
and use theldc.dynamic_compile
module to generate the code at runtime before invoking it. Congratulations to Ivan Butygin for implementing this non-trivial feature! (#2293) - Many
std.math
functions are now CTFE-able. (#2259)
Platform support
- Supports LLVM 3.7 - 5.0.
- Windows: Supports Visual Studio/C++ Build Tools 2015 and 2017.
Bug fixes
- Can't link against wsock32 and ws2_32 on Windows. (#468)
- PGO incompatible with MSVC EH. (#1943)
- Regression: ModuleInfos not emitted as COMDATs. (#2409) (new)
- Incorrect C assert function signature for Android. (#2417) (new)
- Overzealous error check when attempting to evaluate object as constant. (#2422) (new)
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 (-linker=gold
).