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

previous version: 2.065.0 – next version: 2.066.1

Download D 2.066.0
released August 18, 2014

Linker Changes


List of all bug fixes and enhancements in D 2.066.

Compiler Changes

  1. -w now warns about an unused return value of a strongly pure nothrow function call:

    A discarded return value from a strongly pure nothrow function call now generates a warning.

    int foo() pure nothrow { return 1; }
    void main()
    {
        foo();  // the result of foo() is unused
    }
    
    With the -w switch, the compiler will complain:
    Warning: calling foo without side effects discards return value of type int, prepend a cast(void) if intentional

  2. -noboundscheck has been deprecated in favor of boundscheck=[on|safeonly|off]:

    Confusion over what the -noboundscheck command line option did led to the creation of the new option -boundscheck=[on|safeonly|off] which aims to be more clear while enabling more flexibility than was present before.

    -boundscheck=

    • on: Bounds checks are enabled for all code. This is the default.
    • safeonly: Bounds checks are enabled only in @safe code. This is the default for -release builds.
    • off: Bounds checks are disabled completely (even in @safe code). This option should be used with caution and as a last resort to improve performance. Confirm turning off @safe bounds checks is worthwhile by benchmarking.

    Use -boundscheck=off to replace instances of -noboundscheck.

    Prior to this there was no way to enable bounds checking for -release builds nor any way of turning off non-@safe bounds checking without pulling in everything else -release does.

  3. -vgc was added to list GC allocation code positions in the code:

    Prints all GC-allocation points. Analysis will follow the semantics of the new @nogc attribute.

  4. -vcolumns was added to display column numbers in error messages:

    Diagnostic messages will print the character number from each line head.

    int x = missing_name;
    
    Without -vcolumns:
    test.d(1): Error: undefined identifier missing_name
    
    With -vcolumns:
    test.d(1,9): Error: undefined identifier missing_name
    

  5. -color was added to make console output colored:

    Errors, deprecation, and warning messages will be colored.

Language Changes

  1. @nogc attribute was added:

    @nogc attribute disallows GC-heap allocation.

    class C {}
    void foo() @nogc
    {
        auto c = new C();   // GC-allocation is disallowed
    }
    

  2. extern (C++, namespace) was added:

    To represent a C++ namespace, extern (C++) now takes optional dot-chained identifiers.

    extern (C++, a.b.c) int foo();
    
    is equivalent with:
    namespace a {
      namespace b {
        namespace c {
          int foo();
        }
      }
    }
    

  3. Operator overloading for multi-dimensional slicing was added:

    Documentation is here.

    Example code:

    struct MyContainer(E)
    {
        E[][] payload;
    
        this(size_t w, size_t h)
        {
            payload = new E[][](h, w);
        }
    
        size_t opDollar(size_t dim)()
        {
            return payload[dim].length;
        }
    
        auto opSlice(size_t dim)(size_t lwr, size_t upr)
        {
            import std.typecons;
            return tuple(lwr, upr);
        }
    
        void opIndexAssign(A...)(E val, A indices)
        {
            assert(A.length == payload.length);
    
            foreach (dim, x; indices)
            {
                static if (is(typeof(x) : size_t))
                {
                    // this[..., x, ...]
                    payload[dim][x] = val;
                }
                else
                {
                    // this[..., x[0] .. x[1], ...]
                    payload[dim][x[0] .. x[1]] = val;
                }
            }
        }
    }
    void main()
    {
        import std.stdio;
    
        auto c = MyContainer!int(4, 3);
        writefln("[%([%(%d%| %)]%|\n %)]", c.payload);
        // [[0 0 0 0]
        //  [0 0 0 0]
        //  [0 0 0 0]]
    
        c[1 .. 3,
          2,
          0 .. $] = 1;
        /*
        Rewritten as:
        c.opIndexAssign(c.opSlice!0(1, 3),
                        2,
                        c.opSlice!2(0, c.opDollar!2()));
        */
    
        writefln("[%([%(%d%| %)]%|\n %)]", c.payload);
        // [[0 1 1 0]
        //  [0 0 1 0]
        //  [1 1 1 1]]
    }
    

  4. __traits(getFunctionAttributes) was added:

    This can take one argument, either a function symbol, function type, function pointer type, or delegate type. Examples:

    void foo() pure nothrow @safe;
    static assert([__traits(getFunctionAttributes, foo)] == ["pure", "nothrow", "@safe"]);
    
    ref int bar(int) @property @trusted;
    static assert([__traits(getFunctionAttributes, typeof(&bar))] == ["@property", "ref", "@trusted"]);
    

  5. Support template parameter deduction for arguments with a narrowing conversion:

    Implicit Function Template Instantiation will now consider a narrowing conversion of function arguments when deducing the template instance parameter types.

    void foo(T)(T[] arr, T elem) { ... }
    void main()
    {
        short[] a;
        foo(a, 1);
    }
    
    In 2.065 and earlier, calling foo(a, 1) was not allowed. From 2.066, T is deduced as short by considering a narrowing conversion of the second function argument 1 from int to short.

  6. Read-Modify-Write operations on shared variables are now deprecated:

    Examples:

    shared int global;
    void main()
    {
        global++;       // deprecated
        global *= 2;    // deprecated
    }
    
    Instead you should use atomicOp from core.atomic:
    shared int global;
    void main()
    {
        import core.atomic;
        atomicOp!"+="(global, 1);
        atomicOp!"*="(global, 2);
    }
    

  7. Support uniform construction syntax for built-in scalar types:

    Examples:

    short n1 = 1;
    auto n2 = short(1); // equivalent with n1, typeof(n2) is short
    
    auto p1 = new long(1);                  // typeof(p1) is long*
    auto p2 = new immutable double(3.14);   // typeof(p2) is immutable(double)*
    

    The constructor argument should be implicitly convertible to the constructed type.

    auto n1 = short(32767); // OK
    auto n2 = short(32768); // Not allowed, out of bounds of signed short -32768 to 32767
    

