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
local clone.
Change Log: 2.057
Download D 2.057
released Dec 13, 2011
New/Changed Features
- Better use of XMM registers in 64 bit targets.
- The invariant keyword as a synonym for immutable is now deprecated - use immutable instead
- Add Mach-O 64 bit support for obj2asm and dumpobj
- classes, interfaces, and exceptions are supported in CTFE
- Bugzilla 3474: PATCH: Implement opDollar for struct and class indexing operations
- Bugzilla 6572: Deprecate typedef
- Major overhaul of std.regex module's implementation. Breaking change in std.regex.replace with delegate, use Captures!string instead of RegexMatch!string as delegate parameter.
- As typedef has been deprecated, overloads of std.conv.to which use typedef have now been deprecated.
- std.array.insert has been deprecated. Please use std.array.insertInPlace instead.
- The overload of std.array.replace which replaces in place has been deprecated. Please use std.array.replaceInPlace instead.
- The toISOExtendedString and fromISOExtendedString functions on SysTime, Date, TimeOfDay, and DateTime in std.datetime have been deprecated. Please use toISOExtString and fromISOExtString instead.
- std.file.getTimesPosix has been deprecated. Please use std.file.getTimes instead.
- The overloads for isDir, isFile, and isSymlink in std.file which take a uint have been deprecated. Please use attrIsDir, attrIsFile, and attrIsSymlink instead.
- Bugzilla 2550: implicit conversions don't apply to template value parameter specialization
- Bugzilla 3467: Non-int integral template parameters not correctly propagated
- Removed top const from dynamic array types and pointer types in IFTI.
Druntime Bugs Fixed
- Bugzilla 6909: incorrect definition of the OVERLAPPED struct in core.sys.windows.windows ?
Library Bugs Fixed
- Unlisted bug: std.conv: Fix to!float("-0")
- Unlisted bug: std.file broken on OS X x86_64 due to wrong stat64 declaration.
- Bugzilla 2936: std.regex.match() short string optimization
- Bugzilla 4765: std.math.modf always returns 0
- Bugzilla 5193: SList cannot have struct elements that have immutable members.
- Bugzilla 5620: Implicit conversion of RegexMatch to bool.
- Bugzilla 5712: [patch] std.regex.replace disallows w/dstring
- Bugzilla 6204: emplace() for classes accepts larger chunk but fails in array assignment
- Bugzilla 6887: Regression of getopt
- Bugzilla 6888: std.getopt.getopt: one-letter hash option causes range violation
- Bugzilla 6935: struct with @disable this cannot make range
- Bugzilla 6953: std.concurrency needs more documentation
- Bugzilla 6973: static assert(isOutputRange!(OutputRange!int, int)) is false
- Bugzilla 6976: GetLastError called as property
- Bugzilla 6977: getErrno called as property in std.stdio
- Bugzilla 6979: hasUnsharedAliasing cannot accept plural parameters
- Bugzilla 6990: std.string.splitlines deprecation doc missing a word
- Bugzilla 7000: missing import of std.stdio in std.regex?
- Bugzilla 7039: Posix 2.057 Makefile error breaking 64bit build
- Bugzilla 7040: Phobos must use "version/else version" blocks for proper documentation generation.
- Bugzilla 7045: AssertError in std.regex on line 1573
- Bugzilla 7055: to!float("INF2") == 2
DMD Bugs Fixed
- Bugzilla 2095: covariance w/o typechecks = bugs
- Bugzilla 2532: '=' does not give a boolean result
- Bugzilla 2778: alias this + IFTI doesn't work.
- Bugzilla 2856: static opIndex does not compile for a templated struct/class
- Bugzilla 3990: Deferencing a dynamic array as pointer
- Bugzilla 4047: [CTFE] class/struct heap allocation
- Bugzilla 4401: auto functions cannot be inner functions
- Bugzilla 4511: Contravariance problem
- Bugzilla 4583: PIC code not working: EBX register set incorrectly
- Bugzilla 5311: Pure is broken when accessing globals / static data through instance reference
- Bugzilla 5364: optimizer kills high dword of -1
- Bugzilla 5416: null should have a type of its own
- Bugzilla 5899: auto-return function cannot match 'null' with reference type.
- Bugzilla 6056: Type lookup problem in string mixins
- Bugzilla 6077: CTFE: Cannot append null array to null array.
- Bugzilla 6330: Cannot disable assignment to a struct.
- Bugzilla 6354: Optimizer bug on x86_64: Bitshift optimized out when foreach and scope(failure) are used
- Bugzilla 6416: [CTFE] Declaration static struct is not yet implemented in CTFE
- Bugzilla 6479: spurious alias this with struct and mixin template
- Bugzilla 6522: [CTFE] Problem with opAssign call in foreach(ref)
- Bugzilla 6603: [CTFE] Can't call through a manifest constant function pointer
- Bugzilla 6736: Regression(2.054): ICE (cgcod.c 1672) with alias this and certain structs
- Bugzilla 6763: Using TypeTuple with (const/in/ref etc.) changes it forever
- Bugzilla 6792: [CTFE] ICE with pointer cast of indexed array
- Bugzilla 6800: [CTFE] dangerous pointer casts should be rejected
- Bugzilla 6805: Can't use a type from opDispatch template
- Bugzilla 6816: [CTFE] nested function can't access this
- Bugzilla 6817: [CTFE] Error on interpreting inlined IfStatement
- Bugzilla 6832: Can't test objects wrapped with alias this
- Bugzilla 6836: map + UFCS = fail
- Bugzilla 6837: alias this + UFCS = fail
- Bugzilla 6851: [CTFE] Cannot deref pointer passed by argument
- Bugzilla 6859: Segfault when abstract method uses with contract.
- Bugzilla 6864: Const conversion should precedence over the shared one
- Bugzilla 6865: inout matching removes shared qualifier
- Bugzilla 6866: ICE(mtype.c): alias this and inout matching
- Bugzilla 6867: inout and nested foreach loops
- Bugzilla 6868: IsExp + incorrect static array type = error
- Bugzilla 6870: type qualifiers behave inconsistently in combination with typeof
- Bugzilla 6872: Breaking type parsing of shared(inout(int)[])
- Bugzilla 6877: [XMM] regression, clobbered float value
- Bugzilla 6879: The difference of between template matching and IsExp
- Bugzilla 6881: [XMM] ICE with painted float
- Bugzilla 6885: [CTFE] wrong code with dynamically allocated 2D array
- Bugzilla 6886: [CTFE] ICE(interpret.c) new array with initializer
- Bugzilla 6901: wrong error "override cannot be applied to variable" in CTFE forward reference
- Bugzilla 6902: Different "pure nothrow int()" types
- Bugzilla 6910: __traits(hasMember, "<name>") does not work, if template has alias param
- Bugzilla 6912: const(T)[] can be implicitly cast to inout(const(T)[])
- Bugzilla 6919: [CTFE] Cannot get effect to local variable through its pointer
- Bugzilla 6922: [TDPL] superimposing of const and immutable does not work correctly
- Bugzilla 6927: Better @property management by chained functions
- Bugzilla 6928: alias this, immutable and common type fail in presence of fields with indirections
- Bugzilla 6929: [ICE] typeMerge crashes in presence of ambiguous alias this conversions
- Bugzilla 6941: .stringof displays redundant storage classes
- Bugzilla 6972: [CTFE] ICE with ubyte/=uint
- Bugzilla 6994: Using explicit 'this' in template constraint causes an error
- Bugzilla 6997: 64bit optimizer bug
- Bugzilla 7004: Iterating tuple with index which explicitly typed as size_t causes an error
- Bugzilla 7026: 64 bit optimizer bug
- Bugzilla 7027: Struct member trySemantic() regression in DMD Git master
- Bugzilla 7028: Fails to save FPU regs when executing finally block
- Bugzilla 7072: [2.057 Beta] Assertion failure: '0' on line 145 in file 'mtype.c'
- Bugzilla 7093: aliased type sometimes isn't resolved