Change Log: 2.090.1
Download D 2.090.1
released Feb 06, 2020
List of all bug fixes and enhancements in D 2.090.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
- Bugzilla 20391: [REG 2.089] DMD compile times increased by 40% because ENABLE_RELEASE=0 in build
- Bugzilla 20488: AA.length in multiple modules causes opDispatch failure
- Bugzilla 20518: simple import ICE regression
DMD Compiler bugs
- Bugzilla 19542: Forward reference segfault with string namespace C++ syntax
- Bugzilla 20530: is(<...> == module/package) does not work with string mixins
- Bugzilla 20549: Initialization with a tuple of a module symbol referencing itself could crash dmd
- Bugzilla 20559: Reference type + alias this + AA + AA.clear causes SEGV
- Bugzilla 19738: std.range.choose assignment breaks @safe-ty
- Bugzilla 20511: Can't format JSONValue to OutputRange due to @safe
- Bugzilla 17441: std.traits.moduleName gives wrong answer for modules imported under a different name in a mixin
- Bugzilla 20495: std.range.choose range is not safe when calling save
- Bugzilla 20527: std.json CTFE cannot read integer
- Bugzilla 19902: hasElaborateCopyConstructor doesn't know about copy constructors
- Bugzilla 20447: [REG 2.089] importing core.thread exposes unistd, hiding object.dup
- Bugzilla 20497: thread with limited stackspace crashes depending on size of TLS
- 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.
- Atila Neves
- Bernhard Seckinger
- Boris Carvajal
- Don Clugston
- Martin Kinkelin
- Martin Nowak
- Mathias Lang
- Mathis Beer
- Paul Backus
- Rainer Schuetze
- Sebastian Wilzbach
- Steven Schveighoffer
- Walter Bright