Library Changes

  1. Duration.get and its wrappers have been deprecated in favor of the new Duration.split:

    Duration.get and its wrappers, Duration.weeks, Duration.days, Duration.hours, and Duration.seconds, as well as Duration.fracSec (which served a similar purpose as Duration.get for the fractional second units) have proven to be too easily confused with Duration.total, causing subtle bugs. So, they have been deprecated. In their place, Duration.split has been added - and it's not only very useful, but it does a great job of showing off what D can do. Whereas Duration.get split out all of the units of a Duration and then returned only one of them, Duration.split splits out a Duration into the units that it's told to (which could be one unit or all of them) and returns all of them. It has two overloads, both which take template arguments that indicate which of the units are to be split out. The difference is in how the result is returned. As with most of the templates in core.time and std.datetime which take strings to represent units, Duration.split accepts "weeks", "days", "hours", "minutes", "seconds", "msecs", "usecs", "hnsecs", and "nsecs". The first overload returns the split out units as out parameters.

    auto d = weeks(5) + days(4) + hours(17) + seconds(2) + hnsecs(12_007);
    short days;
    long seconds;
    int msecs;
    d.split!("days", "seconds", "msecs")(days, seconds, msecs);
    assert(days == 39);
    assert(seconds == 61_202);
    assert(msecs == 1);
    
    The arguments can be any integral type (though no protection is given against integer overflow, so unless it's known that the values are going to be small, it's unwise to use a small integral type for any of the arguments). The second overload returns a struct with the unit names as its fields. Only the requested units are present as fields. All of the struct's fields are longs.
    auto d = weeks(5) + days(4) + hours(17) + seconds(2) + hnsecs(12_007);
    auto result = d.split!("days", "seconds", "msecs")();
    assert(result.days == 39);
    assert(result.seconds == 61_202);
    assert(result.msecs == 1);
    
    Or if no units are given to the second overload, then it will return a struct with all of the units save for nsecs (since nsecs would always be 0 when hnsecs is one of the units as Duration has hnsec precision).
    auto d = weeks(5) + days(4) + hours(17) + seconds(2) + hnsecs(12_007);
    auto result = d.split();
    assert(result.weeks == 5);
    assert(result.days == 4);
    assert(result.hours == 17);
    assert(result.minutes == 0);
    assert(result.seconds == 2);
    assert(result.msecs == 1);
    assert(result.usecs == 200);
    assert(result.hnsecs == 7);
    
    Calling Duration.get or its wrappers for each of the units would be equivalent to that example, only less efficient when more than one unit is requested, as the calculations would have to be done more than once. The exception is Duration.fracSec which would have given the total of the fractional seconds as the requested units rather than splitting them out.
    // Equivalent to previous example
    auto d = weeks(5) + days(4) + hours(17) + seconds(2) + hnsecs(12_007);
    assert(d.weeks == 5);
    assert(d.days == 4);
    assert(d.hours == 17);
    assert(d.minutes == 0);
    assert(d.seconds == 2);
    assert(d.fracSec.msecs == 1);
    assert(d.fracSec.usecs == 1200);
    assert(d.fracSec.hnsecs == 12_007);
    
    It is hoped that Duration.split will be less confusing and thus result in fewer bugs, but it's definitely the case that it's more powerful. It's also a great example of D's metaprogramming capabilities given how it splits out only the requested units and even is able to return a struct with fields with the same names as the requested units. This on top of being able to handle a variety of integral types as arguments. And its implemenation isn't even very complicated.

  2. Some built-in type properties have been replaced with library functions:

    Built-in array properties dup and idup were replaced with (module-scoped) free functions in the object module, thanks to D's support of Uniform Function Call Syntax.

    Built-in associative array properties rehash, dup, byKey, byValue, keys, values, and get were also replaced with free functions in the object module.

  3. Associative array keys now require equality rather than ordering:

    Until 2.065, opCmp was used to customize the comparison of AA struct keys.

    void main()
    {
        int[MyKey] aa;
    }
    
    struct MyKey
    {
        int x;
        int y;  // want to be ignored for AA key comparison
    
        int opCmp(ref const MyKey rhs) const
        {
            if (this.x == rhs.x)
                return 0;
    
            // defined order was merely unused for AA keys.
            return this.x > rhs.x ? 1 : -1;
        }
    }
    
    From 2.066, the AA implementation has been changed to use the equality operator (==) for the key comparison. So the MyKey struct should be modified to:
    struct MyKey
    {
        int x;
        int y;  // want to be ignored for AA key comparison
    
        int opEquals(ref const MyKey rhs) const
        {
            return this.x == rhs.x;
        }
    }
    


List of all bug fixes and enhancements in D 2.066:

DMD Compiler regressions

  1. Bugzilla 5105: Member function template cannot be synchronized
  2. Bugzilla 9449: Static arrays of 128bit types segfault on initialization. Incorrect calling of memset128ii.
  3. Bugzilla 11777: [ICE] dmd memory corruption as Scope::pop frees fieldinit used also in enclosing
  4. Bugzilla 12174: Problems caused by enum predicate with std.algorithm.sum
  5. Bugzilla 12179: [ICE](e2ir.c 1861) with array operation
  6. Bugzilla 12242: conflict error with public imports
  7. Bugzilla 12243: [REG 2.065.0] "ICE: cannot append 'char' to 'string'" with -inline
  8. Bugzilla 12250: [REG 2.065.0][ICE](e2ir.c 2077) with inout T[] and array operation
  9. Bugzilla 12255: Regression: opCmp requirement for AAs breaks code
  10. Bugzilla 12262: [REG2.065] A specialized parameter alias a : B!A should not match to the non-eponymous instantiated variable
  11. Bugzilla 12264: [REG2.066a] A specialized alias parameter conflicts with the unspecialized one.
  12. Bugzilla 12266: Regression (2.065): Header generation produces uncompilable header
  13. Bugzilla 12296: [REG2.066a] const compatible AA pointer conversion is wrongly rejected in CTFE
  14. Bugzilla 12312: Regression (2.064): Diagnostic for void static arrays has gone bad
  15. Bugzilla 12316: GIT HEAD: AA.get broken for Object VAL types
  16. Bugzilla 12376: ICE with constarainted template instantiation with error gagging
  17. Bugzilla 12382: opDollar can't be used at CT
  18. Bugzilla 12390: [REG2.066a] "has no effect in expression" diagnostic regression
  19. Bugzilla 12396: Regression: major breakage from new import rules
  20. Bugzilla 12399: Static and selective import acts like a normal import
  21. Bugzilla 12400: Misleading/useless diagnostic on bad fully-qualified symbol name
  22. Bugzilla 12403: [AA] Associative array get function rejects some cases
  23. Bugzilla 12405: Named imports act like regular imports
  24. Bugzilla 12413: Infinite recursion of Package::search
  25. Bugzilla 12467: Regression (2.066 git-head): char[] is implicitly convertible to string
  26. Bugzilla 12485: [REG2.065] DMD crashes when recursive template expansion
  27. Bugzilla 12497: [REG2.064] ICE on string mixin with non-string operand
  28. Bugzilla 12501: Assertion global.gaggedErrors || global.errors failed.
  29. Bugzilla 12509: Compiler performance highly depends on declared array size - for struct with long static array of structs
  30. Bugzilla 12554: [ICE](struct.c line 898) with failed delegate purity
  31. Bugzilla 12574: [ICE](statement.c, line 713) with reduce with wrong tuple arity
  32. Bugzilla 12580: [REG2.066a] dup() won't accept void[]
  33. Bugzilla 12581: [ICE](statement.c, line 713) with invalid assignment + alias this
  34. Bugzilla 12585: Regression(2.064): Segfault on lazy/catch/opIndex
  35. Bugzilla 12591: [DMD|REG] std/typecons.d(440): Error: tuple has no effect in expression
  36. Bugzilla 12593: [REG2.065] AA cannot have struct as key
  37. Bugzilla 12619: Invalid warning for unused return value of debug memcpy
  38. Bugzilla 12649: "discards return value" warning will cause ICE on function pointer call
  39. Bugzilla 12650: Invalid codegen on taking lvalue of instance field initializ
  40. Bugzilla 12689: [CTFE] assigning via pointer from 'in' expression doesn't work
  41. Bugzilla 12703: GIT HEAD : final class rejects members initialization
  42. Bugzilla 12719: struct.c:705: virtual void StructDeclaration::semantic(Scope*): Assertion parent && parent == sc->parent failed.
  43. Bugzilla 12727: [REG2.066a] DMD hangs up on recursive alias declaration
  44. Bugzilla 12728: [REG2.066a] IFTI should consider instantiated types that has template parameters with default args
  45. Bugzilla 12760: Initializing an object that has "this(Args) inout" causes "discards return value" warning
  46. Bugzilla 12769: ICE returning array
  47. Bugzilla 12774: REG(2.066) ICE(optimize.c) Newing struct containing union causes segfault
  48. Bugzilla 12824: REG(2.066) ICE(statement.c) Segfault with label and static if
  49. Bugzilla 12860: REG 2.065: typeid(_error_) symbols leaked to backend
  50. Bugzilla 12864: can no longer use toLower in string switch case
  51. Bugzilla 12880: [REG2.066a] Wrong IFTI for string.init argument
  52. Bugzilla 12896: ld.gold complains about bad relocations when building libphobos2.so
  53. Bugzilla 12900: REG 2.065: Wrong code in IfStatement condition Expression
  54. Bugzilla 12904: Wrong-code for some slice to slice assignments when using opDollar
  55. Bugzilla 12906: [CTFE] Static array of structs causes postblit call
  56. Bugzilla 12910: [AA] rehash is incorrectly inferred as strongly pure for some associative arrays
  57. Bugzilla 12924: deprecated("foo"); and deprecated; should not compile
  58. Bugzilla 12956: [ICE] Assertion in expression.c:432
  59. Bugzilla 12981: Can't refer to 'outer' from mixin template
  60. Bugzilla 12989: Wrong x86_64 code for delegate return when compiled as lib (-lib)
  61. Bugzilla 13002: DMD 2.066 prep: 32-bit build fails on Ubuntu via create_dmd_release
  62. Bugzilla 13008: [REG2.066a] 'deprecated' is not allowed to refer another deprecated when it is a function declaration
  63. Bugzilla 13021: Constructing union with floating type and then accessing its field in one expression causes ICE
  64. Bugzilla 13024: [ICE](expression.c line 1172) with implicit supertype conversion of different enums in array literal
  65. Bugzilla 13025: Tools repository does not build on Ubuntu
  66. Bugzilla 13026: object.get cannot be called with [] as "defaultValue" argument
  67. Bugzilla 13027: Assertion ex->op == TOKblit || ex->op == TOKconstruct failed.
  68. Bugzilla 13030: DMD assertion fails at mtype.c:697 if delegate has an argument name
  69. Bugzilla 13034: [Reg] core.stdc.stdio - deprecation warning with dmd -inline
  70. Bugzilla 13053: Wrong warning on implicitly generated __xtoHash
  71. Bugzilla 13056: [2.066.0-b1] Regression: Error: template std.path.baseName cannot deduce function from argument types !()(DirEntry)
  72. Bugzilla 13071: [ICE] dmd 2.066.0-b1 assertion in nogc.c:73
  73. Bugzilla 13077: [dmd 2.066-b2] std.range.array with shared InputRangeObject
  74. Bugzilla 13081: ICE with alias this and opSlice
  75. Bugzilla 13087: Error: no property 'xyz' for type 'Vec!4'
  76. Bugzilla 13102: Cannot parse 184467440737095516153.6L
  77. Bugzilla 13113: cannot build druntime's gc.d with -debug=INVARIANT, bad @nogc inference?
  78. Bugzilla 13114: old opCmp requirement for AA keys should be detected for classes
  79. Bugzilla 13117: Executable size of hello world explodes from 472K to 2.7M
  80. Bugzilla 13127: Cannot deduce function with int[][] argument and "in" parameter
  81. Bugzilla 13132: ICE on interface AA key
  82. Bugzilla 13141: array cast from string[] to immutable(char[][]) is not supported at compile time
  83. Bugzilla 13152: [REG2.064.2] Compiler high cpu usage and never ends
  84. Bugzilla 13154: Incorrect init of static float array when sliced
  85. Bugzilla 13158: "void has no value" in std.variant.Algebraic (affects D:YAML)
  86. Bugzilla 13178: Duplicate symbol of compiler generated symbols
  87. Bugzilla 13179: AA key type TagIndex now requires equality rather than comparison
  88. Bugzilla 13180: [REG2.066a] AA get returns const(char[]) instead of string
  89. Bugzilla 13187: Function wrongly deduced as pure
  90. Bugzilla 13193: Extreme slowdown in compilation time of OpenSSL in Tango for optimized build
  91. Bugzilla 13201: Wrong "Warning: statement is not reachable" error with -w
  92. Bugzilla 13208: [ICE](e2ir.c 2077) with array operation
  93. Bugzilla 13218: [ICE] s2ir.c 142: Must fully qualify call to ParameterTypeTuple
  94. Bugzilla 13219: segmentation fault in FuncDeclaration::getLevel
  95. Bugzilla 13220: [ICE] 'global.gaggedErrors || global.errors' on line 750 in file 'statement.c'
  96. Bugzilla 13221: [ICE] '0' on line 318 in file 'interpret.c'
  97. Bugzilla 13223: Cannot deduce argument for array template parameters
  98. Bugzilla 13232: dmd compile times increased by 10-20%
  99. Bugzilla 13237: Wrong code with "-inline -O"
  100. Bugzilla 13245: segfault when instantiating template with non-compiling function literal
  101. Bugzilla 13252: ParameterDefaultValueTuple affects other instantiations
  102. Bugzilla 13259: [ICE] 'v.result' on line 191 in file 'todt.c'
  103. Bugzilla 13284: [dmd 2.066-rc2] Cannot match shared classes at receive

