Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Forums
  - IRC
  - Wiki
  - GitHub
  - Issues
  - Get involved
  - Contributors
  - Foundation
  - Donate
- Resources
  - Books
  - Tutorials
  - Tools
  - Editors
  - IDEs
  - 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.065.0

Download D 2.065.0
released February 24, 2014

#### Compiler Changes

1. Extensionless D source file names can now be run when using the -run switch.

#### Language Changes

1. Goto jumps now cannot skip variable declarations.
2. All instantiated functions now infer their attributes.
3. Add a new type qualifier inout const.
4. Entire slicing operation of built-in tuple is now accepted.
5. Packages and module names now have no type.
6. Const and immutable fields with initializers are now deprecated.
7. Deprecate unordered floating point comparisons.
8. Deprecate .min property for floating-point types.
9. CTFE can handle overlapped union fields.
10. Add a new trait getAliasThis.
11. Mixing struct constructors and static opCall is no longer allowed.

#### Library Changes

1. Many functions in std.algorithm can now be used as predicates to other functions.
2. Allow std.algorithm.all to be used without a predicate.
3. Add std.uni.byGrapheme and std.uni.byCodePoint.
4. Add support for any number of arguments to std.range.only.

#### Linker Changes

1. Added /LARGEADDRESSAWARE to the Win32 Optlink linker.

List of all bug fixes and enhancements in D 2.065.

#### Compiler Changes

1. Extensionless D source file names can now be run when using the -run switch:

   On Posix systems it is frequently useful to have a shebang line at the start of an extensionless file, which marks the tool used to compile the script. It's now possible to use this technique with D, e.g. the following is a D source file with the file name "my-script":

       #!rdmd

       void main()
       {
       }

   Note: This does not allow an arbitrary extension, as D source files need to be proper D identifiers.

   Note: This feature is not available on Windows, as Windows does not have extensionless executable files.

   Note: When compiling, and in order to avoid the default behavior of generating an extensionless executable which would overwrite the source file, the compiler will generate "a.out" instead.

#### Language Changes

1. Goto jumps now cannot skip variable declarations:

   For a very long period, the following code had been allowed by mistake, but it is prohibited now:

       import std.stdio;

       void main()
       {
           goto Label; // Error: goto skips declaration of variable v

           int v = 42;

       Label:
           writeln(v);
       }

2. All instantiated functions now infer their attributes:

   Regardless of how directly or indirectly a function is instantiated, its attributes will still be inferred:

       struct S(T)
       {
           T square(T x)
           {
               T calc()
               {
                   return x * x;
               }
               return calc();
           }

           static double pi() { return 3.141592; }
       }

       void main() pure @safe nothrow
       {
           S!int s;

           // S!int.square and its nested function calc are instantiated functions, so
           // their attributes are inferred as pure and callable from main()
           assert(s.square(2) == 4);  // ok

           // static member function attributes are also inferred now
           auto pi = typeof(s).pi();
       }

3. Add a new type qualifier inout const:

   Until now, the common type of immutable(T) and inout(T) had been const(T). But that loses the inout information, which might then refuse some valid code. Now the type becomes inout(const(T)), which meaningfully propagates the appropriate type qualifier.

       inout(const(int))[] foo(bool condition, inout(int)[] x, immutable(int)[] y)
       {
           static assert(is(typeof(condition ? x : y) == inout(const(int))[]));
           return condition ? x : y;
       }

       void main()
       {
           int[] marr = [1,2,3];
           const(int)[] carr = [4,5,6];
           immutable(int)[] iarr = [7,8,9];

           // inout(const(int))[] can go back to const(int)[] or immutable(int)[].
           static assert(is(typeof(foo(true, marr, iarr)) == const(int)[]));
           static assert(is(typeof(foo(true, carr, iarr)) == const(int)[]));
           static assert(is(typeof(foo(true, iarr, iarr)) == immutable(int)[]));
       }

4. Entire slicing operation of built-in tuple is now accepted:

   Bugzilla 8244: cannot slice a type tuple with '[]' in locations where a type is valid:

       import std.typetuple;
       alias Types = TypeTuple!(int, double, string);

       // Was error in 2.064, but allowed from 2.065.
       alias Types2 = Types[];
       static assert(is(Types == Types2));

5. Packages and module names now have no type:

   Bugzilla 9081: Modules shouldn't have a type

       import std.stdio;

       // Both had printed 'void' in 2.064.
       // From 2.065, both will cause "has no type" error.
       pragma(msg, typeof(std));
       pragma(msg, typeof(std.stdio));

   By the change, an idiom that used to work is(typeof(package_or_module_name)) is changed to not work. Instead use: __traits(compiles, package_or_module_name).

6. Const and immutable fields with initializers are now deprecated:

   Eventually, they will be changed to occupy space in the object. Such fields should now be changed to enum or static. See also the release note in 2.063.

   Related to that, void-initialized const or immutable fields will now occupy space in the object instance ahead of schedule:

       struct S
       {
           const int[1000] x = void;

           this(int n)
           {
               // Was disallowed in 2.064.
               // From 2.065 x is a field of runtime object.
               x[] = n;
           }
       }

       // S.sizeof had been 1 in 2.064.
       // From 2.065, field s.x occupies space in the object.
       static assert(S.sizeof == int.sizeof * 1000);

       void main()
       {
           S s = S(3);

           foreach (e; s.x)
           {
               assert(e == 3); // OK
           }
       }

