Change Log: 2.067.0 - D Programming Language

Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Calendar
  - Forums
  - IRC
  - 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.067.0

Download D 2.067.0
released Mar 24, 2015

#### Language Changes

1. Destructors for structs allocated on the heap are now invoked.
2. asm statements can now be used in pure, nothrow, @nogc, or @trusted code.
3. package protection attribute can be optionally bound to specified package
4. Sealed references were added (DIP25)
5. The with statement now observes temporary object lifetime

#### Library Changes

1. The garbage collector got faster.
2. volatileLoad and volatileStore intrinsics were added.
3. Experimental: The garbage collector can now be configured.
4. byKeyValue was added.
5. initOnce was added to perform thread-safe lazy initialization.
6. A new range algorithm enumerate was added to attach indexes to range elements.
7. A new range algorithm handle was added to enable exception handling in range compositions.
8. An experimental logging system was added.

List of all bug fixes and enhancements in D 2.067.

#### Language Changes

1. Destructors for structs allocated on the heap are now invoked.

   Previously, when a struct allocated on the heap was freed, the destructor was not invoked. This is no longer the case, and these destructors will now be invoked before the memory is freed by the GC.

2. asm statements can now be used in pure, nothrow, @nogc, or @trusted code.

   By adding the appropriate attributes to an asm statement you can tell the compiler how that asm code behaves, thus allowing asm statements to be used in pure, nothrow, @nogc, or @safe functions.

       asm pure nothrow @nogc @trusted
       {
           // the compiler does not check the attributes
           ret;
       }

3. package protection attribute can be optionally bound to specified package

   New optional syntax was added for package protection attribute:

       module aaa.bbb.ccc.ddd;

       // accessible from any module with aaa.bbb in qualified path
       package(aaa.bbb) void foo() {}

       // old style, means same as package(aaa.bbb.ccc)
       package void bar() {}

4. Sealed references were added (DIP25)

   In @safe functions it is now required to use return ref to return a reference to a parameter or a field of it.

       @safe:
       ref int fun(ref int a) { return a; } // ERROR
       ref int gun(return ref int a) { return a; } // FINE
       ref T hun(T)(ref T a) { return a; } // FINE, templates use deduction

   See DIP25 for more details.

5. The with statement now observes temporary object lifetime

   A longstanding bug of the with statement was fixed which prevented the idiomatic use of RAII values.

       with (File("output.log", "w"))
       {
           writeln("Content");
       }
       // File is automatically closed

#### Library Changes

1. This release comes with various GC optimizations that make many applications faster.

   A new GC growth policy was implemented that helps to reduce the number of collections by keeping a collection threshold at 2x the size of the used memory. After each collection the used memory and the threshold are recomputed. This allows for an exponential growth of the GC heap, e.g. during program startup, but limits the heap size relative to the actual used memory. The factor 2x is configurable by setting heapSizeFactor.

   The heap traversal during the marking phase is now done using tail recursion with a separate compact state stack. This allows to mark very deep heaps (lists) much faster because the previous recursion limit of 50 is eliminated.

   You can see a list of all improvements here.

2. volatileLoad and volatileStore intrinsics were added.

   Calls to volatileLoad and volatileStore are recognized by the compiler and guaranteed to not be removed or reordered in the same thread.

       void example(uint* address, uint value)
       {
           import core.bitop;

           // store value
           volatileStore(address, value);

           // wait until value takes affect
           while (volatileLoad(address) != value)
           { }
       }

   Note: These intrinsics are currently in core.bitop, but will be moved to core.volatile when volatile is no longer a keyword.

3. Experimental: The garbage collector can now be configured through the command line, the environment or by options embedded into the executable.

   By default, GC options can only be passed on the command line of the program to run, e.g.

       app "--DRT-gcopt=profile:1 minPoolSize:16" arguments to app

   Available GC options are:

   - disable:0|1 - start disabled
   - profile:0|1 - enable profiling with summary when terminating program
   - initReserve:N - initial memory to reserve in MB
   - minPoolSize:N - initial and minimum pool size in MB
   - maxPoolSize:N - maximum pool size in MB
   - incPoolSize:N - pool size increment MB
   - heapSizeFactor:N - targeted heap size to used memory ratio

   In addition, --DRT-gcopt=help will show the list of options and their current settings.

   Command line options starting with "--DRT-" are filtered out before calling main, so the program will not see them. They are still available via rt_args().

   Configuration via the command line can be disabled by declaring a variable for the linker to pick up before using its default from the runtime:

       extern(C) __gshared bool rt_cmdline_enabled = false;

   Likewise, declare a boolean rt_envvars_enabled to enable configuration via the environment variable "DRT_GCOPT:

       extern(C) __gshared bool rt_envvars_enabled = true;

   Setting default configuration properties in the executable can be done by specifying an array of options named rt_options:

       extern(C) __gshared string[] rt_options = [ "gcopt=initReserve:100 profile:1" ];

   Evaluation order of options is rt_options, then environment variables, then command line arguments, i.e. if command line arguments are not disabled, they can override options specified through the environment or embedded in the executable.

4. byKeyValue was added.

   Built-in associative arrays now have a .byKeyValue method that returns a forward range iterating over key/value pairs.

       void main()
       {
           auto aa = ["a": 1];
           foreach (pair; aa.byKeyValue)
           {
               assert(pair.key == "a");
               assert(pair.value == 1);
           }
       }

5. enumerate was added.

   enumerate enables iteration of ranges with an index variable:

       void main()
       {
           import std.stdio : stdin, stdout;
           import std.range : enumerate;

           foreach (lineNum, line; stdin.byLine().enumerate(1))
               stdout.writefln("line #%s: %s", lineNum, line);
       }