DMD Compiler bugs

  1. Bugzilla 648: DDoc: unable to document mixin statement
  2. Bugzilla 846: Error 42: Symbol Undefined "<mangle_of_class_template>__arrayZ"
  3. Bugzilla 1659: template alias parameters are chosen over all but exact matches.
  4. Bugzilla 2427: Function call in struct initializer fails to compile
  5. Bugzilla 2438: Cannot get types of delegate properties
  6. Bugzilla 2456: "cannot put catch statement inside finally block", missing line number
  7. Bugzilla 2711: -H produces bad headers files if function defintion is templated and have auto return value
  8. Bugzilla 2791: port.h and port.c are missing licenses
  9. Bugzilla 3032: No stack allocation for "scope c = new class Object {};"
  10. Bugzilla 3109: [meta] Template ordering
  11. Bugzilla 3490: DMD Never Inlines Functions that Could Throw
  12. Bugzilla 3672: [tdpl] read-modify-write (rmw) operators must be disabled for shared
  13. Bugzilla 4225: mangle.c:81: char* mangle(Declaration*): Assertion fd && fd->inferRetType failed.
  14. Bugzilla 4423: [tdpl] enums of struct types
  15. Bugzilla 4757: A forward reference error with return of inner defined struct
  16. Bugzilla 4791: Assigning a static array to itself should be allowed
  17. Bugzilla 5030: Operators don't work with AssociativeArray!(T1,T2)
  18. Bugzilla 5095: Error for typesafe variadic functions for structs
  19. Bugzilla 5498: wrong common type deduction for array of classes
  20. Bugzilla 5635: Code inside 'foreach' using opApply cannot modify variable out of its scope in a template function.
  21. Bugzilla 5810: Struct postincrement generates 'no effect' error if used on struct member
  22. Bugzilla 5835: TypeInfo_Array.getHash creates raw data hash instead using array element hash function
  23. Bugzilla 5854: Built-in array sort doesn't sort SysTime correctly
  24. Bugzilla 6140: Wrong ambiguity error with overloading
  25. Bugzilla 6359: Pure/@safe-inference should not be affected by __traits(compiles)
  26. Bugzilla 6430: Overloaded auto-return functions each with a nested aggregate of the same name are conflated
  27. Bugzilla 6677: static this attributes position
  28. Bugzilla 6889: "finally" mentioned in a compilation error, instead of "scope(exit)" or "scope(success)"
  29. Bugzilla 7019: implicit constructors are inconsistently allowed
  30. Bugzilla 7209: Stack overflow on explicitly typed enum circular dependency
  31. Bugzilla 7469: template mangling depends on instantiation order
  32. Bugzilla 7477: Enum structs without specified values
  33. Bugzilla 7870: Shared library support for Linux is missing
  34. Bugzilla 7887: [CTFE] can't assign to returned reference
  35. Bugzilla 8100: [ICE] with templated subclassing
  36. Bugzilla 8236: Wrong error message in creating struct from vector operation
  37. Bugzilla 8254: nested struct cannot access the types of the parent's fields
  38. Bugzilla 8269: The 'with statement' does not observe temporary object lifetime
  39. Bugzilla 8296: @disable this propagates through reference
  40. Bugzilla 8309: ICE in typeMerge on 'void main(){auto x = [()=>1.0, ()=>1];}'
  41. Bugzilla 8370: invalid deprecation error with -release -inline -noboundscheck
  42. Bugzilla 8373: IFTI fails on overloading of function vs non function template
  43. Bugzilla 8392: DMD sometime fail when using a non static function template within a function template
  44. Bugzilla 8499: ICE on undefined identifier
  45. Bugzilla 8596: Indeterministic assertion failure in rehash
  46. Bugzilla 8704: Invalid nested struct constructions should be detected
  47. Bugzilla 8738: Struct literal breaks assigment ordering
  48. Bugzilla 9245: [CTFE] postblit not called on static array initialization
  49. Bugzilla 9596: Ambiguous match is incorrectly hidden by additional lesser match
  50. Bugzilla 9708: inout breaks zero parameter IFTI
  51. Bugzilla 9931: Mac OS X ABI not followed when returning structs for extern (C)
  52. Bugzilla 10054: x86_64 valgrind reports unrecognised instruction (DMD 2.062)
  53. Bugzilla 10071: 'real' alignment wrong on several platforms
  54. Bugzilla 10112: Mangle, which defined by pragma(mangle) should not be mangled by backend.
  55. Bugzilla 10133: ICE for templated static conditional lambda
  56. Bugzilla 10169: duplicate error message: member is not accessible
  57. Bugzilla 10219: Implicit conversion between delegates returning a class and an interface
  58. Bugzilla 10366: Ddoc: Symbols in template classes don't get fully qualified anchors
  59. Bugzilla 10629: [ICE](dt.c 106) with void array
  60. Bugzilla 10658: Cannot merge template overload set by using alias declaration
  61. Bugzilla 10703: Front-end code removal "optimisation" with try/catch blocks produces wrong codegen
  62. Bugzilla 10908: Links in d.chm file are broken
  63. Bugzilla 10928: Fails to create closures that reference structs with dtor
  64. Bugzilla 10985: Compiler doesn't attempt to inline non-templated functions from libraries (even having the full source)
  65. Bugzilla 11066: Spurious warning 'statement is not reachable' with -profile
  66. Bugzilla 11177: parameterized enum can't be typed
  67. Bugzilla 11181: Missing compile-time error for wrong array literal
  68. Bugzilla 11201: ICE: (symbol.c) -inline stops compilation
  69. Bugzilla 11333: ICE: Cannot subtype 0-tuple with "alias this"
  70. Bugzilla 11421: Dynamic array of associative array literal type inference
  71. Bugzilla 11448: dup calls @system impure code from @safe pure function
  72. Bugzilla 11453: Compiling packages has a dependency on order of modules passed to the compiler.
  73. Bugzilla 11511: DDoc - C variadic parameters cannot be properly documented
  74. Bugzilla 11535: CTFE ICE on reassigning a static array initialized with block assignment
  75. Bugzilla 11542: scope(failure) messes up nothrow checking
  76. Bugzilla 11543: multiple definition of std.regex with shared library
  77. Bugzilla 11545: Aggregate function literal member should not have access to enclosing scope
  78. Bugzilla 11550: [ICE] Checking if std.conv.to compiles with an array of non-builtins results in an ICE in s2ir.c.
  79. Bugzilla 11622: Assertion failure in totym(), glue.c, line 1288
  80. Bugzilla 11672: default initialization of static array of structs with a single value fails
  81. Bugzilla 11677: user defined attributes must be first
  82. Bugzilla 11678: user defined attributes cannot appear as postfixes
  83. Bugzilla 11679: user defined attributes not allowed for local auto declarations
  84. Bugzilla 11680: user defined attributes for type inference
  85. Bugzilla 11735: pragma(msg, ...) fails to print wstring, dstring
  86. Bugzilla 11740: [64-bit] Struct with constructor incorrectly passed on stack to extern(C++) function
  87. Bugzilla 11752: Make issues.dlang.org work
  88. Bugzilla 11774: Lambda argument to templated function changes its signature forever
  89. Bugzilla 11783: Make std.datetime unittesting faster
  90. Bugzilla 11788: [x86] Valgrind unhandled instruction bytes: 0xC8 0x8 0x0 0x0
  91. Bugzilla 11832: std.datetime: ddoc warnings
  92. Bugzilla 11872: Support for overloaded template functions in with block
  93. Bugzilla 11885: ICE(s2ir.c 359) with continuing a labeled ByLine (range struct w/ dtor) loop
  94. Bugzilla 11889: std.container.Array.opIndex returns by value, resulting in perfect storm
  95. Bugzilla 11901: real win64
  96. Bugzilla 11906: Compiler assertion when comparing function pointers
  97. Bugzilla 12009: local import and "unable to resolve forward reference" error
  98. Bugzilla 12011: "Internal Compiler Error: Null field" on CTFE method call on .init
  99. Bugzilla 12042: "CTFE internal error: Dotvar assignment" with template method and "with"
  100. Bugzilla 12057: [ICE], backend/cg87.c 925
  101. Bugzilla 12063: No line number error on uninitialized enum member if base type is not incrementable
  102. Bugzilla 12077: Instantiated type does not match to the specialized alias parameter
  103. Bugzilla 12078: forward reference issue with is() and curiously recurring template pattern
  104. Bugzilla 12110: [CTFE] Error: CTFE internal error: Dotvar assignment
  105. Bugzilla 12138: Label statement creates an unexpected scope block
  106. Bugzilla 12143: Base class is forward referenced
  107. Bugzilla 12164: Function returning ptrdiff_t.min in 64-bit returning 0 when -O is set.
  108. Bugzilla 12212: Static array assignment makes slice implicitly
  109. Bugzilla 12231: ICE on the class declaration within lambda inside template constraint
  110. Bugzilla 12235: ICE on printing mangled name of forward reference lambda by pragma(msg)
  111. Bugzilla 12236: Inconsistent mangleof result
  112. Bugzilla 12237: Inconsistent behavior of the instantiating enclosing template function
  113. Bugzilla 12263: Specialized template parameter incorrectly fail to match to the same name template.
  114. Bugzilla 12278: __traits(classInstanceSize) returns wrong value if used before class is declared
  115. Bugzilla 12287: infinite loop on std.traits.moduleName on templated struct member
  116. Bugzilla 12292: Template specialization ": string" passes for static arrays of other types
  117. Bugzilla 12302: Assertion failure in expression.c (line 432) when using template isCallable
  118. Bugzilla 12306: Struct Enums cannot be read at compile time
  119. Bugzilla 12307: Contextfull error diagnostic about AA key type
  120. Bugzilla 12313: Unneeded stack temporaries created by tuple foreach
  121. Bugzilla 12334: Cannot access frame pointer of nested class from inside lambda
  122. Bugzilla 12350: Assigning __traits(getAttributes) to variable crashes DMD
  123. Bugzilla 12362: dmd hangs when attempting to use undefined enum
  124. Bugzilla 12378: Compiler accepts any syntactically-valid code inside double-nested map predicate
  125. Bugzilla 12392: No attribute inference if first template instantiation uses alias
  126. Bugzilla 12397: CTFE ICE CompiledCtfeFunction::walkAllVars with 2.065
  127. Bugzilla 12432: Diagnostic on argument count mismatch for ranges and opApply should improve
  128. Bugzilla 12436: Opaque struct parameter type should not be allowed
  129. Bugzilla 12460: Crash with goto and static if
  130. Bugzilla 12476: Assert error in interpret.c:3204
  131. Bugzilla 12480: static assert should print out the string representation of a value it can interpret
  132. Bugzilla 12498: ICE: while(string) causes compiler to crash during CTFE
  133. Bugzilla 12499: tuple/TypeTuple 1-Arg initialization fails during CTFE.
  134. Bugzilla 12503: Bad optimization with scope(success) and return statement
  135. Bugzilla 12506: Wrongly private lambda to define global immutable array
  136. Bugzilla 12508: Codegen bug for interface type covariant return with lambda type inference
  137. Bugzilla 12523: wrong foreach argument type with ref and inout
  138. Bugzilla 12524: wrong type with inout const arg and inout return
  139. Bugzilla 12528: [CTFE] cannot append elements from one inout array to another inout array
  140. Bugzilla 12534: ICE on using expression tuple as type tuple
  141. Bugzilla 12539: Compiler crash when looking up a nonexistent tuple element in an associative array
  142. Bugzilla 12542: No function attribute inference for recursive functions
  143. Bugzilla 12543: Class.sizeof requires the Class' definition
  144. Bugzilla 12555: Incorrect error ungagging for speculatively instantiated class
  145. Bugzilla 12571: __traits(parent) should work for typed manifest constant in initializer
  146. Bugzilla 12577: ice on compile time struct field access
  147. Bugzilla 12586: redundant error messages for tuple index exceeding
  148. Bugzilla 12602: [CTFE] Changes to an array slice wrapped in a struct do not propogate to the original
  149. Bugzilla 12604: No "mismatched array lengths" error with narrowing conversions
  150. Bugzilla 12622: Purity, @safe not checked for pointers to functions
  151. Bugzilla 12630: @nogc should recognize compile-time evaluation context
  152. Bugzilla 12640: Error inside a switch statement causes a spurious switch case fallthrough warning
  153. Bugzilla 12642: Avoid some heap allocation cases for fixed-size arrays
  154. Bugzilla 12651: TemplateArgsOf accepts nonsensical arguments
  155. Bugzilla 12660: Wrong non-@nogc function invariant error
  156. Bugzilla 12673: ICE with static assert and __traits(compiles) with non-existent symbol
  157. Bugzilla 12677: Assertion failure: 'isCtfeValueValid(newval)' on line 6579 in file 'interpret.c'
  158. Bugzilla 12678: Field constness missing in diagnostics for multiple field initialization error
  159. Bugzilla 12686: Struct invariant prevents NRVO
  160. Bugzilla 12688: Strange error if function call is in parentheses
  161. Bugzilla 12704: typeof function literal incorrectly infers attributes
  162. Bugzilla 12705: @system is missing when using getFunctionAttributes on a typeof(function)
  163. Bugzilla 12706: ddoc: __dollar should not appear in the documentation
  164. Bugzilla 12725: IFTI should consider instantiated types with dependent template parameters
  165. Bugzilla 12737: static constructor requires call of super constructor
  166. Bugzilla 12739: Foreach delegate to opApply does not have infered nothrow
  167. Bugzilla 12745: [Ddoc] Underscore is removed from numbers in document comments
  168. Bugzilla 12746: Wrong overload access within manually aliased eponymous function template
  169. Bugzilla 12749: Constructor-local function allows multiple mutation of immutable member
  170. Bugzilla 12756: Cannot build dmd on windows because of longdouble
  171. Bugzilla 12777: const/immutable member function violating its const-ness - confusing error message
  172. Bugzilla 12778: Aliasing opBinaryRight to opBinary works only in certain cases
  173. Bugzilla 12788: -di doesn't warn about implicit conversion from char[] to char*
  174. Bugzilla 12809: More strict nothrow check for try-finally statement
  175. Bugzilla 12820: DMD can inline calls to functions that use alloca, allocating the memory in the caller function instead.
  176. Bugzilla 12825: Invalid "duplicated union initialization" error with initialized field in extern(C++) class
  177. Bugzilla 12826: Win64: bad code for x ~= x;
  178. Bugzilla 12833: switch statement does not work properly when -inline used
  179. Bugzilla 12836: CTFE ICE CompiledCtfeFunction::walkAllVars
  180. Bugzilla 12838: Dmd show ICEs when using Tuple and wrong type
  181. Bugzilla 12841: ICE on taking function address
  182. Bugzilla 12849: pmovmskb instruction cannot store to 64-bit registers
  183. Bugzilla 12850: ICE when passing associative array to template
  184. Bugzilla 12851: ICE when passing const static array to template
  185. Bugzilla 12852: 64 bit wrong code generated
  186. Bugzilla 12855: Shadow register assignments for spilling can conflict
  187. Bugzilla 12873: Valgrind unhandled instruction bytes 0x48 0xDB (redundant REX_W prefix on x87 load)
  188. Bugzilla 12874: Wrong file name in range violation error
  189. Bugzilla 12876: Implicit cast of array slice to fixed-size array for templates too
  190. Bugzilla 12901: in/out contracts on struct constructor must require function body
  191. Bugzilla 12902: [ICE] Assertion failure '!ae->lengthVar' in 'expression.c' when using opDollar
  192. Bugzilla 12907: [ICE] Assertion failure '0' in 'mangle.c' when using auto return type with lambda with dereferanced function call
  193. Bugzilla 12909: [AA] Function is incorrectly inferred as strongly pure for associative array with key of non-mutable array or pointer as argument
  194. Bugzilla 12928: Bounds check dropped for array[length]
  195. Bugzilla 12933: [D1] ICE with default __FILE__ and __LINE__
  196. Bugzilla 12934: Strange newly implemented VRP behavior on foreach
  197. Bugzilla 12937: ICE with void static array initializing
  198. Bugzilla 12938: Error message mistake in out parameter with @disable this
  199. Bugzilla 12953: Wrong alignment number in error messages
  200. Bugzilla 12962: osver.mak should use isainfo on Solaris to determine model
  201. Bugzilla 12965: DMD sets ELFOSABI to ELFOSABI_LINUX on all systems
  202. Bugzilla 12968: DMD inline asm outputs wrong XCHG instruction
  203. Bugzilla 12970: Enclosing @system attribute is precedence than postfix @safe
  204. Bugzilla 13003: Lack of read-modify-write operation check on shared object field
  205. Bugzilla 13011: inout delegate parameter cannot receive exactly same type argument
  206. Bugzilla 13023: optimizer produces wrong code for comparision and division of ulong
  207. Bugzilla 13043: Redundant linking to TypeInfo in non-root module
  208. Bugzilla 13044: Assignment of structs with const members
  209. Bugzilla 13045: TypeInfo.getHash should return consistent result with object equality by default
  210. Bugzilla 13049: in template arguments the compiler fails to parse scope for function pointers arguments
  211. Bugzilla 13050: pragma mangle breaks homonym template aliasing
  212. Bugzilla 13082: Spurious error message with failed call to class ctor
  213. Bugzilla 13088: Compiler segfaults with trivial case code.
  214. Bugzilla 13089: Spurious 'is not nothrow' error on static array initialization
  215. Bugzilla 13109: -run and -lib dmd flags conflict
  216. Bugzilla 13116: Should not be able to return ref to 'this'
  217. Bugzilla 13131: [2.066-b3] dmd: glue.c:1492: unsigned int totym(Type*): Assertion 0 failed.
  218. Bugzilla 13135: IFTI fails on partially qualified argument in some cases
  219. Bugzilla 13142: Enums on different classes confuse the compiler
  220. Bugzilla 13161: Wrong offset of extern(C++) class member
  221. Bugzilla 13175: [D1] ICE on conflicting overloads in presense of default __FILE__/__LINE__
  222. Bugzilla 13182: extern(C++) classes cause crash when allocated on the stack with scope
  223. Bugzilla 13190: Optimizer breaks comparison with zero
  224. Bugzilla 13194: ICE when static class members initialized to void
  225. Bugzilla 13195: Delete calls destructor but doesn't free
  226. Bugzilla 13204: recursive alias declaration
  227. Bugzilla 13212: Trailing Windows line endings not stripped from .ddoc macros
  228. Bugzilla 13217: nothrow, template function and delegate: compilation error
  229. Bugzilla 13225: [ICE] Access violation on invalid mixin template instantiation
  230. Bugzilla 13226: Symbol is not accessible when using traits or mixin
  231. Bugzilla 13230: std.variant.Variant Uses Deprecated .min Property in opArithmetic When T is a Floating Point Type
  232. Bugzilla 13235: Wrong code on mutually recursive tuple type
  233. Bugzilla 13260: [D1] ICE accessing non-existent aggregate member
  234. Bugzilla 13273: ddoc can't handle \r in unittests and ESCAPES properly
  235. Bugzilla 13275: Wrong di header generation on if and foreach statements

