Skip to content

Releases: ldc-developers/ldc

LDC 1.36.0-beta1

04 Dec 23:05
f4b15f2

Choose a tag to compare

LDC 1.36.0-beta1 Pre-release
Pre-release

Big news

  • Frontend, druntime and Phobos are at version 2.106.0. (#4522, #4539)
  • Support for LLVM 17. The prebuilt packages use v17.0.6. (#4533, #4540)
  • New command-line options -fno-{exceptions,moduleinfo,rtti} to selectively enable some -betterC effects. (#4522)
  • New command-line option -fprofile-sample-use for using sample-based profile data for optimization. Functionality and usage is identical to Clang's option with same name. (#4531)
  • New ldc-profgen tool for sample-based PGO, a copy of LLVM's llvm-profgen. (#4536)

LDC 1.35.0

15 Oct 11:11

Choose a tag to compare

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

Big news

  • Frontend, druntime and Phobos are at version 2.105.2+. (#4476, #4498, #4513) (new)
  • The Windows installer now supports non-admin installs without an explicit /CURRENTUSER switch. (#4495) (new)

Platform support

  • Initial compiler support for LoongArch64. druntime support is pending. (#4500) (new)

Bug fixes

  • ImportC:
    • Fix static linkage. (#4484, #4487) (new)
    • Make gcc builtins available. (#4483) (new)
    • Apple: Support weird asm("_" "<name>") mangling stuff. (#4485, #4486) (new)
  • AArch64: Fix an ABI-related ICE. (#4489, #4490) (new)
  • Fix GC2Stack optimization regression introduced in v1.24. (#4510, #4511) (new)
  • Fix druntime ABI divergence when compiling with sanitizers support. (#4508, #4509) (new)
  • Windows: Fix an instance of missed backslash-escaping in -ftime-trace JSON. (#4506, #4507) (new)

LDC 1.35.0-beta1

11 Sep 17:30
d70f676

Choose a tag to compare

LDC 1.35.0-beta1 Pre-release
Pre-release

Big news

LDC 1.34.0

26 Aug 11:28

Choose a tag to compare

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

Big news

  • Frontend, druntime and Phobos are at version 2.104.2. (#4440)
  • Support for LLVM 16. The prebuilt packages use v16.0.6. (#4411, #4423)
    • We have come across miscompiles with LLVM 16's newly-enabled-by-default function specializations (on Win64 and macOS). To be on the safe side, LDC disables them by default for all targets via -func-specialization-size-threshold=1000000000 in etc/ldc2.conf (and separately for LTO on Posix platforms). To enable the function specializations, explicitly override it with e.g. -func-specialization-size-threshold=100 (the LLVM 16 default) and, for LTO on Posix, a similar LTO plugin option in the linker cmdline (see linker cmdline with -v).

Platform support

  • Supports LLVM 11.0 - 16.0. Support for LLVM 9 and 10 was dropped.
  • 64-bit RISC-V: Now defaults to -mattr=+m,+a,+f,+d,+c ('rv64gc' ABI) for non-bare-metal targets, i.e., if the target triple includes a valid operating system. (#4390) (new)

Bug fixes

  • Fix function pointers/delegates on Harvard architectures (e.g., AVR). (#4432, #4465)

LDC 1.34.0-beta2

17 Aug 16:32
aea290d

Choose a tag to compare

LDC 1.34.0-beta2 Pre-release
Pre-release

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

Big news

  • Frontend, druntime and Phobos are at version 2.104.2. (#4440)
  • Support for LLVM 16. The prebuilt packages use v16.0.6. (#4411, #4423) (new)
    • We have come across miscompiles with LLVM 16's newly-enabled-by-default function specializations (on Win64 and macOS). To be on the safe side, LDC disables them by default for all targets via -func-specialization-size-threshold=1000000000 in etc/ldc2.conf (and separately for LTO on Posix platforms). To enable the function specializations, explicitly override it with e.g. -func-specialization-size-threshold=100 (the LLVM 16 default) and, for LTO on Posix, a similar LTO plugin option in the linker cmdline (see linker cmdline with -v).

Platform support

  • Supports LLVM 11.0 - 16.0. Support for LLVM 9 and 10 was dropped. (new)

Bug fixes

  • Fix function pointers/delegates on Harvard architectures (e.g., AVR). (#4432, #4465) (new)

LDC 1.34.0-beta1

28 Jul 22:22
1a93fc7

Choose a tag to compare

LDC 1.34.0-beta1 Pre-release
Pre-release

Big news

  • Frontend, druntime and Phobos are at version 2.104.2. (#4440)

LDC 1.33.0

23 Jul 18:58

Choose a tag to compare

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

Big news

  • Frontend, druntime and Phobos are at version 2.103.1, incl. new command-line option -verror-supplements. (#4345)
  • The --plugin commandline option now also accepts semantic analysis plugins. Semantic analysis plugins are recognized by exporting the symbol: extern(C) void runSemanticAnalysis(Module m). The plugin's runSemanticAnalysis function is called for each module, after all other semantic analysis steps (also after DCompute SemA), just before object codegen. (#4430) (new)
  • New tool ldc-build-plugin that helps compiling user plugins. It downloads the correct LDC source version (if it's not already available), and calls LDC with the correct commandline flags to build a plugin. (#4430) (new)
  • New commandline option -femit-local-var-lifetime that enables variable lifetime (scope) annotation to LLVM IR codegen. Lifetime annotation enables stack memory reuse for local variables with non-overlapping scope. (#4395)
  • C files are now automatically preprocessed using the external C compiler (configurable via -gcc or the CC environment variable, and -Xcc for extra flags). Extra preprocessor flags (e.g., include dirs and manual defines) can be added via new command-line option -P. (#4417)
    • Windows: If clang-cl.exe is on PATH, it is preferred over Microsoft's cl.exe by default (e.g., to avoid printing the C source file name to stderr during preprocessing).
  • Less pedantic checks for conflicting C(++) function declarations when compiling multiple modules to a single object file ('Error: Function type does not match previously declared function with the same mangled name'). The error now only appears if an object file actually references multiple conflicting functions. (#4420)
  • New command-line option --fcf-protection, which enables Intel's Control-Flow Enforcement Technology (CET). (#4437) (new)

Platform support

  • Supports LLVM 9.0 - 15.0.

Bug fixes

  • Handle potential lambda mangle collisions across separately compiled object files (and the linker then silently picking an arbitrary implementation). Lambdas (and their nested global variables) are now internal to each referencing object file (static linkage in C). (#4415)

LDC 1.33.0-beta2

11 Jun 00:52
29bf2d3

Choose a tag to compare

LDC 1.33.0-beta2 Pre-release
Pre-release

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

Big news

  • Frontend, druntime and Phobos are at version 2.103.1, incl. new command-line option -verror-supplements. (#4345)
  • New commandline option -femit-local-var-lifetime that enables variable lifetime (scope) annotation to LLVM IR codegen. Lifetime annotation enables stack memory reuse for local variables with non-overlapping scope. (#4395) (new)
  • C files are now automatically preprocessed using the external C compiler (configurable via -gcc or the CC environment variable, and -Xcc for extra flags). Extra preprocessor flags (e.g., include dirs and manual defines) can be added via new command-line option -P. (#4417) (new)
    • Windows: If clang-cl.exe is on PATH, it is preferred over Microsoft's cl.exe by default (e.g., to avoid printing the C source file name to stderr during preprocessing).
  • Less pedantic checks for conflicting C(++) function declarations when compiling multiple modules to a single object file ('Error: Function type does not match previously declared function with the same mangled name'). The error now only appears if an object file actually references multiple conflicting functions. (#4420) (new)

Bug fixes

  • Handle potential lambda mangle collisions across separately compiled object files (and the linker then silently picking an arbitrary implementation). Lambdas (and their nested global variables) are now internal to each referencing object file (static linkage in C). (#4415) (new)

LDC 1.33.0-beta1

13 May 22:33
d2b1497

Choose a tag to compare

LDC 1.33.0-beta1 Pre-release
Pre-release

Big news

  • Frontend, druntime and Phobos are at version 2.103.1, incl. new command-line option -verror-supplements. (#4345)

LDC 1.32.2

12 May 18:59

Choose a tag to compare

Big news

  • New command-line option --fwarn-stack-size=<threshold> with LLVM 13+. (#4378)
  • New command-line option --fsplit-stack for incremental stack allocations, see https://llvm.org/docs/SegmentedStacks.html. (#4379)
    • New UDA ldc.attributes.noSplitStack disables it on a per-function basis. (#4382)
  • New command-line option --indent for the timetrace2txt tool. (#4391)

Bug fixes

  • Fix potentially huge compile slowdowns with -g and LLVM 15+. (#4354, #4393)
  • Treat all LLVM warnings as regular warnings (e.g., errors with -w). Requires LLVM 13+. (#4384)