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

previous version: 2.069.2 – next version: 2.070.1

Download D 2.070.0
released Jan 27, 2016

Library Changes

  1. The package std.experimental.ndslice was added. It is also available as part of the Mir library.
  2. The core.sys.windows package has been greatly expanded.
  3. TypeInfo.init has been renamed to TypeInfo.initializer.
  4. std.json encodes string control characters.
  5. Default LogLevel of FileLogger was changed to LogLevel.all.
  6. Access to the internal ptr and len fields of BitArray was deprecated.

List of all bug fixes and enhancements in D 2.070.0.

Language Changes

  1. Add syntactic support to make an alias to a function literal.

    Example:

    alias less1 = (a, b) => a < b;
    alias less2 = (a, b) => a > b;
    
    import std.algorithm : sort, equal;
    
    int[] arr = [4, 1, 3, 2];
    assert(equal(sort!less1(arr), [1, 2, 3, 4]));
    assert(equal(sort!less2(arr), [4, 3, 2, 1]));
    

Library Changes

  1. The core.sys.windows package has been greatly expanded.

    The core.sys.windows package now contains a considerably more comprehensive set of Windows API bindings. The package has been adapted from Stewart Gordon's bindings, which were originally adapted from the MinGW project.

  2. TypeInfo.init has been renamed to TypeInfo.initializer.

    The method TypeInfo.init has been renamed to TypeInfo.initializer to resolve a name clash with the type property init.

    An alias with the old name was added and will be deprecated over the next releases.

  3. std.json encodes string control characters.

    Instead of throwing a JSONException, toJSON encodes now the control characters of a string.

    assert(toJSON(JSONValue("foo\u007fbar")) == `"foo\u007Fbar"`);
    

List of all bug fixes and enhancements in D 2.070.0:

DMD Compiler regressions

  1. Bugzilla 13009: [REG2.064] inout overload conflicts with non-inout when used via alias this
  2. Bugzilla 14782: Internal error: backend/cod1.c
  3. Bugzilla 15369: [REG master] id.d(369): Error: Outside Unicode code space
  4. Bugzilla 15430: amdMmx hangs up
  5. Bugzilla 15500: default construction disabled for struct constructor with default arguments
  6. Bugzilla 15550: [Reg 2.070.0-b1] compile error while testing template constraint

