Previously, the code was special-cased to use `stat64()` on OS X for no apparent reason (I searched the logs, but couldn't find anything obvious). This also caused the new `symlink()` unit tests to fail.
Simplify the common pattern `(cast(T*)GC.malloc(T.sizeof * n, NO_SCAN))[0 .. n]` to the new function `uninitializedArray!(T[])(n)`.
Note that there was some `NO_SCAN` attributes originally determined at runtime using `typeid()`, but now is determined statically using `hasIndirection!()` from the implementation of `uninitializedArray`.
There were also some `GC.malloc` usage looks like `uninitializedArray` in `std.parallelism` but I'm leaving it alone for someone who is more familiar with this module ;).
Base on discussions on the Announce group with regards to deprecation,
it sounds like it would be reasonable to skip the deprecation step with
simple function renaming that the compiler will catch and tell you the
corrected name with its spellchecker. So, I'm removing the alias for
isSymLink and just fixing the name straight up. It's unlikely that all
that many people are using it yet anyway, since it hasn't been around
for very long.
The isX functions which take attributes where forced to be properties,
since you can't overload property functions with non-property functions,
but without UFCS, once @property is enforced, those functions would
become illegal to call. So, I just renamed them and scheduled the old
versions for deprecation. The string versions are unchanged.
Now there's only one for the whole file. Upon implementing std.file for
a new OS, for some of the functions, the unit tests will fail to compile
and show that those functions still need to be written. Unfortunately,
not all will be caught that way (since some functions lack unit tests
and some of the unit tests are OS-specific), but it'll cut down on the
extra stuff in the file which may never matter anyway, since we may
never add on OS which is neither Windows nor Posix.
* 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.