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

previous version: 2.052 – next version: 2.054

Download D 2.053
released May 12, 2011

New/Changed Features

  • Added 64 bit tools to Linux
  • Added FreeBSD support
  • Renamed linux/bin to linux/bin32, added linux/bin64
  • osx/lib32 renamed back to osx/lib
  • Added some gc benchmark apps
  • Move std.intrinsic to core.intrinsic
  • Implemented exception chaining, as described in TDPL for Posix.
  • Added parent to __traits for QtD support
  • Allow impure code inside debug conditionals
  • Added cmpxchg16b, 64 bit bswap and movq instructions to internal assembler
  • Added bindings for libcurl: etc.c.curl
  • Added std.net.isemail
  • Added std.parallelism
  • Added support for positional parameter intervals, e.g. %1:3$s prints the first three parameters using the 's' format specifier
  • Added findSplit, findSplitBefore, findSplitAfter to std.algorithm; improved walkLength
  • Improved online documentation for std.algorithm
  • Added roundRobin, takeOne, and takeNone to std.range; improved stride
  • Added unsigned to std.traits
  • Removed std.iterator. Use either std.range.ElementType or std.range.ElementEncodingType depending on what you're trying to do.
  • Bugzilla 2656: Remove octal literals
  • Bugzilla 4097: Error: can only declare type aliases within static if conditionals
  • Bugzilla 4360: Allow intrinsics in core.bitop to operate as intrinsics
  • Bugzilla 4833: dmd -od doesn't make it to optlink's command line for map files

Druntime Bugs Fixed

  • Bugzilla 5612: core.cpuid not implemented on 64
  • Bugzilla 1001: print stack trace (in debug mode) when program die
  • Bugzilla 5847: Threads started by core.thread should have same floating point state as main thread

Library Bugs Fixed

  • Bugzilla 4644: assertExceptionThrown to assert that a particular exception was thrown
  • Bugzilla 4944: Missing tzname even though we have tzset
  • Bugzilla 5451: Three ideas for RedBlackTree
  • Bugzilla 5474: unaryFun byRef is borked for custom parameter name
  • Bugzilla 5485: TLS sections handled incorrectly in FreeBSD
  • Bugzilla 5616: std.datetime: not cross-platform
  • Bugzilla 5654: BigInt returns ZERO with strings of single digit number with leading zeros
  • Bugzilla 5661: std.algorithm.move does not work on elaborate struct
  • Bugzilla 5731: std.datetime.SysTime prints UTC offsets backwards
  • Bugzilla 5761: std.datetime: Date.this(int day) conversion fails for Dec 30 of leap years
  • Bugzilla 5780: [patch] std.traits.hasIndirections incorrectly handles static arrays
  • Bugzilla 5781: std.datetime: On Windows, times off by one hour in some years due to DST rule changes
  • Bugzilla 5794: std.datetime StopWatch (and perhaps benchmark) examples need a small fix
  • Bugzilla 5928: Bigint modulo problem -- critical wrong-code bug

