Change Log: 2.058 - D Programming Language

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

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

- Bugzilla 4295: IID_IUnknown symbol undefined in phobos.lib
- Bugzilla 7241: std.format can't read into array of dchar

#### 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

Copyright © 1999-2019 by the D Language Foundation | Page generated by Ddoc on Thu Sep 19 02:28:18 2019