7. Deprecate unordered floating point comparisons:

   Bugzilla 10369: Deprecate unordered floating point comparisons

8. Deprecate .min property for floating-point types:

   Bugzilla 10439: Deprecate float.min, double.min, real.min

9. CTFE can handle overlapped union fields:

   Example code:

       union U
       {
           size_t x;
           int* y;
       }

       bool test()
       {
           U u;
           assert(u.x == 0);
           // In here, reading u.y will cause CTFE error.

           u.y = [1,2,3].ptr;
           // Writing value to overlapped field u.y will make corresponding field u.x invalid.

           assert(u.y[0..3] == [1,2,3]);
           // u.y holds valid field and reading it is allowed
           // In here, reading u.x will cause CTFE error.

           u.x = 10;
           // Set value to u.x again.
           assert(u.x == 10);  // OK
           // In here, reading u.y will cause CTFE error.

           return true;
       }
       static assert(test());  // run CTFE

   Bit image reinterpretation by using two overlapped union fields is not allowed during CTFE.

10. Add a new trait getAliasThis:

    The new getAliasThis trait will return a tuple of field names which are marked as the subtypes of an aggregate type. For example:

        struct S
        {
            string var;
            alias var this;
        }

        static assert(__traits(getAliasThis, S)[0] == "var");

    Note: Multiple subtyping is not yet implemented in D, therefore this trait will always return a tuple of length 1.

11. Mixing struct constructors and static opCall is no longer allowed:

    This was not implemented correctly and caused ambiguities.

    Example:

        struct S
        {
            this(int i) {}

            static S opCall()   // disallowed due to constructor
            {
                return S.init;
            }
        }

    Note: static opCall can be used to simulate struct constructors with no arguments, but this is not recommended practice. Instead, the preferred solution is to use a factory function to create struct instances.

#### Library Changes

1. Many functions in std.algorithm can now be used as predicates to other functions:

   Functions such as any, all, canFind and equal are now templates, which allows them to be used as predicates to other templates, as well as allowing the user to alias an instantiation of any such templates. For an example of how this allows terser syntax in user-code, in the following example the programmer wants to check whether all the strings in a string array have at least one ASCII digit:

       import std.algorithm : all;
       import std.ascii : isDigit;

       void main()
       {
           string[] inputs = ["foo1", "bar2"];

           bool allContainDigit;
           foreach (input; inputs)
           {
               if (!any!isDigit(input))  // none of the characters are ASCII digits
               {
                   allContainDigit = false;
                   break;
               }
           }
       }

   But it is now simpler to use the any template itself as a predicate. We can make it a predicate to another useful template, the all template:

       import std.algorithm : any, all;
       import std.ascii : isDigit;

       void main()
       {
           string[] inputs = ["foo1", "bar2"];
           bool allContainDigit = all!(any!isDigit)(inputs);
       }

   In addition to allowing these functions to become predicates they can now also be aliased, which allow you to make your functions simpler to understand:

       import std.algorithm : any, all;
       import std.ascii : isDigit;

       void main()
       {
           alias isAnyDigit = any!isDigit;  // less visual noise and a self-describing function

           string[] inputs = ["foo1", "bar2"];
           bool allContainDigit = all!isAnyDigit(inputs);  // easier to understand

           alias doAllContainDigits = all!isAnyDigit;  // or wrap the entire algorithm into one symbol!

           assert( doAllContainDigits(["1", "a 1", "b 2"]));  // self-describing code
           assert(!doAllContainDigits(["c", "a 1", "b 2"]));
       }

   You can of course combine all and any in a number of combinations. For example, if you want to reverse the test and instead check whether any of the strings in the string array contain all digits, the code might look like the following:

       import std.algorithm : any, all;
       import std.ascii : isDigit;

       void main()
       {
           alias areAllDigits = all!isDigit;

           alias areAnyIntegrals = any!areAllDigits;

           assert( areAnyIntegrals(["123", "456"]));
           assert( areAnyIntegrals(["abc", "123"]));  // "123" is a number
           assert(!areAnyIntegrals(["abc", "def123"])); // "def123" is not really a number
       }

   If on the other hand you want to ensure that all strings in the string array contain all digits, the could might look like the following:

       import std.algorithm : any, all;
       import std.ascii : isDigit;

       void main()
       {
           alias areAllDigits = all!isDigit;

           alias allStringsDigits = all!areAllDigits;

           assert( allStringsDigits(["123", "456"]));
           assert(!allStringsDigits(["abc", "123"]));  // "123" is a number, but "abc" is not
       }

2. Allow std.algorithm.all to be used without a predicate.

   You no longer need to pass a predicate if you want to match all items in a range which implicitly convert to true:

       import std.algorithm;

       void main()
       {
           auto arr1 = [true, true, true];
           assert( all(arr1));  // all values are true

           auto arr2 = [false, true, true];
           assert(!all(arr2));  // all values are not true

           auto arr3 = [1, 2, 3];
           assert( all(arr3));  // all values convert to true

           auto arr4 = [0, 2, 3];
           assert(!all(arr4));  // all values do not convert to true
       }

