www.digitalmars.com

D Programming Language 2.0


Last update Wed Sep 15 02:45:08 2010

D Change Log

Version D 2.049 Sep 13, 2010

New/Changed Features

  • std.algorithm: reduce now works with non-range-based iteration, such as opApply.
  • std.numeric: Added FFT.
  • std.process: Added environment, an AA-like interface for environment variables.
  • std.range: Iota, Stride, Transversal, FrontTransveral now support slicing where possible.
  • std.range: Added support for moveFront() and assignable elements in several higher-order ranges.
  • std.range: Added Lockstep, hasLvalueElements.
  • std.range: Added virtual function-based wrappers (InputRangeObject, OutputRangeObject) for when a binary interface to a range is required.
  • std.typecons: Added convenience functions for Rebindable.
  • std.traits: Added isAssignable, isIterable, ForeachType, isSafe, isUnsafe, EnumMembers.
  • std.traits: hasLocalAliasing, hasLocalObjects and hasLocalRawAliasing are now hasUnsharedAliasing, hasUnsharedObjects and hasUnsharedRawAliasing. Aliases to the old names are included for now for backwards compatibility.
  • std.typetuple: Added anySatisfy.
  • std.array: Modified Appender's interface to fix memory issues. Note that appending via ~= and using appender on the same array will not interleave anymore.
  • Bugzilla 2477: Trailing comma in array literal sometimes accepted, sometimes not