DMD Compiler enhancements

  1. Bugzilla 1553: foreach_reverse is allowed for delegates
  2. Bugzilla 1673: Implement the isTemplate trait
  3. Bugzilla 1952: Support a unit test handler
  4. Bugzilla 2025: Inconsistent rules for instantiating templates with a tuple parameter
  5. Bugzilla 2548: Array ops that return value to a new array should work.
  6. Bugzilla 3882: Unused result of pure functions
  7. Bugzilla 5070: Heap-allocated closures listing
  8. Bugzilla 6798: Integrate overloadings for multidimentional indexing and slicing
  9. Bugzilla 7747: Diagnostic should be informative for an inferred return type in a recursive call
  10. Bugzilla 7961: Add support for C++ namespaces
  11. Bugzilla 8101: Display candidate function overloads when function call fails
  12. Bugzilla 9112: Uniform construction for built-in types
  13. Bugzilla 9570: Wrong foreach index implicit conversion error
  14. Bugzilla 9616: SortedRange should support all range kinds
  15. Bugzilla 10018: Value range propagation for immutable variables
  16. Bugzilla 11345: Optimize array literal to static array assignment to not allocate on GC heap
  17. Bugzilla 11620: dmd json output should output enum values
  18. Bugzilla 11819: Implement better diagnostics for unrecognized traits
  19. Bugzilla 12232: The result of pointer arithmetic on unique pointers should be a unique pointer
  20. Bugzilla 12273: 'dmd -color' flag to colorize error/warning messages
  21. Bugzilla 12280: Redundant "template instance ... error instantiating" messages
  22. Bugzilla 12290: IFTI should consider implicit conversions of the literal arguments
  23. Bugzilla 12310: [CTFE] Support heap allocation for built-in scalar types
  24. Bugzilla 12352: Consistently stop encoding return type of parent functions
  25. Bugzilla 12550: Deprecate -noboundscheck and replace with more useful -boundscheck= option
  26. Bugzilla 12598: Poor diagnostic with local import hijacking
  27. Bugzilla 12606: Mismatch of known array length during dynamic => static array assignment should emit better diagnostics
  28. Bugzilla 12641: D1: __FILE__ and __LINE__ default argument behaviour
  29. Bugzilla 12653: Add the getFunctionAttributes trait
  30. Bugzilla 12681: Rewrite rule prevents unique detection
  31. Bugzilla 12798: constant folding should optimize subsequent concatenations
  32. Bugzilla 12802: Allow optional 'StorageClasses' for new alias syntax
  33. Bugzilla 12821: Missed redundant storage class / protection errors.
  34. Bugzilla 12932: Support @nogc for immediately iterated array literal
  35. Bugzilla 12967: Prefix method 'this' qualifiers should be disallowed in DeclDefs scope
  36. Bugzilla 13001: Support VRP for ternary operator (CondExp)
  37. Bugzilla 13138: add peek/poke as compiler intrinsics
  38. Bugzilla 13277: The base class in the JSON output is always unqualified
  39. Bugzilla 13281: Print type suffix of real/complex literals in pragma(msg) and error diagnostic