3. Add std.uni.byGrapheme and std.uni.byCodePoint.

   Complementary higher-order ranges which enable range operations on graphemes:

       import std.array : array;
       import std.range : retro;
       import std.string : text;
       import std.uni : byCodePoint, byGrapheme;

       void main()
       {
           string s = "noe\u0308l"; // noël
           // reverse it and convert the result back to UTF-8
           string reverse = s.byGrapheme()
               .array() // Note: byGrapheme will support bidirectionality in the future
               .retro()
               .byCodePoint()
               .text();

           assert(reverse == "le\u0308on"); // lëon
       }

   Note that byGrapheme will support bidirectionality in the future, obviating the need for array in the above example.
4. Add support for any number of arguments to std.range.only.

   only can now be used with more than one argument:

       import std.algorithm : joiner;
       import std.range : equal, only;

       void main()
       {
           assert(only("one", "two", "three").joiner(" ").equal("one two three"));
       }

   Additionally, only() is now a way to get an empty range.

#### Linker Changes

1. Added /LARGEADDRESSAWARE to the Win32 Optlink linker.

   When using the default Optlink linker on win32 (for linking 32-bit object files and executables), the /LARGEADDRESSAWARE option tells the linker that the application can handle addresses larger than 2 gigabytes. This is equivalent to Visual C's linker option of the same name since this is an operating-system feature that is enabled by setting a specific flag in the executable.

List of all bug fixes and enhancements in D 2.065:

#### DMD Compiler regressions

1. Bugzilla 7782: [ICE] With wrong import syntax
2. Bugzilla 9107: Value Range Analysis with uint and byte
3. Bugzilla 9639: Recursive template instanciation segfault dmd
4. Bugzilla 11078: Diagnostic for wrong RHS in property assign of a property group should improve
5. Bugzilla 11321: Can't link _D6object15__T7reserveTyaZ7reserveFNaNbNeKAyamZm
6. Bugzilla 11441: DMD halts compilation at semantic3
7. Bugzilla 11447: Closure provide bogus values
8. Bugzilla 11472: REGRESSION(2.064): dmd segfaults on wrong code instead of giving error
9. Bugzilla 11487: dmd segfaults on writefln in nested template
10. Bugzilla 11504: [CTFE] JSONValue cannot make in CTFE
11. Bugzilla 11505: Bad error message: "opAssign [...] is annotated with @disable"
12. Bugzilla 11508: [REG 2.064] Wrong code with -O on x86_64 for char comparisons
13. Bugzilla 11513: [REG 2.064] Assertion in module.c
14. Bugzilla 11525: REG(2.065): Error: 'a[] *= a[]' each element is not a scalar, it is a Complex!double
15. Bugzilla 11553: dmd segfault with recursive template
16. Bugzilla 11554: is(T == enum); produces an error if T is an enum defined with no members
17. Bugzilla 11563: Module dependency cycle causes unrelated template instantiations to fail
18. Bugzilla 11566: ICE with invalid array op
19. Bugzilla 11596: Internal error: backend/cgcs.c 351
20. Bugzilla 11610: Compiler core dumps on FreeBSD, compiles forever on Linux
21. Bugzilla 11614: Error: this for _expand_field_0 needs to be type Tuple not type Foo
22. Bugzilla 11626: [ICE] (mtype.c line 9718) With missing in ref type
23. Bugzilla 11659: false positive goto skips initialization of variable error (skipping enum initialization)
24. Bugzilla 11718: [REG2.065a] Unintended mangled names conflict of nested template structs
25. Bugzilla 11723: Too many "integer overflow" errors
26. Bugzilla 11730: associative array with Nullable!SysTime values: Called get on null Nullable!SysTime.
27. Bugzilla 11751: [REG2.065a] Hex float exponents should be decimal
28. Bugzilla 11755: Operator <>= and !<>= with arrays make internal error in e2ir
29. Bugzilla 11767: doubly mixed-in struct "failed semantic analysis"
30. Bugzilla 11776: [ICE] Assertion failure: 'tf->next == NULL' on line 119 in file 'mangle.c'
31. Bugzilla 11777: [ICE] dmd memory corruption as Scope::pop frees fieldinit used also in enclosing
32. Bugzilla 11805: Removal of Bool has critically broken expression evaluation
33. Bugzilla 11818: Ternary operator not allowed in a value parameter anymore
34. Bugzilla 11822: -de switch causees ICE with auto return and other stuff
35. Bugzilla 11824: A stack variable escaping problem in CTFE Phobos code
36. Bugzilla 11844: ICE(template.c:6643) Assertion failed: (td->semanticRun != PASSinit)
37. Bugzilla 11849: Recursive enum causes segfault
38. Bugzilla 11850: [ICE] Problem with filter with signed-unsigned array comparison
39. Bugzilla 11852: RDMD broken on the Github HEAD
40. Bugzilla 11854: Git-head does not build with Visual Studio
41. Bugzilla 11863: std.conv.to!string(int/uint, radix) returns incorrect string
42. Bugzilla 11868: ICE(template.c) on passing inout const argument as TemplateTupleParameter
43. Bugzilla 11896: [REG2.066a] isVirtualMethod related GitHub HEAD regression (works with 2.064)
44. Bugzilla 11914: Missed tuple unpacking in foreach for cartesianProduct
45. Bugzilla 11919: GitHub HEAD regression for getAttributes trait (DMD CORE DUMP)
46. Bugzilla 11922: [REG2.065a] ICE on nonexistent identifier in templated auto method
47. Bugzilla 11924: inout Variadic Template Parameters
48. Bugzilla 11925: [2.065] [REGRESSION] ICE in CompoundStatement::semantic
49. Bugzilla 11930: Github regression -- Alias this not considered in is(T unused: U) matching
50. Bugzilla 11931: Linkers "Symbol Undefined" again with dmd HEAD when -g specified
51. Bugzilla 11941: Errors when appending to aggregate member array in CTFE
52. Bugzilla 11956: dmd doesn't lookup /etc/dmd.conf
53. Bugzilla 11963: Regression(2.065) ICE(parse.c) Parser crash
54. Bugzilla 11965: Regression(2.064) Segfault on garbage
55. Bugzilla 11966: Regression 2.065.b1: inout(const(char))[] doesn't convert to inout(char)[]
56. Bugzilla 11967: Regression(2.065) ICE(parse.c) Parser crash
57. Bugzilla 11980: startaddress pragma broken (DMD 2.061 regression)
58. Bugzilla 11993: [REG] typeof(this) in constraint of member function template should reflect method qualifier
59. Bugzilla 12002: Internal error: toir.c 181
60. Bugzilla 12008: alias this and "unable to resolve forward reference" error
61. Bugzilla 12010: [REG DMD2.065-b1] Undefined template symbols for static library linked with debug symbols
62. Bugzilla 12016: implicit immutable upcast becomes null in CTFE
63. Bugzilla 12017: DDoc leaves out the majority of documentation
64. Bugzilla 12023: Regression 2.065-b2: template mixin fails within template class
65. Bugzilla 12037: Link-failure with std.numeric.CustomFloat
66. Bugzilla 12044: Invalid code gen causes segfault
67. Bugzilla 12047: Regression (2.065 git-head): UDAs are not checked
68. Bugzilla 12070: Variant opCall not static
69. Bugzilla 12079: Internal error: backend/cod4.c 358 for associative array access
70. Bugzilla 12080: Internal error: backend/symbol.c 1035 for invariant
71. Bugzilla 12089: std.utf.validate and inout(char[]) failts to compile
72. Bugzilla 12144: [REG DMD2.064] Unresolved xopEquals when referenced by dynamic array constructor
73. Bugzilla 12158: ICE with .init of nonexisting selective import
74. Bugzilla 12160: UDA related regressions

