Big news
- Frontend, druntime and Phobos are at version 2.090.0+. (#3262)
- The config file for multilib builds has been restructured by adding a separate section for the multilib target. This avoids
--no-warn-search-mismatch
for the linker and enables support for LLD. (#3276) - Support for embedding
pragma({lib,linkerDirective}, ...)
in Mach-O object files. (#3259)
E.g.,pragma(linkerDirective, "-framework", "CoreFoundation");
makes Apple's linker pull in that framework when pulling in the compiled object file.
ELF object files newly embedpragma(lib, ...)
library names in a special.deplibs
section, but that only works with LLD 9+ for now. - The
ldc-build-runtime
tool has been slightly revised;--dFlags
now extends the base D flags instead of overriding them. (1200601) ModuleInfo.importedModules
are now emitted as weak references (except on Windows, for LLD compatibility), following DMD. (#3262)
Platform support
- Supports LLVM 3.9 - 9.0.
Bug fixes
- Potential stack overflows on Linux in GC worker threads. (#3127, dlang/druntime#2904)
- Support 2 leading dashes (not just 1) in command-line pre-parsing, thus fixing config file section lookup when using
--mtriple
and not ignoring--conf
and--lowmem
any longer. (#3268, #3275) - ICE during debuginfo generation for function literals inside enum declarations. (#3272, #3274)
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.