6. handle was added.

   handle enables exception handling in range compositions:

       import std.algorithm : equal;
       import std.range : retro;
       import std.utf : UTFException;

       auto str = "hello\xFFworld"; // 0xFF is an invalid UTF-8 code unit

       auto handled = str.handle!(UTFException, RangePrimitive.access,
               (e, r) => ' '); // Replace invalid code points with spaces

       assert(handled.equal("hello world")); // `front` is handled,
       assert(handled.retro.equal("dlrow olleh")); // as well as `back`

7. An experimental logging system was added.

       import std.experimental.logger;

       void main()
       {
           log("message logging in D");
       }

List of all bug fixes and enhancements in D 2.067:

#### DMD Compiler regressions

1. Bugzilla 4890: GC.collect() deadlocks multithreaded program.
2. Bugzilla 12381: [REG2.065] [ICE] An internal error in e2ir.c while casting array ops
3. Bugzilla 12422: [REG2.055] Templated nested function is inferred as pure even if it calls impure functions
4. Bugzilla 12912: Lambda function is incorrectly inferred as impure if it uses member field or function
5. Bugzilla 13009: [REG2.064] inout overload conflicts with non-inout when used via alias this
6. Bugzilla 13311: [REG2.065] ICE, CtorDeclaration::semantic(Scope*): Assertion `tf && tf->ty == Tfunction' failed
7. Bugzilla 13479: [REG2.067a] Templates not emitted when instantiated in mixins mixed in functions
8. Bugzilla 13497: [REG2.065] [ICE e2ir 1911] Array op compiler error
9. Bugzilla 13498: Return type is not checked in function template
10. Bugzilla 13502: [REG2.065] Stray '(' warning not emitted for documentation of enum templates
11. Bugzilla 13503: [REG2.065] Bad code with -inline, varargs and auto return
12. Bugzilla 13514: Druntime no longer builds with -g
13. Bugzilla 13515: [REG2.064] "Range violation" when writing to array of AAs from static this
14. Bugzilla 13550: [REG2.067a] Inner functions take outer function attributes erroneously
15. Bugzilla 13564: [REG2.065] nested struct destructor trying to access members of a global class fail to compile
16. Bugzilla 13601: [REG2.064] static if (__ctfe) should emit error
17. Bugzilla 13640: [REG2.066] can break immutability with inout
18. Bugzilla 13644: [REG2.066] ICE with foreach over array of Tuples
19. Bugzilla 13673: ICE(backend/cod2.d 5114)
20. Bugzilla 13675: enum type used with template causes compiler to segfault
21. Bugzilla 13694: Typesafe variadic function template overload fails to match to any template
22. Bugzilla 13714: [REG2.066.1] Assertion failure: '0' on line 2022 in file 'mtype.c'
23. Bugzilla 13729: [REG2.067a] One not detected case of not purity
24. Bugzilla 13760: [REG2.067a] Cannot deduce function for object.get
25. Bugzilla 13775: [REG2.067a] Broken explicit casting of dynamic array slices of known size to static array of different type
26. Bugzilla 13776: [REG2.067a] Incorrect "recursive alias declaration" error with __traits(compiles, ...)
27. Bugzilla 13807: [REG2.067a] inout(T)[] no longer matches string[]
28. Bugzilla 13827: [REG2.067a] Internal Compiler Error: null field
29. Bugzilla 13840: [REG2.067a] nothrow attribute affects inside of try-catch block when using foreach with opApply
30. Bugzilla 13864: [REG2.066] tuple expand causes range violation
31. Bugzilla 13873: 2.066.1 Compiling with -debug -inline generates huge files
32. Bugzilla 13886: [REG2.066] global.gaggedErrors ICE
33. Bugzilla 13921: ICE with template instantiation error
34. Bugzilla 13934: Cannot pass 'this' to function by reference
35. Bugzilla 13937: C++ mangling for template negative parameter not correct for dmc
36. Bugzilla 13942: [REG2.066] Bad template error message
37. Bugzilla 13950: [REG2.062] zero-length tuple does not work on function default argument
38. Bugzilla 13952: [REG2.067a] change in struct ctor lowering triggers codegen bug
39. Bugzilla 13966: [REG2.067a] dmd: expression.c:3761: size_t StringExp::length(int): Assertion `encSize == 1 || encSize == 2 || encSize == 4' failed.
40. Bugzilla 13968: [REG2.067a] constructing and returing union causes segfault
41. Bugzilla 13969: [REG2.063] [ICE] (backend\cgcod.c 2309) with cycle(iota(a,b,s))
42. Bugzilla 13992: [REG2.067a] CTFE produces strange error with += operator on integer type
43. Bugzilla 13998: Wrong code with -O -inline, loops, and taking address of double
44. Bugzilla 13999: [REG2.067a] Associative array literal with static array keys must now have matching key lengths
45. Bugzilla 14038: [REG2.067a] Non-mutable AA initialization segfaults in runtime
46. Bugzilla 14039: [REG2.067a] function is incorrectly inferred as 'pure'
47. Bugzilla 14044: dmd generates spurious functions in object file created from empty module
48. Bugzilla 14049: [REG2.064] Wrong purity inference for nested lambda
49. Bugzilla 14057: [REG2.066] opSlice not working correctly with AliasThis
50. Bugzilla 14061: Refused array concat at compile-time
51. Bugzilla 14074: [REG2.067a] non-separate compilation fails, but separate compilation works
52. Bugzilla 14075: [REG2.067a] Segfault with ambiguous overloading functions without body
53. Bugzilla 14089: [REG2.064] Assigning to AA has no value when overriding opAssign
54. Bugzilla 14090: [REG2.067a] Incorrect "recursive alias declaration"
55. Bugzilla 14093: [REG2.065] __traits(compiles, cast(Object)(tuple)) is true even if it doesn't compile.
56. Bugzilla 14104: aa with pointer key type doesn't find existing value
57. Bugzilla 14106: sort is @safe in release mode, @system in debug mode
58. Bugzilla 14109: [REG2.066.1] Property-like function call does not work on template value parameter
59. Bugzilla 14126: GITHEAD - GC seemingly corrupting memory
60. Bugzilla 14130: [REG2.067a] ICE following error in template parameter default value
61. Bugzilla 14144: [REG2.067a] opAssign seems broken
62. Bugzilla 14146: [REG2.067a] ICE with non-empty default constructor in struct
63. Bugzilla 14155: [REG2.066] A defect in DIP29: the return value of some pure functions cannot be unique pointer
64. Bugzilla 14160: [REG2.066] mutable global data access is wrongly accepted in pure function
65. Bugzilla 14166: [REG2.066] Excess CTFE running for the temporary variable in module level expression
66. Bugzilla 14169: Template symbol visibility regression
67. Bugzilla 14173: [REG2.064] Omitting return type with override hides an error
68. Bugzilla 14177: [REG2.066.1] ICE(statement.c) recursive aliases
69. Bugzilla 14198: [REG2.067a] Link failure with Variant
70. Bugzilla 14199: [REG2.067a] Dwarf Error: mangled line number section
71. Bugzilla 14218: [REG2.067a] casting null to integer type causes error message
72. Bugzilla 14220: Bad codegen for optimized std.conv.text in combination with concatenation
73. Bugzilla 14232: redundant attribute 'const'
74. Bugzilla 14235: [REG2.066] full-qualified template instantiation misses its error location
75. Bugzilla 14262: [REG] [2.067-b3] Can't use class this as ref argument
76. Bugzilla 14267: [REG2.067beta2] ICE when determining if a function can be inlined
77. Bugzilla 14283: [2.067-b4]: Spurious "this is not an lvalue" deprecation message for "auto ref" arguments
78. Bugzilla 14285: [REG2.063] alias this to nothing is accepted
79. Bugzilla 14299: [REG2.067.0-rc1] "ref" parameter in CTFE handled incorrectly for recursive calls
80. Bugzilla 14301: [2.067-rc1] Private symbols of module conflicts with public from another
81. Bugzilla 14304: [REG2.067a] ICE with static immutable variable CTFE
82. Bugzilla 14317: [REG2.066] ICE (cgcod.c 1767) when compiing with -profile -O -inline

