D Change Log
Version
D 2.047
Jun 11, 2010
New/Changed Features
- Changed "op=" to just "op" for template argument to opOpAssign
- std.algorithm: Added save() to forward ranges; added split() using only one element as separator; added indexOf; fixed unlisted bug in startsWith and endsWith; added skipOver(); added canFind().
- std.array: Added implementation of save() for T[]s.
- std.concurrency: Eliminated spurious unittest stdout messages.
- std.container: Added.
- std.conv: Added file and line information to conversion errors; added brackets '[' and ']' around arrays and associative arrays as defaults; added emplace() for non-class types.
- std.file: Replaced exception upon out-of-memory error with assert(0).
- std.functional: toDelegate now accepts callable(function pointers, delegates and objects implement opCall)
- std.path: Made basename() generic in string type.
- std.range: Added the existence of the property save as a condition for isForwardRange; added save to the range defined within; replaced a couple of awkward front() implementations; defined module-level moveFront() and range member moveFront() where appropriate; added @property maxLength to Take; arranged things such that take() for slice-able ranges returns the same type as the slice; eliminated SListRange; defined iota() with one argument; moved BinaryHeap within.
- std.regex: Qualified indexOf with std.algorithm.
- std.regexp: Qualified indexOf with std.algorithm.
- std.stdio: Added an error message to enforce() in rawRead().
- std.string: Improved indexOf(), tolower(), splitter(), chomp().
- std.traits: Added templates to get compile-time information about functions.
- std.typecons: Added AutoImplement.
- std.utf: Eliminated decodeFront() and decodeBack() - they aren't needed since strings are bidirectional ranges.
- Bugzilla 2008: Poor optimization of functions with ref parameters
- Bugzilla 3793: Functions with static arrays as arguments are not inlined
- Bugzilla 4296: Reduce parasitic error messages
Bugs Fixed
- Bugzilla 1193: regression: "matches more than one template declaration" doesn't list the location of the conflicting templates
- Bugzilla 1894: scope(exit) is ignored except in compound statements
- Bugzilla 1941: missing line on inaccesable external private module member
- Bugzilla 2127: inliner turns struct "return *this" from by-value into by-ref
- Bugzilla 2276: Error message missing line number on array operation
- Bugzilla 2546: Array Ops silently fail when no slice symbol is used.
- Bugzilla 2738: Rebindable should work for interfaces.
- Bugzilla 2835: std.socket.TcpSocket doesn't actually connect
- Bugzilla 2881: x.stringof returns typeof(x).stringof when x is an enum
- Bugzilla 3064: Invalid array operation accepted, generates bad code
- Bugzilla 3088: std.xml.check() fails on xml comments
- Bugzilla 3139: compiler dies "Error: out of memory" with case range
- Bugzilla 3200: std.xml doesn't follow spec for Tag.text
- Bugzilla 3323: Segfault or ICE(e2ir.c) using struct with destructor almost anywhere
- Bugzilla 3398: Attributes inside a union screws data alignment
- Bugzilla 3465: isIdeographic can be wrong in std.xml
- Major improvements to CustomFloat, fixing Bugzilla 3520: std.numeric.CustomFloat horribly broken
- Bugzilla 3538: Default value of alias template parameter is instantiated only once.
- Bugzilla 3547: for option -od for relative path the path is added twice
- Bugzilla 3548: ICE occurs when an array is returned from a function is incorrectly used in an array op expression.
- Bugzilla 3604: extern(C) callable function with array parameters broken
- Bugzilla 3651: mangleof broken for enums
- Bugzilla 3653: Problem sorting array of Rebindable
- Bugzilla 3658: Crashing on vector operations (Mac only)
- Bugzilla 3662: Wrong compile error within struct constructor and C-style initializer
- Bugzilla 3667: Regression(D2 only): broken out(result) in contracts
- Bugzilla 3786: bug in std.string.removechars
- Bugzilla 3854: Error on static initialization of arrays with trailing comma.
- Bugzilla 3873: std.range.repeat should have popBack defined
- Bugzilla 3876: std.range.Take back/popBack methods don't work correctly
- Bugzilla 3880: std.regex functions with const/immutable Regex object
- Bugzilla 4003: The result changes only with the order of source files.
- Bugzilla 4045: [CTFE] increasing array length
- Bugzilla 4052: [CTFE] increment from array item
- Bugzilla 4056: Template instantiation with bare parameter not documented
- Bugzilla 4073: core.cpuid crashes
- Bugzilla 4078: [CTFE] Failed return of dynamic array item
- Bugzilla 4084: Ignored missing main() closing bracket
- Bugzilla 4109: writeln doesn't work with empty static array
- Bugzilla 4143: fix warnings in dmd build
- Bugzilla 4156: Segfault with array+=array
- Bugzilla 4169: building dmd with a modern gcc produces a buggy compiler
- Bugzilla 4175: linux.mak doesn't declare sufficient dependencies to support parallel builds
- Bugzilla 4188: std.file.remove throws Exception on success
- Bugzilla 4193: Regression 2.046, ICE(expression.c): initialising class member with const forward reference
- Bugzilla 4202: Changset 1517 doesn't compile
- Bugzilla 4207: std.cover.setDestDir does not work.
- Bugzilla 4208: druntime should not depend on Phobos
- Bugzilla 4212: DWARF: void arrays cause gdb errors
- Bugzilla 4213: Strange behaviour with static void[] arrays
- Bugzilla 4219: hasAliasing does not care about immutable
- Bugzilla 4220: I cannot apply @safe to intrinsic operation(eg: std.math.sqrt)
- Bugzilla 4228: std.array.replace contains 2 bugs
- Bugzilla 4230: version(unittest)
- Bugzilla 4231: Solitary opUnary Postincrement and Postdecrement user defined operators are broken.
- Bugzilla 4242: ICE(module.c): importing a module with same name as package
- Bugzilla 4249: std.regex fails to compile with debug=regex
- Bugzilla 4252: [CTFE] No array bounds checking in assignment to char[] array
- Bugzilla 4257: ICE(interpret.c): passing parameter into CTFE as ref parameter
- Bugzilla 4259: Header generation omits leading '@' for properties
- Bugzilla 4262: Header generation omits 'enum' for enum declarations
- Bugzilla 4263: Header generation omits '@system' attribute
- Bugzilla 4270: Missing line number in 'can only catch class objects' error message
- Bugzilla 4300: BigInt * int doesn't work well
- Version D 2.047
- Version D 2.046
- Version D 2.045
- Version D 2.044
- Version D 2.043
- Version D 2.042
- Version D 2.041
- Version D 2.040
- Version D 2.039
- Version D 2.038
- Version D 2.037
- Version D 2.036
- Version D 2.035
- Version D 2.034
- Version D 2.033
- Version D 2.032
- Version D 2.031
- Version D 2.030
- Version D 2.029
- Version D 2.028
- Version D 2.027
- Version D 2.026
- Version D 2.025
- Version D 2.023
- Version D 2.022
- Version D 2.021
- Version D 2.020
- Version D 2.019
- Version D 2.018
- Version D 2.017
- Version D 2.016
- Version D 2.015
- Version D 2.014
- Version D 2.013
- Version D 2.012
- Version D 2.011
- Version D 2.010
- Version D 2.009
- Version D 2.008
- Version D 2.007
- Version D 2.006
- Version D 2.005
- Version D 2.004
- Version D 2.003
- Version D 2.002
- Version D 2.001
- Version D 2.000
- changelog for 1.0
- Download latest D 2.0 alpha D compiler for Win32 and x86 linux
- tech support
Version
D 2.046
May 10, 2010
New/Changed Features
- Add hints for missing import declarations.
- Speed up compilation.
- All length methods in Phobos are now a @property.
- Bugzilla 1001: print stack trace (in debug mode) when program die
Bugs Fixed
- Fix hanging problem on undefined identifiers.
- Bugzilla 461: Constant not understood to be constant when circular module dependency exists.
- Bugzilla 945: template forward reference with named nested struct only
- Bugzilla 1055: union forward reference "overlapping initialization" error
- Bugzilla 2085: CTFE fails if the function is forward referenced
- Bugzilla 2386: Array of forward referenced struct doesn't compile
- Bugzilla 3945: AssertExpression message should implicitly convert to const char[]
- Bugzilla 4015: forward reference in alias causes error
- Bugzilla 4016: const initializer cannot forward reference other const initializer
- Bugzilla 4042: Unable to instantiate a struct template.
- Bugzilla 4100: Break and continue to label should mention foreach
- Bugzilla 4116: object.di does not match object_.d
- Bugzilla 4146: Unavailable: core.sys.posix.sys.wait.waitid()
- Bugzilla 4184: associative array with certain key types results in corrupt values during iteration
Version
D 2.044
Apr 30, 2010
New/Changed Features
- Improve spelling checking distance to 2.
- Now all unittests are run, even if some fail
- Many small improvements to error diagnostics and recovery
Bugs Fixed
- Bugzilla 1079: gdb: Dwarf Error: Cannot find DIE at 0xb705 referenced from DIE at 0x250
- Bugzilla 2437: ICE(tocsym.c, !needThis()) - default struct argument
- Bugzilla 2935: ICE(out.c) using struct with constructor as function default argument
- Bugzilla 2549: Segfault on array multiplication.
- Bugzilla 3066: Array operation without a slice as the lvalue accepted, bad codegen
- Bugzilla 3207: gdb: Push D patches upstream
- Bugzilla 3415: broken JSON output
- Bugzilla 3522: ICE(cg87.c): variable*array[].
- Bugzilla 3987: [gdb] Invalid DWARF output for function pointers
- Bugzilla 3974: ICE(init.c): Static array initializer with more elements than destination array
- Bugzilla 4036: Segfault with -inline and literal of struct containing union
- Bugzilla 4037: [gdb] Invalid DWARF output for wchar
- Bugzilla 4038: [gdb] Invalid DWARF output for function pointers with ref args
- Bugzilla 4067: [CTFE] Code inside try-catch blocks is silently ignored
- Bugzilla 4072: Stack overflow on recursive template expansion inside contract
- Bugzilla 4081: cannot compile the dmd on FreeBSD 8
- Bugzilla 4089: crash when creating JSON output for incomplete struct
- Bugzilla 4093: Segfault(interpret.c): with recursive struct templates
- Bugzilla 4105: Stack overflow involving alias template parameters and undefined identifier
- Bugzilla 4108: ICE(cod2.c): zero-length static array in function call
- Bugzilla 4118: std.conv.to!SomeStruct("hello") crashes compiler
- Bugzilla 4131: break does not work correctly with foreach and associative arrays
Version
D 2.043
Apr 6, 2010
New/Changed Features
- .init property for static arrays is now an array literal
- Improved speed of associative arrays
- std.bigint has been completely replaced with a faster implementation. Multiplication is now 5 times faster, division is 300 times faster, and squaring is 10 times faster. For large numbers (~5000 words), the speedup is 5 times larger than this.
Bugs Fixed
- Fixed memory corruption problem with array appends
- Bugzilla 122: DDoc newline behaviour produces suboptimal results
- Bugzilla 1628: Ddoc produces invalid documentation for --- blocks
- Bugzilla 2609: No documentation generated for destructor
- Bugzilla 3808: Assertion Failure : Assertion failure: 'classinfo->structsize == CLASSINFO_SIZE' on line 870 in file 'toobj.c'
- Bugzilla 3884: Segfault: defining a typedef with an invalid object.d
- Bugzilla 3911: Associative array in CTFE crashes compiler
- Bugzilla 3958: mixin(non-static method) crashes compiler
- Bugzilla 3972: Regarding module with name different from its file name
- Bugzilla 3984: Segfault(interpret.c): CTFE using struct constructor on a local static variable
- Bugzilla 3986: Struct constructors bypass default initialization of member variables
- Bugzilla 4002: dmd.conf and binary path in dmd -v output
- Bugzilla 4004: DMD 2.042 CTFE regression with functions taking ref parameters
- Bugzilla 4005: std.c.stdlib.exit in CTFE and more
- Bugzilla 4011: Incorrect function overloading using mixins
- Bugzilla 4019: [CTFE] Adding an item to an empty AA
- Bugzilla 4020: [ICE][CTFE] struct postblit in CTFE
- Bugzilla 4023: std.math.hypot() returns infinity when either argument is zero
- Bugzilla 4027: Closures in CTFE generate wrong code
- Bugzilla 4029: CTFE: cannot invoke delegate returned from function