Bugs Fixed

  • Andrej Mitrovic updated the samples/d code
  • Unlisted Bug: std.math.pow doesn't work on immutable numbers.
  • Unlisted Bug: std.math.pow floating point overload expects both arguments to be exact same type.
  • Unlisted Bug: std.path.join("", "foo") returns "/foo" instead of "foo" on Posix.
  • Unlisted Bug: std.range.iota() random access primitives inconsistent after popFront on floating point version
  • Unlisted Bug: std.algorithm.findAdjacent() [...]
  • Bugzilla 1715: Template specialization checks for equality rather than convertibility
  • Bugzilla 1970: Templated interfaces not matched
  • Bugzilla 2511: Covariant return type doesn't work with circular import
  • Bugzilla 2716: Confusion of auto and scope as the class attribute
  • Bugzilla 2903: Splitter should be bi-dir if the input range is bi-dir.
  • Bugzilla 2951: std.random.dice() should be templated on proportions.
  • Bugzilla 2958: std.getopt RangeError on missing arg
  • Bugzilla 3046: Segfault with C++ static variable (Linux only)
  • Bugzilla 3123: std.algorithm.zip fails on 'lazy' ranges
  • Bugzilla 3294: forward reference to inferred return type of function call
  • Bugzilla 3312: std.string.count should use const(char)[], not immutable.
  • Bugzilla 3348: Documentation for many std.process functions has disappeared
  • Bugzilla 3361: code in std.zlib concatenates void[] arrays
  • Bugzilla 3418: link error with cast(ulong)(ulong*real)
  • Bugzilla 3544: optlink termination 0041338f with recursive nested functions
  • Bugzilla 3554: Ddoc generats invalid output for documentation comments with non paired paranthasis
  • Bugzilla 3627: -of with a filename with a double extension confuses linker
  • Bugzilla 3877: std.range.chain do not manage infinite ranges correctly
  • Bugzilla 3894: std.range.Stride!R requires R.front() and R.back() to return by reference
  • Bugzilla 3935: opBinary is instantiated with "="
  • Bugzilla 3946: schwartzSort - SwapStrategy always unstable
  • Bugzilla 3996: Regression(2.041) ICE(glue.c) Passing struct as AA template parameter (Algebraic with struct)
  • Bugzilla 4009: OPTLINK ruins the day yet again
  • Bugzilla 4173: Regression(2.037) Explicitly instantiated templates still try to do IFTI in some cases
  • Bugzilla 4177: __ctfe can't be used in pure functions
  • Bugzilla 4278: allow inlining of super calls (undo limitations of bug3500's fix)
  • Bugzilla 4291: Pure functions cannot access mixed in variables
  • Bugzilla 4292: CommonType fails for singular alias value.
  • Bugzilla 4302: Regression(2.046, 1.061): compiler errors using startsWith in CTFE
  • Bugzilla 4345: std.range.take!string: "Nonsensical finite range with slicing but no length".
  • Bugzilla 4346: More flexible std.array.array.
  • Bugzilla 4363: Some phobos ranges are not forward ranges (but should be).
  • Bugzilla 4381: Length attribute for std.typecons.Tuple.
  • Bugzilla 4387: std.range.Cycle assumes lvalue elements.
  • Bugzilla 4388: std.range.Radial assumes lvalue elements.
  • Bugzilla 4402: std.range.Zip doesn't work w/ non-lvalue ranges.
  • Bugzilla 4403: std.range.FrontTransversal assumes lvalue elements.
  • Bugzilla 4404: std.range.Transversal assumes lvalue elements.
  • Bugzilla 4408: Ambiguity when using std.algorithm.splitter with generic ranges.
  • Bugzilla 4430: Regression(2.037) erroneous matching on specialized template function
  • Bugzilla 4455: Taking the sqrt of an integer shouldn't require an explicit cast.
  • Bugzilla 4464: std.range.take does not always return Take!R.
  • Bugzilla 4518: to!string(enum w/invalid value) produces a somewhat unhelpful error
  • Bugzilla 4564: ICE on undefined variable in foreach over 0 .. undef
  • Bugzilla 4603: array(iota(1, 0)) error.
  • Bugzilla 4643: Shared values are unwritable.
  • Bugzilla 4645: to!string(const char*) in library causes Optlink to issue warning
  • Bugzilla 4652: Compiler hangs on template with zero-length tuple and another argument
  • Bugzilla 4655: Regression(1.063, 2.048) goto to a try block ICEs
  • Bugzilla 4676: Overload resolution rejects valid code when mixing variadics, non-variadics
  • Bugzilla 4681: Appender access violation
  • Bugzilla 4691: Incorrect comparison of double and long
  • Bugzilla 4700: to!float("0") fails
  • Bugzilla 4721: compilation slow when compiling unittests on dcollections
  • Bugzilla 4748: Shadowing declaration error in std.string.tolower
  • Bugzilla 4751: Regression(1.062, 2.047) ICE(constfold.c) >> after error
  • Bugzilla 4752: fail_compilation/fail345.d asserts in expression.c
  • Bugzilla 4771: fail_compilation/fail274.d hits a halt in iasm.c
  • Bugzilla 4789: std.algorithm.sort bug
  • Bugzilla 4810: dotProduct problem with ints
  • Bugzilla 4826: Regression(2.041) "cannot create associative array" and compiler crash
  • Bugzilla 4828: ICE w/ non-boolean dot expression sth.template_instance in static if
  • Bugzilla 4834: Implicit sharing via delegates in std.concurrency
Version D 2.048 Aug 8, 2010

New/Changed Features

  • std.complex: New Complex.toString() syntax.
  • std.string: icmp() now works with all built-in string types.
  • Bugzilla 4077: Bugs caused by bitwise operator precedence
  • Bugzilla 4080: Patch for building dynamic libraries on Mac OS X

Bugs Fixed

  • Unlisted Bug: std.algorithm.filter not a forward range
  • Unlisted Bug: std.algorithm.Uniq requires a bidirectional range
  • Unlisted Bug: std.algorithm.Uniq missing a save() function
  • Unlisted Bug: std.algorithm.Group missing a save() function
  • Unlisted Bug: std.traits.isAssociativeArray reports true for structs w/ keys, values properties
  • Unlisted Bug: gc_query returns 0 for attr when called on interior pointers
  • D/112964: capacity can return a value < length
  • Bugzilla 978: std.utf's toUTF* functions accept some invalid and reject some valid UTF
  • Bugzilla 996: Error in doc on implicit conversion between pointer and array
  • Bugzilla 1418: tupleof bug on nested classes
  • Bugzilla 1678: ref with varargs generates invalid code
  • Bugzilla 2275: std.utf.toUTF16z() should return const(wchar)*
  • Bugzilla 2627: std.traits.hasAliasing reports true for static arrays
  • Bugzilla 2872: Length, opIndex for Map
  • Bugzilla 2931: Initialization struct with array from another struct
  • Bugzilla 3202: std.math.pow cause dead loop
  • Bugzilla 3326: $ in delegate literal causes Access Violation
  • Bugzilla 3355: std.string.cmp works incorrectly for mixed-type and different-length strings
  • Bugzilla 3386: to!bool(string) is not implemented
  • Bugzilla 3436: std.functional.compose with only one function
  • Bugzilla 3439: std.range.Sequence.opIndex not consistent after calling popFront().
  • Bugzilla 3447: std.file uses unconventional file permissions
  • Bugzilla 3528: FreeBSD patches for druntime.
  • Bugzilla 3560: foreach over nested function generates wrong code
  • Bugzilla 3569: DMD Stack Overflow with a struct member function inside a C-style struct initializer
  • Bugzilla 3604: extern(C) callable function with array parameters broken
  • Bugzilla 3679: Regression(2.031) template forward reference regression
  • Bugzilla 3706: delegates of interfaces with multiple inheritance fail
  • Bugzilla 3716: Regression (2.037) with multi dimensional array literals
  • Bugzilla 3782: The POSIX sys/un.h header
  • Bugzilla 3853: core.sys.posix.stdio.pclose is missing
  • Bugzilla 3872: std.algorithm.filter could become bidirectional if its input range is bidir
  • Bugzilla 3874: std.range.stride assumes a bidirectional input range
  • Bugzilla 3917: opEquals for Ojbect could be more efficient
  • Bugzilla 3937: os.path.dirname fails on absolute path
  • Bugzilla 3961: Error with to!(somestruct)
  • Bugzilla 3983: Regression(2.037): struct with == can't be member of struct with template opEquals
  • Bugzilla 4109: (reopened) writeln doesn't work with empty static array
  • Bugzilla 4171: std.random.uniform does not work for a range of characters
  • Bugzilla 4191: [FreeBSD] real constants are rounded to double precision
  • Bugzilla 4198: [FreeBSD] imprecision in decimal floating-point literals
  • Bugzilla 4238: Segfault(statement.c): with(typeof(int))
  • Bugzilla 4260: windows & basename
  • Bugzilla 4267: forward reference error when 2-fold aliasing a template instance
  • Bugzilla 4303: __traits(compiles) returns wrong result when used recursively
  • Bugzilla 4305: Take, Chain on top of ranges w/o moveFront()
  • Bugzilla 4307: spawn()'ed thread doesn't terminate
  • Bugzilla 4314: Regression(1.062): Expression array1 && array2 doesn't compile
  • Bugzilla 4327: std.container.Array.Range.~this() tries to call free(T[])
  • Bugzilla 4339: Struct destructor + invariant + struct parameter = horrific error message
  • Bugzilla 4356: Copy constructor not called under extremely mysterious circumstances
  • Bugzilla 4362: std.range.repeat and cycle do not have a .save() method
  • Bugzilla 4363: std.algorithm.Until is not a forward range
  • Bugzilla 4369: Multiple bugs in GC minimize()
  • Bugzilla 4370: POSIX monitor attribute not being used
  • Bugzilla 4396: mkdir race prevents concurrent compiling with DMD using make -j
  • Bugzilla 4400: D2 GC doesn't allocate with 16 bytes alignment
  • Bugzilla 4406: Typo (bug) in std.concurrency
  • Bugzilla 4412: Array capacity growth spikey and the ratio approaches 1.0
  • Bugzilla 4443: Optimizer produces wrong code for || or && with struct arrays
  • Bugzilla 4452: Incorrect result of BigInt ^^ long
  • Bugzilla 4470: Problems with std.bigint mod and divide
  • Bugzilla 4503: forward reference to aliased template instance
  • Bugzilla 4506: Regression(2.034): -O flag breaks some recursive functions
  • Bugzilla 4514: Regression: Cannot cast from X* to X
  • Bugzilla 4516: Regression(2.040): forward declaration of enum not supported
  • Bugzilla 4551: D2 Language Docs: http://www.digitalmars.com/d/2.0/arrays.html
  • Bugzilla 4569: extern(c++) doesn't understand const types, produces bad mangled symbol
  • Bugzilla 4570: ElementType!(void[]) shows error message
  • Bugzilla 4578: Regression(2.047,1.062): ICE(cgcod.c): var+arr[]
  • Bugzilla 4590: Spec incorrectly describes array appending and memory stomping
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.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.045 May 4, 2010

New/Changed Features

Bugs Fixed

  • Another try at fixing the Dwarf issues.
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





Version D 2.042 Mar 19, 2010

New/Changed Features

Bugs Fixed

Version D 2.041 Mar 7, 2010

New/Changed Features

Bugs Fixed

Version D 2.040 Jan 29, 2010

New/Changed Features

Bugs Fixed

Version D 2.039 Jan 1, 2010

New/Changed Features

Bugs Fixed

Version D 2.038 Dec 30, 2009

New/Changed Features

Bugs Fixed

Version D 2.037 Dec 3, 2009

New/Changed Features

Bugs Fixed

Version D 2.036 Nov 5, 2009

New/Changed Features

Bugs Fixed

Version D 2.035 Oct 14, 2009

New/Changed Features

Bugs Fixed

Version D 2.034 Oct 11, 2009

New/Changed Features

Bugs Fixed

Version D 2.033 Oct 5, 2009

New/Changed Features

Bugs Fixed

Version D 2.032 Sep 2, 2009

New/Changed Features

Bugs Fixed

Version D 2.031 July 6, 2009

New/Changed Features

Bugs Fixed

Version D 2.030 May 11, 2009

New/Changed Features

Bugs Fixed

Version D 2.029 Apr 19, 2009

New/Changed Phobos

New/Changed Features

Bugs Fixed

Version D 2.028 Apr 7, 2009

New/Changed Features

Bugs Fixed

Version D 2.027 Mar 31, 2009

New/Changed Features

Bugs Fixed

Version D 2.026 Mar 3, 2009

New/Changed Features

Bugs Fixed

Version D 2.025 Feb 14, 2009

New/Changed Features

Bugs Fixed

Version D 2.023 Jan 2, 2009

New/Changed Features

Bugs Fixed

Version D 2.022 Dec 11, 2008

New/Changed Features

Bugs Fixed

Version D 2.021 Nov 25, 2008

New/Changed Features

Bugs Fixed

Version D 2.020 Oct 20, 2008

New/Changed Features

Bugs Fixed

Version D 2.019 Sep 2, 2008

New/Changed Features

Bugs Fixed

Version D 2.018 Aug 7, 2008

New/Changed Features

Bugs Fixed

Version D 2.017 Jul 11, 2008

New/Changed Features

Bugs Fixed

Version D 2.016 Jul 8, 2008

New/Changed Features

Bugs Fixed

Version D 2.015 Jun 17, 2008

New/Changed Features

Bugs Fixed

Version D 2.014 May 16, 2008

New/Changed Features

Bugs Fixed

Version D 2.013 Apr 22, 2008

New/Changed Features

Bugs Fixed

Version D 2.012 Mar 6, 2008

New/Changed Features

Bugs Fixed

Version D 2.011 Feb 18, 2008

New/Changed Features

Bugs Fixed

Version D 2.010 Jan 20, 2008

New/Changed Features

Bugs Fixed

Version D 2.009 Jan 1, 2008

New/Changed Features

Bugs Fixed

Version D 2.008 Nov 27, 2007

New/Changed Features

Bugs Fixed

Version D 2.007 Oct 31, 2007

New/Changed Features

Bugs Fixed

Version D 2.006 Oct 16, 2007

New/Changed Features

Bugs Fixed

Version D 2.005 Oct 1, 2007

New/Changed Features

Bugs Fixed

Version D 2.004 Sep 5, 2007

New/Changed Features

Bugs Fixed

Version D 2.003 Jul 21, 2007

New/Changed Features

Bugs Fixed

Version D 2.002 Jul 1, 2007

New/Changed Features

Bugs Fixed

Version D 2.001 Jun 27, 2007

New/Changed Features

Bugs Fixed

Version D 2.000 Jun 17, 2007

New/Changed Features

Bugs Fixed

)
Forums | Comments |  D  | Search | Downloads | Home