#### DMD Compiler bugs

1. Bugzilla 1625: CTFE: cannot evaluate function when return type includes a union
2. Bugzilla 1829: Inline assembler cannot get label addresses
3. Bugzilla 2644: Unresolved template reference
4. Bugzilla 2834: Struct Destructors are not called by the GC, but called on explicit delete.
5. Bugzilla 3022: scope x = new Foo; does not allocate on stack if Foo has allocator
6. Bugzilla 3918: Parameter use before its use in an AndAnd expression with reals treats NaN as false
7. Bugzilla 4062: can call method without this pointer inside is()
8. Bugzilla 4103: opAssign signature rules not enforced on templated opAssign
9. Bugzilla 4149: refs displayed as pointers in gdb
10. Bugzilla 4181: GDB prints wrong value of TLS variables
11. Bugzilla 5314: Wrong error message: struct within immutable member and postblit function
12. Bugzilla 5908: Optimizer generates wrong value with divide-by-zero.
13. Bugzilla 6423: Garbage is returned from void main()
14. Bugzilla 6565: out 2D fixed-sized array
15. Bugzilla 6574: Erroneous recursive call in template instantiation
16. Bugzilla 6810: Strange tuple used as a type error
17. Bugzilla 7104: linker error on void main(){ typeof(new class{}) c; c = new typeof(c); }
18. Bugzilla 7151: [CTFE] cannot compare classes with ==
19. Bugzilla 7465: Duplicate error message for bad template mixin
20. Bugzilla 7874: [CTFE] internal error: unsupported assignment (x OP= y) = z
21. Bugzilla 7942: Appending different string types corrupts memory
22. Bugzilla 8246: tuple fields pollute the linker namespace
23. Bugzilla 8425: Missing line number and module name that can't use core.simd
24. Bugzilla 9047: Expression requiring std.math fails with function-local import
25. Bugzilla 9148: 'pure' is broken
26. Bugzilla 9537: auto ref returns a reference its own stack
27. Bugzilla 9554: Inconsistent stringof and mangleof result for module/package identifier
28. Bugzilla 9581: Exceptions are too slow
29. Bugzilla 9620: Error messages of failed pure enforcement
30. Bugzilla 9685: Context pointer of struct isn't copied when a closure is passed by alias
31. Bugzilla 9728: Ddoc anchors non-unique across overloads
32. Bugzilla 9906: filter of static opCall
33. Bugzilla 10307: Bad error message for not supported array operation
34. Bugzilla 10311: gdb prints wrong value for variable updated from closure
35. Bugzilla 10528: Private constant (enum) properties not private
36. Bugzilla 10855: Missing dmd.conf for FreeBSD in DMD 2.063.2 release
37. Bugzilla 10915: std.typecons.Nullable throws in writeln() if it's null
38. Bugzilla 10920: template instantiation order dependent link failure problem
39. Bugzilla 11042: Inconsistent "static condition" behaviors
40. Bugzilla 11260: Assertion `type->ty != Tstruct || ((TypeStruct *)type)->sym == this' failed
41. Bugzilla 11355: Copy through alias this with @disabled this(this)
42. Bugzilla 11467: [CTFE] Overlapping array copy is allowed in CT
43. Bugzilla 11746: invalid enum forward reference pattern not detected
44. Bugzilla 11888: Incorrect behaviour taking slice from return value
45. Bugzilla 11902: DMD debuginfo doesn't seem to write classes correctly
46. Bugzilla 11915: Inconsistent overload resolution behaviour between ref and out
47. Bugzilla 11916: [IFTI] Disabled by constraint overload with out with IFTI breaks overload resolution
48. Bugzilla 12092: Wrong TLS access in PIC code (X86_32)
49. Bugzilla 12130: Segmentation fault if HOME environment variable does not exist
50. Bugzilla 12163: pdb debugging (win64): stepping loops points to incorrect lines
51. Bugzilla 12447: variadic template functions hijack all eponymous enum and alias template overloads
52. Bugzilla 12495: CTFE slice cast can cause allocation
53. Bugzilla 12500: ICE in codegen when multiplying an incremented size_t by a double
54. Bugzilla 12502: Some static array casts incorrectly rejected in safe code
55. Bugzilla 12531: forward reference with nested struct
56. Bugzilla 12579: DMD rejects valid function literal
57. Bugzilla 12636: extern(C++) class that implements D interface segfaults
58. Bugzilla 12741: DMD accepts functions with contracts and no body
59. Bugzilla 12776: Wrong type for __vector(int[4]).init
60. Bugzilla 12780: Multiplying integer array by scalar double fails
61. Bugzilla 12827: [ICE] Segfault on immutable field self-initialization
62. Bugzilla 12871: inner function returning pointer to outer context local rejected
63. Bugzilla 12908: [AA] foreach by keys and values over associative array in pure function allow impure function calls
64. Bugzilla 12979: Nothrow violation error is hidden by inline assembler
65. Bugzilla 12983: overload not recognized depending on order of declaration
66. Bugzilla 13028: [ICE] CTFE internal error: cannot evaluate at compile time
67. Bugzilla 13064: Redundant auto storage class is allowed for functions
68. Bugzilla 13095: Sometimes struct destructor is called if constructor throws
69. Bugzilla 13120: Body of foreach over string with transcoding ignores function attributes
70. Bugzilla 13200: Assertion `protName' failed
71. Bugzilla 13236: Invalid recursive struct field error not gagged in 'is'-expression
72. Bugzilla 13280: this.sizeof rejected as static array length in some cases
73. Bugzilla 13289: wchar and dchar C++ mangling is incorrect
74. Bugzilla 13295: [CTFE] Modifications of const user type disappear
75. Bugzilla 13297: [CTFE] Modifications of user type pointer member passed by ref in function disappear
76. Bugzilla 13320: Redundant error messages for missing operation on struct instance
77. Bugzilla 13336: auto ref return deduced to be ref despite return value coercion
78. Bugzilla 13337: Invalid extern C++ namespace resolution
79. Bugzilla 13356: [ICE] (dmd 2.066: statement.c:754) with recursive Algebraic
80. Bugzilla 13361: Empty UDA accepted
81. Bugzilla 13382: [e2ir] compare string to int - leads to ICE in e2ir.c 1902
82. Bugzilla 13385: ICE with new package(names) protection
83. Bugzilla 13403: [ICE][2.067Alpha] Internal error: backend\type.c 332 with new package protection extension.
84. Bugzilla 13434: [ICE] indexing array with empty tuple causes dmd segfault
85. Bugzilla 13437: [e2ir] ICE in e2ir.c 4616
86. Bugzilla 13459: segfault in two auto opSlices()
87. Bugzilla 13465: Segfault by eager semantic2 running in template instantiation
88. Bugzilla 13468: Wrong code when comparing class reference with typeof(null)
89. Bugzilla 13481: bug with inferring attributes from built-in properties
90. Bugzilla 13484: Template type deduction from delegate parameter fails
91. Bugzilla 13485: FP wrong-code with -O
92. Bugzilla 13490: Can't append to array of structs with alias this as lvalue ternary opoerator result
93. Bugzilla 13505: No line number with void array in class
94. Bugzilla 13508: array vararg function safety not inferred
95. Bugzilla 13521: [D1] -di disables declaration shadowing message
96. Bugzilla 13528: Internal Compiler Error: CTFE DotType:
97. Bugzilla 13530: [REG 2.066] D Inline Assembler in nothrow function hides errors
98. Bugzilla 13539: Disallow optional template parameters with C-style syntax
99. Bugzilla 13563: ICE with opIndexAssign op-overloading and ModuleScopeOperator
100. Bugzilla 13574: incorrect code for assignment to dollar in slice expression
101. Bugzilla 13583: Inconsistent naming of template arguments in debug symbols
102. Bugzilla 13586: Destructors not run when argument list evaluation throws
103. Bugzilla 13599: [D1] backend/cod1.c ICE with -inline
104. Bugzilla 13600: ICE in dwarf.c line 1949 with -g enabled and lazy void parameter
105. Bugzilla 13612: Wrong 'this' variable accessed in recursive ctfe member function
106. Bugzilla 13613: Pragma msg affects data structure layout
107. Bugzilla 13630: Senseless error with foreach over variadic list
108. Bugzilla 13645: Incorrect ddoc generation for deprecated module
109. Bugzilla 13661: static array init does not call destructors
110. Bugzilla 13666: Undefined Symbols for __gshared data symbols in templates
111. Bugzilla 13668: [ICE] unable to compile __traits(allMembers...)
112. Bugzilla 13669: [CTFE] Destructor call on static array variable is not yet supported in CTFE
113. Bugzilla 13679: foreach_reverse is allowed for AAs
114. Bugzilla 13701: [REG2.061] Associative array values ignore immutability
115. Bugzilla 13707: msvc32 C++ struct return ABI not followed for structs with constructors
116. Bugzilla 13739: in CTFE making an array over an array copies the data
117. Bugzilla 13740: CTFE fails ref foreach over range
118. Bugzilla 13747: Linux CMSG_NXTHDR is private, since alias doesn't change protection level
119. Bugzilla 13757: [CTFE] extern(C) alias declaration does not work in CTFE
120. Bugzilla 13779: gdb can't find frame base when using ld.gold
121. Bugzilla 13783: Function overload with rvalue inout parameter not selected when enum parameter implicitly converted to its base type
122. Bugzilla 13784: Wrong code with modulo operation and optimisations enabled
123. Bugzilla 13787: Error without line number when slicing function pointer
124. Bugzilla 13788: dmd segfault, pragma(mangle) and a mixin
125. Bugzilla 13795: DMD ICE segfault compiling druntime
126. Bugzilla 13831: DMD crash on newing struct with overlapped fields in CTFE
127. Bugzilla 13832: delegates that return ref do not output correctly to .di file
128. Bugzilla 13835: ICE in interpret.c:736 - Issue with static variables.
129. Bugzilla 13841: infinite loop in compiler on simd arithmetic
130. Bugzilla 13843: Issue when passing a delegate as an class alias template parameter
131. Bugzilla 13847: CTFE internal error: dottype
132. Bugzilla 13858: Wrong warning about unreachable code with break/goto case
133. Bugzilla 13860: template required forward reference for typeof(member)
134. Bugzilla 13861: compiler segfault with nested struct, cannot access frame
135. Bugzilla 13874: Invalid FunctionTypeOf segfault the compiler
136. Bugzilla 13879: Default inizialization of function pointers array
137. Bugzilla 13884: No error line number with std.array.array of range of type tuples
138. Bugzilla 13899: Unwanted warning for pure opApply
139. Bugzilla 13902: Compiler allows escaping the address of part of a local
140. Bugzilla 13907: Surrogate pairs in wchar string literal will cause incorrect length match
141. Bugzilla 13910: Internal error: e2ir.c 1926
142. Bugzilla 13932: c++ mangling for template negative int parameter
143. Bugzilla 13938: IASM shouldn't be able to access TLS variables
144. Bugzilla 13939: IASM shouldn't access global symbol with PIC code
145. Bugzilla 13947: Padding in empty structs is compared
146. Bugzilla 13955: 64 bit C ABI not followed for passing structs with mixed floating types
147. Bugzilla 13956: 64 bit C ABI not followed for passing empty structs
148. Bugzilla 13959: ICE in e2ir when casting struct to pointer
149. Bugzilla 13977: Front-end optimizer bug in AndAndExp
150. Bugzilla 13978: Front-end optimizer bug in OrOrExp
151. Bugzilla 13982: D1: wrong template instantiation is not rejected
152. Bugzilla 13987: Invalid struct segfaults
153. Bugzilla 14009: iasm parser accepts incorrect AsmExp
154. Bugzilla 14010: Support mangleof property for opaque enum and struct type
155. Bugzilla 14016: Nested inherited class doesn't know the type of its outer object
156. Bugzilla 14022: [CTFE] postblits/destructors not called on static array field assignment
157. Bugzilla 14023: [CTFE] postblits/destructors not called on static array index assignment
158. Bugzilla 14024: [CTFE] unstable postblit/destructor call order on static array assignment
159. Bugzilla 14028: [CTFE] Possible reinterpret cast to a pointer to static array
160. Bugzilla 14050: dmd -v lists imports from failed __traits(compiles) blocks
161. Bugzilla 14055: CTFE internal error with uninitialized array: Assertion failure: '0' on line 318 in file 'interpret.c'
162. Bugzilla 14083: Remained unresolved forward reference issue with template classes
163. Bugzilla 14096: ICE in toir.c: 187
164. Bugzilla 14116: Assertion failure: 'p->isPkgMod == PKGmodule' on line 143 in file 'import.c'
165. Bugzilla 14132: [ICE] error on arrays
166. Bugzilla 14141: pure member function returning qualified member result is implicitly convertible to unqualified
167. Bugzilla 14154: [e2ir] Error in e2ir at casting to struct
168. Bugzilla 14163: No line number for error with disabled class constructor
169. Bugzilla 14165: Link failure on class declaration with @disable this();
170. Bugzilla 14174: Weird IFTI deduction failure
171. Bugzilla 14179: Posix x86_64 varargs prolog clobbers RDX
172. Bugzilla 14195: Ice when mangling templated function parameter extern(C++) function
173. Bugzilla 14200: C++ mangling issue with expanded tuples
174. Bugzilla 14201: fatal error LNK1235: corrupt or invalid COFF symbol table
175. Bugzilla 14210: invalid merging of template instances
176. Bugzilla 14229: RAII ordering is wrong
177. Bugzilla 14272: DMD segfault on invalid circular enum initialization
178. Bugzilla 14275: Qualified package protection for aggregate member doesn't work
179. Bugzilla 14276: DWARF debug info for SIMD broken
180. Bugzilla 14306: Wrong codegen with -inline for generic lambdas
181. Bugzilla 14311: Win32 COFF: bad symbols/relocation entries for global data accesses
182. Bugzilla 14313: [ld.gold] gdb: wrong value of shared variables

