* Made emplace faster and replaced calls to it to also make them faster.
* Replaced phobos.d in posix.mak with index.d.
* Added version=StdDdoc to documentation build in posix.mak, and replaced uses of D_Ddoc with it.
* Improved documentation target in posix.mak (target dir automatically created).
* Added nice documentation table and cheat sheet at the top of std.algorithm.
* Replaced a few helper structs in std.range and std.algorithm with local structs, which simplify matters a fair amount.
* Added more constraints to functions in std.algorithm (still work in progress).
* Improved error message in std.algorithm.sort in case of failure to sort.
* std.random.dice(1, 10) now works (no need for array notation std.random.dice([1, 10])).
* Fixed documentation bugs and insufficiencies in std.range (still more to do).
* Improved speed of walkLength.
* Simplified retro.
* Simplified and optimized stride. Also folded stride(stride(r, a), b) into stride(r, a * b).
* Added roundRobin to std.range, which as a perk simplified radial.
* Added takeOne and takeNone to std.range.
* Added unsigned to std.traits.
std.gregorian, std.date, and std.dateparse have all been marked as
scheduled for deprecation. Everywhere (except for std.file) which was
using std.date is now using std.datetime. std.file is now using
std.datetime but has a number of functions still using d_time but which
are marked as scheduled for deprecation. I tried to give as many as I
could pragmas indicating that they were scheduled for deprecation, but
at the moment, that requires that a function be a templated function, and
I couldn't templatize all of them. So, some functions in std.file are
only marked as scheduled for deprecation in their documentation and will
not give any warning on compilation.
I had to rename several functions in std.file in order to avoid making
any breaking changes. And since I was already having to mess with
function names, it seemed like a good time to change the names of a
number of the functions in std.file to use proper capitalization
(such as changing isdir to isDir) as has been discussed and overwhelmingly
supported in the newsgroup with regards to std.string. And since I was
making those changes, it seemed like a good time to fix bug# 3848
(functions in std.file don't take symbolic links into account) as well.
So, std.file should now deal with symlinks properly.
The issue which Andrei brought up with +VERSION causing the std.datetime
unit tests to fail on OSX has been fixed as well.
* Eliminated the old-fashioned random functions
* Defined a default random object that simplifies calls to the random
functions
* Changed generators to obey the range interface.
* Transformed std.c.linux.* into wrappers around core.sys.posix modules where appropriate.
* Added std.c.osx as the OSX equivalent of std.c.linux.
* Added std.c.osx.socket for OSX-specific socket declarations not covered by the Posix spec.
* Altered all makefiles to zip, etc, the new std.c.osx package.
* Removed gcstats. Garbage collector statistics will be avaialable in durintime's 'memory' module.
* Removed object.d. This module is replaced by the object.d provided by druntime.
* Removed std.array. To trap an array bounds error, import 'exception' from druntime and catch ArrayBoundsException.
* Removed std.asserterror. To trap an asertion failure, import 'exception' from druntime and catch AssertException.
* Removed std.gc. To interact with the garbage collector, import 'memory' from druntime.
* Removed std.hiddenfunc. No equivalent exception is currently exposed by druntime, but if one is exposed it will be called HiddenFuncException and be declared in 'exception'.
* Removed std.moduleinit. druntime declares ModuleInfo in object.d, so it is implicitly availble without importing.
* Removed std.outofmemory. To trap an out of memory error, import 'exception' from druntime and catch OutOfMemoryException.
* Removed std.switcherr. To trap a switch error, import 'exception' from druntime and catch SwitchException.
* Removed std.synchro. This functionality will exist within druintime.
* Removed std.thread. A Thread class is available within druntime's 'thread' module. An interface comparison will be provided separately.
* Removed std.typeinfo. The classes defined in this package are for runtime use and should not be visible to the user.
The prior version of Phobos has been archived in tags/phobos-2.019 if needed.
* std.contracts: Added file and line information to enforce. Added errnoEnforce that reads and formats a message according to errno. Added corresponding ErrnoException class.
* std.encoding: For now commented out std.encoding.to.
* std.file: Fixed bug 2065
* std.format: Fixed bug in raw write for arrays
* std.getopt: Added new option stopOnFirstNonOption. Also automatically expand dubious option groups with embedded 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.file: added support for opening large files (not yet tested)
* std.utf: added the codeLength function. Got rid of some gotos.