Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

Change Log: 2.090.1

previous version: 2.090.0 – next version: 2.091.0

Download D 2.090.1
released Feb 06, 2020

2.090.1 comes with 1 major change and 16 fixed Bugzilla issues. A huge thanks goes to the 13 contributors who made 2.090.1 possible.

List of all bug fixes and enhancements in D 2.090.1.

Compiler changes

  1. D1-style operator now have a lower priority than D2-style

    D1 operator overloads have been deprecated in v2.088.0. They historically had priority over D2 operator overload, and that priority was kept as is even after deprecating them.

    One main difference between D1 and D2 operator overload is that D1's are virtual by default, while the D2 operator overloading scheme relies on template, and so cannot be virtual. Code relying on virtuality of operator can be trivially adapted by providing a D2-style operator overload that forwards to a virtual method.

    However, as D1 operator overloads take priority, the deprecation message will be issued even if a D2 operator overload is present. This means that code relying on virtual operators would need not only to introduce the aforementioned D2-style overload, but also to rename their method not to match the reserved D1 names. This in turns forces libraries to introduce a breaking change in order to silence the deprecation.

    Starting from this release, D2-style operator overloads take priority over D1-style, making it trivial to forward the former to the later.


List of all bug fixes and enhancements in D 2.090.1:

DMD Compiler regressions

  1. Bugzilla 20391: [REG 2.089] DMD compile times increased by 40% because ENABLE_RELEASE=0 in build
  2. Bugzilla 20488: AA.length in multiple modules causes opDispatch failure
  3. Bugzilla 20518: simple import ICE regression

DMD Compiler bugs

  1. Bugzilla 19542: Forward reference segfault with string namespace C++ syntax
  2. Bugzilla 20530: is(<...> == module/package) does not work with string mixins
  3. Bugzilla 20549: Initialization with a tuple of a module symbol referencing itself could crash dmd
  4. Bugzilla 20559: Reference type + alias this + AA + AA.clear causes SEGV

Phobos regressions

  1. Bugzilla 19738: std.range.choose assignment breaks @safe-ty
  2. Bugzilla 20511: Can't format JSONValue to OutputRange due to @safe

Phobos bugs

  1. Bugzilla 17441: std.traits.moduleName gives wrong answer for modules imported under a different name in a mixin
  2. Bugzilla 20495: std.range.choose range is not safe when calling save
  3. Bugzilla 20527: std.json CTFE cannot read integer

Druntime regressions

  1. Bugzilla 19902: hasElaborateCopyConstructor doesn't know about copy constructors
  2. Bugzilla 20447: [REG 2.089] importing core.thread exposes unistd, hiding object.dup

Druntime bugs

  1. Bugzilla 20497: thread with limited stackspace crashes depending on size of TLS

dlang.org bugs

  1. Bugzilla 20500: running examples on the home page only displays '1 unittests passed'

Contributors to this release (13)

A huge thanks goes to all the awesome people who made this release possible.

previous version: 2.090.0 – next version: 2.091.0