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

previous version: 2.054 – next version: 2.056

Download D 2.055
released Sep 4, 2011

New/Changed Features

  • Added dman
  • Add support for Mac OS X 10.7 Lion
  • Add protection to json output
  • Add SSE4.1 and SSE4.2 assembly instructions
  • Bugzilla 4375: Require explicit braces when 'else' is ambiguous
  • std.algorithm.copy now specializes on arrays for 10-80x improved performance.
  • std.path has been rewritten from scratch and has a completely new API.
  • std.utf.toUTFz allows you to get a zero-terminated string of any character type and of any type of mutability.
  • Added symlink and readLink to std.file for Posix systems.
  • Values for GDC and LDC were added to std.compiler.Vendor.
  • Added functions to std.bitswap for generically handling swapping endianness.
  • Added std.parallelism.TaskPool.workerIndex.
  • Added buffer recycling overload of std.parallelism.asyncBuf
  • std.math.tgamma, lgamma, erf, and erfc are now deprecated. The equivalent functions in std.mathspecial should be used instead.
  • The names of the values of std.mmfile.Mode, std.system.Endian, std.traits.FunctionAttributes, std.traits.ParameterStorageClass, and std.traits.Variadic were changed to match Phobos' naming conventions.
  • std.range: Added indexed and chunks
  • std.string.translate has been updated to work with unicode. As a result, its signature has been changed. The old version and std.string.maketrans have been scheduled for deprecation.
  • std.string.tr has been updated so that it works with any string type.
  • std.conv.parse works for associative array and static array
  • std.format: Improvement of formatValue and unformatValue. They now works for associative array, consider element escaping, and treat range format spec more properly.
  • std.complex: added sin(), cos(), sqrt()
  • md5: 1.4X speedup

Druntime Bugs Fixed

  • Bugzilla 5967: Mangling of ArgClose for variadic function is swapped
  • Bugzilla 6493: Source code for the doc of core.time points to std.datetime.
  • Bugzilla 6466: core.demangle incorrect demangling of variables

Library Bugs Fixed

