Skip to content

Releases: ldc-developers/ldc

LDC 1.18.0-beta1

12 Sep 22:31
203d5f2
Compare
Choose a tag to compare
LDC 1.18.0-beta1 Pre-release
Pre-release

Big news

  • Frontend, druntime and Phobos are at version 2.088.0+. (#3143, #3161)
  • Bundled dub upgraded to v1.17.0+ with improved LDC support, incl. cross-compilation (e.g., --arch=x86_64-pc-windows-msvc). (dlang/dub#1755, Wiki)
  • Init symbols of zero-initialized structs are no longer emitted. (#3131)
  • druntime: DMD-compatible {load,store}Unaligned and prefetch added to core.simd. (ldc-developers/druntime#163)
  • JIT improvements, incl. multi-threaded compilation. (#2758, #3154)

Platform support

  • Supports LLVM 3.9 - 8.0.

Bug fixes

  • Don't error out when initializing a void vector. (#3130, #3139)

Known issues

  • Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
  • 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.

LDC 1.17.0

25 Aug 11:43
67d5ff2
Compare
Choose a tag to compare

(Changes since 1.17.0-beta1 are marked with (new).)

Big news

Platform support

  • Supports LLVM 3.9 - 8.0.

Bug fixes

  • Fix for v1.16.0 regression when returning void expressions. (#3094, #3095)
  • -lowmem (and on Windows, --DRT-* options) in response files (e.g., used by dub) aren't ignored anymore. (#3086)
  • Windows: LDC and LDMD now internally use UTF-8 strings only, incl. command-line options and environment variables. The LDC install dir, source file names etc. can now contain non-ASCII chars. For proper console output, especially to stderr, you'll need Windows 10 v1809+ and may need to set a Unicode console font (e.g., Consolas). (#611, #3086)
  • Android: Linker errors when building LDC/LDMD should be fixed. (#3128)
  • Support for recent gdmd as D host compiler. Thanks Moritz! (#3087)
  • Do not require gold plugin when linking with LLD. (#3105)
  • Enable linker stripping on FreeBSD (with non-bfd linkers). (#3106) (new)
  • Some JIT bind fixes. (#3099, #3100)

Known issues

  • NEW: If you encounter segfaults in GC worker threads with shared druntime on Linux that are fixed by disabling new parallel GC marking (e.g., via --DRT-gcopt=parallel:0 in executable cmdline), please let us know about it: #3127
  • Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
  • 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.

LDC 1.17.0-beta1

10 Aug 14:35
3044e5c
Compare
Choose a tag to compare
LDC 1.17.0-beta1 Pre-release
Pre-release

Big news

Platform support

  • Supports LLVM 3.9 - 8.0.

Bug fixes

  • Fix for v1.16.0 regression when returning void expressions. (#3094, #3095)
  • -lowmem (and on Windows, --DRT-* options) in response files (e.g., used by dub) aren't ignored anymore. (#3086)
  • Windows: LDC and LDMD now internally use UTF-8 strings only, incl. command-line options and environment variables. The LDC install dir, source file names etc. can now contain non-ASCII chars. For proper console output, especially to stderr, you'll need Windows 10 v1809+ and may need to set a Unicode console font (e.g., Consolas). (#611, #3086)
  • Android: Linker errors when building LDC/LDMD should be fixed. (#3128)
  • Support for recent gdmd as D host compiler. Thanks Moritz! (#3087)
  • Do not require gold plugin when linking with LLD. (#3105)
  • Some JIT bind fixes. (#3099, #3100)

Known issues

  • NEW: If you encounter segfaults in GC worker threads with shared druntime on Linux that are fixed by disabling new parallel GC marking (e.g., via --DRT-gcopt=parallel:0 in executable cmdline), please let us know about it: #3127
  • Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
  • 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.

LDC 1.16.0

20 Jun 16:03
3f2a930
Compare
Choose a tag to compare

(Changes since 1.16.0-beta2 are marked with (new).)

Big news

  • Frontend, druntime and Phobos are at version 2.086.1, incl. a DIP1008 fix. (#3062, #3076, #3091) (new)
  • Non-Windows x86: Faster real versions of std.math.{tan,expi}. (#2855)
  • dcompute: New __traits(getTargetInfo, "dcomputeTargets"). (#3090) (new)

Platform support

  • Supports LLVM 3.9 - 8.0 (incl. 7.1).

Bug fixes

  • Make pragma(LDC_no_typeinfo) actually elide TypeInfo emission for structs, classes and interfaces. (#3068)
  • Windows: Fix DLL entry point in MinGW-based libs. (ldc-developers/mingw-w64-libs@8d930c1)
  • WebAssembly: Use --export-dynamic when linking with LLD 8+. (#3023, #3072)
  • Fix corrupt this in functions nested in in/out contracts. (45460a1)
  • Fix identity comparisons of integral vectors. (a44c78f)
  • Improved handling of unsupported vector ops. (a44c78f)
  • uClibc: Fix C assert calls. (#3078, #3082) (new)
  • Improved error message on global variable collision. (#3080, #3081) (new)

Known issues

  • Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
  • 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.

LDC 1.16.0-beta2

28 May 20:13
9de916b
Compare
Choose a tag to compare
LDC 1.16.0-beta2 Pre-release
Pre-release

(Changes since 1.16.0-beta1 are marked with (new).)

Big news

  • Frontend, druntime and Phobos are at version 2.086.0+, incl. a DIP1008 fix. (#3062, #3076)
  • Non-Windows x86: Faster real versions of std.math.{tan,expi}. (#2855) (new)

Platform support

  • Supports LLVM 3.9 - 8.0 (new: incl. 7.1).

Bug fixes

  • Make pragma(LDC_no_typeinfo) actually elide TypeInfo emission for structs, classes and interfaces. (#3068)
  • Windows: Fix DLL entry point in MinGW-based libs. (ldc-developers/mingw-w64-libs@8d930c1) (new)
  • WebAssembly: Use --export-dynamic when linking with LLD 8+. (#3023, #3072) (new)
  • Fix corrupt this in functions nested in in/out contracts. (45460a1) (new)
  • Fix identity comparisons of integral vectors. (a44c78f) (new)
  • Improved handling of unsupported vector ops. (a44c78f) (new)

Known issues

  • Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
  • 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.

LDC 1.16.0-beta1

09 May 19:50
7474c19
Compare
Choose a tag to compare
LDC 1.16.0-beta1 Pre-release
Pre-release

Big news

  • Frontend, druntime and Phobos are at version 2.086.0, incl. a DIP1008 fix. (#3062)

Platform support

  • Supports LLVM 3.9 - 8.0.

Bug fixes

  • Make pragma(LDC_no_typeinfo) actually elide TypeInfo emission for structs, classes and interfaces. (#3068)

Known issues

  • Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
  • 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.

LDC 1.15.0

06 Apr 15:58
766add4
Compare
Choose a tag to compare

(Changes since 1.15.0-beta2 are marked with (new).)

Big news

  • Frontend, druntime and Phobos are at version 2.085.1, incl. new command-line options -preview, -revert, -checkaction=context, -verrors-context and -extern-std. (#3003, #3039, #3053) (new)
    • The Objective-C improvements from DMD 2.085 are not implemented. (#3007)
  • Support for LLVM 8.0. The prebuilt packages have been upgraded to LLVM 8.0.0 and include the Khronos SPIRV-LLVM-Translator, so that dcompute can now emit OpenCL too. (#3005)
  • Compiler memory requirements can now be reduced via the new -lowmem switch, which enables the garbage collector for the front-end and sacrifices compile times for less required memory. In some cases, the overall max process memory can be reduced by more than 60%; see #2916 (comment) for some numbers. (#2916)
    • Note for package maintainers: this feature requires a recent D host compiler (most notably, it doesn't work with ltsmaster), ideally LDC 1.15 itself due to important GC memory overhead improvements in 2.085 druntime.
  • Support for generic @llvmAttr("name") parameter UDAs, incl. new @restrict with C-like semantics. (#3043) (new)
  • macOS: 32-bit support was dropped in the sense of not being CI-tested anymore and the prebuilt macOS package now containing x86_64 libraries only. MACOSX_DEPLOYMENT_TARGET for the prebuilt package has been raised from 10.8 to 10.9.
  • Prebuilt packages don't depend on libtinfo and libedit anymore. (#1827, #3019)
  • x86: SSSE3 isn't required for the prebuilt packages and generated optimized binaries anymore. (#3045) (new)

Platform support

  • Supports LLVM 3.9 - 8.0.

Bug fixes

  • Implicit cross-module-inlining of functions annotated with pragma(inline, true) without explicit -enable-cross-module-inlining has been restored. (#2552, #3014)
  • Propagate well-known length of newly allocated dynamic arrays for better optimizability. (#3041, #3042) (new)
  • JIT: Support implicit __chkstk calls for Windows targets, e.g., for large stack allocations. (#3051) (new)

Internals

  • Addition of Azure Pipelines as CI service. It is the new main CI service and responsible for creating all prebuilt x86(_64) packages. AppVeyor has been dropped completely and CircleCI rededicated. (#2998)

Known issues

  • Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
  • 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.

LDC 1.15.0-beta2

24 Mar 00:24
8f81d07
Compare
Choose a tag to compare
LDC 1.15.0-beta2 Pre-release
Pre-release

(Changes since 1.15.0-beta1 are marked with (new).)

Big news

  • Frontend, druntime and Phobos are at version 2.085.0+, incl. new command-line options -preview, -revert, -checkaction=context, -verrors-context and -extern-std. (#3003, #3039) (new)
    • The Objective-C improvements from DMD 2.085 are not implemented. (#3007)
  • Support for LLVM 8.0. The prebuilt packages have been upgraded to LLVM 8.0.0 ((new): final) and include the Khronos SPIRV-LLVM-Translator, so that dcompute can now emit OpenCL too. (#3005)
  • Compiler memory requirements can now be reduced via the new -lowmem switch, which enables the garbage collector for the front-end and sacrifices compile times for less required memory. In some cases, the overall max process memory can be reduced by more than 60%; see #2916 (comment) for some numbers. (#2916)
    • Note for package maintainers: this feature requires a recent D host compiler (most notably, it doesn't work with ltsmaster), ideally LDC 1.15 itself due to important GC memory overhead improvements in 2.085 druntime.
  • macOS: 32-bit support was dropped in the sense of not being CI-tested anymore and the prebuilt macOS package now containing x86_64 libraries only. MACOSX_DEPLOYMENT_TARGET for the prebuilt package has been raised from 10.8 to 10.9.
  • Prebuilt packages don't depend on libtinfo and libedit anymore. (#1827, #3019) (new)

Platform support

  • Supports LLVM 3.9 - 8.0.

Bug fixes

  • Implicit cross-module-inlining of functions annotated with pragma(inline, true) without explicit -enable-cross-module-inlining has been restored. (#2552, #3014)
  • beta1 regression wrt. broken dcompute. (#3009, #3037) (new)
  • beta1 regression wrt. prebuilt Linux x86_64 package being unusable with older linkers (e.g., on Ubuntu 14.04). (#3020, #3038) (new)

Internals

  • Addition of Azure Pipelines as CI service. It is the new main CI service and responsible for creating all prebuilt x86(_64) packages. AppVeyor has been dropped completely and CircleCI rededicated. (#2998)

Known issues

  • Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
  • 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.

LDC 1.15.0-beta1

09 Mar 18:36
3af33e5
Compare
Choose a tag to compare
LDC 1.15.0-beta1 Pre-release
Pre-release

Big news

  • Frontend, druntime and Phobos are at version 2.085.0, incl. new command-line options -preview, -revert, -checkaction=context, -verrors-context and -extern-std. (#3003)
    • The Objective-C improvements from DMD 2.085 are not implemented. (#3007)
    • The introduction of object.RTInfo broke dcompute. (#3009)
  • Support for LLVM 8.0. The prebuilt packages have been upgraded to LLVM 8.0.0-rc4 and include the Khronos SPIRV-LLVM-Translator, so that dcompute can now emit OpenCL too. (#3005)
  • Compiler memory requirements can now be reduced via the new -lowmem switch, which enables the garbage collector for the front-end and sacrifices compile times for less required memory. In some cases, the overall max process memory can be reduced by more than 60%; see #2916 (comment) for some numbers. (#2916)
    • Note for package maintainers: this feature requires a recent D host compiler (most notably, it doesn't work with ltsmaster), ideally LDC 1.15 itself due to important GC memory overhead improvements in 2.085 druntime.
  • macOS: 32-bit support was dropped in the sense of not being CI-tested anymore and the prebuilt macOS package now containing x86_64 libraries only. MACOSX_DEPLOYMENT_TARGET for the prebuilt package has been raised from 10.8 to 10.9.
  • The prebuilt Linux x86_64 package doesn't work on Ubuntu 14.04, 16.04 or newer is required. (#3020, #3018)

Platform support

  • Supports LLVM 3.9 - 8.0.

Bug fixes

  • Implicit cross-module-inlining of functions annotated with pragma(inline, true) without explicit -enable-cross-module-inlining has been restored. (#2552, #3014)

Internals

  • Addition of Azure Pipelines as CI service. It is the new main CI service and responsible for creating all prebuilt x86(_64) packages. AppVeyor has been dropped completely and CircleCI rededicated. (#2998)

Known issues

  • Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
  • 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.

LDC 1.14.0

17 Feb 13:52
e319c79
Compare
Choose a tag to compare

(Changes since 1.14.0-beta1 are marked with (new).)

Big news

  • Frontend, druntime and Phobos are at version 2.084.1, incl. new command-line options -mixin, -{enable,disable}-switch-errors and -checkaction. (#2946, #2977, #2999) (new)
    • Options -release, -d-debug and -unittest don't override preceding, more specific options (-{enable,disable}-{asserts,invariants,preconditions,postconditions,contracts}) anymore.
  • Linking WebAssembly doesn't require -link-internally (integrated LLD) anymore; an external linker (default: wasm-ld, override with -linker) can be used as well. (#2951)
  • Prebuilt Windows packages include LTO-able 32-bit druntime/Phobos too (previously: Win64 only).
  • AddressSanitizer support for fibers (requires rebuilding the runtime libraries with CMake option RT_SUPPORT_SANITIZERS=ON). (#2975, ldc-developers/druntime#152) (new)
  • Support pragma(LDC_extern_weak) for function declarations - if the function isn't available when linking, its address is null. (#2984) (new)

Platform support

  • Supports LLVM 3.9 - 7.0.

Bug fixes

  • Fix C++ mangling regression for functions with multiple real parameters introduced with v1.13, preventing to build DMD. (#2954, dlang/dmd#9129)
  • Fix context of some nested aggregates. (#2960, #2969)
  • Support templated LLVM intrinsics with vector arguments. (#2962, #2971)
  • Avoid crashes with -allinst (fix emission of only speculatively nested functions). (#2932, #2940)
  • Fix XRay support for LLVM 7+. (#2965)
  • AArch64: Fix DMD-style profile measurements. (#2950)
  • Be less picky about placement of pragmas (allow intermediate extern(C) etc.). (#2599)
  • MSVC: Fix real C++ mangling to match Visual C++ long double. (#2974)
  • Fix bad ICE noticed when building protobuf-d. (#2990, #2992) (new)
  • Fix ICE when directly indexing vector return value. (#2988, #2991) (new)
  • Fix identity comparisons of complex numbers. (#2918, #2993) (new)
  • MIPS32 fix for core.stdc.stdarg. (#2989, ldc-developers/druntime#153) (new)
  • Fix core.atomic.cas() for 64-bit floating-point values. (#3000, #3001) (new)
  • beta1 regression: 'Instruction does not dominate all uses' (#2996, #2997) (new)

Known issues

  • Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
  • 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.