You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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. This is different from the GCC convention, but matches the other LLVM tools. Use -mcpu=native to optimize for the host CPU (pre-0.11.0 LDC versions did this by default).
-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:
Linux/OS X on x86/x86_64 are stable as usual, Win32/MinGW has received a several critical bug fixes and is ready for widespread testing. OS X requires LLVM 3.2 due to a regression in LLVM 3.3
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:
Assigning array literals to static arrays and certain immutable slices no longer triggers a GC allocation (#493).
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).
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 several nested function handling issues (#447, #454, #497).
Worked around a crash where the frontend generates an invalid AST for nested structs (#470).
Fixed several real wrong-code bugs on Win32/MinGW (#441).
assert(0) now generates trap instructions in release mode (like DMD does).
-mattr=help and -mcpu=help now displays the CPU targeting help even without source files given (#505).
-disable-fp-elim, which is no longer exposed by LLVM by default, is supported again, also fixing -gs for LDMD (#502).
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 an instance of reading uninitialized data in LDMD (#500).
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.
The names of the ModuleInfo data structures now end in __ModuleInfoZ, like they do for DMD. 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 in some very specific circumstances (#407).