github ldc-developers/ldc v1.3.0-beta2
LDC 1.3.0-beta2

latest releases: v1.38.0-beta1, dmd-rewrite-v2.108.0, dmd-rewrite-v2.108.0-rc.1...
pre-release6 years ago

(Changes from 1.3.0-beta1 release are marked with (new).)

Big news

  • Frontend, druntime and Phobos are at version 2.073.2.
  • A first experimental version of DCompute for OpenCL/CUDA targets has landed. See announcement. (new)
  • LLVM 3.9+: Experimental integration of LLD, the LLVM cross-linker, for MSVC targets. Check out these hassle-free instructions to make LDC emit Windows executables and DLLs on any host! (#2142) (new)
  • libconfig was replaced by an ad-hoc parser (in D), getting rid of the build and runtime dependency and shrinking the license file by roughly 50%. Thanks again, Remi! (#2016)
  • LDC now ships with static and shared runtime libs on supported platforms. (#1960)
  • LLVM 3.9+: Static libraries are now generated by LDC (LLVM) by default, not by system ar or lib.exe. This means that LDC can cross-compile and -archive static libs for all supported targets. Command-line option -ar allows specifying an external archiver to be used. (#2030)
  • New command-line options -dip1000, -mv and -mscrtlib (#2041).
  • Ships with dlang tools rdmd, ddemangle and dustmite. (new)

New features

  • Output LLVM optimization records via -fsave-optimization-record. (#2089) (new)
  • New -Xcc command-line option for C compiler flags when linking via gcc/clang. Thanks Adrian! (#2104) (new)
  • New function UDA @ldc.attributes.llvmFastMathFlag("contract") that specifically enables floating point operation fusing (fused multiply-add), previously only achievable with @fastmath. (#2060)

Platform support

  • Supports LLVM 3.5 - 4.0.
  • Additional LLVM targets have been enabled for the prebuilt x86_64 packages: ARM, AArch64 and PowerPC. (new)
  • Windows: Supports Visual Studio/Build Tools 2015 and 2017. (#2065)
  • NetBSD: The 2.074 druntime patches have been cherry-picked. [new: some more cherry-picks and fixes]

Bug fixes

  • LTO flags leaking into standard libraries when building LDC with LTO. (#2077) (new)
  • Debug info fixes for class types - thanks Elie! (#2130) (new)
  • OSX: Incomplete backtrace. (#2097) (new)
  • Phobos on ARM: alignment and 64-bit real issues. (#2024) (new)
  • Windows: EH-related crashes when linking against shared MS runtimes. (#2080) (new)
  • ICE when initializing vector with TVector.init. (#2101) (new)
  • Weird object file type autodetection. (#2105) (new)
  • Typesafe variadics emitted as LLVM variadics. (#2121) (new)
  • Superfluous masking of bool values. (#2131) (new)
  • Output for -mcpu=help or -mattr=help printed multiple times. (#2073) (new)
  • LDMD refuses some duplicate command-line options. (#2110) (new)
  • Change format of predefined versions output for DMD compatibility. (#1962)

Building LDC

  • Building LDC requires a preinstalled D compiler.

Internals

  • LDC now features D unittests itself. Just add some to LDC's D modules and they'll be compiled and executed by CI. (#2016)

Known issues

  • 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.
  • Phobos does not compile on MinGW platform.

Don't miss a new ldc release

NewReleases is sending notifications on new releases.