#### DMD Compiler bugs

1. Bugzilla 235: goto & scope: cannot goto forward into different try block level
2. Bugzilla 275: Undefined identifier in instances of templates with forward mixins
3. Bugzilla 602: Compiler allows a goto statement to skip an initalization
4. Bugzilla 899: structure field .offsetof property inaccessible in the scope
5. Bugzilla 900: changing import order causes type mismatch
6. Bugzilla 918: (D1 only): Template order matter, version block change something with typedef, and another template bug.
7. Bugzilla 1687: "extern (C++) interface" and vtbl
8. Bugzilla 1748: Wrong stringof for templated classes
9. Bugzilla 2481: mixing field into anonymous struct inside class generates field overlapping vtable
10. Bugzilla 2806: enum member cannot be forward referenced
11. Bugzilla 2885: Silent forward reference bug using ReturnType
12. Bugzilla 3013: Duplicate error message on calling a function with a type
13. Bugzilla 3107: [meta] Property syntax
14. Bugzilla 3226: -fPIC flag doesn't seem to work
15. Bugzilla 3279: (D1 only) Confusing error message when comparing types
16. Bugzilla 3307: Template alias default parameters aren't resolved properly
17. Bugzilla 3753: ICE(eh.c): Related to exception handling and alloca.
18. Bugzilla 3817: Array op: wrong error message
19. Bugzilla 3834: forward reference in templated class
20. Bugzilla 3903: Traits compiles as true for an array sum with wrong syntax
21. Bugzilla 3970: Problem with cast -1.0L ==> uint/ulong
22. Bugzilla 3991: Void initializers in unions considered overlapping
23. Bugzilla 4145: cross alias namespace can't be resolve
24. Bugzilla 4162: pass by alias offset problems
25. Bugzilla 4983: [ICE] Stack overflow while initializing struct member with address of one of its methods
26. Bugzilla 5569: 64 bit Dwarf symbolic debug info not recognized by gdb
27. Bugzilla 5878: Forward reference in returning superclass from template using is() expression (Breaks std.traits.BaseTypeTuple)
28. Bugzilla 6010: -fPIC is broken on freebsd/64
29. Bugzilla 6382: edge case with static foreach
30. Bugzilla 6439: [CTFE] union fields are initialized independently
31. Bugzilla 6764: IFTI fails on typesafe variadic function over static array with non IntegerLiteral length
32. Bugzilla 6796: Several __error with wrong enum definition
33. Bugzilla 7077: (D1 only) mixin statements can invade the enclosing scope
34. Bugzilla 7175: Zero-length static array .ptr is always null
35. Bugzilla 7472: Cast from class to basic type not rejected during semantic
36. Bugzilla 7645: ICE(e2ir.c) nested classes
37. Bugzilla 7744: Forward reference in string mixin
38. Bugzilla 7966: First template instantiation inside with results in Error 42: Symbol Undefined
39. Bugzilla 8019: (D1 only) can't convert [] to int[]
40. Bugzilla 8117: Cannot initialize struct member without default constructor
41. Bugzilla 8179: ICE(e2ir.c) with failed fixed size array cast
42. Bugzilla 8200: DMD segfault: template aliasing result of map
43. Bugzilla 8244: cannot slice a type tuple with '[]' in locations where a type is valid
44. Bugzilla 8255: [CTFE] ICE when passing 'ref' literal
45. Bugzilla 8313: stack overflow on recursive ifti evaluation
46. Bugzilla 8365: Static fixed size array of enums initialization fails
47. Bugzilla 8396: wrong order of evaluation for tuple expansion in function arguments
48. Bugzilla 8492: can't infer type in static assert
49. Bugzilla 8511: Segfault with forward-referenced enum
50. Bugzilla 8525: optimizer loops infinitely
51. Bugzilla 8543: simd literals need better CTFE support
52. Bugzilla 8581: Internal error: backend/cod1.c 1677 on structs with bitfields (when compile with release or optimize parameter)
53. Bugzilla 8648: No error line number with incomplete template
54. Bugzilla 8658: Passing large structs to function b value causes stack corruption
55. Bugzilla 8664: Compiler causes stack overflow with recursive typedef and option -g
56. Bugzilla 8711: ICE with initializing function pointer with array
57. Bugzilla 8722: foreach triggers a floating point exception with multidimensional array of a dimension equal to 0
58. Bugzilla 8735: ICE: Assertion failure: 't' on line 100 in file 'aliasthis.c'
59. Bugzilla 8739: DDoc outputs wrong parameter name in delegate parameter list
60. Bugzilla 8825: Wrong line number of error message
61. Bugzilla 8903: Bad code for enum array members
62. Bugzilla 8997: template instances omit symbol that may be used in other modules
63. Bugzilla 9008: Another forward referencing bug
64. Bugzilla 9050: Too early instantiation of template structs
65. Bugzilla 9081: Modules shouldn't have a type
66. Bugzilla 9212: Associative array foreach iteration with immutable key
67. Bugzilla 9256: A purity-related error message in case of member access
68. Bugzilla 9271: Forwarding lambda predicate with type inference causes segfault
69. Bugzilla 9296: LITTLE_ENDIAN and BIG_ENDIAN are always defined on Linux
70. Bugzilla 9301: using XMM.PSHUFD results in an internal compiler error
71. Bugzilla 9356: -inline with inout and append generates wrong code
72. Bugzilla 9459: Front-end does not detect invalid array operations
73. Bugzilla 9466: Compiler crash with code-coverage generation with large files
74. Bugzilla 9504: typeof does not look up properties correctly on template argument
75. Bugzilla 9562: Built-in runtime properties should become error with Type.prop
76. Bugzilla 9572: Missed wrong implicit integral conversion
77. Bugzilla 9577: Crash on static array of function literals
78. Bugzilla 9644: Spell checker gives silly suggestions for 1-2 character symbols
79. Bugzilla 9662: Implement RDMD test suite
80. Bugzilla 9690: cannot access to @disable'd symbol from inner function of another @disable'd
81. Bugzilla 9741: undefined identifier with User Defined Attribute
82. Bugzilla 9765: Error message with __error with struct literal dotvar expression
83. Bugzilla 9807: with statement does not work with alias this
84. Bugzilla 9831: Error message with failed lambda inference
85. Bugzilla 9861: Spurious 'is used as type' error with failed template instantiation
86. Bugzilla 9912: Wrong codegen when using tuple over member variable in more than one method
87. Bugzilla 10207: Alias and @attributes: Assertion failure: '!udas' on line 3132 in file 'parse.c'
88. Bugzilla 10224: core.simd ICE cgcv.c line 2162 when compiling with -g
89. Bugzilla 10251: CTFE: Allow returning pointers to global static variables of known value
90. Bugzilla 10259: ICE on invalid compile-time class instantiation
91. Bugzilla 10312: compiler assert failure with ctfe on simd vector type
92. Bugzilla 10313: inout constructor + IFTI + has indirections arg doesn't work
93. Bugzilla 10329: Attributes not inferred for indirectly templated methods
94. Bugzilla 10391: Segfault compiling on Mac OS 10.8
95. Bugzilla 10459: align(16) does not work on Win64 with seperate compilation
96. Bugzilla 10483: ICE(expression.c) .init of struct with block initialized 2D static array
97. Bugzilla 10598: Using not-imported type - AssertFail: 'global.errors' line 6040 'template.c'
98. Bugzilla 10632: [ICE](glue.c line 1227) With inlining and tuples
99. Bugzilla 10635: Error: cannot use array to initialize S
100. Bugzilla 10643: Refused const array struct field initialized with void
101. Bugzilla 10747: Win64: warning about non-existing vc100.pdb
102. Bugzilla 10770: is(T BASE==enum) with tag enum T - AssertFail:'type' line 428 declaration.c
103. Bugzilla 10805: wrong error message for wrong delimited string
104. Bugzilla 10883: [ICE] Internal error: ../ztc/cod4.c 358 when compiling with -inline
105. Bugzilla 10905: [ICE](ctfeexpr.c line 355) with ulong2 in structs
106. Bugzilla 10922: Compiler segfaults when using __traits(parent, {})
107. Bugzilla 10926: Wrong expression printed when ternary operator used as lvalue
108. Bugzilla 10927: Power of complex number causes an internal error
109. Bugzilla 10938: ICE on recursive instantiation in opDispatch
110. Bugzilla 11019: fwd reference : legal in C++, CT error in D (unable to resolve forward reference in definition)
111. Bugzilla 11034: ICE: Assertion failed: (!scope), function toObjFile, file toobj.c, line 366.
112. Bugzilla 11155: Wrong SIMD code generated (unaligned movaps)
113. Bugzilla 11193: [ICE] String template argument mixed with variadic template arguments causes ICE
114. Bugzilla 11198: Error messages for declaring a 'version' inside main() and other functions are unclear
115. Bugzilla 11215: inout lose enclosing shared on resolution
116. Bugzilla 11224: Inlining stops NRVO
117. Bugzilla 11247: Error: typeof(i).sizeof is used as a type
118. Bugzilla 11286: Impure dtor makes "cannot call impure function" error, although it won't actually be called.
119. Bugzilla 11288: dmd assertion when assigning to (static) opDispatch
120. Bugzilla 11297: [ICE](glue.c line 868) with a string concat in global enum lambda
121. Bugzilla 11314: inline ice with tuple assignment and if/else again
122. Bugzilla 11317: glue.c:1218: virtual unsigned int Type::totym(): Assertion 0 failed.
123. Bugzilla 11322: ICE with -inline cgcs.c 221
124. Bugzilla 11332: ICE(dt.c) and missing error when interpreting an unimplemented builtin
125. Bugzilla 11371: core.simd and ctfe
126. Bugzilla 11375: [profile+nothrow] Semantic 'no throw' error with -profile switch
127. Bugzilla 11376: ICE on __traits(compiles, ...) with invalid array-op
128. Bugzilla 11383: Some array casts incorrectly rejected in safe code
129. Bugzilla 11385: XXX is a nested function and cannot be accessed from XXX
130. Bugzilla 11394: NRVO should work for object field initialization in constructor
131. Bugzilla 11406: ld.gold breaks switch table jumps
132. Bugzilla 11425: Broken shadowing variable diagnostic
133. Bugzilla 11427: anonymous unions break structs in @safe code
134. Bugzilla 11445: adding double[string] causes crash
135. Bugzilla 11479: template members ignore private attribute in ddoc
136. Bugzilla 11484: [e2ir] Error in e2ir at cast to/from static array
137. Bugzilla 11485: [e2ir] Error in e2ir at numeric/bool to class/interface cast
138. Bugzilla 11489: Improper implicit cast to immutable.
139. Bugzilla 11497: lambda in "static if"/"assert" prevent inlining of function
140. Bugzilla 11518: DMD segfault on multiple template match
141. Bugzilla 11534: [CTFE] inout + returning a pointer into a member array
142. Bugzilla 11540: [ICE] CTFE segfault with try-catch-finally and goto
143. Bugzilla 11552: Missing label is not caught during semantic
144. Bugzilla 11562: Goto into or out of finally block is not caught during semantic
145. Bugzilla 11565: [Optimizer] Zeroes out the higher 32bits of register in ?: expression
146. Bugzilla 11587: Cannot compare AAs at compile time
147. Bugzilla 11618: Internal Compiler Error
148. Bugzilla 11627: [CTFE] cannot cast dchar to char at compile time on AA assignment
149. Bugzilla 11629: [CTFE] crash on AA.rehash
150. Bugzilla 11635: RDMD eats the -op flag when it should just pass through
151. Bugzilla 11653: No error when forgetting break with range cases.
152. Bugzilla 11656: property offsetof does not work with __vector fields
153. Bugzilla 11661: Meaningless error: "a struct is not a valid initializer for a void function()"
154. Bugzilla 11664: A function with a local static variable is unusable in CTFE
155. Bugzilla 11689: deprecated local function does not work
156. Bugzilla 11696: C++ incorrect static member mangling
157. Bugzilla 11722: Qualifier-only casts should not invoke opCast
158. Bugzilla 11726: ICE with ufcs on undefined identifier and opDispatch
159. Bugzilla 11727: Repeated error message with using forward referenced enum as variable
160. Bugzilla 11735: pragma(msg, ...) fails to print wstring, dstring
161. Bugzilla 11745: Unittests retrieved by __traits(getUnitTests) can not be invoked if private.
162. Bugzilla 11748: [ICE] function call as alias parameter of template gives ICE
163. Bugzilla 11749: switch case fallthrough error is enabled with -w, but cannot be made informational warning
164. Bugzilla 11750: ICE with debug info and empty #line Filespec
165. Bugzilla 11756: Irrelevant variable name printing in CTFE error message
166. Bugzilla 11769: Wrong line number in "matches both" error message
167. Bugzilla 11785: Order of method/function declarations has an effect on compilation result.
168. Bugzilla 11790: ICE(interpret.c): passing creation of array with type string as size to CTFE
169. Bugzilla 11793: [ICE] Compiler runs out of memory with trivial program: class with own class member instance
170. Bugzilla 11800: alias this matching incorrectly changes lvalue-ness
171. Bugzilla 11802: Wrong vtbl order for extern(C++) classes with overloaded functions on win32
172. Bugzilla 11813: Improve IFTI error diagnostic
173. Bugzilla 11814: Unnecessary error messages "does not match ..." on IFTI failure
174. Bugzilla 11843: Template instantiated twice: failed semantic analysis
175. Bugzilla 11875: static if template type deduction causes infinite recursion with recursive alias this
176. Bugzilla 11926: Segmentation fault when using const in an enum
177. Bugzilla 11944: ICE(expression.c) Assertion f failed.
178. Bugzilla 11968: ICE(expression.c) Crash when deleting __FILE__
179. Bugzilla 11969: ICE(statement.c) When mixing in a array literal containing errors
180. Bugzilla 11974: ICE(cast.c) Segfault with invalid assignment
181. Bugzilla 11982: ICE(func.c) With function literal with no body
182. Bugzilla 12038: alias this and &this cause ICE
183. Bugzilla 12040: Compiler segfault with circular reference in variable type
184. Bugzilla 12051: Wrong code with ?: resulting in char on x86-64
185. Bugzilla 12095: Wrong code with -O -inline