#### DMD Compiler enhancements

1. Bugzilla 1317: Document suggested means of overlapping array copy
2. Bugzilla 2498: make foreach work for any callable symbol
3. Bugzilla 2529: 'package' access qualifier should allow access to sub-packages
4. Bugzilla 3449: const and immutable struct members do not behave according to spec
5. Bugzilla 4567: dmd should print the dmd.conf location with usage statement
6. Bugzilla 9089: Very restrictive Tuple constructor
7. Bugzilla 9915: Typeid .name inconsistent between templated classes and structs
8. Bugzilla 10165: No syntax to create thread-local shared variables
9. Bugzilla 11530: need gdb test suite
10. Bugzilla 12888: Include template constraints in JSON output
11. Bugzilla 12985: Better error message for not supported array operation
12. Bugzilla 13019: Different color for "Warning:"
13. Bugzilla 13350: is(typeof(fun)) causes link error when template fun calls undefined reference
14. Bugzilla 13388: accept '@' before 'nothrow' and 'pure'
15. Bugzilla 13510: When adding "New issue" there should be no choice among DStress, puremagic, and D. Just leave D.
16. Bugzilla 13609: better error message for missing '}'
17. Bugzilla 13704: Confusing error message when passing the same file on the command line twice
18. Bugzilla 13756: [AA] Allow ref const index on foreach AA iteration
19. Bugzilla 13802: Improve pretty-print result for the const(string) type
20. Bugzilla 13803: Improve pretty-print result for the wstring an dstring types
21. Bugzilla 13839: Use new style for alias declarations in di files
22. Bugzilla 13944: Built-in stringof and mangleof properties are unnecessarily fixed to the type 'string'
23. Bugzilla 13976: Value range propagation to disable some slice bound tests
24. Bugzilla 14105: strideImpl fails for 0xFF
25. Bugzilla 14123: cannot compare typeid(object.Object) at compile time
26. Bugzilla 14156: buffer overflow in LibELF
27. Bugzilla 14211: Compiler should devirtualize calls to members of final class
28. Bugzilla 14338: Implement DIP25 Sealed References

