github ldc-developers/ldc v1.19.0-beta2
LDC 1.19.0-beta2

latest releases: v1.40.0, v1.40.0-beta6, v1.40.0-beta5...
pre-release5 years ago

(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 for extern(C++). Some superfluous implicit blits have been optimized away as well, for all targets. (#3204)
  • Posix: Defaults to cc now for linking, not gcc (or clang for FreeBSD 10+) - if the CC environment variable isn't set. Override with -gcc=<gcc|clang>. (#3202)
  • Codegen elision of dead branches for if statements with constant condition (not depending on enabled LLVM optimizations). (#3134)
  • druntime: New llvm_sideeffect intrinsic, new @cold function UDA and extended CAS functionality in core.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 DllMain entry 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 @assumeUsed on global union. (#3221, #3222) (new)
  • Context from outer function, but no outer function? regression introduced in v1.11 (inability to access outer context from extern(C++) methods). (#3234, #3235) (new)
  • Lvalue expressions with nested temporaries to be destructed yielding a wrong lvalue. (#3233) (new)

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 to ld.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 to real members inside structs etc.

Don't miss a new ldc release

NewReleases is sending notifications on new releases.