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

previous version: 2.050 – next version: 2.052

Download D 2.051
released Dec 21, 2010

New/Changed Features

  • Added std.mathspecial, containing mathematical Special Functions
  • std.base64: Replaced. Boost License, Performance improvement, Range support. Function signature changed from 'encode' to 'Base64.encode'
  • std.math: D implementation of pow. Almost all std.math functions are now @safe pure nothrow. tgamma, lgamma, erf, erfc have been moved to std.mathspecial
  • std.exception: Added pure and nothrow to assumeUnique
  • std.utf: Removed UtfError class and toUTF* shortcut functions for validation. Added pure, nothrow, @safe and @trusted attributes. count function supports dchar
  • Both druntime and phobos now build successfully with dmd -m64. Still somewhat behind dmd1, very little executes correctly still.

Bugs Fixed

  • Bugzilla 603: Undocumented behaviour: case and default create a scope
  • Bugzilla 632: Typedef/enum promotions spec ambiguous - ultimate base type or lowest common denominator?
  • Bugzilla 679: Spec needs allowances for copying garbage collection
  • Bugzilla 690: ABI not fully documented
  • Bugzilla 1351: Discrepancies in the language specification
  • Bugzilla 1466: Spec claims maximal munch technique always works: not for "1..3"
  • Bugzilla 2080: ICE(mangle.c) alias corrupts type inference of static variables
  • Bugzilla 2206: unnamed template mixin of class inside function or class has incorrect classinfo and mangleof
  • Bugzilla 2385: spec says all structs are returned via hidden pointer on linux, but it uses registers
  • Bugzilla 2392: Parsing ambiguity between function pointer declaration and function call
  • Bugzilla 2406: Declarator2 definition error
  • Bugzilla 2556: Property classinfo needs better documentation (RTTI, typeof, typeid, runtime type information)
  • Bugzilla 2616: Undocumented behaviour: part-explicit, part-implicit instantiations of function templates are accepted
  • Bugzilla 2651: class body declaration grammar incorrect
  • Bugzilla 2652: DeclDef grammar is wrong
  • Bugzilla 2734: Ambiguity in tokenizing: _._ as a float literal
  • Bugzilla 2751: const/invariant/immutable static arrays: const(T)[N] and const(T[N]) are the same, but DMD treats them as different
  • Bugzilla 2954: [tdpl] Appalling bug in associative arrays (D2 only)
  • Bugzilla 2994: Incomplete "Predefined Versions" documentation
  • Bugzilla 3020: No description is given why function may not be nothrow
  • Bugzilla 3112: Specification on what operations call the GC is missing
  • Bugzilla 3276: Recursion broken by alias template parameter
  • Bugzilla 3554: Ddoc generates invalid output for documentation comments with non paired parentheses
  • Bugzilla 3864: Dyn array allocations can be allowed in nothrow functions
  • Bugzilla 4059: Incorrect C++ name mangling
  • Bugzilla 4217: Function overloads are not distinguished when instantiating templates
  • Bugzilla 4254: ICE(mtype.c): function with const inout parameter
  • Bugzilla 4297: Nothrow functions cannot use constant dynamic array
  • Bugzilla 4384: Cyclic dependency check for modules is broken
  • Bugzilla 4434: ICE(mtype.c, 887) alias with const, shared, or immutable
  • Bugzilla 4445: roundTo!ubyte(255.0) throws
  • Bugzilla 4529: Segfault(typinf.c) involving typeid(typeof(functionName))
  • Bugzilla 4638: Regression: new writeln does not recognize "wstring toString"
  • Bugzilla 4728: Segfault(toctype.c) by protected/private constructor in an other module
  • Bugzilla 4781: Segfault(mtype.c) with forward referenced typeof and .init
  • Bugzilla 4864: ICE(statement.c) Crash on invalid 'if statement' body inside mixin
  • Bugzilla 4901: std.algorithm.sort does not compile for interfaces.
  • Bugzilla 4915: auto return type escapes function purity
  • Bugzilla 5020: Forward implicit bool conversions to alias this
  • Bugzilla 5053: Better error message for cyclic dependencies.
  • Bugzilla 5054: Splitter example doesn't work
  • Bugzilla 5094: No implicit conversion with "alias property this"
  • Bugzilla 5107: Const-shared classes/structs not typed as shared
  • Bugzilla 5110: Excess attribute propagation of structs and classes
  • Bugzilla 5117: [CTFE] Member function call with rather complex this: side effects ignored
  • Bugzilla 5120: ICE(mtype.c) void associative arrays
  • Bugzilla 5131: Segfault(expression.c) opAssign and associative arrays (AA) are broken for types != this
  • Bugzilla 5133: dmd fails to build rdmd (problem with startsWith)
  • Bugzilla 5145: Regression(2.050, 1.065) override error with forward ref of superclass
  • Bugzilla 5148: Incorrect C++ mangling of multiple const char* parameters
  • Bugzilla 5154: Class Range does not work in writeln
  • Bugzilla 5159: Segfault(interpret.c): calling a static function pointer variable in CTFE
  • Bugzilla 5163: meaningless error message with front() applied to void[].
  • Bugzilla 5164: Error without line number using "is (T...)"
  • Bugzilla 5180: ICE(arrayop.c) in-place array operation on incompatible types
  • Bugzilla 5182: ICE(expression.c): calling unittest from a function
  • Bugzilla 5191: Combination of pure and nothrow result in a function that does nothing
  • Bugzilla 5194: ddoc does not show modifiers on constructors such as pure or nothrow
  • Bugzilla 5195: Forward references ignore const
  • Bugzilla 5214: Compiler crash with array of empty {}
  • Bugzilla 5218: Can't implicitly convert from "abc"w to wchar[3]
  • Bugzilla 5220: Make std.conv.ConvError an Exception instead of an Error; deprecated ConvError and ConvOverflowError with ConvException and ConvOverflowException. Note that any code depending on the fact that these exceptions were Error gets broken.
  • Bugzilla 5230: Regression(2.041, 1.057) ICE(tocsym.c) overriding a method that has an out contract
  • Bugzilla 5238: PATCH: fix return of uninitialised var in interpret.c
  • Bugzilla 5247: std.utf.stride() should not return 0xFF
  • Bugzilla 5275: x86_64 related hidden function parameter mishandled
  • Bugzilla 5293: std.math: Error: shift by -48 is outside the range 0..32
  • Bugzilla 5294: -O optimization breaks for loop
  • Bugzilla 5321: std.math: assumes X86 or X86_64 on FPU control word code
  • Bugzilla 5322: std.math: version(Sparc) should be SPARC
  • Bugzilla 5330: Druntime/Phobos: remove special treatment for GDC
  • Bugzilla 5331: mach format problem
  • Bugzilla 5340: isOutputRange!(Appender!string, int) must be false
  • Bugzilla 5353: clear function is calling the destructor twice
previous version: 2.050 – next version: 2.052