LDC 1.11.0
(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)
- Add some support for classes without TypeInfos, for
- 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
real
s. This allows for seamless cross-compilation to other x86(_64) targets, e.g., withoutreal.min
underflowing to 0 andreal.max
overflowing to infinity. (#2752) - New
@naked
UDA inldc.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
, andgcc
packages to build and link D apps and thetzdata
andlibcurl
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 toreal
members inside structs etc.