#### DMD Compiler enhancements

1. Bugzilla 3597: Need single source for parser and documentation grammar.
2. Bugzilla 5109: some advise
3. Bugzilla 5746: Make std.range.iota strongly pure
4. Bugzilla 6930: combined type of immutable(T) and inout(T) should be inout(const(T))
5. Bugzilla 9477: String (and array) comparisons are needlessly very slow
6. Bugzilla 10199: labels cannot be used without a statement
7. Bugzilla 11284: add -allinst compiler switch
8. Bugzilla 11365: Allow D source file names to have no extension (or an arbitrary extension) when -run is used
9. Bugzilla 11417: rotate with immediate not recognized by optimizer
10. Bugzilla 11510: Relax restriction for overlapped pointer field access in safe code/during CTFE
11. Bugzilla 11533: Compiler should allow to being nested for static local template functions
12. Bugzilla 11546: string import dependency failure
13. Bugzilla 11711: Add __traits(getAliasThis)
14. Bugzilla 11759: Poor error message trying to use lowercase L in literal suffix.
15. Bugzilla 11840: Show all errors of undefined identifier used in a line

#### Phobos regressions

1. Bugzilla 1832: reading/writing an archive causes data loss; std.zip horribly broken
2. Bugzilla 11309: std.concurrency: OwnerTerminated message doesn't work
3. Bugzilla 11512: Can't build Phobos docs with win32 makefile
4. Bugzilla 11527: JSONValue cannot set values through named fields
5. Bugzilla 11528: appender: crash with -inline -O
6. Bugzilla 11576: std.algorithm.remove!(SwapStrategy.unstable) overruns array bounds
7. Bugzilla 11583: bigint bug
8. Bugzilla 11591: std.typecons.Tuple -s with classes fails at runtime as associative array keys
9. Bugzilla 11603: std.algorithm.canFind does not work when needle is 1-byte zero
10. Bugzilla 11671: ctRegex broken
11. Bugzilla 11684: SIGSEGV with ld.bfd version 2.22
12. Bugzilla 11692: can't set file attributes for std.zip.ArchiveMember
13. Bugzilla 11764: [REG2.065a]std.getopt broken
14. Bugzilla 11831: std.zip no longer allows setting madeVersion field in zip file
15. Bugzilla 11838: Missing emplace import for std.range.zip?
16. Bugzilla 11853: Tuples fail "isAssignable"
17. Bugzilla 11973: std/datetime.d(14647): Deprecation: function std.algorithm.canFind!(not).canFind!(immutable(dchar)[]).canFind is deprecated - Please use any instead
18. Bugzilla 12024: [REG DMD2.065-b2] template instantiation for swap(SysTime, SysTime) fails
19. Bugzilla 12071: Algebraic won't take delegate returning structure
20. Bugzilla 12098: libcurl bad argument on handle null
21. Bugzilla 12135: [AA] Format tail after associative array value is treated as separator if explicit separator is empty
22. Bugzilla 12168: [REG2.065a] Add ref to array() and object() of JSONValue getters to add new element

