github ldc-developers/ldc v1.12.0
LDC 1.12.0

latest releases: dmd-rewrite-v2.108.1, dmd-rewrite-v2.108.1-rc.1, v1.38.0-beta1...
5 years ago

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

Big news

  • Frontend, druntime and Phobos are at version 2.082.1. (#2818, #2837, #2858, #2873) (new)
    • Significant performance improvements for some transcendental std.math functions in single and double precision, at least for x86. (dlang/phobos#6272 (comment))
  • Support for LLVM 7, which is used for the prebuilt packages. Due to an LLVM 7.0.0 regression, the prebuilt x86[_64] LDC binaries require a CPU with SSSE3, and so will your optimized binaries (unless compiling with -mattr=-ssse3). (#2850)
  • JIT compilation: new ldc.dynamic_compile.bind function with interface similar to C++ std::bind, allowing to generate efficient specialized versions of functions (much like Easy::jit for C++). (#2726)
  • LTO now working for Win64 too; the prebuilt package includes the required external LLD linker and the optional LTO default libs. Enable as usual with -flto=<thin|full> [-defaultlib=druntime-ldc-lto,phobos2-ldc-lto]. (#2774)
  • Config file: new lib-dirs array for directories to be searched for libraries, incl. LLVM compiler-rt libraries. (#2790)

Platform support

Bug fixes

  • Fix IR-based PGO on Windows (requires our LLVM fork). (#2539)
  • Fix C++ class construction with D new on Posix. (#2801)
  • Android: No more text relocations in Phobos zlib, required for API level 23+. (#2822, #2835)
  • Declare extern const/immutable globals as IR constants. (#2849, #2852)
  • Fix issue when emitting both object and textual assembly files at once (-output-o -output-s). (#2847)
  • Support address of struct member as key/value in AA literal. (#2859, #2860)
  • Fix ICE when computing addresses relative to functions/labels. (#2865, #2867) (new)
  • beta2 regression wrt. cross-compiling to Android. (#2863) (new)

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.

Don't miss a new ldc release

NewReleases is sending notifications on new releases.