LDC 0.15.1
(Changes from beta-1 release are marked with (new) and gone. 0.15.0 was not released due to a bug.)
Big news:
- Frontend, druntime and Phobos are at version 2.066.1.
- Now LLVM 3.5.0 is officially supported!
- More LLVM intrinsics are now builtins (usable with CTFE):
llvm.sin
,llvm.cos
,llvm.sqrt
,llvm.fabs
,llvm.floor
,llvm.ceil
,llvm.round
,llvm.trunc
,llvm.minnum
andllvm.maxnum
. - LDC now builds vibe.d.
Platform support:
- Better (but not perfect) support for exceptions on ARM. (#489)
- Better support for Win64 with MS C Runtime (requires LLVM 3.6!).
- Support for x87 80bit reals on Win64 with MS C Runtime has been dropped.
- Support for doubledouble on PPC32/64 has been dropped.
- Support for Linux/PPC64 Little Endian has been added. (Some unit tests are still failing, but major components including garbage collector work.)
- The internal assembler is now used on MinGW with LLVM 3.5 instead of GNU as.
- Support for Solaris/x86 has been added. (new)
Bug fixes:
- LDC 0.15.0 beta1 mingw x86 build calls DMD's (or whomever's) lib.exe incorrectly on windows. (#805 ) (new)
- Precompiled binary not working on Ubuntu 12.04 LTS. (Part of #804) (new)
- Struct dtor called twice under some circumstances. (#795) (new)
- Crash on empty expression after asm statement. (#791) (new)
- The modules from
core.internal.*
are now compiled intolibdruntime
. (Reported in newsgroup.) - Compile-time array literal repeatedly allocated at run-time despite not being used. (#762)
- ldmd2 now supports
-boundscheck=
. (Reported in newsgroup.) - Fix Win64 ABI wrt. passing structs > 64 bit. (#756)
- ICE with minimal D runtime and basic
extern(C) int main()
function. (#689) - CMake build failed with non-empty lib suffix. (#712)
- Cannot build GtkD using ldc2. (#703)
- Builtins
llvm.ctpop
andllvm.bswap
now work as expected. - Win64 MSVC improvements. (#727, #728)
- Wrong alignment for struct fields on x86_64/amd64 (#726)
- 2 nested context problems were fixed. (#696, #739)
- Building LuaD fails on Windows. (#642)
- Use
returned
attribute for struct constructors. (#637) - Using nested structs with AAs can trigger an erroneous "cannot create associative array" error in some very specific circumstances (#407).
- LDC crashes if imported module contains error. (#541)
- Compiler Segfault: Running pass 'X86 AT&T-Style Assembly Printer' on function "...". (#546)
- LDC not functional with newer mingw-w64 releases. (#534)
- Linker error when using curl. (#501)
- Exception chaining not implemented on Win64. (#463)
- isFile() called with a nonexistant path crashes on Win64. (#460)
- std.stdio File I/O is not fully complete. (#459)
- MSVC linking issue with std.zlib. (#306)
- Win64 Exception Handling. (#166)
Building LDC:
- The CMake files work with LLVM 3.6. LDC can be compiled with LLVM master.
- Removed compiler switch
-Wno-pendantic
if an older gcc is used.
Internals:
- Fixed missing call to va_end. (#695)
Known issues:
- LDC emits too much code. This leads to spurious failures in the std.stdiobase unit test. Workaround is adding -lcurl to the commandline. (This seems to be related to #662.)
- 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.