#### Phobos bugs

1. Bugzilla 1804: Severe GC leaks with repetitive array allocations
2. Bugzilla 2162: Access violation when threads run closures
3. Bugzilla 4301: BigInt * const(BigInt) doesn't work well
4. Bugzilla 4673: Bug in std.string (isNumeric)
5. Bugzilla 4874: std.numeric.dotProduct doesn't work with bigints
6. Bugzilla 5280: to!FP(Hex float string) doesn't work well
7. Bugzilla 5762: getopt: short option parameter read incorrectly when bundling enabled
8. Bugzilla 5977: String splitting with empty separator
9. Bugzilla 6730: std.algorithm.splitter conflicts with std.array.splitter
10. Bugzilla 7069: Variant Doesn't Handle Const or Immutable Contents
11. Bugzilla 7689: splitter() on ivalid UTF-8 sequences
12. Bugzilla 8013: splitter() and split() give different results
13. Bugzilla 8203: Use of std.regex.match() generates "not enough preallocated memory" error
14. Bugzilla 8291: dirEntry cannot handle root directories + unhandled exception causes crash
15. Bugzilla 8298: dirEntries special linux file in Home dir
16. Bugzilla 8877: std.encoding.transcode is extremely slow
17. Bugzilla 9528: std.array.appender can't append elements with const members
18. Bugzilla 9645: std.algorithm.splitter on string with char as separator performs badly in certain situations
19. Bugzilla 9823: Delegate accepting element not accepted in std.range.put
20. Bugzilla 10569: std.traits: EnumMembers, isExpressionTuple, isTypeTuple & Largest balks at large input
21. Bugzilla 10571: formattedWrite error with delegate and string
22. Bugzilla 10710: shared phobos library doesn't work on all linux distributions
23. Bugzilla 10864: [REG 2.064][PERFORMANCE] new Safe appender is slower than "~="
24. Bugzilla 11005: std.xml does not encode attributes
25. Bugzilla 11110: Variant.convertsTo doesn't work like isImplicitlyConvertible
26. Bugzilla 11112: Unable to execute shell commands in different threads
27. Bugzilla 11148: Can't implicitly convert const(BigInt) or immutable(BigInt) to BigInt
28. Bugzilla 11180: Launching a process from a Windows GUI process using std.process.spawnProcess always fails
29. Bugzilla 11403: functions in std.algo can't be used as pred
30. Bugzilla 11459: std.container.Array bool constraint ambiguity
31. Bugzilla 11568: can't compile std.stdio.rawWrite with -m64 in Windows
32. Bugzilla 11600: to!BigInt(string) accepts non-numeric input
33. Bugzilla 11606: Cannot instantiate Tuple of non printable
34. Bugzilla 11617: std.uni.normalize doesn't compile
35. Bugzilla 11652: Support numerical ^^ complex operations in std.complex
36. Bugzilla 11681: std.datetime.IntervalRange.opAssign with non-ref parameter is required
37. Bugzilla 11691: can't join pathSplitter with dirSeparator
38. Bugzilla 11713: std.string munch() does not properly handle UTF strings.
39. Bugzilla 11738: partialShuffle actually shuffles the entire input
40. Bugzilla 11771: Unicode set intersection with char is broken
41. Bugzilla 11775: std.regex should check for valid repetition range in assert mode
42. Bugzilla 11780: RangeError in format for incomplete format specifier
43. Bugzilla 11808: std.uni.CodepointSet('А', 'Я'+1, 'а', 'я'+1) asserts
44. Bugzilla 11839: std.regex capture group names should allow numbers to be in them
45. Bugzilla 11879: missing default User-Agent in std.net.curl
46. Bugzilla 11884: std.container.Array lacks a constructor from an input range
47. Bugzilla 12069: ctRegex is 3x slower then R-T ?

