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

previous version: 2.048 – next version: 2.050all versions

Download D 2.049
released Sep 13, 2010

New/Changed Features

  • std.algorithm: reduce now works with non-range-based iteration, such as opApply.
  • std.numeric: Added FFT.
  • std.path: Changed sep, altsep etc. to manifest constants (enum).
  • 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 190: Cannot forward reference typedef/alias in default value for function parameter
  • 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 3979: Order-of-compilation and forward reference errors
  • 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
previous version: 2.048 – next version: 2.050all versions