(Changes since 1.15.0-beta1 are marked with (new).)
Big news
- Frontend, druntime and Phobos are at version 2.085.0+, incl. new command-line options
-preview
,-revert
,-checkaction=context
,-verrors-context
and-extern-std
. (#3003, #3039) (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 ((new): final) 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.
- 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) (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) - beta1 regression wrt. broken dcompute. (#3009, #3037) (new)
- beta1 regression wrt. prebuilt Linux x86_64 package being unusable with older linkers (e.g., on Ubuntu 14.04). (#3020, #3038) (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 told.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 toreal
members inside structs etc.