(Changes from 1.1.0-beta2 release are marked with (new) and gone.)
Big news
- Frontend, druntime and Phobos are at version 2.071.2. (new)
- Cross-module inlining (#1577,
enabled from, enable with-O2
-enable-cross-module-inlining
(new)) - Profile-guided optimization (#1219, "How To" article)
- Experimental 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, article)- 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) @ldc.attributes.optStrategy(...)
for per-function optimization setting (#1637)- Breaking changes to command-line semantics (See http://forum.dlang.org/post/ubobkfmsspbsmjunosna@forum.dlang.org). (new)
ABI change
- This release features an ABI change, meaning that you may run into trouble when mixing binaries/libraries compiled with 1.1.0 with binaries compiled with earlier compiler versions.
- The vtable's of inherited interfaces are now put between the class's _monitor field and the user data fields (https://issues.dlang.org/show_bug.cgi?id=15644)
Platform support
- Supports LLVM 3.5 - 3.9.
- 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)
- Linux: changed default to fully relocatable, position independent code (PIC). Change back to non-relocatable with
-relocation-model=static
. (#1664)
Bug fixes
- ICE when incrementing a complex variable. (#1806) (new)
llvm.va_start
not matched withllvm.va_end
(#1744) (new)- ldmd2 ignores -od option for libraries. (#1724) (new)
- ICE: toConstElem(CastExp) doesn't support NewExp as cast source. (#1723) (new)
- Mark runtime intrinsic shims as pragma(inline, true). (#1715) (new)
- pragma(inline, false) is incompatible with store/loadUnaligned. (#1711) (new)
- ICE: function not fully analyzed; previous unreported errors compiling std.variant.VariantN!(16LU, int, string).VariantN.xopEquals? (#1698) __(new)
- Segfault at at ldc/ldc-1.1.0/driver/main.cpp:1351. (#1696) (new)
- Make sure MSVC Build Tools are automatically detected by LDC. (#1690)
- Update Windows README.txt. (#1689) (new)
- [ldc2-1.1.0-beta2] Missing symbol with inlining enabled. (#1678) (new)
- [REG ldc-1.1.0-beta2] ICE with templated classes. (#1677)
- FreeBSD: Fix shared library build, working Hello World. (#1673)
- Strange compile time error. (#1638)
- LDC+DUB on Windows: folder separator is ignored. (#1621)
- Fix evaluation order issues. (#1620, #1623)
- Ubuntu 16.10 linker failures due to PIE by default (relocation R_X86_64_32S … can not be used). (#1618)
- ICE on returning struct with zero-length static array. (#1611)
- Debug info generation fixes for LLVM >= 3.8. (#1598)
- 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. (Versions
0.17.*
and theltsmaster
branch can be used to 'bootstrap' a build when only a C++ compiler is available.) - On Unix-like systems we now use gcc for linking. (#1594)
Internals
- optimizer: Skip adding verifier function pass if
-disable-verify
is given. (#1591) - DValue refactoring. (#1562)
- Several improvements to generated IR. (#1528, #1630)
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.