DMD Compiler bugs

  1. Bugzilla 3438: struct ctor with defaulted parameters should be rejected
  2. Bugzilla 3913: Bad error message with wrong enum
  3. Bugzilla 4350: (mixin) mixed in template identifier is not accessible by "with" statement
  4. Bugzilla 7903: [TDPL] public member variables are supposed to be illegal in synchronized classes
  5. Bugzilla 14040: Doesn't use assignment in slice
  6. Bugzilla 14778: ddoc doesnt generate code for enum in template struct
  7. Bugzilla 15133: Error message is incomprehensible
  8. Bugzilla 15141: Object.factory allows the creation of derived abstract classes
  9. Bugzilla 15156: overload set in eponymous template
  10. Bugzilla 15163: Parser bug on double function call
  11. Bugzilla 15172: ICE(interpret.c ctfeCompile) Assertion `!fd->semantic3Errors' failed.
  12. Bugzilla 15209: redundant error message on invalid field access
  13. Bugzilla 15233: TypeTuple causes segfault in dmd 2.68.2
  14. Bugzilla 15239: ICE (assertion failure) in ctfeInterpret() — opDispatch & inline asm
  15. Bugzilla 15260: [dmd-internal] StringExp.compare may cause invalid memory access
  16. Bugzilla 15261: [dmd-internal] Trivial problem in BinExp.checkOpAssignTypes
  17. Bugzilla 15262: [dmd-internal] Duplicated initialization in Token struct static constructor
  18. Bugzilla 15309: [dmd-internal] ScopeExp.semantic() should set its type always
  19. Bugzilla 15317: Segfault in Type::kind() with DMD v2.069.0
  20. Bugzilla 15340: Spurious "overlapped default initialization" errors with auto fields
  21. Bugzilla 15352: template arguments matching error with delegates
  22. Bugzilla 15366: Enum typed as bool behaves as bool even when cast
  23. Bugzilla 15389: extern(C++) forward referencing problem
  24. Bugzilla 15394: [internal] CompileExp and FileExp has same op TOKmixin
  25. Bugzilla 15396: static immutable not recognized as constant within switch statement
  26. Bugzilla 15403: [internal] FileExp represents ImportExpression, the AST class naming is not intuitive
  27. Bugzilla 15404: [internal] DotIdExp(TOKdot) and DotExp(TOKdotexp)
  28. Bugzilla 15417: Wrong parameter passing for variadic nested functions within aggregate

DMD Compiler enhancements

  1. Bugzilla 12421: Allow simpler syntax for lambda template declarations
  2. Bugzilla 15015: Win64: interop with C/C++ fails if function return value is a struct of size 8
  3. Bugzilla 15186: Emit better diagnostic for C++ member lookup operators
  4. Bugzilla 15464: Template parameter-dependent attributes

Phobos regressions

  1. Bugzilla 14861: Error in stdio.d in LockingTextReader.readFront()
  2. Bugzilla 15319: [REG2.069] module map is in file std/map.d which cannot be read

Phobos bugs

  1. Bugzilla 3764: Remove Phobos workarounds for fixed bugs
  2. Bugzilla 14786: The built-in exponentiation operator ^^ sometimes returns a value with the wrong sign.
  3. Bugzilla 15187: dispose for allocators is broken
  4. Bugzilla 15188: deallocate cause memory leaks
  5. Bugzilla 15220: [REG2.065] std.getopt parses -o=value as "=value"
  6. Bugzilla 15238: Heisenbug running std.random unittests
  7. Bugzilla 15313: std.conv.emplace cannot initialize const objects
  8. Bugzilla 15336: std.json: opIn undocumented for JSONValue
  9. Bugzilla 15409: Mallocator cant be used in @nogc code
  10. Bugzilla 15420: topN(Range, Range) does not respect its less predicate
  11. Bugzilla 15429: [std.stdio] Broken link in documentation

Phobos enhancements

  1. Bugzilla 12987: topN should return the top portion of the range
  2. Bugzilla 15128: "IP_ADD_MEMBERSHIP" error in winsock2.d
  3. Bugzilla 15146: std.file.dirEntries("") only works on Windows
  4. Bugzilla 15198: evenChunks - std.range.chunks variant which slices range into N evenly-sized chunks
  5. Bugzilla 15208: Eradicate all uses of "Enforcement failed" in Phobos
  6. Bugzilla 15212: BigInt should implement opCast!long and opCast!int
  7. Bugzilla 15320: static assert(__traits(compiles, xyz)) considered harmful in unittests
  8. Bugzilla 15385: Apply Andersson91 idea to SortedRange.contains

Druntime bugs

  1. Bugzilla 15270: use TLS to store Thread.getThis (pthread_getspecific causes heavy lock contention)
  2. Bugzilla 15367: array of delegates comparison fails

Druntime enhancements

  1. Bugzilla 15053: Runtime.cArgs not @nogc
  2. Bugzilla 15268: possible deadlock for Thread.getAll/Thread.opApply w/ GC.collect

dlang.org bugs

  1. Bugzilla 8846: Specs for Inline Assembler don't include cmpxchg16b
  2. Bugzilla 15250: Grammar does not contain rules for multiple slices in an index expression

dlang.org enhancements

  1. Bugzilla 13624: Parts of the Overview page is very out of date
  2. Bugzilla 15078: GC documentation should reflect 2.067 changes

Tools bugs

  1. Bugzilla 15173: rdmd man page incorrect/outdated
  2. Bugzilla 15174: Add or undocument --tmpdir switch
  3. Bugzilla 15175: rdmd --loop and --eval now complain about std.stream deprecation warnings

Installer bugs

  1. Bugzilla 15456: sc.ini: Access denied for non-superusers on Windows 10
  2. Bugzilla 15572: Windows installer leaves "sc.ini" inaccessible
previous version: 2.069.2 – next version: 2.070.1