#### Phobos enhancements

1. Bugzilla 3868: It would be nice to have a function which read a file lazily using a range
2. Bugzilla 4859: Another File.byChunk()
3. Bugzilla 4909: Two suggestions for std.algorithm.schwartzSort()
4. Bugzilla 5611: back() and front() with ref return + opSlice() in sort() constraint
5. Bugzilla 6986: SortedRange[x..$] fails with unidentified __dollar
6. Bugzilla 8167: BigInt(BigInt(1)) too
7. Bugzilla 9061: BigInt | BigInt, BigInt & int
8. Bugzilla 11770: std.regex.Captures should be convertible to bool
9. Bugzilla 11789: No setAttributes to complement getAttributes
10. Bugzilla 11798: std.algorithm.all with no predicate too

#### Druntime regressions

1. Bugzilla 11478: shared library on osx: worked in 2.062, fails in 2.063.2, still fails in 2.064

#### Druntime bugs

1. Bugzilla 3454: Inconsistent flag setting in GC.realloc()
2. Bugzilla 4809: Stack trace when throwing exception misses location of the throw statement
3. Bugzilla 7508: float4 values aren't stored on initialisation
4. Bugzilla 8301: Access violation when a big array is allocated
5. Bugzilla 10701: [GC] segfault in GC
6. Bugzilla 11806: Freeze in GC.collect() in in-contracts when multithreading is used