Phobos regressions

  1. Bugzilla 12332: std.json API broken without notice
  2. Bugzilla 12375: Writeln of a char plus a fixed size array of chars
  3. Bugzilla 12394: Regression: std.regex unittests take agonizingly long to run - like hours on OSX
  4. Bugzilla 12428: Regression (2.066 git-head): toUpper is corrupting input data (modifying immutable strings)
  5. Bugzilla 12455: [uni][reg] Bad lowercase mapping for 'LATIN CAPITAL LETTER I WITH DOT ABOVE'
  6. Bugzilla 12494: Regression (2.064): to!string(enum) returns incorrect value
  7. Bugzilla 12505: Null pointers are pretty-printed even when hex output is requested
  8. Bugzilla 12713: [REG 2.066A] std.regex.regex crashes with SEGV, illegal instruction resp. assertion failure with certain bad input
  9. Bugzilla 12859: Read-modify-write operation for shared variable in Phobos
  10. Bugzilla 13076: [dmd 2.066-b2] DList clearing of empty list
  11. Bugzilla 13098: std.path functions no longer works with DirEntry
  12. Bugzilla 13181: install target broken

Phobos bugs

  1. Bugzilla 1452: std.cstream doc incorrect - imports of stream and stdio are not public
  2. Bugzilla 1726: std.stream FileMode documentation problems
  3. Bugzilla 3054: multithreading GC problem. And Stdio not multithreading safe
  4. Bugzilla 3363: std.stream.readf segfaults with immutable format strings
  5. Bugzilla 3484: std.socket.Address hierarchy not const-safe
  6. Bugzilla 4330: std.range.transposed() should be documented
  7. Bugzilla 4600: writeln() is not thread-safe
  8. Bugzilla 5177: std.socketstream's close() should call super.close()
  9. Bugzilla 5538: Immutable classes can't be passed as messages in std.concurrency
  10. Bugzilla 5870: Debug code in SortedRange assumes it can always print the range
  11. Bugzilla 6644: std.stdio write/writef(ln) are not @trusted
  12. Bugzilla 6791: std.algorithm.splitter random indexes utf strings
  13. Bugzilla 6998: std.container.Array destroys class instances
  14. Bugzilla 7246: Provide a simpler example for std.algorithm.remove
  15. Bugzilla 7289: Document how std.format handles structs, unions, and hashes.
  16. Bugzilla 7693: Getopt Ignores Trailing Characters on Enums
  17. Bugzilla 7767: Unstable sort - slow performance cases
  18. Bugzilla 7822: lseek cast(int)offset should be lseek cast(off_t)offset
  19. Bugzilla 7924: reduce does not work with immutable/const as map and filter do
  20. Bugzilla 8086: std.stdio is underdocumented
  21. Bugzilla 8590: Documentation for "any" and "all" in std.algorithm is incorrect
  22. Bugzilla 8721: std.algorithm.remove problem
  23. Bugzilla 8730: writeln stops on a nul character, even if passed a D string
  24. Bugzilla 8756: Add link to location of curl static library
  25. Bugzilla 8764: chunks.transposed causes infinite ranges.
  26. Bugzilla 8866: Splitter(R1, R2) CANNOT be bidirectional.
  27. Bugzilla 8905: DList.Range: Internal error, inconsistent state
  28. Bugzilla 8921: Enum arrays should be formatted properly
  29. Bugzilla 9015: std.container.DList.opOpAssign missing return
  30. Bugzilla 9016: swap() doesn't work with std.container.DList.front and back
  31. Bugzilla 9054: std.net.curl byLineAsync and byChunkAsync broken.
  32. Bugzilla 9556: Missing underscore in docs for std.string.isNumeric
  33. Bugzilla 9878: std.algorithm.cartesianProduct results order
  34. Bugzilla 9975: pointsTo asserts because of false pointer in union
  35. Bugzilla 10500: Problem with length property when using variant
  36. Bugzilla 10502: Can't get fullyQualifiedName of a templated struct
  37. Bugzilla 10693: cartesianProduct with over 7 ranges causes segfault at compile time
  38. Bugzilla 10779: cartesianProduct leads to heavy code bloat
  39. Bugzilla 10798: std.regex: ctRegex unicode set ops unimplemented
  40. Bugzilla 10911: std.net.curl.HTTP: should allow user code to indicate content type of POST data
  41. Bugzilla 10916: toHash on VariantN not being recognised
  42. Bugzilla 10931: etc.c.zlib should properly annotate const parameters
  43. Bugzilla 10948: BitArray.opEquals is invalid
  44. Bugzilla 11017: std.string/uni.toLower is very slow
  45. Bugzilla 11072: BitArray.opCmp is invalid on 64x
  46. Bugzilla 11175: Format should support IUnknown classes
  47. Bugzilla 11183: Win64: lrint yields bad results
  48. Bugzilla 11184: Win64: killing process with invalid handle terimates current process
  49. Bugzilla 11192: std.demangle doesn't demangle alias template arguments
  50. Bugzilla 11253: std.algorithm.count is not nothrow
  51. Bugzilla 11308: Don't use Voldemort types for std.process output
  52. Bugzilla 11364: Variant fails to compile with const(TypeInfo).
  53. Bugzilla 11608: Inadequate documentation for std.getopt.config.passThrough
  54. Bugzilla 11698: readf doesn't compile with bool
  55. Bugzilla 11705: std.typecons.Typedef is missing proper documentation
  56. Bugzilla 11778: format for null does not verify fmt flags.
  57. Bugzilla 11784: std.regex: bug in set intersection
  58. Bugzilla 11825: An impossible memcpy at CTFE with cartesianProduct.array
  59. Bugzilla 11834: std.net.curl: ddoc warnings
  60. Bugzilla 11978: std.algorithm canFind uses "value" where it means "needle"
  61. Bugzilla 12007: cartesianProduct doesn't work with ranges of immutables
  62. Bugzilla 12076: ctRegex range violation
  63. Bugzilla 12148: std.uuid.parseUUID should document that it changes lvalue input data
  64. Bugzilla 12157: Variant opEquals always returns false for classes.
  65. Bugzilla 12169: sum(int[]) should return a int
  66. Bugzilla 12183: using std.algorithm.sort makes valgrind abort
  67. Bugzilla 12245: BinaryHeap exhibits quadratic performance in debug mode
  68. Bugzilla 12297: std.typecons.Proxy does not properly forward IFTI calls
  69. Bugzilla 12309: The template fullyQualifiedName returns wrong result
  70. Bugzilla 12349: std.File.flush and error causes segfault after calling close
  71. Bugzilla 12356: std.traits.isTypeTuple and isExpressionTuple are poorly documented
  72. Bugzilla 12366: Range violation in compile-time regex
  73. Bugzilla 12419: assertion failure in std.utf
  74. Bugzilla 12434: std.algorithm.sum of immutable array too
  75. Bugzilla 12449: Undefined format in std.algorithm.max
  76. Bugzilla 12464: DMD/Phobos cannot auto-implement D variadic methods
  77. Bugzilla 12477: std.bitmanip should emit informative diagnostics
  78. Bugzilla 12557: std.numeric.gcd documentation reports Euler's algorithm, but it uses Euclid's algorithm
  79. Bugzilla 12568: std.functional.memoize with constant array argument too
  80. Bugzilla 12569: Better error message for std.algorithm.reduce used with two functions and a scalar seed
  81. Bugzilla 12582: Non-existant named capture groups cause runtime range violation or segmentation fault in regex
  82. Bugzilla 12600: Variant should support coercion to bool
  83. Bugzilla 12608: Dead assignment in UUIDParsingException
  84. Bugzilla 12609: Useless variable assignment in std.regex
  85. Bugzilla 12643: @nogc std.range.dropOne
  86. Bugzilla 12668: std.traits.functionAttributes should use the new getFunctionAttributes trait
  87. Bugzilla 12691: std.regex.bmatch bug in empty OR operator inside of ()*
  88. Bugzilla 12731: Infinite range slices are not themselves sliceable
  89. Bugzilla 12747: std.regex bug in the parser allows reference to open groups.
  90. Bugzilla 12771: opIndex on static arrays in a Variant is not implemented.
  91. Bugzilla 12781: process.d: "Executable file not found" is supposed to show executable name but fails
  92. Bugzilla 12796: std.string toLower/toUpper array conversion.
  93. Bugzilla 12806: Does std.traits.isArray include associative arrays?
  94. Bugzilla 12828: Fix SimpleTimeZone.utcOffset so that it has the correct return type
  95. Bugzilla 12846: Phobos git HEAD: std.datetime spewing out tons of deprecation messages
  96. Bugzilla 12853: std.encoding EncodingSchemeUtf16Native and EncodingSchemeUtf32Native decode() and SafeDecode() wrong stripping length
  97. Bugzilla 12875: [unittest] std.datetime fails: Not a valid tzdata file.
  98. Bugzilla 12898: std.process.browse expects URL to be encoded in CP_ACP on Windows instead of UTF-8
  99. Bugzilla 12921: Module std.getopt does not respect property syntax
  100. Bugzilla 12923: UTF exception in stride even though passes validate.
  101. Bugzilla 12996: SList: linearRemove cannot remove root node
  102. Bugzilla 13000: Casts should be removed to utilize features of inout
  103. Bugzilla 13068: std.typecons.Unique should disable postblit
  104. Bugzilla 13100: std.process.setCLOEXEC() throws on invalid file descriptor
  105. Bugzilla 13151: std.range.take template constraint ambiguity
  106. Bugzilla 13163: std.conv.parse misses overflow when it doesn't result in a smaller value
  107. Bugzilla 13171: std.algorithm.until(range, sentinel, OpenRight.no) doesn't propagate popping of sentinel to range
  108. Bugzilla 13214: array.opSlice one element falsy empty
  109. Bugzilla 13258: std.process file closing logic is incorrect
  110. Bugzilla 13263: phobos/posix.mak has incorrect dependencies

