Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Forums
  - IRC
  - Community Discord
  - Wiki
  - GitHub
  - Issues
  - Get involved
  - Contributors
  - Foundation
  - Security Team
  - Donate
  - Sponsors
- Resources
  - Tour
  - Books
  - Tutorials
  - Tools
  - Editors
  - IDEs
  - run.dlang.io
  - Visual D
  - Acknowledgments
  - D Style
  - Glossary
  - Sitemap

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

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

Copyright © 1999-2023 by the D Language Foundation | Page generated by Ddoc on Mon May 1 15:50:29 2023