Big news:
- Frontend, druntime and Phobos are at version 2.064. Building druntime/Phobos as shared libraries is not supported yet, but will likely be in the next 2.065-based release. The new DSO infrastructure to support shared libraries is already implemented.
- Because of the new DSO infrastructure, the
-noruntime
switch is no longer supported. Now every module calls the runtime during initialization. Instead a new-nogc
switch is introduced which warns about implicit GC calls. The-noruntime
switch is still parsed but has no functionality and will be removed in next major version 0.14.0.
Platform support:
- A version identifier for Android has been added. Druntime/Phobos support is missing.
Bug fixes:
- Fixed yet another compiler crash with vector types. (#424)
- LDC generates segfaulting code with nested functions. (#513)
- Added check to ensure that types from
object.di
exist before using them. (#551) - Do not emit bounds check code if the index is statically known to be within bounds. (#553)
- It is again possible to compile druntime/Phobos with MSVC-built LDC. (#570)
- LDC can now be build with MSVC in release mode. (#458)
__MODULE__
does not crash LDC. (#446)
Building LDC:
- LLVM 3.4 is now supported.
- First changes for LLVM 3.5 are incorporated.
- The assembler file
core/threadasm.S
is excluded from the build if the CMake version is less than 2.8.5. This prevents a bunch of error messages. The assembler file is only required for non-x86 platforms. If you get linking errors on non-x86 platforms please consider upgrading your CMake installation. (#464) - LDC can now built with -std=c++11. (#330)
Internals:
- LDC can now generate code instrumented for the address sanitizer, memory sanitizer and thread sanitizer. This requires
clang
to be used as linker. This is still experimental. You must link againstgcstub.o
in order to use the address sanitizer. It is recommened to built an instrumented version of druntime/Phobos before using this feature. - With LLVM 3.4 or later LDC generates
llvm.ident
metadata to identify object files as created by LDC.
Known regressions:
- Using nested structs with AAs can trigger an erroneous "cannot create associative array" error in some very specific circumstances (#407).
- Garbage collection does not work on Linux/PPC64.
Known bugs (release blocker):
- The unit test for
core.rt.aaA
has compile errors. This is an internal LDC problem and has no consequences (except that the unit test is not executed). - The release build of unit test
std.uni
has unresolved symbols during linking. - The destructor of an object used in an
assert
may be run even if the object was not constructed. The failing test case isrunnable/xtest46.d
.