Phobos enhancements

  1. Bugzilla 3780: getopt improvements by Igor Lesik
  2. Bugzilla 4725: std.algorithm.sum()
  3. Bugzilla 4999: Add Kenji Hara's adaptTo() to Phobos
  4. Bugzilla 5175: Add a way to get parameter names to std.traits
  5. Bugzilla 5228: Add GetOptException (or similar) to std.getopt
  6. Bugzilla 5240: Faster std.random.uniform() for [0.0, 1.0) range
  7. Bugzilla 5316: std.getopt: Add character-separated elements support for arrays and associative arrays
  8. Bugzilla 5808: std.string.indexOf enhancement with start-at parameter
  9. Bugzilla 6793: Document that assumeUnique may not be necessary in some contexts
  10. Bugzilla 7146: enhance strip* (implementation provided)
  11. Bugzilla 8278: std.range.chunks for generic Forward Ranges?
  12. Bugzilla 8762: instanceOf trait for static conditionals
  13. Bugzilla 9819: Allow access to named tuple's names.
  14. Bugzilla 9942: Add a functional switch function
  15. Bugzilla 10162: Opposite of std.string.representation
  16. Bugzilla 11598: std.random.uniform could be faster for integrals
  17. Bugzilla 11876: std.getopt: Implement --help and --help=option automatic printout
  18. Bugzilla 12015: std.digest.sha256 too
  19. Bugzilla 12027: Range of true bits for std.bitmanip.BitArray
  20. Bugzilla 12173: Optional start value for std.algorithm.sum
  21. Bugzilla 12184: Provide formating options for std.uni.InversionList
  22. Bugzilla 12446: std.parallelism.amap prefer iteration to indexing
  23. Bugzilla 12448: "in" argument for std.string.toStringz
  24. Bugzilla 12479: replace "pointsTo" with "maybePointsTo" and "definitlyPointsTo"
  25. Bugzilla 12556: Add persistent byLine
  26. Bugzilla 12566: Give DList true reference semantics
  27. Bugzilla 12596: Implement Typedef ctor that can take itself as a parameter
  28. Bugzilla 12633: std.conv.to should support target fixed-sized arrays
  29. Bugzilla 12644: Some std.math functions are not yet @nogc
  30. Bugzilla 12656: Some functions in std.ascii can be @nogc
  31. Bugzilla 12671: std.complex abs and ^^ @nogc
  32. Bugzilla 12784: Add an "in" operator for std.json.JSONValue
  33. Bugzilla 12835: std.random.uniform with open lower bound cannot support smaller integral types or character types
  34. Bugzilla 12877: std.random.uniform cannot handle dchar variates
  35. Bugzilla 12886: std.datetime cannot parse HTTP date
  36. Bugzilla 12890: std.array index based replace
  37. Bugzilla 12957: std.algorithm.cartesianProduct is sometimes very slow to compile
  38. Bugzilla 13013: Failed unittests in std.json - does not parse doubles correctly
  39. Bugzilla 13022: std.complex lacks a function returning the squared modulus of a Complex
  40. Bugzilla 13042: std.net.curl.SMTP doesn't send emails with libcurl-7.34.0 or newer
  41. Bugzilla 13159: std.socket.getAddress allocates once per DNS lookup hit