DMD Bugs Fixed

  • Note: Although temporaries are destroyed now, they are not destroyed when exceptions are thrown. This is scheduled to be fixed.
  • Bugzilla 2436: Unexpected OPTLINK termination EIP = 00425303 with /co
  • Bugzilla 3372: optlink silently mistreats object files with more than 16384 symbols
  • Bugzilla 4275: Unexpected optlink termination when 'export' attribute is missing
  • Bugzilla 4808: UNEXPECTED OPTLINK TERMINATION AT EIP=0042787B
  • Bugzilla 5670: Optlink 8.00.11 crash
  • Bugzilla 937: C-style variadic functions broken
  • Bugzilla 1330: Array slicing does not work the same way in CTFE as at runtime
  • Bugzilla 1336: Inconsistent __traits usage
  • Bugzilla 1389: Can't use mixin expressions when start of a statement.
  • Bugzilla 1880: templates instantiated with non-constants should fail sooner
  • Bugzilla 2257: Template value parameters behave like alias parameters
  • Bugzilla 2414: enum is dynamically evaluated, yum
  • Bugzilla 2526: non-const initializer to constant accepted inside template
  • Bugzilla 2706: invalid template instantiation (and declaration?) is not rejected
  • Bugzilla 2733: Unclear semantics of template value parameters
  • Bugzilla 2841: char[] incorrectly accepted as a template value argument in D2
  • Bugzilla 2850: bad codegen for struct static initializers
  • Bugzilla 2990: TypeInfo.init() returns invalid array
  • Bugzilla 3086: TypeInfo opEquals returns incorrect results
  • Bugzilla 3214: Incorrect DWARF line number debugging information on Linux
  • Bugzilla 3271: Struct initializers silently fail
  • Bugzilla 3516: Destructor not called on temporaries
  • Bugzilla 3792: Regression(1.053) "non-constant expression" for a template inside a struct using a struct initializer
  • Bugzilla 3779: ["123"][0][$-1] causes __dollar unresolved in compile-time
  • Bugzilla 3801: CTFE: this.arr[i] cannot be evaluated at compile time for structs
  • Bugzilla 3835: ref foreach does not work in CTFE
  • Bugzilla 4033: Error: base class is forward referenced
  • Bugzilla 4050: [CTFE] array struct member slice update
  • Bugzilla 4051: [CTFE] array struct member item update
  • Bugzilla 4097: Error: can only declare type aliases within static if conditionals
  • Bugzilla 4140: Error: non-constant expression "hello"[1u..__dollar]
  • Bugzilla 4298: Constant array translated to unnecessary array literal creation
  • Bugzilla 4322: "void initializer has no value" on struct/union members initialized to "void"
  • Bugzilla 4329: Do not show error messages that refer to __error
  • Bugzilla 4360: Allow intrinsics in core.bitop to operate as intrinsics
  • Bugzilla 4437: copy construction bug with "return this;"
  • Bugzilla 4499: calls to @disabled postblit are emitted
  • Bugzilla 4543: Regression(1.054, 2.038) typedef causes circular definition and segfault
  • Bugzilla 4750: fail_compilation/fail225.d causes dmd to segv
  • Bugzilla 4815: CodeView: Global and Static symbols should have unmangled names
  • Bugzilla 4817: CodeView: Enum members should have simple names
  • Bugzilla 4833: dmd -od doesn't make it to optlink's command line for map files
  • Bugzilla 4917: Symbol conflict error message refers to aliased symbol instead of the alias
  • Bugzilla 5147: [CTFE] Return fixed-size matrix
  • Bugzilla 5268: Outdated windows GUI sample in Samples folder
  • Bugzilla 5362: checking $ in bracket is broken
  • Bugzilla 5482: Crash with align(0)
  • Bugzilla 5485: TLS sections handled incorrectly
  • Bugzilla 5524: [CTFE] Trouble with typesafe variadic function
  • Bugzilla 5647: [64-bit] Valgrind complains about illegal instruction
  • Bugzilla 5649: std.conv.parse faulty for floating point with -O -m32
  • Bugzilla 5657: Temporary object destruction
  • Bugzilla 5664: Cannot compile static synchronized member function.
  • Bugzilla 5694: va_arg doesn't work with idouble and ifloat
  • Bugzilla 5671: CTFE string concat problem
  • Bugzilla 5672: ICE(cod2.c): incorrect optimization of (long &1) == 1
  • Bugzilla 5678: new enum struct re-allocated at compile time
  • Bugzilla 5694: va_arg doesn't work with idouble and ifloat
  • Bugzilla 5706: Incorrect opcode prefix generated for x86_64 inline assembly
  • Bugzilla 5708: Incorrect string constant folding with -inline
  • Bugzilla 5717: 1.067 regression: appending Unicode char to string broken
  • Bugzilla 5722: Regression(2.052): Appending code-unit from multi-unit code-point at compile-time gives wrong result
  • Bugzilla 5735: non-scalar types implicitly converted to boolean
  • Bugzilla 5740: Unable to use this pointer in inline assembly
  • Bugzilla 5741: Add the SYSCALL and SYSRET opcodes to the inline assembler
  • Bugzilla 5798: Weakly pure function calls skipped inside a comma expression
  • Bugzilla 5812: Added constant fold optimisations for ^^ expressions
  • Bugzilla 5840: Cannot assign to an array member of struct in CTFE
  • Bugzilla 5852: CTFE: wrong code for string[] ~= const(string)
  • Bugzilla 5858: Import doesn't accept const string as argument
  • Bugzilla 5865: __dollar cannot be read at compile time
  • Bugzilla 5890: ICE and wrong scope problem for 2nd argument in static assert with DMD on git master
  • Bugzilla 5916: DMD: bad message for incorrect operands error
  • Bugzilla 5938: ICE ztc\symbol.c 1043
  • Bugzilla 5940: Cannot create arrays of std.algorithm.map
  • Bugzilla 5965: [2.053 beta] map rejects a predicate with anon-func and nested func
  • Bugzilla 5966: [2.053 beta][CTFE] Stack overflow on trivial func
  • Bugzilla 5972: CTFE: Can't assign to elements of arrays of slices
  • Bugzilla 5975: [2.053 beta][CTFE] ICE: 'global.errors' on line 1416 in file 'constfold.c'
  • Bugzilla 5976: "variable used before set" with foreach with ref + scope(failure) + structure method + -O -inline
  • Bugzilla 5982: [2.053 beta] std.iterator gone, but no mention of the change
  • Bugzilla 5987: mydll sample doesn't compile
  • Clarify tuple index out of bounds error message
  • Add 64 version of xchg and jmp to inline assembler. Fixed 64 bit LEA
  • CTFE: Generate error messages for accessing null arrays
  • Fix optimizer bug with to!float("123e2")
  • Fix spelling of cmpxchgb8
previous version: 2.052 – next version: 2.054