github ldc-developers/ldc v0.16.0-alpha4
LDC 0.16.0 alpha4

latest releases: v1.38.0-beta1, dmd-rewrite-v2.108.0, dmd-rewrite-v2.108.0-rc.1...
pre-release8 years ago

(Changes from 0.16.0-alpha3 release are marked with (new) and gone.)

Big news:

  • Frontend, druntime and Phobos are at version 2.067.1.
  • LLVM 3.6.x is now supported. (#821, #855)
  • LLVM 3.7.x is now supported.
  • Coverage Analysis à la DMD added. Implemented by Johan Engelen! (#878)
  • std.net.curl now loads libcurl at runtime if/when it is actually used. This is the same fix present in post-2.068 DMD, and avoids linking issues.

Platform support:

  • Win64 runtime now supports VS2015.
  • Varargs fix & ABI refactoring. (#768) Thanks to kinke for the great work!
  • Provide version ARM_SoftFP when float-abi=softfp. (#857)

Bug fixes:

  • Make GCC intrinsics usable with @nogc and const *. (#1090) (new) Thanks to Marco Leise for providing the patch!
  • Treat atomic instructions as intrinsics. (#1089) (new)
  • ldc2 does not respect -of on Windows. (#1084) (new)
  • LLVM IR output: Do not repeat type in comments, print alloca sizes. (#1080) (new)
  • Calling members of large (>64 kiB) classes through interface reference fails. (#1065) (new)
  • Since 0.16.0, can't build any project with DUB whenever it has a dependency. (#1061)
  • Interface dispatch is crashing. (#1058)
  • merge-2.067: finally block executed twice. (#1054)
  • Instruction does not dominate all uses. (#1042)
  • Segfault while compiling hibernated. (#1024)
  • 2.067 branch: Enormous compile time increase after dtor rework. (#1010)
  • Do not emit bounds checking branches that are known to be taken (#1008)
  • D variadic codegen bad for x86 32-bit and LLVM 3.6 (#1000)
  • Building with -O2 -g leads to ICEs/crashes (inliner produces invalid debug info) (#998)
  • Assigning struct initializer can create huge temoraries on stack. (#991)
  • Segfault in cast_.d line 59 or 71 when casting class with struct containing union. (#989)
  • MSVC build, lots and lots of warnings. (#988) (new)
  • ICE with std.datetime.benchmark (#982)
  • Now the right C++ mangler is used when targetting MSVC.
  • Duplicate symbol when using -lib (works with dmd). (#978)
  • Failed assertion because of codegening a destructor call on an unavailable var. (#953)
  • Vector ops optimization: inline vector ops with -O2 (#938)
  • Crash: "Error: size of type is not known". (#893)
  • msgpack-d 0.9.3 unittesting fails. (#841)
  • repeatable crash with vague error message. (#837)
  • ARM float-abi=soft. (Phobos only - see #829)
  • Wrong handling of -m32/-m64. (#824)
  • [DUB][scid] test crashes. (#823)
  • Can't link dub with i686 LDC 0.15.1. (#813)
  • Segfault when casting a class with a 0 length array. (#812)
  • Compiler silently dies while codegening. (#809)
  • Vararg functions does not compile on x86_64. (#702)
  • Make the x86_64 System V ABI code use Type::toArgTypes. (#288)
  • ABI transformations are never applied for variadic arguments. (#172)
  • stack trace missing on assert failure. (#115, fixed only on OS X, see #863)
  • core.stdc.stdarg doesn't work on 64 bits. (#73)

Building LDC:

  • CMake fails after git gc. (#874)
  • Fix cmake bug when ldc is a submodule. (#860)
  • druntime fails compilation with MinGW-x64. (#847)
  • Now uses "REGEX REPLACE" for MSVC static libaries option.

Internals:

  • The Travis-CI builds now use the docker environment.
  • AppVeyor is used to check the Win64 build. Snapshots can be downloaded from https://ci.appveyor.com/project/kinke/ldc.
  • Coverage Analysis for the LDC source code is now available at https://coveralls.io/r/ldc-developers/ldc. (#903, #380). Thanks a lot to Dmitri Makarov for implementing this!
  • The CPP mangler calls now fatal() instead of assert(0) in many places. (#927, #928, #929)
  • Updated to Doxygen v1.8.9.1 and changed path 'dmd' to 'dmd2'. (#846)
  • Modernize bash completion setup. (#840)
  • Updates to Travis-CI: gcc 4.9 and LLVM 3.7 are added. (#838)
  • ldc2: valgrind: invalid read of size 4. (#825)

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.
  • atomicLoad(), atomicStore() et al. with 128bit data requires an alignment of 16 bytes on x86-64. Add align(16) if you encounter a segfault. If you are using vibe.d then you need to use version ~master because of this.
  • Phobos does not compile on MinGW platform.

Downloads

Don't miss a new ldc release

NewReleases is sending notifications on new releases.