Druntime regressions

  1. Bugzilla 12220: [REG2.066a] hash.get() does not accept proper parameters
  2. Bugzilla 12427: Regression (2.066 git-head): Building druntime fails with -debug=PRINTF
  3. Bugzilla 12710: Bad @nogc requirement for Windows callbacks
  4. Bugzilla 12738: core.sys.posix.signal sigaction_t handler type mismatch
  5. Bugzilla 12848: [REG2.061] crash in _d_run_main() on some unicode command line argument (Win32)
  6. Bugzilla 13078: [dmd 2.066-b2] AA rehash failed with shared
  7. Bugzilla 13084: ModuleInfo.opApply delegate expects immutable parameter
  8. Bugzilla 13111: GC.realloc returns invalid memory for large reallocation
  9. Bugzilla 13148: ModuleInfo fields are unnecessary changed to const

Druntime bugs

  1. Bugzilla 4323: std.demangle incorrectly handles template floating point numbers
  2. Bugzilla 5892: Lazy evaluation of stack trace when exception is thrown
  3. Bugzilla 7954: x86_64 Windows fibers do not save nonvolatile XMM registers
  4. Bugzilla 8607: __simd and pcmpeq should be @safe pure nothrow
  5. Bugzilla 9584: Exceptions in D are ludicrously slow (far worse than Java)
  6. Bugzilla 10380: [AA] Wrong code using associative array as key type in associative array
  7. Bugzilla 10897: btc, btr and bts shouldn't be safe
  8. Bugzilla 11011: core.time.Duration has example code which cannot compile
  9. Bugzilla 11037: [AA] AA's totally broken for struct keys with indirection
  10. Bugzilla 11519: fix timing issue in core.thread unittest
  11. Bugzilla 11761: aa.byKey and aa.byValue are not forward ranges
  12. Bugzilla 12800: Fibers are broken on Win64
  13. Bugzilla 12870: No x86_64 optimized implementation for float array ops
  14. Bugzilla 12958: core.checkedint.mulu is broken
  15. Bugzilla 12975: posix.mak should use isainfo on Solaris systems to determine model
  16. Bugzilla 13057: posix getopt variables in core/sys/posix/unistd.d should be marked __gshared
  17. Bugzilla 13073: Wrong uint/int array comparison