#### Phobos regressions

1. Bugzilla 13241: [REG2.067a] writeln no longer flushes stdout
2. Bugzilla 13257: [REG2.067a] Deprecation message when using std.getopt with string[] parameter
3. Bugzilla 13300: pure function 'std.array.Appender!(T[]).Appender.ensureAddable' cannot call impure function 'test.T.__fieldPostBlit'
4. Bugzilla 13304: std.algorithm.reduce: "Unable to deduce an acceptable seed type" with float[]
5. Bugzilla 13367: Buffer overflow when setting PATH
6. Bugzilla 13375: Linking failure when importing both std.regex and std.algorithm
7. Bugzilla 13390: [REG2.066] std.range.cycle ctor fails when empty input passed
8. Bugzilla 13393: [REG2.067a] std.algorithm.joiner Assertion failure in popFront() when using with cartesianProduct
9. Bugzilla 13621: inout issue with std.container.Array opSlice
10. Bugzilla 13716: Phobos std.file fails to build
11. Bugzilla 13717: split no longer defined by std.string
12. Bugzilla 13766: std.container, std.range, std.regex documentation is now broken
13. Bugzilla 13774: Multiple definition of conv_50c_dc8 with three libraries and std.file import
14. Bugzilla 13871: [REG2.067a] Segmentation fault from std/variant.d:609
15. Bugzilla 14037: Problem with BigInt and std.functional.memoize
16. Bugzilla 14041: Refused writeln of a fixed size array of chars
17. Bugzilla 14042: std.conv.to of a immutable char pointer
18. Bugzilla 14197: "replace" was moved from std.string without alias added
19. Bugzilla 14212: frexp for const and immutable fails to compile
20. Bugzilla 14213: Strange deprecated message in std.typecons.Proxy with using method
21. Bugzilla 14230: [REG2.067b2] std.array.join misses the first element which is empty string
22. Bugzilla 14233: [REG2.067b2] Can't build Algebraic!(This[]) anymore
23. Bugzilla 14253: [REG2.067b3] std.traits.ParameterStorageClassTuple gives compiler errors when encountering 'return' functions
24. Bugzilla 14300: [2.067-rc1] DList casting to base type is broken

