Releases: ldc-developers/ldc
Releases · ldc-developers/ldc
LDC 1.1.0 beta 2
(Changes from 1.1.0-alpha1 release are marked with (new) and gone.)
Big news
- Frontend, druntime and Phobos are at version 2.071.1.
- Cross-module inlining (#1577, enabled from
-O2, disable with-disable-cross-module-inlining) - Profile-guided optimization (#1219, "How To" article)
- Experimental IR-to-obj caching with
-ir2obj-cache=<cache dir>(#1572) - Accept bitcode files on commandline (#1539)
@ldc.attributes.fastmathfor aggressive math optimization (#1472, #1438)- New traits
__traits(targetCPU)and__traits(targetHasFeature, )(#1434) - Binary distribution now bundles DUB (#1573)
- Drastic reduction of large symbol name lengths with
-hash-threshold(#1445) @ldc.attributes.optStrategy(...)for per-function optimization setting (#1637) (new)
Platform support
- Support for LLVM 3.9.
- Added ARM assembly code for Phobos
std.bigint(ldc-developers/phobos#31) - Added some definitions for OpenBSD (ldc-developers/druntime@1ef8322)
- Updates for Solaris (ldc-developers/druntime#71, ldc-developers/druntime#72, ldc-developers/druntime#73, ldc-developers/druntime#74, ldc-developers/druntime#75, ldc-developers/druntime#79)
Bug fixes
- Strange compile time error. (#1638) (new)
- LDC+DUB on Windows: folder separator is ignored. (#1621) (new)
- Fix evaluation order issues. (#1620, #1623) (new)
- ICE on returning struct with zero-length static array. (#1611)
- Debug info generation fixes for LLVM >= 3.8. (#1598) (new)
- ICE after return in the middle of a function on Win64/MSVC. (#1582)
- Enums with referenced struct members result in floating point error. (#1581)
- Static array initialization with single element misdetected as direct construction via sret. (#1548)
- ICE on static typeid. (#1540)
- super doesn't work. (#1450)
- Sub-expression evaluation order fixes. (#1327)
Building LDC
- LDC now requires a preinstalled D compiler.
- On Unix-like systems we now use gcc for linking. (#1594) (new)
Internals
- optimizer: Skip adding verifier function pass if
-disable-verifyis given. (#1591) - DValue refactoring. (#1562)
- Several improvements to generated IR. (#1528, #1630)
Known issues
- LDC does not zero the padding area of a
realvariable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply torealmembers inside structs etc. - Phobos does not compile on MinGW platform.
LDC 1.1.0 alpha 1
Big news
- Frontend, druntime and Phobos are at version 2.071.1.
- Cross-module inlining (#1577, enabled from
-O2, disable with-disable-cross-module-inlining) - Profile-guided optimization (#1219)
- IR-to-obj caching with
-ir2obj-cache=<cache dir>(#1572) - Accept bitcode files on commandline (#1539)
- @ldc.attributes.fastmath for aggressive math optimization (#1472, #1438)
- New traits
__traits(targetCPU)and__traits(targetHasFeature, )(#1434) - Binary distribution now bundles DUB (#1573)
- Drastic reduction of large symbol name lengths with
-hash-threshold(#1445)
Platform support
- Added ARM assembly code for Phobos
std.bigint(ldc-developers/phobos#31) - Added some definitions for OpenBSD (ldc-developers/druntime@1ef8322)
- Updates for Solaris (ldc-developers/druntime#71, ldc-developers/druntime#72, ldc-developers/druntime#73, ldc-developers/druntime#74, ldc-developers/druntime#75, ldc-developers/druntime#79)
Bug fixes
- ICE on returning struct with zero-length static array. (#1611)
- ICE after return in the middle of a function on Win64/MSVC. (#1582)
- Enums with referenced struct members result in floating point error. (#1581)
- Static array initialization with single element misdetected as direct construction via sret. (#1548)
- ICE on static typeid. (#1540)
- super doesn't work. (#1450)
- Sub-expression evaluation order fixes. (#1327)
Building LDC
- LDC now requires a preinstalled D compiler.
Internals
- optimizer: Skip adding verifier function pass if -disable-verify is given. (#1591)
- DValue refactoring. (#1562)
- Several improvements to generated IR. (#1528)
Known issues
- LDC does not zero the padding area of a
realvariable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply torealmembers inside structs etc. - Phobos does not compile on MinGW platform.
LDC 1.0.0
(Changes from 1.0.0-beta2 release are marked with (new) and gone.)
Big news
- Frontend, druntime and Phobos are at version 2.070.2.
Platform support
- Support for LLVM 3.5 - 3.8 and preliminary support for LLVM 3.9.
- Objective-C Support. (#1419)
- ARM platform is now fully supported. (#1283, #489)
- Better support for Android. (#1447) (new)
- Preliminary support for AArch64.
Bug fixes
- Outdated Copyright notice in LICENSE file. (#1322) (new)
- libconfig.so.8 not found (ubuntu 14.04) (#1460)
- Wrong template filter on atomicOp. (#1454)
- Runtime error on synchronized(typeid(SomeInterface)) { }. (#1377)
- TypeInfo is stored read-only, but mutable from D. (#1337)
- Inline assembly regression with local variable references. (#1292)
- Compile error on Linux/PPC and Linux/PPC64 due to missing import in Phobos.
Building LDC
- LDC now requires a preinstalled D compiler.
- Building on OS X requires ld64-264 or above (shipping with Xcode 7.3). This avoid spurious crashes during exception handling. XCode 7.3.1 should be used to avoid linker errors. (#1444, #1512) (new)
Internals
- Linking against LLVM shared library is now supported.
Known issues
- LDC does not zero the padding area of a
realvariable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply torealmembers inside structs etc. - Phobos does not compile on MinGW platform.
LDC 1.0.0 beta 2
(Changes from 1.0.0-alpha1 release are marked with (new) and gone.)
Big news
- Frontend, druntime and Phobos are at version 2.070.2.
Platform support
- Support for LLVM 3.8 and preliminary support for LLVM 3.9.
- Objective-C Support. (#1419)
- ARM platform is now fully supported. (#1283, #489)
- Better support for Android. (#1447) (new)
- Preliminary support for AArch64.
Bug fixes
- libconfig.so.8 not found (ubuntu 14.04) (#1460) (new)
- Wrong template filter on atomicOp. (#1454)
- Runtime error on synchronized(typeid(SomeInterface)) { }. (#1377)
- TypeInfo is stored read-only, but mutable from D. (#1337)
- Inline assembly regression with local variable references. (#1292)
- Compile error on Linux/PPC and Linux/PPC64 due to missing import in Phobos.
Building LDC
- LDC now requires a preinstalled D compiler.
Internals
- Linking against LLVM shared library is now supported.
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.
- Phobos does not compile on MinGW platform.
LDC 1.0.0 beta 1
(Changes from 1.0.0-alpha1 release are marked with (new) and gone.)
Big news
- Frontend, druntime and Phobos are at version 2.070.2. (new)
Platform support
- Support for LLVM 3.8 and preliminary support for LLVM 3.9.
- Objective-C Support. (#1419) (new)
- ARM platform is now fully supported. (#1283, #489)
- Better support for Android. (#1447) (new)
- Preliminary support for AArch64.
Bug fixes
- Wrong template filter on atomicOp. (#1454) (new)
- Runtime error on synchronized(typeid(SomeInterface)) { }. (#1377)
- TypeInfo is stored read-only, but mutable from D. (#1337)
- Inline assembly regression with local variable references. (#1292)
- Compile error on Linux/PPC and Linux/PPC64 due to missing import in Phobos.
Building LDC
- LDC now requires a preinstalled D compiler.
Internals
- Linking against LLVM shared library is now supported.
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.
- Phobos does not compile on MinGW platform.
LDC 0.17.1
This is a bug fix release only. Please refer to the 0.17.0 changelog for the complete set of changes in this version.
Big news
- ARM platform is now a first class target for LDC. It passes most test cases (except 2 failures) and can successfully compile the D version of the compiler.
Platform support
- ARM platform is now fully supported. (#1283, #489)
- Preliminary support for AArch64.
- Preliminary support for LLVM 3.9.
Bug fixes
- Inline assembly regression with local variable references. (#1292)
- Compile error on Linux/PPC and Linux/PPC64 due to missing import in Phobos.
Building LDC
- Linking against LLVM shared library is now supported.
Internals
Known issues
LDC 1.0.0 alpha 1
Big news
- Frontend, druntime and Phobos are at version 2.069.2.
Platform support
- Support for LLVM 3.8 and preliminary support for LLVM 3.9.
Bug fixes
Building LDC
- LDC now requires a preinstalled D compiler.
Internals
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.
- Phobos does not compile on MinGW platform.
LDC 0.17.0
(Changes from 0.17.0-beta2 release are marked with (new) and gone.)
Big news:
- Frontend, druntime and Phobos are at version 2.068.2.
- The exception handling runtime now no longer allocates GC memory (although it still uses C
mallocif there are more than 8 concurrent exceptions or nestedfinallyblocks per thread). Note: Creating theThrowables in user code (e.g.new Exception("…")) and theRuntime.traceHandlermay GC-allocate still. (Thanks for this goes to our newest contributor, @philpax). - The
@ldc.attributes.section("…")attribute can now be used to explicitly specify the object file section a variable or function is emitted to. - The
@ldc.attributes.target("…")attribute can now be used to explicitly specify CPU features or architecture for a function. - The
-staticoption can be used to create fully static binaries on Linux (akin to the GCC option of the same name). core.atomic.atomicOp()now exploits LLVM read-modify-write intrinsics instead of using a compare-and-swap loop. As side-effect, the atomic intrinsics in moduleldc.intrinsicshave been renamed:llvm_atomic_cmp_swap=>llvm_atomic_cmp_xchgllvm_atomic_swap=>llvm_atomic_rmw_xchgllvm_atomic_load_*=>llvm_atomic_rmw_*
Platform support:
- Improved ARM support. (#1280) (new)
- The compiler now supports NetBSD. (#1247) (Thanks for this goes to @nrTQgc.)
- The float ABI can now be derived from the second field of the triple. E.g. the hardfloat ABI is used if triple
armv7a-hardfloat-linux-gnueabiis given. (#1253) - Support for fibers on AArch64. (new)
- Support for LLVM 3.8 and preliminary support for LLVM 3.9
Bug fixes:
- make install problem. (#1289) (new)
- When a class contains a union, other fields are not statically initialized. (#1286) (new)
- Compiling DCD with -singleobj causes segmentation fault. (#1275) (new)
- 0.17.0-beta2: Cannot build DCD. (#1266) (new)
- Invalid bitcast error. (#1211) (new)
- 0.16.0-beta1: Trivial program fails on FreeBSD. (#1119)
- Can't build gtk-d 3.1.4. (#1112) (new)
- x86 ABI: Fix Solaris regression and work around MSVC byval alignment issue. (#1230)
- Atomic RMW operations emit subpar x86 assembly. (#1195)
- align() not respected for local variable declarations. (#1154)
- Codegen optimizations are no longer disabled when
-gis given. (75b3270) - Debug information is now generated for
refandoutparameters. (#1177) core.internal.converttests do not depend onrealpadding bytes any longer. (#788)
Building LDC:
- LDC now requires LLVM 3.5–3.8 and thus also a C++11-capable compiler to build.
Internals:
- The LDC-specific parts of the source code have received a big overhaul to make use of some C++11 features and to unify the style (the LLVM style as per
clang-formatis now used). - The groundwork for a code generation test suite working on the LLVM IR level has been laid, together with some first test cases for alignment issues.
- LDC now emits more optional LLVM IR attributes for more optimization opportunities. (#1232)
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.
- Phobos does not compile on MinGW platform.
Downloads
LDC 0.17.0 beta 2
(Changes from 0.17.0-beta1 release are marked with (new) and gone.)
Big news:
- Frontend, druntime and Phobos are at version 2.068.2.
- The exception handling runtime now no longer allocates GC memory (although it still uses C
mallocif there are more than 8 concurrent exceptions or nestedfinallyblocks per thread). Note: Creating theThrowables in user code (e.g.new Exception("…")) and theRuntime.traceHandlermay GC-allocate still. (Thanks for this goes to our newest contributor, @philpax). - The
@ldc.attributes.section("…")attribute can now be used to explicitly specify the object file section a variable or function is emitted to. - The
-staticoption can be used to create fully static binaries on Linux (akin to the GCC option of the same name). core.atomic.atomicOp()now exploits LLVM read-modify-write intrinsics instead of using a compare-and-swap loop. As side-effect, the atomic intrinsics in moduleldc.intrinsicshave been renamed:llvm_atomic_cmp_swap=>llvm_atomic_cmp_xchgllvm_atomic_swap=>llvm_atomic_rmw_xchgllvm_atomic_load_*=>llvm_atomic_rmw_*
Platform support:
- The compiler now supports NetBSD. (#1247) (Thanks for this goes to @nrTQgc.) (new)
- The float ABI can now be derived from the second field of the triple. E.g. the hardfloat ABI is used if triple
armv7a-hardfloat-linux-gnueabiis given. (#1253) (new) - Support for LLVM 3.8 and preliminary support for LLVM 3.9 (new)
Bug fixes:
- 0.16.0-beta1: Trivial program fails on FreeBSD. (#1119) (new)
- x86 ABI: Fix Solaris regression and work around MSVC byval alignment issue. (#1230)
- Atomic RMW operations emit subpar x86 assembly. (#1195)
- align() not respected for local variable declarations. (#1154)
- Codegen optimizations are no longer disabled when
-gis given. (75b3270) - Debug information is now generated for
refandoutparameters. (#1177) core.internal.converttests do not depend onrealpadding bytes any longer. (#788)
Building LDC:
- LDC now requires LLVM 3.5–3.8 and thus also a C++11-capable compiler to build.
Internals:
- The LDC-specific parts of the source code have received a big overhaul to make use of some C++11 features and to unify the style (the LLVM style as per
clang-formatis now used). - The groundwork for a code generation test suite working on the LLVM IR level has been laid, together with some first test cases for alignment issues.
- LDC now emits more optional LLVM IR attributes for more optimization opportunities. (#1232)
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.
- Phobos does not compile on MinGW platform.
Downloads
LDC 0.17.0 beta 1
(Changes from 0.17.0-alpha1 release are marked with (new) and gone.)
Big news:
- Frontend, druntime and Phobos are at version 2.068.2.
- The exception handling runtime now no longer allocates GC memory (although it still uses C
mallocif there are more than 8 concurrent exceptions or nestedfinallyblocks per thread). Note: Creating theThrowables in user code (e.g.new Exception("…")) and theRuntime.traceHandlermay GC-allocate still. (Thanks for this goes to our newest contributor, @philpax). - The
@ldc.attributes.section("…")attribute can now be used to explicitly specify the object file section a variable or function (new) is emitted to. - The
-staticoption can be used to create fully static binaries on Linux (akin to the GCC option of the same name). core.atomic.atomicOp()now exploits LLVM read-modify-write intrinsics instead of using a compare-and-swap loop. As side-effect, the atomic intrinsics in moduleldc.intrinsicshave been renamed:llvm_atomic_cmp_swap=>llvm_atomic_cmp_xchgllvm_atomic_swap=>llvm_atomic_rmw_xchgllvm_atomic_load_*=>llvm_atomic_rmw_*
Platform support:
Bug fixes:
- x86 ABI: Fix Solaris regression and work around MSVC byval alignment issue. (#1230)
- Atomic RMW operations emit subpar x86 assembly. (#1195)
- align() not respected for local variable declarations. (#1154)
- Codegen optimizations are no longer disabled when
-gis given. (75b3270) - Debug information is now generated for
refandoutparameters. (#1177) core.internal.converttests do not depend onrealpadding bytes any longer. (#788) (new)
Building LDC:
- LDC now requires LLVM 3.5–3.7 and thus also a C++11-capable compiler to build.
Internals:
- The LDC-specific parts of the source code have received a big overhaul to make use of some C++11 features and to unify the style (the LLVM style as per
clang-formatis now used). - The groundwork for a code generation test suite working on the LLVM IR level has been laid, together with some first test cases for alignment issues.
- LDC now emits more optional LLVM IR attributes for more optimization opportunities. (#1232) (new)
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.
- Phobos does not compile on MinGW platform.