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

previous version: 2.030 – next version: 2.032

Download D 2.031
released July 6, 2009

New/Changed Features

  • Renamed root directory \dmd to \dmd2
  • Use of with symbols that shadow local symbols is no longer allowed
  • Added final switch statements
  • Added case range statements
  • Implicit integral conversions that could result in loss of significant bits are no longer allowed.
  • Warning on no return expr; is now an error.
  • Bugzilla 3080: dmd should output compilation errors to stderr, not stdout
  • Bugzilla 3122: [patch] Adding support for fast and reliable build tools to the frontend
  • std.algorithm: Made std.algorithm.swap faster by having it use memcpy; added std.algorithm.group, std.algorithm.until, std.algorithm.nWayUnion, std.algorithm.largestPartialIntersectionWeighted; added additional constraints to std.algorithm.equal; changed signature of std.algorithm.topNIndex and std.algorithm.topNCopy to use an enum parameter instead of a confusing bool.
  • std.array: added array function.
  • std.conv: added Shin Fujishiro's code for printing and parsing enumerated values.
  • std.ctype: made isupper and tolower pure.
  • std.date: changed signature of benchmark to return ulong[] instead of uint[].
  • std.demangle: changed it to use the snazzy switch statement with ranged labels.
  • std.random: added randomSample
  • std.string: deprecated std.string.find and std.string.find, replaced with std.string.indexOf; deprecated std.string.rfind and std.string.irfind, replaced with std.string.lastIndexOf; added flag CaseSensitive for indexOf and lastIndexOf; removed startsWith and endsWith because std.algorithm defines them; defined std.string.byDchar.
  • std.traits: added isSomeChar, isPointer.
  • std.typetuple: replaced indexOf with indexOfType, kept the old name as an alias that will be deprecated.
  • std.utf: improved error messages.

Bugs Fixed

  • Fix dmd crash on multicore Windows.
  • Fixed unlisted bug in std.algorithm.startsWith
  • Fixed unlisted bug in std.algorithm.topN
  • Fixed unlisted bug in std.algorithm.topNIndex (empty index made it crash)
  • Fixed unlisted bug in std.algorithm.setIntersection
  • Fixed unlisted bug in std.range.retro: retro'izing a range twice must return the original range
  • Bugzilla 106: template - mixin sequence
  • Bugzilla 810: Cannot forward reference template
  • Bugzilla 852: ICE(toir.c) using local class in non-static nested function in nested static function
  • Bugzilla 1343: Various errors with static initialization of structs and arrays
  • Bugzilla 1358: ICE(root.c) on Unicode codepoints greater than 0x7FFFFFFF
  • Bugzilla 1524: ICE(constfold.c) on using "is" with strings in CTFE
  • Bugzilla 1984: Assertion failure: 'e1->type' on line 1198 in file 'constfold.c'
  • Bugzilla 2323: ICE(cgcs.c): taking address of a method of a temporary struct
  • Bugzilla 2399: ICE(cgcod.c) on casting function to delegate
  • Bugzilla 2429: std.stream.File incorrect flag parsing and sharing mode
  • Bugzilla 2432: complex alias -> mtype.c:125: virtual Type* Type::syntaxCopy(): Assertion 0 failed.
  • Bugzilla 2603: ICE(cgcs.c) on subtracting string literals
  • Bugzilla 2843: ICE(constfold.c) with is-expression with invalid dot-expression in is-expression involving typeid
  • Bugzilla 2865: RandomCover not random
  • Bugzilla 2875: ICE(cgcod.c) setting delegate = &Struct.func
  • Bugzilla 2884: ICE: Assert: 'template.c', line 3773, 'global.errors'
  • Bugzilla 2888: [PATCH] speedup for float * 2.0
  • Bugzilla 2900: Array appending slowed drastically since integration of druntime
  • Bugzilla 2915: [Patch]: Optimize -a*-b into a*b
  • Bugzilla 2923: -O generates bad code for ?:
  • Bugzilla 2932: bad e_ehsize (36 != 52)
  • Bugzilla 2952: Segfault on exit when using array ops with arrays of doubles larger than 8 elements
  • Bugzilla 2974: Segfault(mtype.c) on auto function
  • Bugzilla 2981: Bad code generation for structs containing invariants
  • Bugzilla 2982: Assertion failure in function if() clause
  • Bugzilla 3003: Need to implicitly add () on member template function calls
  • Bugzilla 3014: ICE(template.c) instantiating template with tuple
  • Bugzilla 3016: Errors in the documentation of std.math.acos
  • Bugzilla 3026: Segfault with incomplete static array initializer
  • Bugzilla 3044: Segfault(template.c) instantiating struct tuple constructor with zero arguments.
  • Bugzilla 3071: nested func declaration parse problem
  • Bugzilla 3078: NaN reported as equal to zero
  • Bugzilla 3081: unaryFun can't be used to get element out of struct.
  • Bugzilla 3095: wc example for D2 doesn't compile
  • Bugzilla 3114: optlink failing on multicore machines
  • Bugzilla 3117: dmd crash by *1
  • Bugzilla 3121: recurrence does not generate the correct numbers
  • Bugzilla 3128: Internal error: ..\ztc\cod4.c 2737
  • Bugzilla 3130: Crashed with triple stars
previous version: 2.030 – next version: 2.032