#### Phobos bugs

1. Bugzilla 649: concatenation hangs in threaded program
2. Bugzilla 3141: osx syntax problem with touch
3. Bugzilla 5036: Remove caching from ranges
4. Bugzilla 5233: [patch] std.range.put accepts *any* element type when putting to an array.
5. Bugzilla 5698: va_arg sets wrong length for (u)short[]
6. Bugzilla 6256: [patch] std.algorithm.map does not support static arrays and has 'length' for narrow strings.
7. Bugzilla 6339: stdin.byChunk throws with Windows pipes on command line
8. Bugzilla 7223: Access violation when using rmdirRecurse on folder without modify permissions
9. Bugzilla 7797: std.typelist should be deprecated
10. Bugzilla 8578: std.demangle.demangle does not parse symbols that are type names
11. Bugzilla 8708: Documentation for std.process.exec family is inaccurate
12. Bugzilla 9507: std.range.transposed behaves poorly with jagged ranges of ranges
13. Bugzilla 10104: std.algorithm.group of a const/immutable array
14. Bugzilla 10125: readln!dchar misdecodes Unicode non-BMP
15. Bugzilla 10139: std.stdio.writef and friends documentation is severely out of date
16. Bugzilla 10460: std.algorithm: some of algorithms don't use 'auto ref' for front
17. Bugzilla 11434: std.file.copy doesn't preserve file attributes (eg: executable mode etc)
18. Bugzilla 11539: wrong "Orphan format specifier:" error message
19. Bugzilla 11895: Add Strings Overview page to Phobos documentation
20. Bugzilla 12114: buildNormalizedPath shouldn't normalize current path to empty string
21. Bugzilla 12320: std.stdio.LockingTextReader populates .front in .empty
22. Bugzilla 12589: std.random.randomCover fails for empty ranges
23. Bugzilla 12631: std.string.isNumeric uses among without explicit braces when calling 'std.algorithm.among' when compiling with dmd -property flag
24. Bugzilla 12733: parallelism.amap incorrect assignment without initialization
25. Bugzilla 12913: Mistake concerning DLists
26. Bugzilla 12915: RedBlackTree leaks memory
27. Bugzilla 12969: std.json: Lack of opIndexAssign operator for JSONValue may become a source of runtime errors
28. Bugzilla 13018: std.string.translate needs mutable translation table
29. Bugzilla 13124: std.algorithm.until with not-boolean predicates too
30. Bugzilla 13248: std.range.tee unit test prints to stdout
31. Bugzilla 13315: std.getopt: implicit help option doesn't work without config.passThrough
32. Bugzilla 13316: std.getopt: implicit help option breaks the next argument
33. Bugzilla 13317: std.getopt: endOfOptions broken when it doesn't look like an option
34. Bugzilla 13352: Algebraic does not support binary arithmetic when omitting small number types
35. Bugzilla 13354: Algebraic.opIndex/opIndexAssign makes wrong assumptions on the index/value type
36. Bugzilla 13391: BigInt division by ulong rejected
37. Bugzilla 13418: uninitializedArray & core.simd.Vector return incorrect type
38. Bugzilla 13425: DList.linearRemove on last element returns non-empty range
39. Bugzilla 13441: joiner asserts with only(x) separator
40. Bugzilla 13446: Can't use executeShell/escapeShellFileName to redirect to file whose name starts with &
41. Bugzilla 13447: Do not escape process parameters unless necessary
42. Bugzilla 13477: std.process should ignore unnamed service variables on Windows
43. Bugzilla 13529: std.string.lastIndexOf matches wrong element
44. Bugzilla 13535: byCodeUnit doesn't satisfy hasSlicing
45. Bugzilla 13592: std.datetime fails its unittests on Windows 7 - no Belarus Standard Time?
46. Bugzilla 13594: std.algorithm.nextPermutation should accept ranges of lvalues
47. Bugzilla 13647: std.traits documentation needs linking correctly and has spurious category value
48. Bugzilla 13649: uniform01 Assertion failure
49. Bugzilla 13686: Reading unicode string with readf ("%s") produces a wrong string
50. Bugzilla 13689: byCodeUnit fails to be a random access range
51. Bugzilla 13746: formatValue of delegates with @nogc
52. Bugzilla 13781: Tuple assign should be @nogc
53. Bugzilla 13805: Nested struct initialization error
54. Bugzilla 13877: Problem with map+join
55. Bugzilla 13922: std.range.package.takeOne doesn't accept non-forward ranges
56. Bugzilla 13931: Missing overflow checks in std.conv for negative numbers which start from the most negative number digits
57. Bugzilla 13935: Problem with std.algorithm.cartesianProduct(map, map)
58. Bugzilla 13963: BigInt modulo ulong is rejected
59. Bugzilla 13990: std.algorithm.move incorrectly uses hasAliasing for class references
60. Bugzilla 14012: std.socket: wrong SocketSet.max on Posix
61. Bugzilla 14013: std.socket: off-by-one error when automatically resizing on POSIX
62. Bugzilla 14025: unittests for memoize fail intermittently
63. Bugzilla 14059: Formatted write with wrong formatting string
64. Bugzilla 14065: std.json not tracking line:column properly
65. Bugzilla 14082: RedBlackTree unittest fails with custom predicate less
66. Bugzilla 14111: Broken DDOC for std.format
67. Bugzilla 14124: BigInt %= int can return "-0"
68. Bugzilla 14181: Wrong document for std.mathspecial.normalDistribution
69. Bugzilla 14223: TimSort algorithm is incorrect
70. Bugzilla 14231: findRoot fails with trivial bounds
71. Bugzilla 14297: [2.067-rc1] Broken links in phobos/index.html

