Change Log: 2.066.0 - D Programming Language
Description: D Programming Language
Keywords: D programming language

Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Forums
  - IRC
  - Community Discord
  - Wiki
  - GitHub
  - Issues
  - Get involved
  - Contributors
  - Foundation
  - Security Team
  - Donate
  - Sponsors
- Resources
  - Tour
  - Books
  - Tutorials
  - Tools
  - Editors
  - IDEs
  - run.dlang.io
  - Visual D
  - Acknowledgments
  - D Style
  - Glossary
  - Sitemap

Search
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

Download D 2.066.0
released August 18, 2014

#### Compiler Changes

1. -w now warns about an unused return value of a strongly pure nothrow function call.
2. -noboundscheck has been deprecated in favor of boundscheck=[on|safeonly|off].
3. -vgc was added to list GC allocation code positions in the code.
4. -vcolumns was added to display column numbers in error messages.
5. -color was added to make console output colored.

#### Language Changes

1. @nogc attribute was added.
2. extern (C++, namespace) was added.
3. Operator overloading for multi-dimensional slicing was added.
4. __traits(getFunctionAttributes) was added.
5. Support template parameter deduction for arguments with a narrowing conversion.
6. Read-Modify-Write operations on shared variables are now deprecated.
7. Support uniform construction syntax for built-in scalar types.

#### Library Changes

1. Duration.get and its wrappers have been deprecated in favor of the new Duration.split.
2. Some built-in type properties have been replaced with library functions.
3. Associative array keys now require equality instead of order comparison.

#### 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

Copyright © 1999-2023 by the D Language Foundation | Page generated by Ddoc on Wed Nov 1 19:30:51 2023