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.086.1

previous version: 2.086.0 – next version: 2.087.0

Download D 2.086.1
released Jun 15, 2019

2.086.1 comes with 1 major change and 41 fixed Bugzilla issues. A huge thanks goes to the 19 contributors who made 2.086.1 possible.

List of all bug fixes and enhancements in D 2.086.1.

Compiler changes

  1. Interface contracts retrieve arguments correctly

    Fixed regression 15984.

    As a side effect, contracts are not ABI compatible with previous releases.

    interface I
        void fun(int i)
        out { assert(i == 5); } // succeeds
    class C : I
        void fun(int i)
        do { }
        auto c = new C;;

List of all bug fixes and enhancements in D 2.086.1:

DMD Compiler regressions

  1. Bugzilla 19584: Illegal optimization: Shift-or -> imul
  2. Bugzilla 19631: Segfault on simple nested templated struct
  3. Bugzilla 19871: Copy constructor rejects valid code if default construction is disabled
  4. Bugzilla 19887: Segfault with void tuple default parameter
  5. Bugzilla 19901: importing export symbols causes link errors
  6. Bugzilla 19936: Deprecated alias get this falsely triggers on appending to array

DMD Compiler bugs

  1. Bugzilla 12950: Lexer interprets UFCS on hex integer as hex float literal
  2. Bugzilla 13819: ICE: backend\cg87.c with -O: "a % 2 != 0" for a double
  3. Bugzilla 17258: Pass by name doesn't work reliably and can sometimes lead to memory corruption
  4. Bugzilla 17793: [ICE] Internal error: ddmd/backend/cod1.c 3976 using simd.double4
  5. Bugzilla 18439: Error: cannot use operator ~= in @nogc delegate 'main.test.__lambda1'
  6. Bugzilla 18772: [ICE] Internal error: dmd\backend\cgcod.c 607 no optimizations
  7. Bugzilla 18784: Segfault due to dmd codegen interfacing with C++
  8. Bugzilla 19002: __FUNCTION__ and __PRETTY_FUNCTION__ cannot be used as C string literals
  9. Bugzilla 19386: Destructor not called when constructed inside if condition, leading to memory leak
  10. Bugzilla 19557: extern(C++, ns) and extern(C++, class) interact weird
  11. Bugzilla 19713: dmd crashes generating code for C++ template function
  12. Bugzilla 19825: Memory corruption involving lazy variadic, stdio and json
  13. Bugzilla 19831: throw/catch in scope(exit) crashes with illegal instruction
  14. Bugzilla 19857: Name mangling mismatch when compiling with -dip1000
  15. Bugzilla 19881: Escaping reference to local through return scope with -dip1000 and @safe
  16. Bugzilla 19888: default parameters in templates with tuple parameters+defaults are thrown away
  17. Bugzilla 19895: Floating point exception casting zero length array
  18. Bugzilla 19897: dinterpret.d:6439: Internal Compiler Error: null field
  19. Bugzilla 19898: ICE: in sizemask at dmd/mtype.d(2563): Assertion failure
  20. Bugzilla 19911: ICE: Segmentation fault with struct object and variadic function
  21. Bugzilla 19912: [module] No implicit import of object module when an object declaration exists.
  22. Bugzilla 19913: ICE: Segmentation fault with mixin and enum
  23. Bugzilla 19914: ICE: Segmentation fault with mixin and templated class
  24. Bugzilla 19915: ICE: Segmentation fault with alias and templated class
  25. Bugzilla 19922: ICE: Segmentation fault with typeid()
  26. Bugzilla 19923: ICE: typesem.d(3809): Assertion failure with .classinfo
  27. Bugzilla 19941: [ICE] Segmentation fault in ImplicitConvTo::visit(AddrExp*) at dmd/dcast.d(980)
  28. Bugzilla 19942: [ICE] Segmentation fault in resolvePropertiesX at dmd/expressionsem.d:1112
  29. Bugzilla 19954: ICE: Casting AliasSeq to array and passing to a function
  30. Bugzilla 19955: [ICE] Segmentation fault in StatementSemanticVisitor::visit(SwitchStatement*) at dmd/statementsem.d:2558

Phobos bugs

  1. Bugzilla 19837: std.random.isUniformRNG(Rng, ElementType) should not require Rng.front to be annotated @property
  2. Bugzilla 19850: double nested joiner .back falsely thinks the range is empty

Druntime regressions

  1. Bugzilla 19701: undefined reference to `_D6object__T6hashOf

Druntime bugs

  1. Bugzilla 17248: Multiple wrong function definitions in (causing runtime issues)
  2. Bugzilla 19847: no GC memory above 4GB reported with --DRT-gcopt=profile:1

Contributors to this release (19)

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

previous version: 2.086.0 – next version: 2.087.0