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: 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 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
Added __thread storage class for thread local storage.
This is for testing purposes only to check out the machinery
in the back end. The front end design of this will change.
obj2asm
and dumpobj
now better handle special ELF fixup records.
Added partial ordering
rules to disambiguate function overloading.
std.perf: Bill Baxter cleaned it up.
std.xml.Document constructor now creates whole DOM tree.
Added compile time error for comparing class types against null.
Added struct destructors and postblits.
std.algorithm: Made some imports conditional for the Unittest
version; fixed doc typo; made min and max always return the tightest
type and work with mixes of signed and unsigned; changed enum value
names to obey lowercase convention; changed OrderStrategy to
SwapStrategy as it's not just for ordering (e.g. see eliminate).
std.bitmanip: simplified code generated for bitfields and improved
error message.
std.format: ate dogfood: used bitfields internally.
std.functional: fixed binaryfun to work with constant-size arrays;
added compose.
std.random: made unpredictableSeed return different numbers every
call (except for rarely-encountered MT scenarios); added private
variable name that will take experts millenia to figure out; changed the
boundaries syntax from two separate characters '[', '(' to one
string "[(" throughout.
std.traits: added mostNegative, mostly to assuage for the
unpardonable mistake of inheriting C++'s unpardonable mistake of
defining "min" to mean very different things for floating-point types
and integral types.
std.typecons: added undocumented Rebindable in preparation for
opImplicitCast.
std.math:
Support for different CPU IEEE 'real' formats: 64-bit, 80-bit and
128-bit (quadruple) reals, both BigEndian and LittleEndian; partial
support for non-IEEE 'doubledouble' reals.
Added implementation of nextafter Bugzilla 1722 and scalb for
DMD-Windows.
Added nextUp(), nextDown()
Bugzilla 1881: feqrel nonsensical for non-real arguments.
internal functions isPosZero(), isNegZero() removed in favour of
the more generally useful isIdentical().
asm versions of functions which were not implemented by DMD
Windows: scalb, lrint.
added creal expi(real y) which is useful for simultaneous
calculation of sin + cos.
Bugs Fixed
std.contracts: fixed unlisted bug in pointsTo.
std.conv: fixed bug related to number-to-number conversion (T.min
hits again).
Fixed dwarf bug with DT_AT_upper_bound
Bugzilla 756: IFTI for tuples only works if tuple parameter is last
Bugzilla 1454: IFTI cant deduce parameter if alias argument used
Bugzilla 1661: Not possible to specialize on template with integer parameter
Bugzilla 1800: Compiler crash on enums nested in structs
Bugzilla 1801: Const structs should be assignable to non-const variables unless they contain references
Bugzilla 1806: "const" makes typesafe variadic arguments not work properly.
Transformed all of string, wstring,
and dstring into invariant definitions.
Tons of changes in function signatures and
implementations rippled through the standard library.
Initial experience
with invariant strings seems to be highly encouraging.
Implemented Overload Sets for functions and templates.
Added the std.getopt module that makes standards-conforming command-line processing easy.
Added the parse and assumeUnique to the std.conv module.
Added the dirEntries function to the std.file module.
Added the basename and dirname functions (which alias the less gainful names getBaseName and getDirectoryName to the std.path module.)
Added optional terminator to readln; added the convenience functions fopen and popen; added functions lines and chunks; all to the std.stdio module.
Added the munch function to the std.string module.
Fixed isStaticArray; added BaseClassesTuple, TransitiveBaseTypeTuple, ImplicitConversionTargets, isIntegral, isFloatingPoint, isNumeric, isSomeString, isAssociativeArray, isDynamicArray, isArray; all to the std.traits module.