Druntime enhancements

  1. Bugzilla 8409: Proposal: implement arr.dup in library
  2. Bugzilla 12964: dev_t is incorrectly defined in runtime for Solaris systems
  3. Bugzilla 12976: ModuleInfo should be immutable on Solaris
  4. Bugzilla 12977: lf64 definitions aren't correct on Solaris
  5. Bugzilla 12978: struct sigaction is too small on 32-bit solaris
  6. Bugzilla 13037: SIGRTMIN and SIGRTMAX aren't correctly defined on Solaris
  7. Bugzilla 13144: Add fenv support for Solaris
  8. Bugzilla 13145: Need LC_ locale values for Solaris
  9. Bugzilla 13146: Add missing function definitions from stdlib.h on Solaris

Installer regressions

  1. Bugzilla 13004: /? option to cl.exe results in ICE
  2. Bugzilla 13047: cannot stat ./icons/16/dmd-source.png: No such file or directory
  3. Bugzilla 13210: libphobos2.so not being built
  4. Bugzilla 13233: Windows installer: downloading external installers (Visual D/dmc) does not work

Installer bugs

  1. Bugzilla 3319: DInstaller overwrites the %PATH% variable
  2. Bugzilla 5732: Windows installer creates incorrect target for Start menu link
  3. Bugzilla 13149: released libphobos2.a is build with PIC code

Website regressions

  1. Bugzilla 12813: Parser is confused between float and UFC syntax

Website bugs

  1. Bugzilla 1497: Add a link to the DWiki debuggers page
  2. Bugzilla 1574: DDoc documentation lacks macro examples
  3. Bugzilla 3093: Object.factory has incomplete documentation
  4. Bugzilla 4164: sieve Sample D Program -- need documentation for array representation
  5. Bugzilla 6017: std.algorithm.remove has a wrong link
  6. Bugzilla 7075: overloading opAssign for classes is poorly specified
  7. Bugzilla 7459: Document the workarounds for mutually-called nested functions.
  8. Bugzilla 8074: template-mixin example contradicts text
  9. Bugzilla 8798: Tuple curry example not really curry
  10. Bugzilla 9542: Broken link on std.range doc page
  11. Bugzilla 10033: Wrong example in chapter Vector Extensions
  12. Bugzilla 10231: Spec: Document typed alias parameter feature
  13. Bugzilla 10297: Memory safe D spec is out of date
  14. Bugzilla 10564: Errors on the Template page of the language specification
  15. Bugzilla 10764: bug reporting / better linking to issue tracker / include resolved in default search
  16. Bugzilla 10901: Win_64 Autotester KO'd
  17. Bugzilla 11104: Document exact behavior of structsasd initialization inside AA
  18. Bugzilla 11396: Function alias declaration not valid according to spec
  19. Bugzilla 11462: std.algorithm.multiSort is missing from the index
  20. Bugzilla 11638: Variadic function documentation, out-of-date example
  21. Bugzilla 11846: Missing pragma/(mangle) documentation
  22. Bugzilla 11867: Documentation for new package.d feature
  23. Bugzilla 11917: Stale Phobos documentation pages found on site root
  24. Bugzilla 11979: inout const is not documented
  25. Bugzilla 12005: DDoc example refers to a dead project, yet a more recent one exists that is not mentioned.
  26. Bugzilla 12241: Document change to static opCall in changelog
  27. Bugzilla 12293: forward is missing from std.algorithm's cheat-sheet
  28. Bugzilla 12459: Bugzilla logs users in only on https site, and does not redirect from http to https
  29. Bugzilla 12526: DDox possible issue with case sensitive file names
  30. Bugzilla 12535: The language introduction page is not linked from index
  31. Bugzilla 12538: ZeroBUGS links are broken
  32. Bugzilla 12607: Document that IUnknown classes must mark toString with extern(D) when overriding it
  33. Bugzilla 12623: Special lexing case not mentioned in language spec
  34. Bugzilla 12740: DMD accepts invalid version syntax
  35. Bugzilla 13012: Open bugs chart is missing from https://dlang.org/bugstats.php

Website enhancements

  1. Bugzilla 8103: Use case-insensitive sorting for Jump-to lists in the documentation
  2. Bugzilla 12783: Adding 'Third Party Libraries' link to the navigation sidebar
  3. Bugzilla 12858: Document opEquals usage in AAs
previous version: 2.065.0 – next version: 2.066.1