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
local clone.
Change Log: 2.059
Download D 2.059
released Apr 12, 2012
New/Changed Features
- Add predefined Ddoc macro SRCFILENAME
- Changed lexer to support # as a token, preserving #line's original behavior
- added AES, PCLMULQDQ, RDRAND, AVX, VAES, VPCLMULQDQ, FMA, FP16C to core.cpuid
- Bugzilla 435: Constructors should be templatized
- Bugzilla 2367: Overloading error with string literals
- Bugzilla 3382: [tdpl] Implement uniform function call syntax
- Bugzilla 4536: Typetuples (T...) should have an .init member
- Bugzilla 5525: Eponymous templates should allow for overloaded eponymous members
- Bugzilla 7105: relax inout rules
- Bugzilla 7833: Changelog should clearly mention struct literal/opCmp/opEquals/toHash changes
- Strive to make toHash, toString, opEquals and opCmp functions pure, nothrow, const and @safe. Soon, this will become a requirement.
- The deprecated std.date, std.dateparse, and std.gregorian modules have been removed. Please use std.datetime instead.
- Several deprecated functions in std.file have been removed.
- The old functions in std.path which were scheduled for deprecation have now been deprecated. Please use the new ones which were introduced in 2.055. However, note that curdir and pardir do not have replacements, because they're "." and ".." respectively on all OSes so variables for them were seen as unnecessary. Also, one major change to note about the new std.path functions is that when operating on extensions, they expect "." to be part of the extension whereas the old ones did not (e.g. "file.txt".extension == ".txt" whereas "file.txt".getExt() == "txt").
- The version of std.exception.enforceEx which was scheduled for deprecation has been deprecated. Please use the version which takes exceptions which can be constructed with new E(msg, file, line) (rather than just new E(msg) as the old version did). That way, exceptions constructed with enforceEx will give the file and line number where enforceEx was called.
- Get rid of Win9x support.
- std.typecons: Added Proxy mixin template.
- std.format: Added documentation about compound format specifier.
Druntime Bugs Fixed
Library Bugs Fixed
- Bugzilla 4604: A stack overflow with writeln
- Bugzilla 5523: std.regex handles "\s" and "\W" (etc.) inside square brackets improperly
- Bugzilla 5652: Add \p and \P unicode properties to std.regex
- Bugzilla 5674: AssertError in std.regex
- Bugzilla 5964: std.stdio.readln can throw a UnicodeException
- Bugzilla 6217: [GSOC] result of std.algorithm.map is not movable
- Bugzilla 6403: Upgrade std.regex to Unicode UTS #18 Level 1 support
- Bugzilla 6892: Formatted write with specified length of enum member
- Bugzilla 7111: New regex engine cannot match beginning of empty string
- Bugzilla 7138: Can't call array() on dirEntries
- Bugzilla 7264: Can't iterate result from 4-arg dirEntries as string
- Bugzilla 7299: std.uni missing doc comments
- Bugzilla 7300: std.regex.ShiftOr!dchar.search is broken
- Bugzilla 7374: stdin.byLine() throws AssertError on empty input
- Bugzilla 7460: std.windows.registry reports a false exception message
- Bugzilla 7476: Write(ln) functions no longer accept retro range
- Bugzilla 7628: std.format formatValue incorrect overload
- Bugzilla 7674: regex replace requires escaped format
- Bugzilla 7679: std.regex.split and splitter don't work w/ ctRegex
- Bugzilla 7718: regex and ctRegex produce different results
DMD Bugs Fixed
- rdmd: --force now works with --eval
- rdmd: update --eval's import list
- Bugzilla 176: [module] message "module and package have the same name"
- Bugzilla 783: Cannot use an array w/ const or variable index as new[] size argument.
- Bugzilla 977: Expressions inside a struct or array initializer get wrong line number
- Bugzilla 3279: Confusing error message when comparing types
- Bugzilla 3354: invalid number of args accepted for 1/2 arg floating point instructions
- Bugzilla 3509: Cannot forward reference a template mixin's members in a compile-time context
- Bugzilla 3510: Cannot forward reference a templated type from within a template mixin
- Bugzilla 3559: DMD 1.048+ fails to take function pointer from overloaded member functions
- Bugzilla 3630: bad error location in "has no effect in expression" error
- Bugzilla 3682: Regression(2.038) is expression fails to match types
- Bugzilla 3812: Missing line number for implicit cast of variadic function to array
- Bugzilla 3822: Invalid optimization of alloca called with constant size
- Bugzilla 3927: array.length++; is an error, but ++array.length compiles
- Bugzilla 4241: duplicate union initialization error doesn't give a file location
- Bugzilla 4269: Regression(2.031): invalid type accepted if evaluated while errors are gagged
- Bugzilla 4507: use spellchecker when override function doesn't override anything
- Bugzilla 4820: Regression(1.058, 2.044) in DStress caused by changeset 452
- Bugzilla 4854: Regression(2.047, Mac 10.5 only) writefln Segmentation fault if no globals
- Bugzilla 4993: Temporary values and opIndexAssign
- Bugzilla 5181: Excess cast on in-place operation op= involving conversion
- Bugzilla 5412: import wtf2
- Bugzilla 5554: [qtd] Covariance detection failure
- Bugzilla 5590: Regression(2.036) ICE(e2ir.c): when using .values on enum which is associative array
- Bugzilla 5733: Calling opDispatch As Template Results in Compiler Infinite Loop
- Bugzilla 5879: Not all frontend errors use stderr
- Bugzilla 5889: Struct literal/construction should be rvalue (it binds to ref parameters)
- Bugzilla 6391: Line-less error when passing the '.im' of floating pointer value by reference
- Bugzilla 6438: [CTFE] wrong error "value used before set" when slicing =void array
- Bugzilla 6611: better error message for array post increment/decrement
- Bugzilla 6681: struct constructor call is converted to struct literal that breaks union initialization
- Bugzilla 6685: Allow using "with" with rvalues
- Bugzilla 6699: More cases of __error in error messages
- Bugzilla 6738: Can't call templatized property function from within a struct/class method
- Bugzilla 6785: Wrong error message from pragma(msg) of failed instantiation
- Bugzilla 6982: immutability isn't respected on associative array assignment
- Bugzilla 7038: Type mismatch with const struct
- Bugzilla 7110: opSlice() & opIndex functions works unstable as template arguments
- Bugzilla 7288: ICE(toir.c): with lambda return + auto
- Bugzilla 7353: NRVO not properly working with inferred return type
- Bugzilla 7380: Crash trying to use address of variable in struct constructor at module level
- Bugzilla 7399: Broken import statement in trySemantic() causes silent compiler error
- Bugzilla 7406: tuple foreach doesn't work with mixed tuples
- Bugzilla 7411: Deduce base type from vector types in templates
- Bugzilla 7439: Compound assignment causes segmentation fault
- Bugzilla 7452: Function using enforce() cannot be inferred as @safe because of anonymous function due to lazy argument
- Bugzilla 7462: Error message with _error_ in overridden function
- Bugzilla 7463: Duplicated error message with bad template value parameter
- Bugzilla 7473: [CTFE] Non-ref argument behaves as if it's a ref argument
- Bugzilla 7481: Compiler should 'soldier on' after template errors
- Bugzilla 7493: Initialization of void[][N]
- Bugzilla 7499: ICE(cast.c line 1495) with lambda array
- Bugzilla 7500: [ICE] (template.c line 5287) with immutable lambda function
- Bugzilla 7502: 2.056 regression: Assigning .init takes forever to compile for large structs
- Bugzilla 7504: Cannot assign an object of type 'typeof(null)' to an array
- Bugzilla 7518: std.array.empty doesn't work for shared arrays
- Bugzilla 7525: [2.058 regression] Broken return type inference for delegate returns
- Bugzilla 7527: [CTFE] Segfault when slicing a pointer at compile time
- Bugzilla 7536: ctfeAdrOnStack triggered
- Bugzilla 7544: ICE(interpret.c) Catching an exception with a null catch block
- Bugzilla 7545: ICE(cast.c) Merge integral types through alias this
- Bugzilla 7547: -deps output lists object as a top level module
- Bugzilla 7550: Missing AVX instruction VPMULDQ
- Bugzilla 7552: Cannot get and combine a part of overloaded functions
- Bugzilla 7554: Immutable function pointer arguments too
- Bugzilla 7557: Sea of errors after template failure
- Bugzilla 7562: DMD crashes by using TemplateThisParameter
- Bugzilla 7563: Class members with default template arguments have no type
- Bugzilla 7568: pragma(msg) segfaults with an aggregate including a class.
- Bugzilla 7578: ICE on indexing result of vararg opDispatch
- Bugzilla 7580: Identity assignment of Nullable crashes dmd
- Bugzilla 7582: Untyped nested delegate literals don't compile
- Bugzilla 7583: [CTFE] ICE with tuple and alias this
- Bugzilla 7589: __traits(compiles) does not work with a template that fails to compile
- Bugzilla 7592: Conversion from ireal to ifloat broken when using xmm
- Bugzilla 7595: Data being overwritten.
- Bugzilla 7608: __traits(allMembers) is broken
- Bugzilla 7618: delegate/function pointer call bypass parameter storage class
- Bugzilla 7621: Immutable type equivalence problem
- Bugzilla 7633: Missing CTFE error message
- Bugzilla 7639: Undefined enum AA key crashes compiler
- Bugzilla 7641: std.typecons.Proxy incorrectly allows implicit conversion to class
- Bugzilla 7643: Whole tuple slice isn't resolved as expected
- Bugzilla 7649: Bad lambda inference in default function argument
- Bugzilla 7650: Bad lambda inference in associative array literal
- Bugzilla 7667: ICE(interpret.c): 'ctfeStack.stackPointer() == 0'
- Bugzilla 7669: Broken inout deduction with static array type
- Bugzilla 7670: UFCS problem with @property and structs
- Bugzilla 7671: Broken inout deduction of shared(inout(T[n])) from immutable(int[3])
- Bugzilla 7672: Remove top const doesn't work for inout array type.
- Bugzilla 7681: Regression(2.059head):ICE:opCatAssign(delegate) to undefined identifier
- Bugzilla 7682: shared array type and "cast() is not an lvalue" error
- Bugzilla 7684: IFTI and shared overload doesn't work
- Bugzilla 7694: Internal error: e2ir.c 1251 when calling member function inside struct via alias param
- Bugzilla 7695: Regression(2.058): ICE(mtype.c) on associative array with keys of struct type with const members
- Bugzilla 7698: can't specialize parameterized template value
- Bugzilla 7699: Cannot get frame pointer to in contract when compiling with -inline
- Bugzilla 7702: opDispatch goes into infinite loop
- Bugzilla 7703: [UFCS] explicit template function instantiation as property
- Bugzilla 7705: lambda syntax doesn't allow some valid signatures
- Bugzilla 7713: lambda inference doesn't work on template function argument
- Bugzilla 7722: Refuse normal functions to be used as properties
- Bugzilla 7731: Assertion failure: 't' on line 7911 in file 'mtype.c'
- Bugzilla 7732: [CTFE] wrong code for a struct called AssociativeArray
- Bugzilla 7735: Functions with variadic void[][]... arguments corrupt passed data
- Bugzilla 7742: 'More initializers than fields' error with correct number of fields
- Bugzilla 7743: Parsing problem with nothrow delegate
- Bugzilla 7745: Regression (1.x git-415e48a) Methods defined in external object files when a pointer to it is taken
- Bugzilla 7751: [ICE] (Regression 2.059head) From auto and forward reference
- Bugzilla 7754: static this() in template is stripped during header gen
- Bugzilla 7755: regression(2.059head): ICE in glue.c
- Bugzilla 7757: Inout function with lazy inout parameter doesn't compile
- Bugzilla 7761: lambda expression doesn't parse attributes
- Bugzilla 7768: More readable template error messages
- Bugzilla 7769: relax inout rule doesn't work for template function
- Bugzilla 7722: Refuse normal functions to be used as properties
- Bugzilla 7773: UCFS syntax on built-in attributes too?
- Bugzilla 7781: [CTFE] Segmentation fault on 'mixin({return;}());
- Bugzilla 7782: [ICE] With wrong import syntax
- Bugzilla 7785: [CTFE] ICE when slicing pointer to variable
- Bugzilla 7786: dmd crashes with invalid module name
- Bugzilla 7789: [CTFE] null pointer exception on setting array length
- Bugzilla 7794: Sea of errors when calling regex() after compile error
- Bugzilla 7808: Nullable's alias this does not work with structs containing classes
- Bugzilla 7812: Segfault on invalid code during template match deduction with errors gagged
- Bugzilla 7814: Regression(2.059head) ICE(tocsym.c) using scope(failure) within foreach-range
- Bugzilla 7815: Mixin template forward reference (?) regression
- Bugzilla 7820: regression(DMD 2.059head) Wrong error on forward reference to 'front' with -property switch
- Bugzilla 7823: Can't use a struct initializer to initialize a nested enum used as a default function argument initializer
- Bugzilla 7826: [D2 Beta] Cannot use getHash in toHash without a warning
- Bugzilla 7843: Regression(2.059 beta): Informational warning fails to produce executable
- Bugzilla 7857: File#write formats enum as a boolean.
- Bugzilla 7858: __traits(getOverloads) returns incorrect symbol
- Bugzilla 7859: Crash on invalid alias template parameter type
- Bugzilla 7861: Segfault during __error propagation with self-referencing module
- Bugzilla 7862: Accepts-invalid template forward reference bug related to derivedMembers
- Bugzilla 7868: derivedMembers/static if regression
- Bugzilla 7869: Cannot format pointer of struct has toString member function
- Bugzilla 7871: RangeViolation with findSplitBefore
- Bugzilla 7873: [2.059 beta] IFTI with inout does not properly match template parameter if called from inout function for pointers
- Bugzilla 7886: derivedMembers infinite recursion
- Bugzilla 7888: derivedMembers forward reference error with nested imports