Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - 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.012

Download D 2.012
released Mar 6, 2008

#### New/Changed Features

- Added predefined version(unittest). See Bugzilla 458
- Removed std.math2
- Added compile time error for comparing class types against null.
- Added struct destructors and postblits.
- std.algorithm: Made some imports conditional for the Unittest version; fixed doc typo; made min and max always return the tightest type and work with mixes of signed and unsigned; changed enum value names to obey lowercase convention; changed OrderStrategy to SwapStrategy as it's not just for ordering (e.g. see eliminate).
- std.bitmanip: simplified code generated for bitfields and improved error message.
- std.format: ate dogfood: used bitfields internally.
- std.functional: fixed binaryfun to work with constant-size arrays; added compose.
- std.random: made unpredictableSeed return different numbers every call (except for rarely-encountered MT scenarios); added private variable name that will take experts millenia to figure out; changed the boundaries syntax from two separate characters '[', '(' to one string "[(" throughout.
- std.traits: added mostNegative, mostly to assuage for the unpardonable mistake of inheriting C++'s unpardonable mistake of defining "min" to mean very different things for floating-point types and integral types.
- std.typecons: added undocumented Rebindable in preparation for opImplicitCast.
- std.math:
  - Support for different CPU IEEE 'real' formats: 64-bit, 80-bit and 128-bit (quadruple) reals, both BigEndian and LittleEndian; partial support for non-IEEE 'doubledouble' reals.
  - Added implementation of nextafter Bugzilla 1722 and scalb for DMD-Windows.
  - Added nextUp(), nextDown()
  - Bugzilla 1881: feqrel nonsensical for non-real arguments.
  - internal functions isPosZero(), isNegZero() removed in favour of the more generally useful isIdentical().
  - asm versions of functions which were not implemented by DMD Windows: scalb, lrint.
  - added creal expi(real y) which is useful for simultaneous calculation of sin + cos.

#### Bugs Fixed

- std.contracts: fixed unlisted bug in pointsTo.
- std.conv: fixed bug related to number-to-number conversion (T.min hits again).
- Fixed dwarf bug with DT_AT_upper_bound
- Bugzilla 756: IFTI for tuples only works if tuple parameter is last
- Bugzilla 1454: IFTI cant deduce parameter if alias argument used
- Bugzilla 1661: Not possible to specialize on template with integer parameter
- Bugzilla 1800: Compiler crash on enums nested in structs
- Bugzilla 1801: Const structs should be assignable to non-const variables unless they contain references
- Bugzilla 1806: "const" makes typesafe variadic arguments not work properly.
- Bugzilla 1809: template.c:2600
- Bugzilla 1810: MmFile anonymous mapping does not work under win32
- Bugzilla 1819: spurious warning about missing return statement after synchronized
- Bugzilla 1821: ICE when using __traits isSame on const/invariant variables
- Bugzilla 1823: Implicit conversion to const on associative array
- Bugzilla 1828: Several Thread Issues
- Bugzilla 1833: std.c.windows.windows should use enums for constants, or be more selective about use of extern(Windows)
- Bugzilla 1836: Inline assembler can't use enum values as parameters.
- Bugzilla 1837: Make dmd stop flooding the console: prints content of passed parameter file
- Bugzilla 1843: Bogus unreachable statement on forward referenced struct, lacks line number
- Bugzilla 1850: The compiler accepts lower case asm registers.
- Bugzilla 1851: missing opCall? when cast away const struct
- Bugzilla 1852: you get opCall missing when cast to a struct(diagnostic)
- Bugzilla 1853: opCmp documentation really needs some examples
- Bugzilla 1854: bug in new flow analysis (warnings on valid code)
- Bugzilla 1857: Runtime segfault while profileing - jump to invalid code address
- Bugzilla 1862: asm: [ESI+1*EAX] should be a legal addr mode
- Bugzilla 1865: Escape sequences are flawed.
- Bugzilla 1867: lazy adds spurious const qualifier
- Bugzilla 1871: DMD debug messages printed
- Bugzilla 1873: structs with at least one immutable member are completely immutable
- Bugzilla 1874: __traits(allMembers, T) fails to list methods which only have non-mutating overloads
- Bugzilla 1876: inside a non-static class method, should "&( f)" be same as "&(this.f)" ?
- Bugzilla 1877: Errors in the documentation of std.math.atan2
- Bugzilla 1882: Internal error: ..\ztc\cod1.c 2529
- Bugzilla 1883: templates instantiated as real gives incorrect values
- Bugzilla 1884: manifest constants for strings
- Bugzilla 1885: Syntax error for object identity test between invariant/mutable references
- Bugzilla 1887: compiler freeze on array of dyn. arrays with empty first initializer

Copyright © 1999-2023 by the D Language Foundation | Page generated by Ddoc on Mon May 1 15:50:24 2023