Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Calendar
  - Forums
  - IRC
  - Community Discord
  - Wiki
  - GitHub
  - Issues
  - Get involved
  - Contributors
  - Foundation
  - Security Team
  - Donate
  - Sponsors
- Resources
  - Tour
  - Books
  - Tutorials
  - Tools
  - Editors
  - IDEs
  - run.dlang.io
  - Visual D
  - Acknowledgments
  - D Style
  - Glossary
  - Sitemap

Search
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

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

Copyright © 1999-2021 by the D Language Foundation | Page generated by Ddoc on Sun Dec 19 20:55:00 2021