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

Download D 2.014
released May 16, 2008

#### New/Changed Features

- Added -man switch to browse manual.
- Added -lib switch to generate library files. Also causes multiple object files to be generated from one source module.
- When generating an executable file, only one object file is now generated containing all the modules that were compiled, rather than one object file per module.
- Rewrote the rdmd utility to properly track dependencies and command-line compiler options (currently only working under Linux).
- Changed the Phobos makefile linux.mak to take advantage of the new -lib feature. Improved full build speed by 3x.
- std.algorithm: Changed the map() function so that it deduces the return type. Also map can be now curried.
- std.contracts: Added file and line information to enforce. Added errnoEnforce that formats the error message according to errno. Added corresponding ErrnoException class.
- std.conv: Made std.to curryable. Changed std.to to throw exception when object-to-object cast fails. Eliminated some superfluous printfs.
- std.encoding: Added new functions encodedLength(dchar) and encode(dchar, ref E[])
- std.encoding: Got rid of types Utf8, Utf16, Utf32, Ascii, Latin1, Windows1252. Introduced types AsciiChar, AsciiString, Latin1Char, Latin1String, Windows1252Char, Windows1252String.
- std.encoding: For now commented out std.encoding.to.
- std.file: Changed Boolean function signatures (e.g. exists) to return bool instead of int. Got rid of some gotos. Added the readText, lastModified, mkdirRecurse, and rmdirRecurse functions.
- std.functional: Improved compose so it accepts an unbounded number of functions. Added the pipe function.
- std.getopt: Added new option stopOnFirstNonOption. Also automatically expand dubious option groups with embedded spaces in them (useful for shebang scripts)
- std.math: improved integral powers
- std.md5: Improved signature of sum so it takes multiple arrays. Added getDigestString.
- std.path: changed signatures of test functions from bool to int. Implemented rel2abs for Windows. Improved join so that it accepts multiple paths. Got rid of some gotos with the help of scope statements.
- std.process: added getenv and setenv. Improved system() so it returns the exit code correctly on Linux.
- std.random: added the dice function - a handy (possibly biased) dice.
- std.typecons: Finalized and documented the stupendous Rebindable template.
- std.utf: added the codeLength function. Got rid of some gotos.

#### Bugs Fixed

- std.format: Fixed unlisted bug in raw write for arrays
- std.getopt: Fixed unlisted bug in dealing with one-letter options with bundling disabled
- Bugzilla 2014: fopen fails on large files.
- Bugzilla 2031: Documentation: template value parameters
- Bugzilla 2032: Documentation for creating a class on the stack is unintuitive
- Bugzilla 2037: Article on hijacking is outdated
- Bugzilla 2038: Remove hello2.html from samples directory
- Bugzilla 2039: -ignore switch is missing from compiler docs
- Bugzilla 2054: Const system broken on struct assignment.
- Bugzilla 2055: (ICE) Compiler crash on struct initializer with too many elements
- Bugzilla 2056: Const system does not allow certain safe casts/conversions involving deep composite types
- Bugzilla 2058: Describe hidden value passed to class member functions
- Bugzilla 2063: std.xml access violation for nested, closed tags
- Bugzilla 2065: Return value of std.file.exists() is inverted.
- Bugzilla 2067: call from anonymous class makes access violation.
- Bugzilla 2071: spec doesn't mention pointer arithmetic with two pointer operands
- Bugzilla 2072: std.typecons documentation anomaly.
- Bugzilla 2074: Variant arithmetic operations fail. For now the fix is to comment out all right-hand side operators. Suggestions for a better fix are welcome.
- Bugzilla 2075: Spec does not specify how array literals are stored.
- Bugzilla 2084: operator ?: does not compute the tightest type
- Bugzilla 2086: Describe relationship between string and char[] more explicitly
- Bugzilla 2089: Issues with CTFE and tuple indexes
- Bugzilla 2090: Cannot alias a tuple member which is a template instance
- Bugzilla 2100: Assertion failure: '0' on line 4842 in file 'expression.c'
- Bugzilla 2109: asm {lea EAX, [0*0+EAX]; } rejected.

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