Releases: ldc-developers/ldc
Releases · ldc-developers/ldc
LDC 1.35.0-beta1
LDC 1.34.0
(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=1000000000inetc/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).
- 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
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
LDC 1.34.0-beta2
(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=1000000000inetc/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).
- 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
Platform support
- Supports LLVM 11.0 - 16.0. Support for LLVM 9 and 10 was dropped. (new)
Bug fixes
LDC 1.34.0-beta1
LDC 1.33.0
(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
--plugincommandline option now also accepts semantic analysis plugins. Semantic analysis plugins are recognized by exporting the symbol:extern(C) void runSemanticAnalysis(Module m). The plugin'srunSemanticAnalysisfunction 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-pluginthat 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-lifetimethat 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
-gccor theCCenvironment variable, and-Xccfor 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.exeis onPATH, it is preferred over Microsoft'scl.exeby default (e.g., to avoid printing the C source file name to stderr during preprocessing).
- Windows: If
- 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 (
staticlinkage in C). (#4415)
LDC 1.33.0-beta2
(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-lifetimethat 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
-gccor theCCenvironment variable, and-Xccfor 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.exeis onPATH, it is preferred over Microsoft'scl.exeby default (e.g., to avoid printing the C source file name to stderr during preprocessing).
- Windows: If
- 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 (
staticlinkage in C). (#4415) (new)
LDC 1.33.0-beta1
LDC 1.32.2
Big news
- New command-line option
--fwarn-stack-size=<threshold>with LLVM 13+. (#4378) - New command-line option
--fsplit-stackfor incremental stack allocations, see https://llvm.org/docs/SegmentedStacks.html. (#4379)- New UDA
ldc.attributes.noSplitStackdisables it on a per-function basis. (#4382)
- New UDA
- New command-line option
--indentfor thetimetrace2txttool. (#4391)
Bug fixes
LDC 1.32.1
Big news
- The prebuilt Linux packages are now generated on a Ubuntu 20.04 box, so the min required
glibcversion has been raised from 2.26 to 2.31. (#4367)
Bug fixes
LDC 1.32.0
(Changes since 1.32.0-beta1 are marked with (new).)
Big news
- Frontend, druntime and Phobos are at version 2.102.2. (#4323, #4341) (new)
- LLVM for prebuilt packages bumped to v15.0.7. (#4311)
- Linker-level dead code elimination is enabled by default for Apple, wasm and all ELF targets too now. (#4320)
- Vector comparisons (==, !=, <, <=, >, >=) now yield a vector mask. Identity comparisons (
is,!is) still yield a scalarbool. (3a59ee8) - New
timetrace2txttool for easier inspection of--ftime-traceoutput. (#4335) (new) --ftime-tracenow also traces CTFE execution: the start expression of CTFE and function calls during CTFE. (#4339) (new)
Platform support
- Supports LLVM 9.0 - 15.0.
- Now supports
-mabifor RISC-V targets. (#4322)