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

previous version: 2.057 – next version: 2.059

Download D 2.058
released Feb 14, 2012

New/Changed Features

  • Add new => lambda syntax.
  • Allow 1.userproperty syntax. NOTE: 1.f is no longer a float literal, add a 0.
  • Convert to -shared dmd switch instead of -dylib
  • Better use of XMM registers in OS X 32 bit target.
  • Add inline assembler support for AVX instructions (64 bit targets only).
  • Use of base class protection is now deprecated.
  • Added traits isVirtualMethod and getVirtualMethods.
  • Struct/class invariants are now implicitly const.
  • Major overhaul of std.regex module's implementation. Breaking change in std.regex.replace with delegate, use Captures!string instead of RegexMatch!string as delegate parameter.
  • As typedef has been deprecated, overloads of std.conv.to which use typedef have now been deprecated.
  • std.array.insert has been deprecated. Please use std.array.insertInPlace instead.
  • The overload of std.array.replace which replaces in place has been deprecated. Please use std.array.replaceInPlace instead.
  • The toISOExtendedString and fromISOExtendedString functions on SysTime, Date, TimeOfDay, and DateTime in std.datetime have been deprecated. Please use toISOExtString and fromISOExtString instead.
  • std.file.getTimesPosix has been deprecated. Please use std.file.getTimes instead.
  • The overloads for isDir, isFile, and isSymlink in std.file which take a uint have been deprecated. Please use attrIsDir, attrIsFile, and attrIsSymlink instead.

Druntime Bugs Fixed

Library Bugs Fixed

