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

previous version: 2.049 – next version: 2.051

Download D 2.050
released Oct 29, 2010

New/Changed Features

  • added talign() and argTypes() to TypeInfo
  • Upgrade zlib support to zlib 1.2.5
  • std.stdio: Added ByChunk. This struct is a InputRange like ByLine. File.byChunk returns ByChunk
  • std.traits: Most higher-order ranges now work with const/immutable arrays and other ranges with a natural tail const, and ranges w/ const/immutable elements.
  • Bugzilla 4888: Heavy reliance on Bug 3534 in Phobos range usage
  • Bugzilla 4987: C function pointer syntax needs to be deprecated
  • std.typecons: Several improvements to the Tuple struct template:
    • Tuple members are now accessible with the syntax a[0], a[1] etc.
    • Eliminated an internal union. See Bugzilla 4421 and Bugzilla 4846.
    • Worked around Bugzilla 4424. Got opAssign back.
    • Made Tuple.slice!(from, to) to preserve field names if any.
    • Added isTuple!(T) template.
  • std.algorithm: changed filter() such that filter is curryable
  • std.algorithm: Added function balancedParens
  • std.typecons: Deprecated defineEnum
  • Added relaxed purity checking rules.

Bugs Fixed

  • Unlisted bug: std.exception.pointsTo() calls postblit on subobjects.
  • Unlisted bug: std.typetuple.staticMap!() doesn't work with empty/single tuples.
  • Unlisted bug: std.traits: Interfaces should have indirections, aliasing, etc.
  • Unlisted bug: std.socket: Race condition - gethostbyname and gethostbyaddr on Linux return static data. The call was synchronized, but using the data wasn't
  • Unlisted bug: signed long comparisons under OS X
  • Bugzilla 941: std.regexp fails to match when grouping certain sub-expressions
  • Bugzilla 1482: std.file docs are insufficient
  • Bugzilla 1635: DirEntry.isfile() and DirEntry.isdir() broken
  • Bugzilla 1733: parse() function does not handle all build-in types
  • Bugzilla 2073: Variant.coerce!() fails
  • Bugzilla 2142: getopt() incorrectly processes bundled command-line options
  • Bugzilla 2310: Inconsistent formatting of arrays in std.stdio.write() and std.conv.to!(string)()
  • Bugzilla 2424: std.functional binaryRevertArgs : "revert" should be "reverse"
  • Bugzilla 2451: Adding structs that use opAssign or postblit to an AA is broken
  • Bugzilla 2655: Allow alternation patterns in std.path.fnmatch
  • Bugzilla 2669: Variant does not have opApply or another iteration mechanism
  • Bugzilla 2718: Inconsistent string parameters in Phobos functions
  • Bugzilla 2838: std.file.rmdirRecurse fails
  • Bugzilla 2930: Problems in std.range documentation
  • Bugzilla 2943: Struct copying in presence of alias member this only copies alias this member
  • Bugzilla 2965: std.date: timezone not initialized
  • Bugzilla 3157: [patch] Pipes should be closed with pclose
  • Bugzilla 3318: [PATCH]Rebindable.get is not accessible
  • Bugzilla 3570: mkdirRecurse throws exception on trailing empty directory.
  • Bugzilla 3602: ICE(tocsym.c) compiling a class, if its super class has preconditions
  • Bugzilla 3665: Regression(1.051, 2.036) Assignment with array slicing does not work
  • Bugzilla 4344: Sockets with multiple threads report missing/failed WSAStartup
  • Bugzilla 4398: dmd always uses Windows name mangling for _d_throw
  • Bugzilla 4439: The declaration of the in6addr_* in druntime is wrong.
  • Bugzilla 4465: ICE(symbol.c): immutable type inference with ^^2
  • Bugzilla 4524: Regression(2.026) Bus error with nested struct
  • Bugzilla 4623: Non-integer type allowed as static array size
  • Bugzilla 4634: typo in levenshteinDistanceAndPath documentation
  • Bugzilla 4641: Associative arrays of structs with alias this broken.
  • Bugzilla 4742: int % BigInt should work.
  • Bugzilla 4775: No substitution on writef("%%%s", "hi").
  • Bugzilla 4825: Regression(1.057, 2.040) "Error: non-constant expression" with -inline
  • Bugzilla 4866: Static-to-dynamic converted manifest constant array gets non-converted type in static/constraint if
  • Bugzilla 4869: auto return + inheritance + modules = compiler crashes(toctype.c)
  • Bugzilla 4873: Assertion failure: '0' on line 1483 in file 'expression.c'
  • Bugzilla 4882: std.traits hasUnsharedAliasing does not work for function type.
  • Bugzilla 4897: CodeView: No locals or parameters are shown when debugging, because of missing function info
  • Bugzilla 4890: GC.collect() deadlocks multithreaded program.
  • Bugzilla 4925: [ICE] segfault with module-scope assert(0)
  • Bugzilla 4926: ICE: PREC_zero assertion failure due to unset precedence
  • Bugzilla 4938: Regression(2.047) dmd segfault when compiling
  • Bugzilla 4941: Built-in tuple slice boundaries are not CTFE'd
  • Bugzilla 4949: ICE on invalid static if using value of 'this'
  • Bugzilla 4951: InternetAddress fails to resolve host when multithreading.
  • Bugzilla 4959: std.conv.parse error "no digits seen" on string starting with zero.
  • Bugzilla 4992: ICE(glue.c) or segfault: using int[new]
  • Bugzilla 5003: regex(replace with delegate) sample doesn't work.
  • Bugzilla 5026: ICE(expression.c) Incomplete mixin expression + char[] to char assignment
  • Bugzilla 5049: std.algortihm.bringToFront() returns wrong value.
  • Bugzilla 5052: take!(Take!R) should return Take!R, not Take!(Take!R).
  • Bugzilla 5071: passing value by ref to a function with an inner dynamic closure results in a wrong code
previous version: 2.049 – next version: 2.051