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
Download D 2.070.0
released Jan 27, 2016
Language Changes
Library Changes
- The package std.experimental.ndslice was added. It is also available as part of the Mir library.
- The core.sys.windows package has been greatly expanded.
- TypeInfo.init has been renamed to TypeInfo.initializer.
- std.json encodes string control characters.
- Default LogLevel of FileLogger was changed to LogLevel.all.
- 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
- 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
- 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.
- 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.
- 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
- Bugzilla 13009: [REG2.064] inout overload conflicts with non-inout when used via alias this
- Bugzilla 14782: Internal error: backend/cod1.c
- Bugzilla 15369: [REG master] id.d(369): Error: Outside Unicode code space
- Bugzilla 15430: amdMmx hangs up
- Bugzilla 15500: default construction disabled for struct constructor with default arguments
- Bugzilla 15550: [Reg 2.070.0-b1] compile error while testing template constraint
DMD Compiler bugs
- Bugzilla 3438: struct ctor with defaulted parameters should be rejected
- Bugzilla 3913: Bad error message with wrong enum
- Bugzilla 4350: (mixin) mixed in template identifier is not accessible by "with" statement
- Bugzilla 7903: [TDPL] public member variables are supposed to be illegal in synchronized classes
- Bugzilla 14040: Doesn't use assignment in slice
- Bugzilla 14778: ddoc doesnt generate code for enum in template struct
- Bugzilla 15133: Error message is incomprehensible
- Bugzilla 15141: Object.factory allows the creation of derived abstract classes
- Bugzilla 15156: overload set in eponymous template
- Bugzilla 15163: Parser bug on double function call
- Bugzilla 15172: ICE(interpret.c ctfeCompile) Assertion `!fd->semantic3Errors' failed.
- Bugzilla 15209: redundant error message on invalid field access
- Bugzilla 15233: TypeTuple causes segfault in dmd 2.68.2
- Bugzilla 15239: ICE (assertion failure) in ctfeInterpret() — opDispatch & inline asm
- Bugzilla 15260: [dmd-internal] StringExp.compare may cause invalid memory access
- Bugzilla 15261: [dmd-internal] Trivial problem in BinExp.checkOpAssignTypes
- Bugzilla 15262: [dmd-internal] Duplicated initialization in Token struct static constructor
- Bugzilla 15309: [dmd-internal] ScopeExp.semantic() should set its type always
- Bugzilla 15317: Segfault in Type::kind() with DMD v2.069.0
- Bugzilla 15340: Spurious "overlapped default initialization" errors with auto fields
- Bugzilla 15352: template arguments matching error with delegates
- Bugzilla 15366: Enum typed as bool behaves as bool even when cast
- Bugzilla 15389: extern(C++) forward referencing problem
- Bugzilla 15394: [internal] CompileExp and FileExp has same op TOKmixin
- Bugzilla 15396: static immutable not recognized as constant within switch statement
- Bugzilla 15403: [internal] FileExp represents ImportExpression, the AST class naming is not intuitive
- Bugzilla 15404: [internal] DotIdExp(TOKdot) and DotExp(TOKdotexp)
- Bugzilla 15417: Wrong parameter passing for variadic nested functions within aggregate
DMD Compiler enhancements
- Bugzilla 12421: Allow simpler syntax for lambda template declarations
- Bugzilla 15015: Win64: interop with C/C++ fails if function return value is a struct of size 8
- Bugzilla 15186: Emit better diagnostic for C++ member lookup operators
- Bugzilla 15464: Template parameter-dependent attributes
Phobos regressions
- Bugzilla 14861: Error in stdio.d in LockingTextReader.readFront()
- Bugzilla 15319: [REG2.069] module map is in file std/map.d which cannot be read
Phobos bugs
- Bugzilla 3764: Remove Phobos workarounds for fixed bugs
- Bugzilla 14786: The built-in exponentiation operator ^^ sometimes returns a value with the wrong sign.
- Bugzilla 15187: dispose for allocators is broken
- Bugzilla 15188: deallocate cause memory leaks
- Bugzilla 15220: [REG2.065] std.getopt parses -o=value as "=value"
- Bugzilla 15238: Heisenbug running std.random unittests
- Bugzilla 15313: std.conv.emplace cannot initialize const objects
- Bugzilla 15336: std.json: opIn undocumented for JSONValue
- Bugzilla 15409: Mallocator cant be used in @nogc code
- Bugzilla 15420: topN(Range, Range) does not respect its less predicate
- Bugzilla 15429: [std.stdio] Broken link in documentation
Phobos enhancements
- Bugzilla 12987: topN should return the top portion of the range
- Bugzilla 15128: "IP_ADD_MEMBERSHIP" error in winsock2.d
- Bugzilla 15146: std.file.dirEntries("") only works on Windows
- Bugzilla 15198: evenChunks - std.range.chunks variant which slices range into N evenly-sized chunks
- Bugzilla 15208: Eradicate all uses of "Enforcement failed" in Phobos
- Bugzilla 15212: BigInt should implement opCast!long and opCast!int
- Bugzilla 15320: static assert(__traits(compiles, xyz)) considered harmful in unittests
- Bugzilla 15385: Apply Andersson91 idea to SortedRange.contains
Druntime bugs
- Bugzilla 15270: use TLS to store Thread.getThis (pthread_getspecific causes heavy lock contention)
- Bugzilla 15367: array of delegates comparison fails
Druntime enhancements
- Bugzilla 15053: Runtime.cArgs not @nogc
- Bugzilla 15268: possible deadlock for Thread.getAll/Thread.opApply w/ GC.collect
dlang.org bugs
- Bugzilla 8846: Specs for Inline Assembler don't include cmpxchg16b
- Bugzilla 15250: Grammar does not contain rules for multiple slices in an index expression
dlang.org enhancements
- Bugzilla 13624: Parts of the Overview page is very out of date
- Bugzilla 15078: GC documentation should reflect 2.067 changes
Tools bugs
- Bugzilla 15173: rdmd man page incorrect/outdated
- Bugzilla 15174: Add or undocument --tmpdir switch
- Bugzilla 15175: rdmd --loop and --eval now complain about std.stream deprecation warnings
Installer bugs
- Bugzilla 15456: sc.ini: Access denied for non-superusers on Windows 10
- Bugzilla 15572: Windows installer leaves "sc.ini" inaccessible
Copyright © 1999-2017 by the D Language Foundation | Page generated by
Ddoc on Wed Jul 19 22:20:30 2017