github ldc-developers/ldc v1.11.0
LDC 1.11.0

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

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

Big news

  • Frontend, druntime and Phobos are at version 2.081.2. (#2752, #2772, #2776, #2791, #2815) (new)
    • Add some support for classes without TypeInfos, for -betterC and/or a minimal (d)runtime. (#2765)
  • LLVM for prebuilt packages upgraded to v6.0.1. The x86_64 packages feature some more LLVM targets for cross-compilation (experiments): MIPS, MSP430, RISC-V and WebAssembly. (#2760)
  • Rudimentary support for compiling & linking directly to WebAssembly. See the dedicated Wiki page for how to get started. (#2766, #2779, #2785)
  • AArch64 (64-bit ARM) now mostly working on Linux/glibc and Android. Current ltsmaster/0.17.6 is able to bootstrap v1.11, which can also bootstrap itself; most tests pass. (Preliminary) CI has been set up. (#2802, #2817, #2813) (new)
  • LDC on Windows now uses 80-bit compile-time reals. This allows for seamless cross-compilation to other x86(_64) targets, e.g., without real.min underflowing to 0 and real.max overflowing to infinity. (#2752)
  • New @naked UDA in ldc.attributes & enhanced functionality for @llvmAttr("<name>"). (#2773) (new)

Platform support

  • Supports LLVM 3.7 - 6.0.
  • Windows: Supports Visual Studio/C++ Build Tools 2015 and 2017.
  • Alpine linux/x64: built against Musl libc to support Docker images based on the Alpine distro, requires the llvm5-libs, musl-dev, and gcc packages to build and link D apps and the tzdata and libcurl packages for certain stdlib modules.

Bug fixes

  • extern(C++) on Posix: Pass non-PODs indirectly by value. (#2728)
  • extern(C++) on Windows/MSVC: Methods return all structs via hidden sret pointer. (#2720, #1935)
  • Make GC2Stack IR optimization pass work as intended. (#2750)
  • Work around inline assembly regression with LLVM 6 on Win32. The prebuilt Win32 package is now using LLVM 6.0.1 too. (#2629, #2770)
  • Fix overzealous check for multiple main() functions. (#2778) (new)
  • Fix corrupt prefix in integrated LLD's console output. (#2781) (new)
  • No context ptr for nested non-extern(D) functions. (#2808, #2809) (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.