#### Phobos enhancements

1. Bugzilla 2138: Allow more than 65535 files in Zip archives
2. Bugzilla 2181: Constant-time std.gc.removeRange
3. Bugzilla 4493: Add sorting capability to toJSON
4. Bugzilla 4764: Lazy versions of std.string.split and std.string.splitlines
5. Bugzilla 5190: std.stdio should have File.fdopen
6. Bugzilla 5494: [patch,enh] Issues with std.stdarg
7. Bugzilla 5550: std.range.enumerate()
8. Bugzilla 6147: file scheme uri from file path and vice versa
9. Bugzilla 6586: feqrel for const values too
10. Bugzilla 6756: Idea about std.stdio.chunks and std.range.chunks
11. Bugzilla 6989: Implement toString for std.concurrency.Tid
12. Bugzilla 7775: std.range.chunks on const array of strings too
13. Bugzilla 8371: Add a function to make a range from a sequence of elements
14. Bugzilla 8851: std.string.join should allow 'char' as joiner
15. Bugzilla 9959: Add functional pattern matching for object references
16. Bugzilla 11363: std.process should offer a way to run a executable with a given working directory
17. Bugzilla 11706: Add a TypedefType trait to extract the underlying type of a std.typecons.Typedef
18. Bugzilla 12409: Add "each" function as found in Ruby and jQuery
19. Bugzilla 13091: nothrow std.algorithm.cartesianProduct
20. Bugzilla 13157: std.typecons.Unique: Support construction and conversion from compatible types
21. Bugzilla 13319: tzDatabaseNameToWindowsTZName should return null on failure rather than throw
22. Bugzilla 13380: Conflict with std.typecons.Identity and std.traits.Identity
23. Bugzilla 13402: code cleanup: removing c-style array declarations in phobos
24. Bugzilla 13419: code cleanup in std.uni: removing "comma expressions"
25. Bugzilla 13445: std.process fails to create process with empty (non-null) working directory
26. Bugzilla 13450: Add WindowsException and wenforce to std.exception
27. Bugzilla 13483: std.range.tee should also accept a function name
28. Bugzilla 13555: Categorize functions in std.math
29. Bugzilla 13595: Extend std.algorithm.groupBy to support non-equivalence relations
30. Bugzilla 13623: std.typecons.Proxy doesn't work inside classes
31. Bugzilla 13662: @safe pure @nogc nothrow findRoot
32. Bugzilla 13681: @safe empty writeln
33. Bugzilla 13837: Named tuples with type inference
34. Bugzilla 13908: @safe write of a (uint, uint) tuple
35. Bugzilla 13909: A problem with immutable zip + assocArray
36. Bugzilla 14110: std.file.read cannot read files open for writing
37. Bugzilla 14183: Updates to groupBy

#### Druntime regressions

