github ldc-developers/ldc v0.12.0-alpha1
LDC 0.12.0 alpha 1

latest releases: v1.40.0, v1.40.0-beta6, v1.40.0-beta5...
pre-release11 years ago

Big news:

  • Frontend, druntime and Phobos are at version 2.063.2. Building druntime/Phobos as shared libraries is not supported yet, but will likely be in the next 2.064-based release.
  • -march/-mcpu now behave as intended: -march selects the target architecture (x86, arm, …), -mcpu the CPU model to optimize for. Use -mcpu=native to optimize for the host CPU, like in earlier LDC versions.
  • -release no longer disables bounds checking in @safe code. Use -disable-boundscheck to disable it for all functions (-noboundscheck in (L)DMD).
  • Exception chaining is now properly supported (#409).
  • Rudimentary support for extern(C++) has been implemented (#412).

Platform support:

  • LDC builds druntime, Phobos and a Hello World program on Linux/ARM. If you are interested in helping to finish ARM support, please get in touch with us.
  • Work on Linux/PPC32 has started.
  • LDC now runs on FreeBSD (#451). Some issues are still unresolved (#495, #496).

Bug fixes:

  • Debug info for static arrays, vectors and enums has been improved.
  • Pure DDoc files (.dd) are now accepted.
  • Several issues regarding vector and static arary initialization have been fixed (#419, #420).
  • Destructors for (rvalue) struct used in opApply are now called properly (#427).
  • Packed structs are now emitted correctly (#430).
  • String enums now work as AA keys (#440).
  • T.init for static arrays no longer emits an instruction per element (#119).
  • String constants are now emitted as unnamed_addr, allowing them to be combined during optimization.
  • Fixed a nested function handling issue (#447).
  • Fixed several real wrong-code bugs on Win32/MinGW (#441).
  • assert(0) now generates trap instructions in release mode (like DMD does).
  • ldmd2 -c a.d b.d … no longer creates a single object file.
  • LDMD now accepts (ignores) the -quiet flag as advertised.
  • LDMD now creates output directories if they do not already exist (#480).

Building LDC:

  • LLVM 3.0 is no longer supported. LDC can be used with LLVM 3.1–3.4svn (at the time of release). On OS X, use LLVM 3.2 due to a regression in the 3.3 release (#492).
  • The LLVM version detection mechanism has been updated to prefer newer LLVM versions on Debian derivatives (#376).
  • The bash completion files are now installed to /usr/share/bash-completion on Gentoo.

Internals:

  • Some violations of the C++11 standard have been fixed (#370).
  • Fixed a LDMD linking problem. (#452)
  • D bools are now stored as i8 on the LLVM IR level (#386). This should have no user-visible consequences, but avoids a few latent misoptimization bugs.
  • Work has been started to align the frontend source code to the upstream DMD source. This will allow for faster frontend updates in the future.
  • ModuleInfo data structures are now mangled as __ModuleInfoZ, like DMD does. This should have no user-visible consequences apart from support in demanglers, etc.

Known regressions:

  • Using nested structs with AAs can trigger an erroneous "cannot create associative array" error (#407).
  • Garbage collection does not work on Linux/PPC64.

Downloads

Don't miss a new ldc release

NewReleases is sending notifications on new releases.