Skip to content

Releases: ldc-developers/ldc

LDC 1.20.0

14 Feb 21:21
f92fced
Compare
Choose a tag to compare

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

Big news

  • Frontend, druntime and Phobos are at version 2.090.1+. (#3262, #3296, #3306, #3317, #3326) (new)
  • Codegen preparations for:
    • iOS/tvOS/watchOS on AArch64. Thanks Jacob! (#3288) (new)
    • WASI (WebAssembly System Interface) (#3295) (new)
  • The config file for multilib builds has been restructured by adding a separate section for the multilib target. This avoids --no-warn-search-mismatch for the linker and enables support for LLD. (#3276)
  • Support for embedding pragma({lib,linkerDirective}, ...) in Mach-O object files. (#3259)
    E.g., pragma(linkerDirective, "-framework", "CoreFoundation"); makes Apple's linker pull in that framework when pulling in the compiled object file.
    ELF object files newly embed pragma(lib, ...) library names in a special .deplibs section, but that only works with LLD 9+ for now.
  • The ldc-build-runtime tool has been slightly revised; --dFlags now extends the base D flags instead of overriding them. (1200601)
  • ModuleInfo.importedModules are now emitted as weak references (except on Windows, for LLD compatibility), following DMD. (#3262)
  • Windows: Bundled MinGW-based libs now support wide wmain and wWinMain C entry points. (#3311) (new)

Platform support

  • Supports LLVM 3.9 - 10.0. (new)

Bug fixes

  • Potential stack overflows on Linux in GC worker threads. (#3127, dlang/druntime#2904)
  • Support 2 leading dashes (not just 1) in command-line pre-parsing, thus fixing config file section lookup when using --mtriple and not ignoring --conf and --lowmem any longer. (#3268, #3275)
  • Support for data directives in DMD-style inline asm. (#3299, #3301) (new)
  • Cherry-picked fixes for soft-float targets. (#3292, dlang/phobos#7362, dlang/phobos#7366, dlang/phobos#7377) (new)
  • ICE during debuginfo generation for function literals inside enum declarations. (#3272, #3274)

Internals

  • Misc. tweaks for dmd-testsuite: (#3287, #3306) (new)
    • Significantly accelerated by skipping uninteresting permutations.
    • Switch from Makefile to run.d, incl. moving LDC-specific exceptions from Makefile to individual test files and support for extended DISABLED directives.
  • Addition of (recommendable!) Cirrus CI service (incl. FreeBSD) and removal of Semaphore CI. (#3298) (new)
  • Some improvements for gdmd host compilers, incl. CI tests. (#3286) (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.20.0-beta1

16 Jan 19:47
cef4b3d
Compare
Choose a tag to compare
LDC 1.20.0-beta1 Pre-release
Pre-release

Big news

  • Frontend, druntime and Phobos are at version 2.090.0+. (#3262)
  • The config file for multilib builds has been restructured by adding a separate section for the multilib target. This avoids --no-warn-search-mismatch for the linker and enables support for LLD. (#3276)
  • Support for embedding pragma({lib,linkerDirective}, ...) in Mach-O object files. (#3259)
    E.g., pragma(linkerDirective, "-framework", "CoreFoundation"); makes Apple's linker pull in that framework when pulling in the compiled object file.
    ELF object files newly embed pragma(lib, ...) library names in a special .deplibs section, but that only works with LLD 9+ for now.
  • The ldc-build-runtime tool has been slightly revised; --dFlags now extends the base D flags instead of overriding them. (1200601)
  • ModuleInfo.importedModules are now emitted as weak references (except on Windows, for LLD compatibility), following DMD. (#3262)

Platform support

  • Supports LLVM 3.9 - 9.0.

Bug fixes

  • Potential stack overflows on Linux in GC worker threads. (#3127, dlang/druntime#2904)
  • Support 2 leading dashes (not just 1) in command-line pre-parsing, thus fixing config file section lookup when using --mtriple and not ignoring --conf and --lowmem any longer. (#3268, #3275)
  • ICE during debuginfo generation for function literals inside enum declarations. (#3272, #3274)

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

20 Dec 13:41
ddb215e
Compare
Choose a tag to compare

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

Big news

  • Frontend, druntime and Phobos are at version 2.089.1+. (#3192, #3210, #3215, #3232, #3242, #3255, #3261) (new)
  • LLVM for prebuilt packages upgraded to v9.0.1; our fork has moved to ldc-developers/llvm-project. The x86[_64] packages newly include the experimental AVR backend. (#3244) (new)
  • Android: A prebuilt AArch64 package has been added. It also includes prebuilt druntime/Phobos libraries for x86_64; the armv7a package includes the i686 libraries. So all 4 Android targets are covered with prebuilt druntime/Phobos. (#3244) (new)
  • Breaking extern(D) ABI change for Posix x86[_64]: non-POD arguments are now passed by ref under the hood, just like they already were for extern(C++). Some superfluous implicit blits have been optimized away as well, for all targets. (#3204)
  • Posix: Defaults to cc now for linking, not gcc (or clang for FreeBSD 10+) - if the CC environment variable isn't set. Override with -gcc=<gcc|clang>. (#3202)
  • Codegen elision of dead branches for if statements with constant condition (not depending on enabled LLVM optimizations). (#3134)
  • druntime: New llvm_sideeffect intrinsic, new @cold function UDA and extended CAS functionality in core.atomic (incl. support for weak CAS and separate failure ordering). (ldc-developers/druntime#166, ldc-developers/druntime#167, #3220)
  • Windows: Bundled MinGW-based libs have been upgraded to use the .def files from MinGW-w64 v7.0.0. They now also contain a default DllMain entry point as well as _[v]snprintf. (libs, #3142)

Platform support

  • Supports LLVM 3.9 - 9.0.

Bug fixes

  • Misc. CMake issues with some LLVM 9 configurations. (#3079, #3198)
  • Equality/identity comparisons of vectors with length ≥ 32. (#3208, #3209)
  • ldc.gccbuiltins_* druntime modules now available to non-installed compiler too. (#3194, #3201)
  • Potential ICE when applying @assumeUsed on global union. (#3221, #3222)
  • Context from outer function, but no outer function? regression introduced in v1.11 (inability to access outer context from extern(C++) methods). (#3234, #3235)
  • Lvalue expressions with nested temporaries to be destructed yielding a wrong lvalue. (#3233)
  • druntime: Cherry-picked fix wrt. GC potentially collecting objects still referenced in other threads' TLS area. (dlang/druntime#2558) (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.19.0-beta2

29 Nov 19:40
ad80f00
Compare
Choose a tag to compare
LDC 1.19.0-beta2 Pre-release
Pre-release

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

Big news

  • Frontend, druntime and Phobos are at version 2.089.0+. (#3192, #3210, #3215, #3232, #3242) (new)
  • Breaking extern(D) ABI change for Posix x86[_64]: non-POD arguments are now passed by ref under the hood, just like they already were for extern(C++). Some superfluous implicit blits have been optimized away as well, for all targets. (#3204)
  • Posix: Defaults to cc now for linking, not gcc (or clang for FreeBSD 10+) - if the CC environment variable isn't set. Override with -gcc=<gcc|clang>. (#3202)
  • Codegen elision of dead branches for if statements with constant condition (not depending on enabled LLVM optimizations). (#3134)
  • druntime: New llvm_sideeffect intrinsic, new @cold function UDA and extended CAS functionality in core.atomic (incl. support for weak CAS and separate failure ordering). (ldc-developers/druntime#166, ldc-developers/druntime#167, #3220) (new)
  • Windows: Bundled MinGW-based libs have been upgraded to use the .def files from MinGW-w64 v7.0.0. They now also contain a default DllMain entry point as well as _[v]snprintf. (libs, #3142) (new)

Platform support

  • Supports LLVM 3.9 - 9.0.

Bug fixes

  • Misc. CMake issues with some LLVM 9 configurations. (#3079, #3198)
  • Equality/identity comparisons of vectors with length ≥ 32. (#3208, #3209)
  • ldc.gccbuiltins_* druntime modules now available to non-installed compiler too. (#3194, #3201)
  • Potential ICE when applying @assumeUsed on global union. (#3221, #3222) (new)
  • Context from outer function, but no outer function? regression introduced in v1.11 (inability to access outer context from extern(C++) methods). (#3234, #3235) (new)
  • Lvalue expressions with nested temporaries to be destructed yielding a wrong lvalue. (#3233) (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.19.0-beta1

05 Nov 19:25
Compare
Choose a tag to compare
LDC 1.19.0-beta1 Pre-release
Pre-release

Big news

  • Frontend, druntime and Phobos are at version 2.089.0. (#3192, #3210, #3215)
  • Breaking extern(D) ABI change for Posix x86[_64]: non-POD arguments are now passed by ref under the hood, just like they already were for extern(C++). Some superfluous implicit blits have been optimized away as well, for all targets. (#3204)
  • Posix: Defaults to cc now for linking, not gcc (or clang for FreeBSD 10+) - if the CC environment variable isn't set. Override with -gcc=<gcc|clang>. (#3202)
  • Codegen elision of dead branches for if statements with constant condition (not depending on enabled LLVM optimizations). (#3134)

Platform support

  • Supports LLVM 3.9 - 9.0.

Bug fixes

  • Misc. CMake issues with some LLVM 9 configurations. (#3079, #3198)
  • Equality/identity comparisons of vectors with length ≥ 32. (#3208, #3209)
  • ldc.gccbuiltins_* druntime modules now available to non-installed compiler too. (#3194, #3201)

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

16 Oct 20:53
37b183f
Compare
Choose a tag to compare

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

Big news

  • Frontend, druntime and Phobos are at version 2.088.1. (#3143, #3161, #3176, #3190 (new))
  • Support for LLVM 9.0. The prebuilt packages have been upgraded to LLVM 9.0.0. (#3166)
  • Preliminary Android CI, incl. experimental prebuilt armv7a package generation (API level 21, i.e., Android 5+). (#3164)
  • 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, #3174)

Platform support

  • Supports LLVM 3.9 - 9.0.

Bug fixes

  • Don't error out when initializing a void vector. (#3130, #3139)
  • druntime: Fix exception chaining for latest MSVC runtime v14.23, shipping with Visual Studio 2019 v16.3. (ldc-developers/druntime#164)
  • Keep lvalue-ness when casting associative array to another AA. (#3162, #3179) (new)
  • druntime: Fix regression for POSIX systems without backtrace[_symbols], introduced in beta1. (#3165, dlang/druntime#2796)
  • Fix compilability regression with make, introduced in beta2. (#3188, #3191) (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.18.0-beta2

29 Sep 19:14
6128a79
Compare
Choose a tag to compare
LDC 1.18.0-beta2 Pre-release
Pre-release

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

Big news

  • Frontend, druntime and Phobos are at version 2.088.0+. (#3143, #3161, #3176 (new))
  • Support for LLVM 9.0. The prebuilt packages have been upgraded to LLVM 9.0.0. (#3166) (new)
  • Preliminary Android CI, incl. experimental prebuilt armv7a package generation (API level 21, i.e., Android 5+). (#3164) (new)
  • 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, #3174 (new))

Platform support

  • Supports LLVM 3.9 - 9.0. (new)

Bug fixes

  • Don't error out when initializing a void vector. (#3130, #3139)
  • druntime: Fix regression for POSIX systems without backtrace[_symbols]. (#3165, dlang/druntime#2796) (new)
  • druntime: Fix exception chaining for latest MSVC runtime v14.23, shipping with Visual Studio 2019 v16.3. (ldc-developers/druntime#164) (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.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.