(Changes since 1.19.0-beta1 are marked with (new).)
Big news
- Frontend, druntime and Phobos are at version 2.089.0+. (#3192, #3210, #3215, #3232, #3242) (new)
- Breaking
extern(D)ABI change for Posix x86[_64]: non-POD arguments are now passed by ref under the hood, just like they already were forextern(C++). Some superfluous implicit blits have been optimized away as well, for all targets. (#3204) - Posix: Defaults to
ccnow for linking, notgcc(orclangfor FreeBSD 10+) - if theCCenvironment variable isn't set. Override with-gcc=<gcc|clang>. (#3202) - Codegen elision of dead branches for
ifstatements with constant condition (not depending on enabled LLVM optimizations). (#3134) - druntime: New
llvm_sideeffectintrinsic, new@coldfunction UDA and extended CAS functionality incore.atomic(incl. support for weak CAS and separate failure ordering). (ldc-developers/druntime#166, ldc-developers/druntime#167, #3220) (new) - Windows: Bundled MinGW-based libs have been upgraded to use the .def files from MinGW-w64 v7.0.0. They now also contain a default
DllMainentry point as well as_[v]snprintf. (libs, #3142) (new)
Platform support
- Supports LLVM 3.9 - 9.0.
Bug fixes
- Misc. CMake issues with some LLVM 9 configurations. (#3079, #3198)
- Equality/identity comparisons of vectors with length ≥ 32. (#3208, #3209)
ldc.gccbuiltins_*druntime modules now available to non-installed compiler too. (#3194, #3201)- Potential ICE when applying
@assumeUsedon global union. (#3221, #3222) (new) Context from outer function, but no outer function?regression introduced in v1.11 (inability to access outer context fromextern(C++)methods). (#3234, #3235) (new)- Lvalue expressions with nested temporaries to be destructed yielding a wrong lvalue. (#3233) (new)
Known issues
- Buggy older
ld.bfdlinker versions may wrongly strip out required symbols, e.g., ModuleInfos (so that e.g. no module ctors/dtors are run). LDC defaults told.goldon Linux. - LDC does not zero the padding area of a
realvariable. This may lead to wrong results if the padding area is also considered. See #770. Does not apply torealmembers inside structs etc.