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
realvariable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply torealmembers inside structs etc. - Phobos does not compile on MinGW platform.