Big news
- Frontend, druntime and Phobos are at version 2.071.1.
- Cross-module inlining (#1577, enabled from
-O2
, disable with-disable-cross-module-inlining
) - Profile-guided optimization (#1219)
- IR-to-obj caching with
-ir2obj-cache=<cache dir>
(#1572) - Accept bitcode files on commandline (#1539)
- @ldc.attributes.fastmath for aggressive math optimization (#1472, #1438)
- New traits
__traits(targetCPU)
and__traits(targetHasFeature, )
(#1434) - Binary distribution now bundles DUB (#1573)
- Drastic reduction of large symbol name lengths with
-hash-threshold
(#1445)
Platform support
- Added ARM assembly code for Phobos
std.bigint
(ldc-developers/phobos#31) - Added some definitions for OpenBSD (ldc-developers/druntime@1ef8322)
- Updates for Solaris (ldc-developers/druntime#71, ldc-developers/druntime#72, ldc-developers/druntime#73, ldc-developers/druntime#74, ldc-developers/druntime#75, ldc-developers/druntime#79)
Bug fixes
- ICE on returning struct with zero-length static array. (#1611)
- ICE after return in the middle of a function on Win64/MSVC. (#1582)
- Enums with referenced struct members result in floating point error. (#1581)
- Static array initialization with single element misdetected as direct construction via sret. (#1548)
- ICE on static typeid. (#1540)
- super doesn't work. (#1450)
- Sub-expression evaluation order fixes. (#1327)
Building LDC
- LDC now requires a preinstalled D compiler.
Internals
- optimizer: Skip adding verifier function pass if -disable-verify is given. (#1591)
- DValue refactoring. (#1562)
- Several improvements to generated IR. (#1528)
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.