Skip to content

Releases: ldc-developers/ldc

LDC 0.16.0 alpha3

16 Sep 20:30
Compare
Choose a tag to compare
LDC 0.16.0 alpha3 Pre-release
Pre-release

(Changes from 0.16.0-alpha2 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:

  • Since 0.16.0, can't build any project with DUB whenever it has a dependency. (#1061) (new)
  • Interface dispatch is crashing. (#1058) (new)
  • merge-2.067: finally block executed twice. (#1054) (new)
  • Instruction does not dominate all uses. (#1042) (new)
  • Segfault while compiling hibernated. (#1024) (new)
  • 2.067 branch: Enormous compile time increase after dtor rework. (#1010) (new)
  • 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, partial solved)
  • 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

LDC 0.16.0 alpha 2

01 Sep 22:22
Compare
Choose a tag to compare
LDC 0.16.0 alpha 2 Pre-release
Pre-release

(Changes from 0.15.2-beta-2 release are marked with (new) and gone.)

Big news:

  • Frontend, druntime and Phobos are at version 2.067.1. (new)
  • LLVM 3.6.x is now supported. (#821, #855)
  • LLVM 3.7.x is now supported. (new)
  • Coverage Analysis à la DMD added. Implemented by Johan Engelen! (#878)
  • LDC now links in libcurl by default. This avoids linking issues (e.g. #683). You can explicitly set -defaultlib/-debuglib or edit ldc2.conf if you do not want to link to libcurl.

Platform support:

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

Bug fixes:

  • Do not emit bounds checking branches that are known to be taken (#1008) (new)
  • D variadic codegen bad for x86 32-bit and LLVM 3.6 (#1000) (new)
  • Building with -O2 -g leads to ICEs/crashes (inliner produces invalid debug info) (#998) (new)
  • Assigning struct initializer can create huge temoraries on stack. (#991) (new)
  • Segfault in cast_.d line 59 or 71 when casting class with struct containing union. (#989) (new)
  • ICE with std.datetime.benchmark (#982) (new)
  • 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. (new)

Internals:

  • The Travis-CI builds now use the docker environment. (new)
  • AppVeyor is used to check the Win64 build. Snapshots can be downloaded from https://ci.appveyor.com/project/kinke/ldc. (new)
  • 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.

Downloads

LDC 0.15.2 beta2

10 Jul 20:42
Compare
Choose a tag to compare
LDC 0.15.2 beta2 Pre-release
Pre-release

(Changes from beta-1 release are marked with (new) and gone.)

Big news:

  • LLVM 3.6.x is now supported. (#821, #855) (new)
  • Coverage Analysis à la DMD added. Implemented by Johan Engelen! (#878) (new)
  • LDC now links in libcurl by default. This avoids linking issues (e.g. #683). You can explicitly set -defaultlib/-debuglib or edit ldc2.conf if you do not want to link to libcurl. (new)

Platform support:

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

Bug fixes:

  • Now the right C++ mangler is used when targetting MSVC. (new)
  • Duplicate symbol when using -lib (works with dmd). (#978) (new)
  • Failed assertion because of codegening a destructor call on an unavailable var. (#953) (new)
  • Vector ops optimization: inline vector ops with -O2 (#938) (new)
  • Crash: "Error: size of type is not known". (#893) (new)
  • 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) (new)
  • Fix cmake bug when ldc is a submodule. (#860)
  • druntime fails compilation with MinGW-x64. (#847)
  • LDC builds with current LLVM trunk 3.7, too.

Internals:

  • 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! (new)
  • The CPP mangler calls now fatal() instead of assert(0) in many places. (#927, #928, #929) (new)
  • 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.

Downloads

LDC 0.15.2 beta1

20 Mar 21:38
Compare
Choose a tag to compare
LDC 0.15.2 beta1 Pre-release
Pre-release

Big news:

  • Now LLVM 3.6.0 is officially supported!

Platform support:

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

Bug fixes:

  • 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:

  • Fix cmake bug when ldc is a submodule. (#860)
  • druntime fails compilation with MinGW-x64. (#847)

Internals:

  • 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 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.

Downloads

LDC 0.15.1

15 Dec 05:31
Compare
Choose a tag to compare

(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 and llvm.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 into libdruntime. (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 and llvm.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.

Downloads

LDC 0.15.0 beta 1

14 Nov 22:01
Compare
Choose a tag to compare
LDC 0.15.0 beta 1 Pre-release
Pre-release

(Changes from alpha-1 release are marked with (new) and gone.)

Big news:

  • Frontend, druntime and Phobos are at version 2.066.1. (new)
  • 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 and llvm.maxnum. (new)
  • LDC now builds vibe.d.

Platform support:

  • Better (but not perfect) support for exceptions on ARM. (#489) (new)
  • 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.

Bug fixes:

  • The modules from core.internal.* are now compiled into libdruntime. (Reported in newsgroup.) (new)
  • Compile-time array literal repeatedly allocated at run-time despite not being used. (#762) (new)
  • ldmd2 now supports -boundscheck=. (Reported in newsgroup.) (new)
  • 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 and llvm.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) (new)
  • 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) (new)
  • Linker error when using curl. (#501) (new)
  • 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. (new)
  • Garbage collection does not work on Linux/PPC64 and other big-endian systems.

Downloads

LDC 0.15.0 alpha1

22 Oct 18:10
Compare
Choose a tag to compare
LDC 0.15.0 alpha1 Pre-release
Pre-release

Big news:

  • Frontend, druntime and Phobos are at version 2.066.1-rc2.
  • Now LLVM 3.5.0 is officially supported!
  • More LLVM intrinsics are now builtins (usable with CTFE): llvm.sin, llvm.cos, llvm.sqrt and llvm.fabs.
  • LDC now builds vibe.d.

Platform support:

  • 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. (Please note that there are still failing unit tests.)
  • The internal assembler is now used on MinGW with LLVM 3.5 instead of GNU as.

Bug fixes:

  • 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 and llvm.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)
  • 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)
  • 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.)
  • Garbage collection does not work on Linux/PPC64 and other big-endian systems.

Downloads

LDC 0.14.0

15 Aug 14:38
Compare
Choose a tag to compare

(Changes from alpha-1 release are marked with (new) and gone.)

Big news:

  • Frontend, druntime and Phobos are at version 2.065.0.
  • Building druntime/Phobos as shared libraries on Linux is now supported, but not enabled by default. Use -DBUILD_SHARED_LIBS=ON on the CMake command line to enable shared libraries.
  • On Linux, link-time stripping of dead code (--gc-sections) is now usable and enabled by default. Try -disable-linker-strip-dead in case of mysterious linker issues/runtime crashes, as such problems might be caused by related issues (for example in third-party C libraries).
  • The deprecated -noruntime switch is now removed. The -nogc switch now also shows a line number in the error message.
  • LLVM intrinsics llvm.bswap.i#, llvm.ctpop.i#, llvm.ctlz.i# and llvm.cttz.i# are now builtins and can be used with CTFE. (#648) (new)
  • Deprecated version identifiers have been removed.
  • Deprecated pragma names have been removed.
  • An experimental switch -template-depth to control the maximum number of nested template instantiations has been added.

Platform support:

  • The architectures ppc64le, amd64, amd64_be and armbe are available if built with LLVM 3.5.
  • Some code for ARM and MIPS64 has been added.
  • Support for LLVM 3.5 has been added.

Bug fixes:

  • The shared libraries implementation fixes a couple of known issues. (#433, #291, #239, #194, #228)
  • Fixed a problem in constructing a char representation of a type which resulted in an ICE. (#642)
  • ldmd2: -defaultlib= works now. (#601)
  • The -defaultlib/-debuglib was reworked including split between druntime and Phobos. (#416)
  • Returning value transitively through assignment now works. (#629)
  • A purity issue was fixed. (#575)
  • GC spends too much time in marking phase. (#233)
  • Avoid invalid *&ex -> ex optimizations. (Backport of a DMD regression) (#649)
  • A missed optimization is fixed now. (#338)
  • pragma(LDC_no_moduleinfo) now disables generation of module metadata. (#571)
  • Fixed the signature of intrinsic llvm.prefetch and added new intrinsic llvm.clear_cache (from LLVM 3.5). (new)

Building LDC:

  • The build does not break if variable LLVM_LDFLAGS contains a newline. (#691)
  • A missing va_end was added. (#695) (new)
  • The Win64 build was improved. It requires at least VS2012 and must be build against LLVM 3.5 with this patch from Twobit applied.

Internals:

  • Some rarely used LLVM-internal switches are now hidden from command line -help. Use -help-hidden to display all of them.

Known regressions:

  • 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.)
  • 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 and other big-endian systems.

Downloads

LDC 0.14.0 alpha 1

02 Aug 14:31
Compare
Choose a tag to compare
LDC 0.14.0 alpha 1 Pre-release
Pre-release

Big news:

  • Frontend, druntime and Phobos are at version 2.065.0.
  • Building druntime/Phobos as shared libraries on Linux is now supported, but not enabled by default. Use -DBUILD_SHARED_LIBS=ON on the CMake command line to enable shared libraries.
  • On Linux, link-time stripping of dead code (--gc-sections) is now usable and enabled by default. Try -disable-linker-strip-dead in case of mysterious linker issues/runtime crashes, as such problems might be caused by related issues (for example in third-party C libraries).
  • The deprecated -noruntime switch is now removed. The -nogc switch now also shows a line number in the error message.
  • Deprecated version identifiers have been removed.
  • Deprecated pragma names have been removed.
  • An experimental switch -template-depth to control the maximum number of nested template instantiations has been added.

Platform support:

  • The architectures ppc64le, amd64, amd64_be and armbe are available if built with LLVM 3.5.
  • Some code for ARM and MIPS64 has been added.
  • Support for LLVM 3.5 has been added.

Bug fixes:

  • The shared libraries implementation fixes a couple of known issues. (#433, #291, #239, #194, #228)
  • Fixed a problem in constructing a char representation of a type which resulted in an ICE. (#642)
  • ldmd2: -defaultlib= works now. (#601)
  • The -defaultlib/-debuglib was reworked including split between druntime and Phobos. (#416)
  • Returning value transitively through assignment now works. (#629)
  • A purity issue was fixed. (#575)
  • GC spends too much time in marking phase. (#233)
  • Avoid invalid *&ex -> ex optimizations. (Backport of a DMD regression) (#649)
  • A missed optimization is fixed now. (#338)
  • pragma(LDC_no_moduleinfo) now disables generation of module metadata. (#571)

Building LDC:

  • The build does not break if variable LLVM_LDFLAGS contains a newline. (#691)
  • The Win64 build was improved. It requires at least VS2012 and must be build against LLVM 3.5 with this patch from Twobit applied.

Internals:

  • Some LLVM-internal switches are now hidden to clear up the command line -help. Use -help-hidden to display all of them.

Known regressions:

  • 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.)
  • 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 and other big-endian systems.

Downloads

LDC 0.13.0

24 Jun 04:43
Compare
Choose a tag to compare

(Changes from beta-1 release are marked with (new) and gone.)

Big news:

  • Frontend, druntime and Phobos are at version 2.064.2. 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.
  • A version identifier for NVPTX/NVPTX64 has been added.
  • The architecture AArch64_be is available if built with LLVM 3.5.
  • The version identifier for the used float ABI is now derived from the command line and default target value. It also defines the version identifier for the architecture (e.g. PPC_HardFloat).
  • Version identifiers for the various MIPS ABIs have been added.

Bug fixes:

  • The format failure on MingW32 is fixed. (#383)
  • 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)
  • LDC does not crash if using triple arm7-apple-darwin. (Reported in forum.)
  • The vectorization passes are now enabled if LLVM 3.4/3.5 is used. (Reported in forum.)
  • The option -disable-simplify-libcalls is available for LLVM 3.4+, too.
  • Option -lib of ldmd creates a library with an object per module. (#579)
  • LDC builds on FreeBSD 10. (#584)
  • The config file is now also searched in the current directory. (#589)
  • Fixed ICE with extern(C) struct with ctor and field. (#624) new
  • Some code emission fixes. new

Building LDC:

  • LLVM 3.4.x 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 builds with -std=c++11. (#330)
  • LDC builds on OS X Mavericks. (#544)
  • LDC builds on FreeBSD 10. (#584)
  • LDC builds on Solaris/x86 (compiler only, druntime/Phobos support missing)
  • The unresolved symbols during linking of release build of unit test std.uni are gone. (#594)

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 against gcstub.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.
  • Verbose output (-v) now prints the path to LDC binary and version information. Also all defined version identifiers are printed.

Known regressions:

  • LDC emits too much code. This leads to spurious failures in the std.stdiobase unit test. Workaround is adding -lcurl to the commandline.
  • 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.

Downloads