Skip to content

LDC 1.15.0

Compare
Choose a tag to compare
@kinke kinke released this 06 Apr 15:58
766add4

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

Big news

  • Frontend, druntime and Phobos are at version 2.085.1, incl. new command-line options -preview, -revert, -checkaction=context, -verrors-context and -extern-std. (#3003, #3039, #3053) (new)
    • The Objective-C improvements from DMD 2.085 are not implemented. (#3007)
  • Support for LLVM 8.0. The prebuilt packages have been upgraded to LLVM 8.0.0 and include the Khronos SPIRV-LLVM-Translator, so that dcompute can now emit OpenCL too. (#3005)
  • Compiler memory requirements can now be reduced via the new -lowmem switch, which enables the garbage collector for the front-end and sacrifices compile times for less required memory. In some cases, the overall max process memory can be reduced by more than 60%; see #2916 (comment) for some numbers. (#2916)
    • Note for package maintainers: this feature requires a recent D host compiler (most notably, it doesn't work with ltsmaster), ideally LDC 1.15 itself due to important GC memory overhead improvements in 2.085 druntime.
  • Support for generic @llvmAttr("name") parameter UDAs, incl. new @restrict with C-like semantics. (#3043) (new)
  • macOS: 32-bit support was dropped in the sense of not being CI-tested anymore and the prebuilt macOS package now containing x86_64 libraries only. MACOSX_DEPLOYMENT_TARGET for the prebuilt package has been raised from 10.8 to 10.9.
  • Prebuilt packages don't depend on libtinfo and libedit anymore. (#1827, #3019)
  • x86: SSSE3 isn't required for the prebuilt packages and generated optimized binaries anymore. (#3045) (new)

Platform support

  • Supports LLVM 3.9 - 8.0.

Bug fixes

  • Implicit cross-module-inlining of functions annotated with pragma(inline, true) without explicit -enable-cross-module-inlining has been restored. (#2552, #3014)
  • Propagate well-known length of newly allocated dynamic arrays for better optimizability. (#3041, #3042) (new)
  • JIT: Support implicit __chkstk calls for Windows targets, e.g., for large stack allocations. (#3051) (new)

Internals

  • Addition of Azure Pipelines as CI service. It is the new main CI service and responsible for creating all prebuilt x86(_64) packages. AppVeyor has been dropped completely and CircleCI rededicated. (#2998)

Known issues

  • Buggy older ld.bfd linker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults to ld.gold on Linux.
  • 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.