Skip to content

Releases: ldc-developers/ldc

LDC 1.1.0

01 Feb 02:48
Compare
Choose a tag to compare

(Changes from 1.1.0-beta6 release are marked with (new).)

Big news

New features

  • New traits __traits(targetCPU) and __traits(targetHasFeature, ) (#1434)
  • Drastic reduction of large symbol name lengths with optional -hash-threshold (#1445)
  • @ldc.attributes.optStrategy(...) for per-function optimization setting (#1637)
  • Extend intrinsic llvm_memory_fence for single-thread fences (#1837)
  • Add function instrumentation and profiling options via -finstrument-functions (#1845)
  • Add line-tables-only debuginfo via -gline-tables-only (#1861)
  • Implement DMD-compatible -betterC (#1872)

Platform support

Bug fixes

  • Potential crash when generating debuginfos for nested variables AND optimizing (#1933, #1963, #1984) (new)
  • Alignment and size of critical sections, causing crashes on ARM (#1955, #1956) (new)
  • -finstrument-functions using wrong return address (#1961) (new)
  • Response files expanded too late, preventing cross-compilation on Windows when using dub (#1941, #1942) (new)
  • Non-Windows x86_64 ABI bug wrt. returning static arrays (#1925, #1938) (new)
  • Some array literals wrongly promoted to constants (#1924, #1927) (new)
  • Misc. DUB regressions introduced by beta 3 (#1819)
    • Don't output static libs (with relative target filename) in -od objects directory (for LDC, but continue to do so for LDMD, for DMD compatibility).
    • LDMD: avoid object file collisions (due to multiple D source files with identical name in different dirs) when creating a static lib and remove the object files on success, mimicking DMD.
    • Create output directories recursively.
  • Potential ICE when building vibe.d projects (#1741)
  • ICE when calling an abstract function. (#1822)
  • ICE for invalid __asm constraints. (#802)
  • Wrong code for LLVM inline assembly returning a tuple (__asmtuple). (#1823)
  • Potential ICE wrt. captured variables. (#1864)
  • ARM: ICE when using LTO. (#1860)
  • Union layout and initialization, fixing the compilation of DMD (#1846, fixing most cases of #1829)
  • Allow custom file extension for .ll/.bc./.s output files. (#1843)
  • Windows: produced binaries with debuginfos are now large-address-aware too. (#442, #1876)
  • Fix debuginfos for parameters. (#1816)
  • Allow alignment of global variables < pointer size. (#1825)
  • Promote more immutable array literals to LLVM constants. (#506, #1821, #1838)
  • ICE when incrementing a complex variable. (#1806)
  • llvm.va_start not matched with llvm.va_end (#1744)
  • ldmd2 ignores -od option for libraries. (#1724)
  • ICE: toConstElem(CastExp) doesn't support NewExp as cast source. (#1723)
  • Mark runtime intrinsic shims as pragma(inline, true). (#1715)
  • pragma(inline, false) is incompatible with store/loadUnaligned. (#1711)
  • ICE: function not fully analyzed; previous unreported errors compiling std.variant.VariantN!(16LU, int, string).VariantN.__xopEquals? (#1698)
  • Segfault at at ldc/ldc-1.1.0/driver/main.cpp:1351. (#1696)
  • Make sure MSVC Build Tools are automatically detected by LDC. (#1690)
  • Update Windows README.txt. (#1689)
  • [ldc2-1.1.0-beta2] Missing symbol with inlining enabled. (#1678)
  • [REG ldc-1.1.0-beta2] ICE with templated classes. (#1677)
  • FreeBSD: Fix shared library build, working Hello World. (#1673)
  • Strange compile time error. (#1638)
  • LDC+DUB on Windows: folder separator is ignored. (#1621)
  • Fix evaluation order issues. (#1620, #1623)
  • Ubuntu 16.10 linker failures due to PIE by default (relocation R_X86_64_32S … can not be used). (#1618)
  • ICE on returning struct with zero-length static array. (#1611)
  • Debug info generation fixes for LLVM >= 3.8. (#1598)
  • ICE after return in the middle of a function on Win64/MSVC. (#1582)
  • Enums with referenced struct members result in floating point error. (#1581)
  • pragma(inline, {true|false}) is no longer ignored (#1577)
  • 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)
  • Add suffix to LTO linker plugin name to disambiguate with LLVM installation. (#1898)

Building LDC

  • LDC now requires a preinstalled D compiler. (Versions 0.17.* and the ltsmaster branch can be used to 'bootstrap' a build when only a C++ compiler is available.)
  • On Unix-like systems we now use gcc for linking. (#1594)

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 1.1.0 beta 6

09 Dec 00:46
Compare
Choose a tag to compare
LDC 1.1.0 beta 6 Pre-release
Pre-release

Note: This release is what 1.1.0-beta4 should have been and gets rid of a LTO linker plugin issue (#1897, #1901) and a vtable-related regression (#1906). Some ABI fixes (PPC64) also made it into beta 6, see below.

(Changes from 1.1.0-beta3 release are marked with (new) and gone.)

Big news

New features

  • New traits __traits(targetCPU) and __traits(targetHasFeature, ) (#1434)
  • Drastic reduction of large symbol name lengths with optional -hash-threshold (#1445)
  • @ldc.attributes.optStrategy(...) for per-function optimization setting (#1637)
  • Extend intrinsic llvm_memory_fence for single-thread fences (#1837) (new)
  • Add function instrumentation and profiling options via -finstrument-functions (#1845) (new)
  • Add line-tables-only debuginfo via -gline-tables-only (#1861) (new)
  • Implement DMD-compatible -betterC (#1872) (new)

Platform support

Bug fixes

  • Misc. DUB regressions introduced by beta 3 (#1819) (new)
    • Don't output static libs (with relative target filename) in -od objects directory (for LDC, but continue to do so for LDMD, for DMD compatibility).
    • LDMD: avoid object file collisions (due to multiple D source files with identical name in different dirs) when creating a static lib and remove the object files on success, mimicking DMD.
    • Create output directories recursively.
  • Potential ICE when building vibe.d projects (#1741) (new)
  • ICE when calling an abstract function. (#1822) (new)
  • ICE for invalid __asm constraints. (#802) (new)
  • Wrong code for LLVM inline assembly returning a tuple (__asmtuple). (#1823) (new)
  • Potential ICE wrt. captured variables. (#1864) (new)
  • ARM: ICE when using LTO. (#1860) (new)
  • Union layout and initialization, fixing the compilation of DMD (#1846, fixing most cases of #1829) (new)
  • Allow custom file extension for .ll/.bc./.s output files. (#1843) (new)
  • Windows: produced binaries with debuginfos are now large-address-aware too. (#442, #1876) (new)
  • Fix debuginfos for parameters. (#1816) (new)
  • Allow alignment of global variables < pointer size. (#1825) (new)
  • Promote more immutable array literals to LLVM constants. (#506, #1821, #1838) (new)
  • ICE when incrementing a complex variable. (#1806)
  • llvm.va_start not matched with llvm.va_end (#1744)
  • ldmd2 ignores -od option for libraries. (#1724)
  • ICE: toConstElem(CastExp) doesn't support NewExp as cast source. (#1723)
  • Mark runtime intrinsic shims as pragma(inline, true). (#1715)
  • pragma(inline, false) is incompatible with store/loadUnaligned. (#1711)
  • ICE: function not fully analyzed; previous unreported errors compiling std.variant.VariantN!(16LU, int, string).VariantN.__xopEquals? (#1698)
  • Segfault at at ldc/ldc-1.1.0/driver/main.cpp:1351. (#1696)
  • Make sure MSVC Build Tools are automatically detected by LDC. (#1690)
  • Update Windows README.txt. (#1689)
  • [ldc2-1.1.0-beta2] Missing symbol with inlining enabled. (#1678)
  • [REG ldc-1.1.0-beta2] ICE with templated classes. (#1677)
  • FreeBSD: Fix shared library build, working Hello World. (#1673)
  • Strange compile time error. (#1638)
  • LDC+DUB on Windows: folder separator is ignored. (#1621)
  • Fix evaluation order issues. (#1620, #1623)
  • Ubuntu 16.10 linker failures due to PIE by default (relocation R_X86_64_32S … can not be used). (#1618)
  • ICE on returning struct with zero-length static array. (#1611)
  • Debug info generation fixes for LLVM >= 3.8. (#1598)
  • ICE after return in the middle of a function on Win64/MSVC. (#1582)
  • Enums with referenced struct members result in floating point error. (#1581)
  • pragma(inline, {true|false}) is no longer ignored (#1577)
  • 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)
  • Add suffix to LTO linker plugin name to disambiguate with LLVM installation. (#1898) (new)

Building LDC

  • LDC now requires a preinstalled D compiler. (Versions 0.17.* and the ltsmaster branch can be used to 'bootstrap' a build when only a C++ compiler is available.)
  • On Unix-like systems we now use gcc for linking. (#1594)

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 1.1.0 beta 5

28 Nov 00:10
Compare
Choose a tag to compare
LDC 1.1.0 beta 5 Pre-release
Pre-release

(Note: The only difference to 1.1.0-beta4 is a change to the installed LTO linker plugin name and directory to disambiguate with a system-wide LLVM installation. Changes from 1.1.0-beta3 release are marked with (new) and gone.)

Big news

New features

  • New traits __traits(targetCPU) and __traits(targetHasFeature, ) (#1434)
  • Drastic reduction of large symbol name lengths with optional -hash-threshold (#1445)
  • @ldc.attributes.optStrategy(...) for per-function optimization setting (#1637)
  • Extend intrinsic llvm_memory_fence for single-thread fences (#1837) (new)
  • Add function instrumentation and profiling options via -finstrument-functions (#1845) (new)
  • Add line-tables-only debuginfo via -gline-tables-only (#1861) (new)
  • Implement DMD-compatible -betterC (#1872) (new)

Platform support

Bug fixes

  • Misc. DUB regressions introduced by beta 3 (#1819) (new)
    • Don't output static libs (with relative target filename) in -od objects directory (for LDC, but continue to do so for LDMD, for DMD compatibility).
    • LDMD: avoid object file collisions (due to multiple D source files with identical name in different dirs) when creating a static lib and remove the object files on success, mimicking DMD.
    • Create output directories recursively.
  • Potential ICE when building vibe.d projects (#1741) (new)
  • ICE when calling an abstract function. (#1822) (new)
  • ICE for invalid __asm constraints. (#802) (new)
  • Wrong code for LLVM inline assembly returning a tuple (__asmtuple). (#1823) (new)
  • Potential ICE wrt. captured variables. (#1864) (new)
  • ARM: ICE when using LTO. (#1860) (new)
  • Union layout and initialization, fixing the compilation of DMD (#1846, fixing most cases of #1829) (new)
  • Allow custom file extension for .ll/.bc./.s output files. (#1843) (new)
  • Windows: produced binaries with debuginfos are now large-address-aware too. (#442, #1876) (new)
  • Fix debuginfos for parameters. (#1816) (new)
  • Allow alignment of global variables < pointer size. (#1825) (new)
  • Promote more immutable array literals to LLVM constants. (#506, #1821, #1838) (new)
  • ICE when incrementing a complex variable. (#1806)
  • llvm.va_start not matched with llvm.va_end (#1744)
  • ldmd2 ignores -od option for libraries. (#1724)
  • ICE: toConstElem(CastExp) doesn't support NewExp as cast source. (#1723)
  • Mark runtime intrinsic shims as pragma(inline, true). (#1715)
  • pragma(inline, false) is incompatible with store/loadUnaligned. (#1711)
  • ICE: function not fully analyzed; previous unreported errors compiling std.variant.VariantN!(16LU, int, string).VariantN.__xopEquals? (#1698)
  • Segfault at at ldc/ldc-1.1.0/driver/main.cpp:1351. (#1696)
  • Make sure MSVC Build Tools are automatically detected by LDC. (#1690)
  • Update Windows README.txt. (#1689)
  • [ldc2-1.1.0-beta2] Missing symbol with inlining enabled. (#1678)
  • [REG ldc-1.1.0-beta2] ICE with templated classes. (#1677)
  • FreeBSD: Fix shared library build, working Hello World. (#1673)
  • Strange compile time error. (#1638)
  • LDC+DUB on Windows: folder separator is ignored. (#1621)
  • Fix evaluation order issues. (#1620, #1623)
  • Ubuntu 16.10 linker failures due to PIE by default (relocation R_X86_64_32S … can not be used). (#1618)
  • ICE on returning struct with zero-length static array. (#1611)
  • Debug info generation fixes for LLVM >= 3.8. (#1598)
  • 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)
  • Add suffix to LTO linker plugin name to disambiguate with LLVM installation. (#1898) (new)

Building LDC

  • LDC now requires a preinstalled D compiler. (Versions 0.17.* and the ltsmaster branch can be used to 'bootstrap' a build when only a C++ compiler is available.)
  • On Unix-like systems we now use gcc for linking. (#1594)

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 1.1.0 beta 4

26 Nov 22:15
Compare
Choose a tag to compare
LDC 1.1.0 beta 4 Pre-release
Pre-release

Note: This pre-release has been immediately superseded by v1.1.0-beta5, which fixes a file name conflict with LLVM (#1897).

(Changes from 1.1.0-beta3 release are marked with (new) and gone.)

Big news

New features

  • New traits __traits(targetCPU) and __traits(targetHasFeature, ) (#1434)
  • Drastic reduction of large symbol name lengths with optional -hash-threshold (#1445)
  • @ldc.attributes.optStrategy(...) for per-function optimization setting (#1637)
  • Extend intrinsic llvm_memory_fence for single-thread fences (#1837) (new)
  • Add function instrumentation and profiling options via -finstrument-functions (#1845) (new)
  • Add line-tables-only debuginfo via -gline-tables-only (#1861) (new)
  • Implement DMD-compatible -betterC (#1872) (new)

Platform support

Bug fixes

  • Misc. DUB regressions introduced by beta 3 (#1819) (new)
    • Don't output static libs (with relative target filename) in -od objects directory (for LDC, but continue to do so for LDMD, for DMD compatibility).
    • LDMD: avoid object file collisions (due to multiple D source files with identical name in different dirs) when creating a static lib and remove the object files on success, mimicking DMD.
    • Create output directories recursively.
  • Potential ICE when building vibe.d projects (#1741) (new)
  • ICE when calling an abstract function. (#1822) (new)
  • ICE for invalid __asm constraints. (#802) (new)
  • Wrong code for LLVM inline assembly returning a tuple (__asmtuple). (#1823) (new)
  • Potential ICE wrt. captured variables. (#1864) (new)
  • ARM: ICE when using LTO. (#1860) (new)
  • Union layout and initialization, fixing the compilation of DMD (#1846, fixing most cases of #1829) (new)
  • Allow custom file extension for .ll/.bc./.s output files. (#1843) (new)
  • Windows: produced binaries with debuginfos are now large-address-aware too. (#442, #1876) (new)
  • Fix debuginfos for parameters. (#1816) (new)
  • Allow alignment of global variables < pointer size. (#1825) (new)
  • Promote more immutable array literals to LLVM constants. (#506, #1821, #1838) (new)
  • ICE when incrementing a complex variable. (#1806)
  • llvm.va_start not matched with llvm.va_end (#1744)
  • ldmd2 ignores -od option for libraries. (#1724)
  • ICE: toConstElem(CastExp) doesn't support NewExp as cast source. (#1723)
  • Mark runtime intrinsic shims as pragma(inline, true). (#1715)
  • pragma(inline, false) is incompatible with store/loadUnaligned. (#1711)
  • ICE: function not fully analyzed; previous unreported errors compiling std.variant.VariantN!(16LU, int, string).VariantN.__xopEquals? (#1698)
  • Segfault at at ldc/ldc-1.1.0/driver/main.cpp:1351. (#1696)
  • Make sure MSVC Build Tools are automatically detected by LDC. (#1690)
  • Update Windows README.txt. (#1689)
  • [ldc2-1.1.0-beta2] Missing symbol with inlining enabled. (#1678)
  • [REG ldc-1.1.0-beta2] ICE with templated classes. (#1677)
  • FreeBSD: Fix shared library build, working Hello World. (#1673)
  • Strange compile time error. (#1638)
  • LDC+DUB on Windows: folder separator is ignored. (#1621)
  • Fix evaluation order issues. (#1620, #1623)
  • Ubuntu 16.10 linker failures due to PIE by default (relocation R_X86_64_32S … can not be used). (#1618)
  • ICE on returning struct with zero-length static array. (#1611)
  • Debug info generation fixes for LLVM >= 3.8. (#1598)
  • 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. (Versions 0.17.* and the ltsmaster branch can be used to 'bootstrap' a build when only a C++ compiler is available.)
  • On Unix-like systems we now use gcc for linking. (#1594)

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

12 Oct 18:59
Compare
Choose a tag to compare

This is a bug fix release only. Please refer to the 0.17.0 changelog and 0.17.1 changelog for the complete set of changes in this version.

Big news

Platform support

  • Support for LLVM 3.5 - 3.9.

Bug fixes

  • Fixed soft float and hard float issues on ARM.
  • Fixed ABI error on Linux/PPC and Linux/PPC64.
  • Fixed error in core.stdc.stdarg on Linux/PPC and Linux/PPC64.
  • Fixed issue with __tls_get_addr on Linux/PPC and Linux/PPC64.

Building LDC

Internals

Known issues

LDC 1.1.0 beta 3

11 Oct 09:13
Compare
Choose a tag to compare
LDC 1.1.0 beta 3 Pre-release
Pre-release

(Changes from 1.1.0-beta2 release are marked with (new) and gone.)

Big news

  • Frontend, druntime and Phobos are at version 2.071.2. (new)
  • Cross-module inlining (#1577, enabled from -O2, enable with -enable-cross-module-inlining (new))
  • 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.fastmath for aggressive math optimization (#1472, #1438, article)
  • 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)
  • Breaking changes to command-line semantics (See http://forum.dlang.org/post/ubobkfmsspbsmjunosna@forum.dlang.org). (new)

ABI change

  • This release features an ABI change, meaning that you may run into trouble when mixing binaries/libraries compiled with 1.1.0 with binaries compiled with earlier compiler versions.
  • The vtable's of inherited interfaces are now put between the class's _monitor field and the user data fields (https://issues.dlang.org/show_bug.cgi?id=15644)

Platform support

Bug fixes

  • ICE when incrementing a complex variable. (#1806) (new)
  • llvm.va_start not matched with llvm.va_end (#1744) (new)
  • ldmd2 ignores -od option for libraries. (#1724) (new)
  • ICE: toConstElem(CastExp) doesn't support NewExp as cast source. (#1723) (new)
  • Mark runtime intrinsic shims as pragma(inline, true). (#1715) (new)
  • pragma(inline, false) is incompatible with store/loadUnaligned. (#1711) (new)
  • ICE: function not fully analyzed; previous unreported errors compiling std.variant.VariantN!(16LU, int, string).VariantN.xopEquals? (#1698) __(new)
  • Segfault at at ldc/ldc-1.1.0/driver/main.cpp:1351. (#1696) (new)
  • Make sure MSVC Build Tools are automatically detected by LDC. (#1690)
  • Update Windows README.txt. (#1689) (new)
  • [ldc2-1.1.0-beta2] Missing symbol with inlining enabled. (#1678) (new)
  • [REG ldc-1.1.0-beta2] ICE with templated classes. (#1677)
  • FreeBSD: Fix shared library build, working Hello World. (#1673)
  • Strange compile time error. (#1638)
  • LDC+DUB on Windows: folder separator is ignored. (#1621)
  • Fix evaluation order issues. (#1620, #1623)
  • Ubuntu 16.10 linker failures due to PIE by default (relocation R_X86_64_32S … can not be used). (#1618)
  • ICE on returning struct with zero-length static array. (#1611)
  • Debug info generation fixes for LLVM >= 3.8. (#1598)
  • 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. (Versions 0.17.* and the ltsmaster branch can be used to 'bootstrap' a build when only a C++ compiler is available.)
  • On Unix-like systems we now use gcc for linking. (#1594)

Internals

  • optimizer: Skip adding verifier function pass if -disable-verify is given. (#1591)
  • DValue refactoring. (#1562)
  • Several improvements to generated IR. (#1528, #1630)

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.1.0 beta 2

09 Oct 12:05
Compare
Choose a tag to compare
LDC 1.1.0 beta 2 Pre-release
Pre-release

(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.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)
  • @ldc.attributes.optStrategy(...) for per-function optimization setting (#1637) (new)

Platform support

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-verify is given. (#1591)
  • DValue refactoring. (#1562)
  • Several improvements to generated IR. (#1528, #1630)

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.1.0 alpha 1

15 Jul 19:36
Compare
Choose a tag to compare
LDC 1.1.0 alpha 1 Pre-release
Pre-release

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

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

05 Jun 21:56
Compare
Choose a tag to compare

(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 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 2

15 May 23:35
Compare
Choose a tag to compare
LDC 1.0.0 beta 2 Pre-release
Pre-release

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