github ldc-developers/ldc v1.1.0-beta3
LDC 1.1.0 beta 3

latest releases: v1.38.0, dmd-rewrite-v2.109.0-beta.1, dmd-rewrite-v2.108.1...
pre-release7 years ago

(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 -O2, enable with -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

Bug fixes

  • ICE when incrementing a complex variable. (#1806) (new)
  • llvm.va_start not matched with llvm.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 the ltsmaster 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 to real members inside structs etc.
  • Phobos does not compile on MinGW platform.

Don't miss a new ldc release

NewReleases is sending notifications on new releases.