#### Optlink regressions

1. Bugzilla 11559: Optlink crash with more than 2048 modules generated and debug info

#### Optlink bugs

1. Bugzilla 2837: OPTLINK and LARGEADDRESSAWARE
2. Bugzilla 3956: linker removes underscore from all exported symbols of a module but the first
3. Bugzilla 6673: Map file contains broken lines on every 16,384 bytes
4. Bugzilla 7634: optlink creates bad debug info for a large number of modules

#### Installer bugs

1. Bugzilla 10246: Windows installer still downloads from ftp.digitalmars.com
2. Bugzilla 11799: Incompatible argument types in create_dmd_release

#### Installer enhancements

1. Bugzilla 10153: Beta releases should all have unique names

#### Website regressions

1. Bugzilla 11449: Jump lists of phobos are in wrong order

#### Website bugs

1. Bugzilla 5388: SList.insertFront has complexity O(log(n))
2. Bugzilla 9734: setIntersection accepts only 2 ranges, but documentation says otherwise
3. Bugzilla 10205: 'deprecated' '(' assignExpression ')' grammar is not documented
4. Bugzilla 10206: User-defined attributes not documented well in language specification
5. Bugzilla 10250: Grammar does not allow invariants in struct declarations
6. Bugzilla 10514: Constructor declaration grammar is incorrect
7. Bugzilla 11398: Language spec does not allow new eponymous template syntax
8. Bugzilla 11579: dlang.org repo can't be built without git
9. Bugzilla 11762: std.regex macro is not displayed/expanded properly

#### Website enhancements

1. Bugzilla 11676: Add a link to D Wiki Sidebar to take users back to DLang.org
2. Bugzilla 12087: Add Readme to dlang.org repository that explains how to contribute

Copyright © 1999-2018 by the D Language Foundation | Page generated by Ddoc on Tue Jan 2 20:54:25 2018