Releases: ldc-developers/ldc
Releases Β· ldc-developers/ldc
LDC 1.42.0-beta1
Big news
- Frontend, druntime and Phobos are at version ~2.112.0, incl. new command-line options
-extI,-dllimport=externalOnlyand-edition. (#4949, #4962, #4988, #5029) - Support for LLVM 21. Beware that we have seen misoptimizations for
std.jsonat one point (not anymore). (#4950, #5033) - New prebuilt package for Alpine Linux aarch64 with musl libc, analogous to the existing x86_64 package. (#4943)
- Breaking change for dcompute: The special
@kernelUDA is now a function and requires parentheses as in@kernel() void foo(){}. Optionally you can provide launch dimensions,@kernel([2,4,8]), to specify to the compute runtime how the kernel is intended to be launched. - ldc2.conf can now be a directory. All the files inside it, ordered naturally, will be concatenated and treated like a big config. (#4954)
- Running
ldc-build-runtime --installWithSuffixnow includes installing a target-specific .conf file to that directory. (#4978)
- Running
- Breaking change for ldc2.conf cmake generation: The
cmakebuild process now generates theldc2.confandldc2_install.confas directories.ldc2*.conf.inandADDITIONAL_DEFAULT_LDC_SWITCHEShave been removed, if you need to add switches check outmakeConfSectioninLdcConfig.cmake. (#4954) - When cross-compiling, the fallback value for the (cross) C compiler will be picked based on some heuristics.
The old behavior was to default tocc.
As an example, when cross-compiling foraarch64-linux-gnuthe compilers that are checked are:aarch64-linux-gnu-gccaarch64-linux-gnu-clangclang --target=aarch64-linux-gnu
- The prebuilt arm64/universal macOS packages additionally bundle the arm64 iOS-simulator libraries, for out-of-the-box cross-compilation support via e.g.
-mtriple=arm64-apple-ios12.0-simulator. (#4974)
Platform support
- Supports LLVM 15 - 21.
LDC 1.41.0
(Changes since 1.41.0-beta1 are marked with (new).)
Big news
- Frontend, druntime and Phobos are at version 2.111.0+. (#4877, #4910, #4918, #4941) (new)
- Support for LLVM 20. The prebuilt packages use v20.1.5. (#4843, #4911, #4935) (new)
- The dynamic-compile (JIT) feature has regressed with LLVM 20. Use LLVM 18 or 19 for that feature.
- Keep frame pointers by default with
-Ofor some targets, notably AArch64 (except Windows), x86_64 (except Windows and glibc Linux), Windows x86, and Android. This fixes druntime backtraces with optimized code (incl. prebuilt druntime/Phobos). (#4889) - The prebuilt (non-musl) Linux packages are now generated on Ubuntu 22.04; the minimum glibc version has accordingly been raised from v2.31 to v2.35. (#4893)
- druntime: Optimize
core.int128via inline IR/assembly. (#4892) - Follow clang wrt. unwind tables emission, enabling them for most popular targets. (#4888)
- ldc2.conf: Arrays can now be appended to via the
~=operator. (#4848, #4856) - New
--installWithSuffixcommand-line option for theldc-build-runtimetool, to simplify copying the libraries to an existing LDC installation. (#4870) - CMake changes (for building LDC itself):
- Minimum CMake version bumped to v3.16. (#4898)
- macOS: Fix weird linker error when running CMake the first time. (#3901, #4926) (new)
- Reworked integration of the LLVM compiler-rt libraries. Package maintainers may want to see docs/compiler_rt.md. (#4665)
- Somewhat simplify separate compiler and runtime builds, incl. cross-compiling LDC itself. (#4872)
Platform support
- Supports LLVM 15 - 20. (new)
- RISC-V: Fiber context switching is now implemented natively. (#4867) (new)
Bug fixes
- Prebuilt macOS packages: Fix
ldmd2and other bundled executables crashing on macOS v15.4. (#4899, #4912) (new) - ImportC: Run C preprocessor in C11 mode. (#4933) (new)
- ImportC Windows: Disable clang headers when C-preprocessing with
clang-cl. (#4934) (new) - Fix ICE on invalid constant address-of expressions. (#4938, #4939) (new)
- Allow Unicode in fully qualified label names. (#4927, #4929) (new)
LDC 1.41.0-beta1
Big news
- Frontend, druntime and Phobos are at version 2.111.0+. (#4877, #4910)
- Keep frame pointers by default with
-Ofor some targets, notably AArch64 (except Windows), x86_64 (except Windows and glibc Linux), Windows x86, and Android. This fixes druntime backtraces with optimized code (incl. prebuilt druntime/Phobos). (#4889) - The prebuilt (non-musl) Linux packages are now generated on Ubuntu 22.04; the minimum glibc version has accordingly been raised from v2.31 to v2.35. (#4893)
- ldc2.conf: Arrays can now be appended to via the
~=operator. (#4848, #4856) - New
--installWithSuffixcommand-line option for theldc-build-runtimetool, to simplify copying the libraries to an existing LDC installation. (#4870)
LDC 1.40.1
(Changes since 1.40.1-beta1 are marked with (new).)
Big news
- Frontend and druntime bumped to version 2.110.0 final. (#4854, #4868)
- LLVM for prebuilt packages bumped to v19.1.7. (#4822)
- New prebuilt package for Alpine Linux x86_64 with musl libc. It's currently generated on Alpine v3.21, using its default LLVM 19. Most bundled executables are fully static and can be run on ~all distros. (#4826, #4862)
- Revived dynamic-compile (JIT) functionality (formerly unsupported since LLVM 12), supporting LLVM 18+ now. (#4774)
- ldc2.conf:
%%ldcversion%%placeholder added, allowing to refer to version-specific directories. - Windows: The prebuilt packages now bundle an official libcurl build (from https://curl.se/windows/), currently v8.12.1. The static library (
curl_a.lib) isn't available anymore. When bundling thislibcurl.dllwith your binaries, make sure to includecurl-ca-bundle.crttoo (in the same directory as the DLL), to prevent 'SSL peer certificate or SSH remote key was not OK' exceptions. (#4855, #4875) (new)
Platform support
- Supports LLVM 15 - 19.
- Initial compiler and runtime support for ppc64 and ppc64le systems that use IEEE 754R 128-bit floating-point as the default 128-bit floating-point format. (#4833, #4840)
- Initial support for Windows on ARM64. The prebuilt Windows multilib package/installer bundles prebuilt arm64 druntime and Phobos; cross-compiling works out of the box via
-mtriple=aarch64-windows-msvc, but you currently need to set up a suited MSVC arm64 build environment before yourself (e.g., by runningvsdevcmd.bat -arch=arm64 -host_arch=x64). (#4835, #4846)
Bug fixes
LDC 1.40.1-beta1
Big news
- Frontend and druntime bumped to version 2.110.0 final. (#4854, #4868)
- LLVM for prebuilt packages bumped to v19.1.7. (#4822)
- New prebuilt package for Alpine Linux x86_64 with musl libc. It's currently generated on Alpine v3.21, using its default LLVM 19. Most bundled executables are fully static and can be run on ~all distros. (#4826, #4862)
- Revived dynamic-compile (JIT) functionality (formerly unsupported since LLVM 12), supporting LLVM 18+ now. (#4774)
- ldc2.conf:
%%ldcversion%%placeholder added, allowing to refer to version-specific directories. - Windows: The prebuilt packages now bundle an official libcurl build (from https://curl.se/windows/), currently v8.12.1. The static library (
curl_a.lib) isn't available anymore. (#4855)
Platform support
- Supports LLVM 15 - 19.
- Initial compiler and runtime support for ppc64 and ppc64le systems that use IEEE 754R 128-bit floating-point as the default 128-bit floating-point format. (#4833, #4840)
- Initial support for Windows on ARM64. The prebuilt Windows multilib package/installer bundles prebuilt arm64 druntime and Phobos; cross-compiling works out of the box via
-mtriple=aarch64-windows-msvc, but you currently need to set up a suited MSVC arm64 build environment before yourself (e.g., by runningvsdevcmd.bat -arch=arm64 -host_arch=x64). (#4835, #4846)
Bug fixes
LDC 1.40.0
(No relevant changes since 1.40.0-beta6.)
Big news
- Frontend, druntime and Phobos are at version ~2.110.0. (#4707, #4737, #4749, #4768, #4784, #4792, #4798)
- Support for LLVM 19. The prebuilt packages use v19.1.3 (incl. macOS arm64). (#4712, #4735, #4763, #4772)
- Objective-C: The compiler now properly supports Objective-C classes and protocols, as well as swift stub classes (via the
@swiftUDA). (#4777) - Android: NDK for prebuilt package bumped from r26d to r27c. (#4711, #4772)
- ldc2.conf:
%%ldcconfigpath%%placeholder added - specifies the directory where current configuration file is located. (#4717) - Add support for building against a system copy of zlib through
-DPHOBOS_SYSTEM_ZLIB=ON. (#4742) - Emscripten: The compiler now mimicks a musl Linux platform wrt. extra predefined versions (
linux,Posix,CRuntime_Musl,CppRuntime_LLVM). (#4750)
Platform support
- Supports LLVM 15 - 19.
Bug fixes
- Fix potentially corrupt IR layouts for bit fields. (#4646, #4708)
- Fix potentially corrupt IR layouts for explicitly under-aligned aggregates, a regression introduced in LDC v1.31. (#4734, #4736)
- ELF: Emit (most) instantiated symbols in COMDATs for proper link-time culling. (#3589, #4748)
- Support scalar right-hand-sides when bit-shifting vectors. (#3606, #4781)
- Fix LLVM data layout for the SPIR-V target used in D-Compute on LLVM 19+. (#4772)
LDC 1.40.0-beta6
(Changes since 1.40.0-beta5 are marked with (new).)
Big news
- Frontend, druntime and Phobos are at version ~2.110.0. (#4707, #4737, #4749, #4768, #4784, #4792, #4798) (new)
- Support for LLVM 19. The prebuilt packages use v19.1.3 (incl. macOS arm64). (#4712, #4735, #4763, #4772)
- Objective-C: The compiler now properly supports Objective-C classes and protocols, as well as swift stub classes (via the
@swiftUDA). (#4777) - Android: NDK for prebuilt package bumped from r26d to r27c. (#4711, #4772)
- ldc2.conf:
%%ldcconfigpath%%placeholder added - specifies the directory where current configuration file is located. (#4717) - Add support for building against a system copy of zlib through
-DPHOBOS_SYSTEM_ZLIB=ON. (#4742) - Emscripten: The compiler now mimicks a musl Linux platform wrt. extra predefined versions (
linux,Posix,CRuntime_Musl,CppRuntime_LLVM). (#4750)
Platform support
- Supports LLVM 15 - 19.
Bug fixes
- Fix potentially corrupt IR layouts for bit fields. (#4646, #4708)
- Fix potentially corrupt IR layouts for explicitly under-aligned aggregates, a regression introduced in LDC v1.31. (#4734, #4736)
- ELF: Emit (most) instantiated symbols in COMDATs for proper link-time culling. (#3589, #4748)
- Support scalar right-hand-sides when bit-shifting vectors. (#3606, #4781)
- Fix LLVM data layout for the SPIR-V target used in D-Compute on LLVM 19+. (#4772)
LDC 1.40.0-beta5
(Changes since 1.40.0-beta4 are marked with (new).)
Big news
- Frontend, druntime and Phobos are at version ~2.110.0. (#4707, #4737, #4749, #4768, #4784, #4792) (new)
- Support for LLVM 19; LLVM for prebuilt packages bumped to v19.1.3 (incl. macOS arm64). (#4712, #4735, #4763, #4772) (new)
- Objective-C: The compiler now properly supports Objective-C classes and protocols, as well as swift stub classes (via the
@swiftUDA). (#4777) (new) - Android: NDK for prebuilt package bumped from r26d to r27c. (#4711, #4772) (new)
- ldc2.conf:
%%ldcconfigpath%%placeholder added - specifies the directory where current configuration file is located. (#4717) - Add support for building against a system copy of zlib through
-DPHOBOS_SYSTEM_ZLIB=ON. (#4742) - Emscripten: The compiler now mimicks a musl Linux platform wrt. extra predefined versions (
linux,Posix,CRuntime_Musl,CppRuntime_LLVM). (#4750)
Platform support
- Supports LLVM 15 - 19. (new)
Bug fixes
- Fix potentially corrupt IR layouts for bit fields. (#4646, #4708)
- Fix potentially corrupt IR layouts for explicitly under-aligned aggregates, a regression introduced in LDC v1.31. (#4734, #4736)
- ELF: Emit (most) instantiated symbols in COMDATs for proper link-time culling. (#3589, #4748)
- Support scalar right-hand-sides when bit-shifting vectors. (#3606, #4781) (new)
- Fix LLVM data layout for the SPIR-V target used in D-Compute on LLVM 19+. (#4772) (new)
LDC 1.40.0-beta4
(Changes since 1.40.0-beta3 are marked with (new).)
Big news
- Frontend, druntime and Phobos are at version ~2.110.0. (#4707, #4737, #4749, #4768) (new)
- LLVM for prebuilt packages bumped to v18.1.8 (incl. macOS arm64). (#4712)
- Android: NDK for prebuilt package bumped from r26d to r27. (#4711)
- ldc2.conf:
%%ldcconfigpath%%placeholder added - specifies the directory where current configuration file is located. (#4717) - Add support for building against a system copy of zlib through
-DPHOBOS_SYSTEM_ZLIB=ON. (#4742) - Emscripten: The compiler now mimicks a musl Linux platform wrt. extra predefined versions (
linux,Posix,CRuntime_Musl,CppRuntime_LLVM). (#4750)
Bug fixes
LDC 1.40.0-beta3
(Changes since 1.40.0-beta2 are marked with (new).)
Big news
- Frontend, druntime and Phobos are at version ~2.110.0. (#4707, #4737, #4749) (new)
- LLVM for prebuilt packages bumped to v18.1.8 (incl. macOS arm64). (#4712)
- Android: NDK for prebuilt package bumped from r26d to r27. (#4711)
- ldc2.conf:
%%ldcconfigpath%%placeholder added - specifies the directory where current configuration file is located. (#4717) - Add support for building against a system copy of zlib through
-DPHOBOS_SYSTEM_ZLIB=ON. (#4742) (new) - Emscripten: The compiler now mimicks a musl Linux platform wrt. extra predefined versions (
linux,Posix,CRuntime_Musl,CppRuntime_LLVM). (#4750) (new)