DMD Bugs Fixed

  • Bugzilla 1471: Linker error on template function. Error 42: Symbol Undefined ...
  • Bugzilla 1567: call to private super-constructor should not be allowed
  • Bugzilla 1684: offsetof does not work, adding cast is workaround
  • Bugzilla 1904: wrong protection lookup for private template functions
  • Bugzilla 2156: [] and null should be accepted where a compile-time string is required
  • Bugzilla 2234: __traits(allMembers) returns incorrect results for mixin and template alias members of an aggregate
  • Bugzilla 2245: Bug with overloaded, mixin template functions in classes
  • Bugzilla 2246: Regression(2.046, 1.061): Specialization of template to template containing int arguments fails
  • Bugzilla 2540: super can not be using in alias statement
  • Bugzilla 2634: Function literals are non-constant.
  • Bugzilla 2355: is() doesn't resolve aliases before template matching
  • Bugzilla 2579: Template function accepting a delegate with in argument doesn't compile
  • Bugzilla 2774: Functions-as-properties makes it impossible to get the .mangleof a function
  • Bugzilla 2777: alias this doesn't forward __dollar and slice op.
  • Bugzilla 2781: alias this doesn't work with foreach
  • Bugzilla 2787: Members found in an 'alias this' are not implicitly accessible in methods
  • Bugzilla 2941: Wrong code for inline asm because CPU type is set too late
  • Bugzilla 3268: can't compare pointer to functions when one is const
  • Bugzilla 3273: Regression(2.031): struct invariant + dtor fails to compile (no line number)
  • Bugzilla 3512: dchar iteration over string in CTFE fails
  • Bugzilla 3661: ^^ not supported in array operations.
  • Bugzilla 3797: Regression(2.038): Implicit conversion between incompatible function pointers
  • Bugzilla 4021: [CTFE] AA rehash
  • Bugzilla 4099: Inconsistent behaviour of ++/-- when mixing opUnary and 'alias this'.
  • Bugzilla 4444: Cannot index built-in array with expression tuple
  • Bugzilla 4460: Regression(2.036) ICE(e2ir.c) when compiling foreach over associative array literal
  • Bugzilla 4682: [CTFE] Run-time Vs Compile-time of int.min % -1
  • Bugzilla 4773: Rebindable should be castable to bool
  • Bugzilla 4837: ICE(constfold.c) CTFE with >>>=
  • Bugzilla 4984: Recursive template constraint results in dmd running out of memory
  • Bugzilla 5046: Wrong type of implicit 'this' in struct/class templates
  • Bugzilla 5081: Pure functions as initializers for immutable structures
  • Bugzilla 5188: alias this and compare expression generates wrong code
  • Bugzilla 5239: optimizer misreports an used before set error
  • Bugzilla 5373: Regression (2.051) CTFE and std.string.replace() causes "Bad binary function q{a == b}..
  • Bugzilla 5440: ICE(template.c): when struct AssociativeArray is missing from object.d
  • Bugzilla 5585: bad debug line number info for return statements with enumerator expressions
  • Bugzilla 5745: Missing error line number with lazy argument
  • Bugzilla 5750: Allow pure functions to have lazy arguments
  • Bugzilla 5777: Move semantics require full spec NRVO
  • Bugzilla 5785: Lexing or Parsing issue with UFCS
  • Bugzilla 5790: 'Error: variable result used before set' when -release -inline -O
  • Bugzilla 5799: Address-of operator fails on nested conditional operator expression
  • Bugzilla 5936: Regression(2.050): Segfault when forward-referencing pure auto-return member function with parameter.
  • Bugzilla 5953: Too many trailing commas are accepted
  • Bugzilla 6097: SSSE3 not working with MMX instructions
  • Bugzilla 6215: LLVM-compiled DMD segfaults due to mem.c alignment issues
  • Bugzilla 6220: Regression(2.053) static foreach over a string[] no longer produces directly usable strings
  • Bugzilla 6228: Regression(2.053) ICE(e2ir.c) on {auto x = (*ptr) ^^ y} with const integer types
  • Bugzilla 6230: Member functions can no longer be weakly pure
  • Bugzilla 6250: [CTFE] Crash when swapping two pointers to arrays.
  • Bugzilla 6265: Pure-inference failed when calling other pure functions
  • Bugzilla 6270: XMMREGS not preserved on indirect function call
  • Bugzilla 6276: [CTFE] Strange behavior of using ~= operator twice
  • Bugzilla 6280: [CTFE] Cannot put 'in' expression of AA in an 'if' condition
  • Bugzilla 6281: [CTFE] A null pointer '!is null' returns 'true'.
  • Bugzilla 6282: [CTFE] ICE when dereferencing a pointer to reference type from 'in' of an AA
  • Bugzilla 6283: [CTFE][Regression 2.054] Failed to assign to AA using a constness-changed array as key
  • Bugzilla 6284: [Regression 2.054] 'pure' does not work with 'with' statement
  • Bugzilla 6286: Regression(2.054): Static arrays can not be assigned from const(T)[N] to T[N]
  • Bugzilla 6293: [Regression 2.054] The expression x.y makes the function impure when the 'x' part is not just a variable
  • Bugzilla 6295: [Regression 2.054] Segfault in checkPurity() of template value parameter
  • Bugzilla 6306: Regression(2.054): [CTFE] Strange behavior of indirect recursive call in CTFE
  • Bugzilla 6308: Destruction of temporaries on exception causes unhandled access violation
  • Bugzilla 6316: Regression(2.054): Class downcast is rejected in @safe code
  • Bugzilla 6317: ICE on struct literal of nested struct
  • Bugzilla 6331: [CTFE] Cannot evaluate SliceExp on if condition
  • Bugzilla 6337: [CTFE] ICE when touching member variable of struct during CTFE
  • Bugzilla 6344: [CTFE] Assertion Failure in interpret.c when create an empty slice from null pointer
  • Bugzilla 6351: Regression(2.054) Segfault: Vararg delegate as template param
  • Bugzilla 6355: Template constructor cannot initialize non-mutable field
  • Bugzilla 6366: alias this doesn't work with foreach range.front
  • Bugzilla 6369: alias this doesn't work with initializer
  • Bugzilla 6374: [CTFE] Cannot subscript using pointer to array
  • Bugzilla 6375: [CTFE] Segfault when using std.array.appender with an initial array
  • Bugzilla 6386: [CTFE] ICE on pointer casting
  • Bugzilla 6389: Segfault(dsymbol.c): deprecated @disable
  • Bugzilla 6399: [CTFE] struct member array.length -= x doesn't work, while array[0..$-x] works
  • Bugzilla 6404: Cannot check ref-ness of auto ref parameter in template constraint
  • Bugzilla 6418: [CTFE] Cannot call a struct member function with name 'length'.
  • Bugzilla 6420: [CTFE] ICE on dereference-assigning to a pointer casted from a literal
  • Bugzilla 6429: Nested function error in reduce
  • Bugzilla 6433: Meta-Bug AA type propagation
  • Bugzilla 6434: opDispatch must be considered before alias this.
  • Bugzilla 6491: Fully qualified values in default arguments of non-template functions are generated with an extra 'module' keyword
  • Bugzilla 6499: [GSoC] Destructor not called on object returned by method.
  • Bugzilla 6505: Wrong code for expression involving 8 floats, only with -O
  • Bugzilla 6508: alias this doesn't work with AssignExp rhs
  • Bugzilla 6510: [CTFE] "internal error: illegal stack value" when compiled with -inline
  • Bugzilla 6511: [CTFE] Array op gives wrong result
  • Bugzilla 6512: [CTFE] new T[][] doesn't work
  • Bugzilla 6516: Regression(2.055 beta) [CTFE] ICE(constfold.c) involving new dchar[]
  • Bugzilla 6517: [CTFE] ptr++ doesn't work but ++ptr does
  • Bugzilla 6546: alias this + IdentityExpression doesn't work
  • Bugzilla 6556: ICE for ImportStatement in DebugStatement
  • Bugzilla 6558: [CTFE] UTF-decoding foreach gives wrong index (1-indexed)
  • Bugzilla 6561: alias this + undefined symbol should cause error
  • Bugzilla 6563: wrong code when using at least 8 XMM regs
  • Bugzilla 6577: 'Cannot initialize member' error line number
  • Bugzilla 6601: Regression(2.053): CTFE segfault taking address of function template
  • Bugzilla 6602: Invalid template instantiations leaked by is(typeof())/__traits(compiles, )/Type::trySemantic
previous version: 2.054 – next version: 2.056