1. Bugzilla 13748: benchmark druntime/benchmark/aabench/string.d fails
2. Bugzilla 13809: dup no longer works with types with postblit and destructors
3. Bugzilla 14134: Free of large array does not work
4. Bugzilla 14192: Access Violation when assigning to shared AA
5. Bugzilla 14225: [REG2.067a] GDB: error reading variable (string + dup)
6. Bugzilla 14291: Druntime master no longer builds

#### Druntime bugs

1. Bugzilla 5629: core.time unittest disabled
2. Bugzilla 8960: DMD tester: Unable to set thread priority
3. Bugzilla 13052: TypeInfo.getHash should return same hash for different floating point zeros.
4. Bugzilla 13410: Performance problem with associative array byKey/byValue
5. Bugzilla 13416: dead-lock in FreeBSD suspend handler
6. Bugzilla 13722: onFinalizeError should not allocate
7. Bugzilla 13723: onFinalizeError should not be called for Errors
8. Bugzilla 13854: Appending to an interior slice of a large array results in unnecessary 16-byte offset
9. Bugzilla 13878: Appending to an array block with modified flags loses flag info
10. Bugzilla 14036: Do not throw FinalizeError on OutOfMemoryError or InvalidMemoryOperationError
11. Bugzilla 14157: fabsf fabsl for CRuntime_Microsoft
12. Bugzilla 14247: string within demangled symbol name should be made escape
13. Bugzilla 14303: rt.util.container.array.Array unittest contains invalid code

#### Druntime enhancements

1. Bugzilla 9119: [AA] Forward range addition to associative arrays.
2. Bugzilla 11216: Make synchronized statement nothrow
3. Bugzilla 13401: code cleanup: removing c-style array declarations in druntime
4. Bugzilla 13559: missing 64-bit version of array short operations
5. Bugzilla 13725: onInvalidMemoryOperationError et al should not be inlined
6. Bugzilla 13755: core.sys.linux.stdio, std.stdio.File: fopencookie, fmemopen missing
7. Bugzilla 14007: shmctl with IPC_STAT returns wrong number of attachments. shmid_ds is defined wrong.

#### Optlink bugs

1. Bugzilla 4831: Optlink rejects paths with invalid characters based on HPFS filesystem instead of NTFS

#### Installer bugs

1. Bugzilla 9392: Misleading text about required OS version

#### Website regressions

1. Bugzilla 14258: SIGSEGV in dpldocs
2. Bugzilla 14280: Links to command line tools have disappeared from navigation

#### Website bugs

1. Bugzilla 8307: inconsistent treatment of auto functions
2. Bugzilla 9118: typo in github tools repo
3. Bugzilla 9535: incomplete documentation for std.range.recurrence and std.range.sequence
4. Bugzilla 9691: Static void arrays are not documented
5. Bugzilla 9970: Document the definition and difference between storage class and type constructor
6. Bugzilla 10232: AndExpression grammar is not correct
7. Bugzilla 10235: Grammar does not contain a rule for function declarations
8. Bugzilla 10284: dlang.org/phobos/index.html needs redesign
9. Bugzilla 10285: Enum grammar documentation is incorrect
10. Bugzilla 12810: PrimaryExpression grammar does not allow type constructors
11. Bugzilla 13093: D ABI change for guaranteed efficient return of fixed size array
12. Bugzilla 13308: AsmPrimaryExp documentation is incorrect
13. Bugzilla 13310: Old style multiple alias declaration not documented
14. Bugzilla 13328: Missing link to contracts description from function specification page
15. Bugzilla 13329: AutoDeclarationX grammar lists '=' token and template parameters in the wrong order
16. Bugzilla 13436: posix.mak is broken for dlang.org repo
17. Bugzilla 13448: Class specification misses template classes in base classes list
18. Bugzilla 13451: Lambda syntax with explicit return type not documented
19. Bugzilla 13467: A little better std.algorithm.canFind documentation
20. Bugzilla 13523: Auto function declaration does not match any grammar rule
21. Bugzilla 13525: Redundant SpecialKeyword grammar listd in DefaultInitializerExpression
22. Bugzilla 13538: Divide old C style syntax from D style grammar rule
23. Bugzilla 13547: "D is a fully garbage collected language"
24. Bugzilla 13648: ddoc problem with std.random.uniform01
25. Bugzilla 13664: Grammar does not allow @<template_instance> UDAs
26. Bugzilla 13671: https://dlang.org/const3.html incorrectly calls type qualifiers "type constructors"
27. Bugzilla 13696: Missing entry for unicode code point literals on the lexer page
28. Bugzilla 13895: Declaration grammar is insufficient
29. Bugzilla 13941: NewExpression grammar is insufficient
30. Bugzilla 13979: ForeachType grammar does not allow 'ref' to appear after type constructors
31. Bugzilla 13991: Invariant grammar does not document that parenthesis are optional
32. Bugzilla 14002: Book link is broken
33. Bugzilla 14031: Frame content going outside frame
34. Bugzilla 14047: "this" missing from AsmPrimaryExp grammar
35. Bugzilla 14081: Table in the document of std.bigint.BigInt.toString() duplicates.
36. Bugzilla 14121: Wiki: "Create account" page completely broken!
37. Bugzilla 14135: std.uuid.randomUUID breaks @safety
38. Bugzilla 14153: std.format page displaying incorrectly

#### Website enhancements

1. Bugzilla 4954: Clarify documentation of foreach with delegates.
2. Bugzilla 6251: D spec should warn about using foreach_reverse on a delegate
3. Bugzilla 9469: Keywords list could use linkage; more-humane documentation
4. Bugzilla 10154: Betas should be posted on dlang.org
5. Bugzilla 10164: std.string.column examples and documentation
6. Bugzilla 13325: __vector not documented in language specification
7. Bugzilla 14011: Canonical links help message should clarify that 'thread' is invalid

Copyright © 1999-2019 by the D Language Foundation | Page generated by Ddoc on Sat Feb 23 21:20:23 2019