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

previous version: 2.031 – next version: 2.033

Download D 2.032
released Sep 2, 2009

New/Changed Features

  • Improved exception message for assert(0) in Windows -release builds
  • Added support for:
    a[i].var = e2
    a[] = e
    in CTFE. (thanks, Don!)
  • Member functions can now be used in CTFE
  • Operator overloading can now be used in CTFE
  • Nested functions can now be used in CTFE
  • CTFE error messages now explain why the function could not be interpreted at compile time
  • synchronized member functions now implicitly typed as shared.
  • std.algorithm: added minPos
  • std.format: added raw specifier for reading
  • added File.byChunk
  • std.algorithm: added more unittests and checks for user-based comparison passed to topN
  • std.math: replaced std.c with core.stdc; improved approxEqual to work with ranges, not only numbers or arrays
  • std.range: defined Take.popBack whenever sensible; improved iota to accept negative ranges and steps

Bugs Fixed

  • Bugzilla 601: statement.html - Formatting/markup errors in BNF
  • Bugzilla 1461: Local variable as template alias parameter breaks CTFE
  • Bugzilla 1600: Functions taking only one array cannot be called with property syntax
  • Bugzilla 1604: Non-final method on final struct is too restrictive (closed with "invalid" advise)
  • Bugzilla 1605: break in switch with goto breaks in ctfe
  • Bugzilla 1616: std/metastrings.d
  • Bugzilla 1940: Phobos buildscripts do not work on x86_64
  • Bugzilla 1948: CTFE fails when mutating a struct in an array
  • Bugzilla 1950: CTFE doesn't work correctly for structs passed by ref
  • Bugzilla 1969: ICE(cod1.c) using undefined operator with one const operand
  • Bugzilla 1972: Foreach range statement breaks CTFE
  • Bugzilla 2150: cannot get values from const variant
  • Bugzilla 2277: array ops and const arrays incompatible
  • Bugzilla 2398: writef("%x") for a pointer is always uppercase
  • Bugzilla 2560: ICE(cod4.c) on invoking method that takes ref const struct parameter
  • Bugzilla 2564: CTFE: the index in a tuple foreach is uninitialized (bogus error)
  • Bugzilla 2569: static arrays in CTFE functions don't compile
  • Bugzilla 2575: gdb can not show code
  • Bugzilla 2587: doesn't work for win32
  • Bugzilla 2604: DW_TAG_module and GDB
  • Bugzilla 2665: ICE(cod4.c) on certain const struct function return types
  • Bugzilla 2784: Interfaces should be able to require type definitions (closed with "invalid" advise)
  • Bugzilla 2785: Interfaces should be able to require non-member functions (closed with "invalid" advise)
  • Bugzilla 2786: Interfaces should be able to require constructors (closed with "invalid" advise)
  • Bugzilla 2882: std.random.MersenneTwisterEngine without no seed
  • Bugzilla 2925: Destructor not called
  • Bugzilla 2937: postblit not called for foreach arg over array of structs
  • Bugzilla 2940: null is null cannot be evaluated at compile time
  • Bugzilla 2976: rename retreatN to retreat
  • Bugzilla 2979: Xml tags with only attributes return as without attributes ElementParser.parse
  • Bugzilla 2980: compiler error when writefln( uint )
  • Bugzilla 2987: D2 phobos BigInt opMul doesn't work correctly
  • Bugzilla 2988: Chain needs opIndexAssign.
  • Bugzilla 2989: std.typetuple: add support for any static tuples
  • Bugzilla 2992: (closed with "later" advise)
  • Bugzilla 2996: std.typetuple: add support for any static tuples
  • Bugzilla 3000: iota should work with floats
  • Bugzilla 3017: doc errors in std.range (on behalf of Steven Schveighoffer)
  • Bugzilla 3025: uniform(float,float) pops first, uniform(int,int) pops last
  • Bugzilla 3037: Off-by-one error in Stride.length
  • Bugzilla 3039: -vtls compiler flag not listed in man file
  • Bugzilla 3058: [CTFE] Cannot return out of foreach range statement
  • Bugzilla 3074:!(string)(int.min)
  • Bugzilla 3077: 3077 crash exiting main() without result code
  • Bugzilla 3087: std.range.retro.opIndex out of range
  • Bugzilla 3098: std.algorithm.reduce example can not compile
  • Bugzilla 3100: ICE(cast.c) struct with members is shared
  • Bugzilla 3132: std.string.split should be templated on mutable/const/immutable
  • Bugzilla 3148: syntax error using invariant
  • Bugzilla 3153: win32.mak tries to copy phobos.lib, gcstub.obj to nonexistent folder lib
  • Bugzilla 3162: can't fully use compile-time floats as template parameters
  • Bugzilla 3165: What kind of integer division does D use?
  • Bugzilla 3166: "positive" -> "non-negative" in modulo operator description
  • Bugzilla 3169: Segfault(cast.c) dividing ulong by int
  • Bugzilla 3170: Forward reference of nested class fails if outer class is not plain
  • Bugzilla 3183: Spec of align attribute needs work
  • Bugzilla 3184: std.algorithm.until should work like "find"
  • Bugzilla 3185: osx is not a directory (complains cannot read std/c/osx/socket.d)
  • Bugzilla 3186: corrections for
  • Bugzilla 3189: : check for a custom to method in classes/structs
  • Bugzilla 3192: asm in a anonymous delegate crash the compiler
  • Bugzilla 3195: std.conv pureness (closed with "later" advise)
  • Bugzilla 3196: Segfault(mtype.c) after almost any error involving a delegate literal
  • Bugzilla 3197: Minor fixes and additions to std.traits
  • Bugzilla 3199: sort(chain(...)) doesn't work in some cases
  • Bugzilla 3205: CTFE: $ cannot be used in lvalues
  • Bugzilla 3212: Error message says "mutable"; should say "immutable"
  • Bugzilla 3217: std.functional.binaryFunImpl doesn't support UDT with string functions , therefore neither does many std.algorithm functions
  • Bugzilla 3218: Performance of std.xml.encode must be improved
  • Bugzilla 3219: Inaccurate!(numeric)(numeric) error messages
  • Bugzilla 3224: std.random documentation bugs
  • Bugzilla 3229: No return or assert(0) at end of function
  • Bugzilla 3236: Postblit called but no matching destructor
  • Bugzilla 3239: std.conv.roundTo does not accept const/immutable/shared
  • Bugzilla 3240: std.numeric.findRoot only works with real
  • Bugzilla 3242: splitter does not handle input range made of a unique separator correctly
  • Bugzilla 3245: Easy bug fix available for disabled unit test code in std.encoding
  • Bugzilla 3246: ICE(init.c) using indexed array initializer on local array
  • Bugzilla 3249: sort and setIntersection on array of struct or class
  • Bugzilla 3253: DMD crashes on function pointer struct member initialization with function literal
  • Bugzilla 3255: final switch broken with -w switch
  • Bugzilla 3257: Spec is unclear describing string switch case labels
  • Bugzilla 3260: "Error: undefined identifier backend" when compiling 'write' with 'wchar'
  • Bugzilla 3264: -O causes wrong "used before set" error when using enum.
  • Bugzilla 3281: ICE(cod1.c) append returned struct to array
  • Fixed bug processing spaces in dmd's directory
  • Fixed assert failure on line 4823 in expression.c
  • Fixed OSX compile error on samples/d/dhry.d
  • std.format: fixed unlisted bug in documentation
  • std.random: uniform does not work when passed immutable data
  • std.range: fixed unlisted bug in Take.back
  • unlisted: made entropy work on const/immutable arrays
previous version: 2.031 – next version: 2.033