DMD Bugs Fixed

  • Bugzilla 516: Mutually calling constructors allowed
  • Bugzilla 620: Can't use property syntax with a template function
  • Bugzilla 664: is(func T == function) ignores variadic arguments
  • Bugzilla 678: Compiler accepts, for a function T[] t(), t().ptr but not t.ptr
  • Bugzilla 796: Asserting a null object reference throws AssertError Failure internal\invariant.d(14) or Access Violation
  • Bugzilla 949: Wrong spec/compiler behaviour for Strings, Integers and Floats
  • Bugzilla 955: Passing arguments into functions - in, out, inout, const, and contracts
  • Bugzilla 1313: out/body disables escape analysis
  • Bugzilla 1521: Ambiguous documentation
  • Bugzilla 1563: dynamic cast is not always performed
  • Bugzilla 1570: Wrong return for address operator
  • Bugzilla 1918: __traits(getVirtualFunctions) returns final functions
  • Bugzilla 1920: Class documentation incomplete
  • Bugzilla 1943: Templates can't take function pointer parameters
  • Bugzilla 2106: export class doesn't affect, what is exported
  • Bugzilla 2351: enum with no members allowed
  • Bugzilla 2382: spec is not clear on what is allowed as global/static initializers
  • Bugzilla 2387: Static array terminology
  • Bugzilla 2411: Reference Tuple Foreach
  • Bugzilla 2417: [module] protected base member is not available via base handle in a derived class if it is defined in a separate module
  • Bugzilla 2442: opApply does not allow inferring parameter types when overloaded on const
  • Bugzilla 2443: opApply should allow delegates that are not ref if it makes no sense
  • Bugzilla 2483: DMD allows assignment to a scope variable
  • Bugzilla 2494: describe explicit casting of arrays
  • Bugzilla 2495: const syntax for member functions needs better description
  • Bugzilla 2497: delete and null relationship needs more details
  • Bugzilla 2524: final override inconsistent when implementing interfaces
  • Bugzilla 2639: Hex and octal string values not completely specified
  • Bugzilla 2819: array.sort segfaults if array length >=0x8F_FFFF
  • Bugzilla 2894: abstract classes sometimes allow non-abstract bodyless functions
  • Bugzilla 2997: allMembers does not return interface members
  • Bugzilla 3084: Formatting of lazy in parameters section
  • Bugzilla 3092: Indexing a tuple produces a tuple containing the indexed element
  • Bugzilla 3111: 'mangleof' can't be member of a struct not documented
  • Bugzilla 3187: Nested foreach over opApply doesn't work
  • Bugzilla 3204: Document global properties
  • Bugzilla 3235: [tdpl] Function literals must be deduced as "function" or "delegate"
  • Bugzilla 3265: .classinfo for Interface-typed reference does not return instance's ClassInfo
  • Bugzilla 3492: Can't overload nested functions
  • Bugzilla 3578: Impossible to run a struct invariant using assert(s)
  • Bugzilla 3735: op=
  • Bugzilla 3757: Overloading const function with overridden non-const function results in seg fault.
  • Bugzilla 3777: size_t is undefined
  • Bugzilla 3783: Text inconsistent with EscapeSequence rules
  • Bugzilla 3787: clarification: assigment to 'this'
  • Bugzilla 3791: Reference anonymous nested classes when describing new expressions
  • Bugzilla 3800: "Foreach over Structs and Classes with Ranges" and "Invariant Struct" in D2 Spec
  • Bugzilla 3838: PrimaryExpression rule doesn't permit module scope template instances
  • Bugzilla 3886: Bad example of definition file for DLLs
  • Bugzilla 3906: Undefined struct and union declarations are not documented
  • Bugzilla 3908: @ attributes not part of function grammar
  • Bugzilla 3954: DeclDef rule is missing TemplateMixinDeclaration
  • Bugzilla 3988: Provide canonical example for operator overloading
  • Bugzilla 4088: opEquals not called on interfaces
  • Bugzilla 4180: D DWARF extensions conflict with DWARF-4
  • Bugzilla 4251: Hole in the const system: immutable(T)[] implicitly casts to ref const(T)[]
  • Bugzilla 4371: segfault(template.c) template tuple in is() expression
  • Bugzilla 4413: typeof(this) doesn't work in method template signature
  • Bugzilla 4421: Union propagates copy constructors and destructors over all members
  • Bugzilla 4523: [tdpl] .remove method for Associative Arrays returns void in all cases
  • Bugzilla 4539: Refuse assignment to string literal
  • Bugzilla 4545: Alias to members possible without "this" instance
  • Bugzilla 4550: D2 Language Docs: http://www.digitalmars.com/d/2.0/statement.html
  • Bugzilla 4553: D2 Language Docs: http://www.digitalmars.com/d/2.0/struct.html
  • Bugzilla 4647: [tdpl] Cannot explicitly call final interface method, ambiguous calls allowed
  • Bugzilla 4651: Docs: Returned classes that have access to stack variables of its enclosing function
  • Bugzilla 4675: [tdpl] Eponymous Template should hide internal names
  • Bugzilla 4711: Incorrect handling of && operator with void operand
  • Bugzilla 4841: -inline wrecks nested struct with alias template parameter (An array()/map inlining problem)
  • Bugzilla 4887: Right-shifting by 32 is allowed and broken
  • Bugzilla 4940: ICE(symbol.c): Accessing tuple-typed field of struct literal with user-defined constructor
  • Bugzilla 4956: remove direct references to gcc from linux.mak
  • Bugzilla 5023: Docs about order of execution of invariant and pre/post conditions
  • Bugzilla 5111: Static function-level variables are not in the language spec.
  • Bugzilla 5114: Too many error messages
  • Bugzilla 5132: ~ unary operator silently different from C
  • Bugzilla 5138: Special token sequence
  • Bugzilla 5261: Uncompilable example for Windows
  • Bugzilla 5299: Protected inheritance is semantically undefined.
  • Bugzilla 5337: Documentation regarding interfacing with C does not account for TLS differences
  • Bugzilla 5476: spec: attributes have an optional else clause
  • Bugzilla 5493: Able to overwrite immutable data by passing through ref function parameter
  • Bugzilla 5527: Bug in http://www.digitalmars.com/d/2.0/ctod.html#closures
  • Bugzilla 5605: [tdpl] foreach with ranges doesn't support opSlice()
  • Bugzilla 5648: dmd command line option list inconsistencies
  • Bugzilla 5713: Broken final switch on ints
  • Bugzilla 5715: Contradiction in spec: meaning of variable.init
  • Bugzilla 5718: Can't demangle symbol defined inside unittest block
  • Bugzilla 5796: ICE with pragma(msg, ...) after missing ';' in a template
  • Bugzilla 5820: Documentation states string literals can implicitly convert to char*
  • Bugzilla 5841: alias grammar is incorrect
  • Bugzilla 6013: private ignored for aliases
  • Bugzilla 6037: [CTFE] recursive ref parameters evaluated incorrectly
  • Bugzilla 6091: [d-p-l.org] Description for "Modifier casting" is misleading
  • Bugzilla 6165: Anonymous enums specification
  • Bugzilla 6177: Regression(2.053): ICE backend/cgcs.c: struct with destructor in assoc. array or typesafe variadic functions
  • Bugzilla 6205: Strongly-pure nothrow functions with ignored return value are entirely stripped even if it contains a failing 'assert'.
  • Bugzilla 6208: Parameter storage classes are ignored in template function deducing.
  • Bugzilla 6364: Static struct's destructor called on exit of function
  • Bugzilla 6402: Note on @property in spec needs updating
  • Bugzilla 6451: [64bit] ICE(expression.c:4434): SymbolExp::SymbolExp(Loc, TOK, int, Declaration*, int): Assertion 'var' failed
  • Bugzilla 6473: Stack overflow with struct destructor as default parameter
  • Bugzilla 6504: Regression(2.041): "str" ~ [arr] allows string literal to be modified
  • Bugzilla 6701: template specialization resolution failure
  • Bugzilla 6704: CommaExpression as an IfCondition
  • Bugzilla 6714: [tdpl] Type inference for parameters of function and delegate literals
  • Bugzilla 6780: Templated global property functions do not work
  • Bugzilla 6839: documentation for opAssign incorrect
  • Bugzilla 6933: Segfault(declaration.c) using struct with destructor in CTFE
  • Bugzilla 6934: [CTFE] can't use $ in a slice of an array passed by ref
  • Bugzilla 6939: wrong type qualifier combination
  • Bugzilla 6940: immutable(int*)*/immutable(int)** and int** do not combine
  • Bugzilla 6948: Possible bug in compiler or documentation regarding signature of opCmp()
  • Bugzilla 6964: Error message with __error: static assert(undefined+1)
  • Bugzilla 6968: Segmantation fault, if exclamation mark absent
  • Bugzilla 6971: [lex.dd] Type of string literals are outdated
  • Bugzilla 6984: CTFE generates a torrent of spurious errors, if there was a previous error
  • Bugzilla 6985: [CTFE] Non-constant case expressions can't be interpreted
  • Bugzilla 6987: The "Memory Management" documentation incorrectly claims arrays are passed by reference
  • Bugzilla 6995: [CTFE] can't interpret static template method
  • Bugzilla 7011: No line number error for vector power
  • Bugzilla 7037: TemplateTypeParameterSpecialization works differently from IsExpression regarding alias this
  • Bugzilla 7043: CTFE: ICE illegal reference value 0LU, only with -inline
  • Bugzilla 7073: Parsing of class-returning varargs function inside module ctor fails
  • Bugzilla 7108: ICE: TraitsExp::semantic(Scope*) 2.056 -> 2.057 regression - segfault
  • Bugzilla 7120: Scope Delegates + Delegate Literals
  • Bugzilla 7123: static assert(is(typeof(toDelegate(&main)))) is false
  • Bugzilla 7124: Alias this type is not considered in template type deduction
  • Bugzilla 7127: Const-related infinite recursion in DWARF generation
  • Bugzilla 7133: [tdpl] There should be no empty statement
  • Bugzilla 7136: alias this lookup should run before merging modifiers of both sides.
  • Bugzilla 7143: [CTFE] cannot compare class references with "is"
  • Bugzilla 7144: [CTFE] base class does not call overridden members
  • Bugzilla 7154: [CTFE] failing downcast causes error
  • Bugzilla 7158: [CTFE] ICE(interpret.c) calling a class member using a dotvar expression
  • Bugzilla 7160: Regression(2.057): ICE(dsymbol.c:1052) ICE using __traits(derivedMembers)
  • Bugzilla 7162: [CTFE] "bool || void" expression crashes dmd
  • Bugzilla 7165: [CTFE] ice converting null pointer to bool with constant member function
  • Bugzilla 7166: Internal error: ../ztc/cgxmm.c 60
  • Bugzilla 7168: Regression(2.057) __traits(allMembers) returns wrong tuple
  • Bugzilla 7170: [UFCS] array + specialized template member syntax causes ICE
  • Bugzilla 7173: dmd: glue.c:1065: virtual unsigned int Type::totym(): Assertion 0 failed.
  • Bugzilla 7178: Segfault with import of invalid template
  • Bugzilla 7185: [CTFE] ICE on changing char array length
  • Bugzilla 7187: Regression(head 12d62ca5): [CTFE] ICE on slicing
  • Bugzilla 7188: "import phobos;" crashes DMD
  • Bugzilla 7189: inline failed
  • Bugzilla 7190: Tuple length incorrect
  • Bugzilla 7193: Regression(2.058head): ICE: delete lambda expression crashes dmd
  • Bugzilla 7194: [CTFE] Incorrect behaviour with pointers as local struct variable
  • Bugzilla 7196: Unfair function address overload resolution
  • Bugzilla 7197: enum string doesn't work with CTFE
  • Bugzilla 7199: std.string.indexof cannot be compiled with -inline
  • Bugzilla 7201: Lambda template assignment to variable
  • Bugzilla 7207: Explicit cast should resolve lambda type
  • Bugzilla 7212: Regression(Head): ICE with overload resolution and delegate/function inference
  • Bugzilla 7216: [CTFE] Can't call struct member function using pointer field
  • Bugzilla 7217: [CTFE] ICE on accessing struct array field
  • Bugzilla 7218: Nested function with contract is rejected
  • Bugzilla 7228: MOVDQ2Q instruction is emitted with swapped register indices
  • Bugzilla 7231: Segfault using opDispatch with property notation
  • Bugzilla 7232: Warning: statement is not reachable has no line number
  • Bugzilla 7234: Segmentation fault when using stdio
  • Bugzilla 7239: C style struct initialization doesn't work with aliases
  • Bugzilla 7245: [CTFE] Address of ref foreach parameter changes to point after array
  • Bugzilla 7248: [CTFE] Stack overflow on using struct filed pointer with address of array element
  • Bugzilla 7261: ICE(glue.c): With taskPool.reduce
  • Bugzilla 7266: [CTFE] Assign to ref param (that's taken from struct member) is noop
  • Bugzilla 7277: [CTFE ICE] Assertion failure: 'thisval' on line 1690 in file 'interpret.c'
  • Bugzilla 7278: Templated struct (instantiated with null) can't access its own members
  • Bugzilla 7285: Implicit fixed-size array cast
  • Bugzilla 7290: Heap allocation with scoped delegate literal
  • Bugzilla 7294: [Regression] No warning when escaping local reference type variables
  • Bugzilla 7295: Alias This + Pure + pointsTo = rejects-valid
  • Bugzilla 7296: [2.058] Regression: Cannot swap RefCounted
  • Bugzilla 7309: [2.058] Regression caused by new inlining code
  • Bugzilla 7321: returning void considered unsafe by safety inference
  • Bugzilla 7335: sometimes the OUT - block have undefined class members-acces
  • Bugzilla 7351: Possible asm bug: bad type/size of operands 'xadd'
  • Bugzilla 7359: Template function with typesafe variadic rejects more than one string arguments
  • Bugzilla 7363: Eponymous Template doesn't hide internal names in some cases with static if
  • Bugzilla 7365: [Regression after 2.057] AAs broken for Object keys and values with opEquals
  • Bugzilla 7367: wrong char comparison result
  • Bugzilla 7369: Inout constructor causes compiler to reject invariant
  • Bugzilla 7373: (Regression git) Renamed imports conflict with other implicitly imported symbols
  • Bugzilla 7375: Regression(2.057): Invalid downcast permitted with derived/aliased template classes
  • Bugzilla 7377: Compiler segfault in: TemplateMixin::hasPointers()
  • Bugzilla 7379: DMD segfaults on semantic3 phase when alias enum this
  • Bugzilla 7383: Blank lines in code sections cause premature section termination
  • Bugzilla 7384: Typo in volatile deprecation message
  • Bugzilla 7394: ddmangle tool needs rebuilding
  • Bugzilla 7416: 2.058 regression: fails to instantiate a constrained function template with a nested function
  • Bugzilla 7419: [2.058/CTFE] Constructor of struct is overwritten inside a unittest with -inline
  • Bugzilla 7422: Regression(master): ICE with template function and if statement
  • Bugzilla 7424: Segfault when trying to call a templated property with different const-ancy.
  • Bugzilla 7425: IFTI does not work with inout methods
  • Bugzilla 7428: regression (DMD 2.058head) ICE on slightly convoluted setup including closures
  • Bugzilla 7435: Regression(master):dmd crashes when 'scope(failure) debug ...' without -debug option.
  • Bugzilla 7475: Regression(2.058 beta): Template member erroneously inaccessible
  • Bugzilla 7498: function expected before (), not function
previous version: 2.057 – next version: 2.059