diff -uNr dmd-0.175/dmd/html/d/abi.html dmd-0.176/dmd/html/d/abi.html --- dmd-0.175/dmd/html/d/abi.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/abi.html 2006-11-30 02:37:58.000000000 +0100 @@ -32,7 +32,7 @@ -
Last update Wed Nov 15 02:42:23 2006 +
Last update Thu Nov 30 02:37:57 2006
@@ -214,12 +214,12 @@ A dynamic array is declared as: -
type array[];
+
type[] array;
 
whereas a static array is declared as: -
type array[dimension];
+
type[dimension] array;
 
Thus, a static array always has the dimension statically available as part of the type, and @@ -229,7 +229,10 @@

Associative Arrays

- TBD +

Associative arrays consist of a pointer to an opaque, implementation + defined type. + The current implementation is contained in phobos/internal/aaA.d. +

Reference Types

diff -uNr dmd-0.175/dmd/html/d/acknowledgements.html dmd-0.176/dmd/html/d/acknowledgements.html --- dmd-0.175/dmd/html/d/acknowledgements.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/acknowledgements.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@ -
Last update Wed Nov 15 02:42:23 2006 +
Last update Mon Nov 27 18:15:55 2006
@@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/arrays.html dmd-0.176/dmd/html/d/arrays.html --- dmd-0.175/dmd/html/d/arrays.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/arrays.html 2006-11-30 02:37:58.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Thu Nov 30 02:37:57 2006
    @@ -229,7 +229,7 @@ // pointer to dynamic array of ints int[]* e; -int (*e[]); +int (*e)[];
    Rationale: The postfix form matches the way arrays are @@ -401,7 +401,7 @@ void dibb(int* array) { array[2]; // means same thing as *(array + 2) - *(array + 2); // get 2nd element + *(array + 2); // get 3rd element } void diss(int[] array) @@ -591,7 +591,7 @@ b.length = 15; // always resized in place because it is sliced // from a[] which has enough memory for 15 chars -b[11] = 'x'; // a[15] and c[5] are also affected +b[11] = 'x'; // a[11] and c[1] are also affected a.length = 1; a.length = 20; // no net change to memory layout @@ -647,6 +647,19 @@ For example, when gathering user input from the console - it's unlikely to be longer than 80. +

    Functions as Array Properties

    + +

    If the first parameter to a function is an array, the + function can be called as if it were a property of the array: +

    + +
    int[] array;
    +void foo(int[] a, int x);
    +
    +foo(array, 3);
    +array.foo(3);	// means the same thing
    +
    +

    Array Bounds Checking

    It is an error to index an array with an index that is less than @@ -711,37 +724,36 @@

    Static Initialization of Static Arrays

    +

    Static initalizations are supplied by a list of array + element values enclosed in [ ]. The values can be optionally + preceded by an index and a :. + If an index is not supplied, it is set to the previous index + plus 1, or 0 if it is the first value. +

    +
    int[3] a = [ 1:2, 3 ];		// a[0] = 0, a[1] = 2, a[2] = 3
     
    - This is most handy when the array indices are given by enums: +

    This is most handy when the array indices are given by enums:

    enum Color { red, blue, green };
     
     int value[Color.max + 1] = [ Color.blue:6, Color.green:2, Color.red:5 ];
     
    - If any members of an array are initialized, they all must be. - This is to catch - common errors where another element is added to an enum, - but one of the static instances - of arrays of that enum was overlooked in updating the - initializer list. +

    These arrays are static when they appear in global scope. + Otherwise, they need to be marked with const or static + storage classes to make them static arrays.

    Special Array Types

    Strings

    - Languages should be good at handling strings. C and C++ are not - good at it. The primary difficulties are memory management, - handling of temporaries, constantly rescanning the string looking - for the terminating 0, and the fixed arrays. -

    - - Dynamic arrays in D suggest the obvious solution - a string is - just a dynamic array of characters. String literals become just +

    A string is + an array of characters. String literals are just an easy way to write character arrays. +

    char[] str;
     char[] str1 = "abc";
    @@ -779,23 +791,26 @@
     
    str ~= "\0";
     
    - The type of a string is determined by the semantic phase of +

    or use the function std.string.toStringz.

    + +

    The type of a string is determined by the semantic phase of compilation. The type is one of: char[], wchar[], dchar[], and is determined by implicit conversion rules. If there are two equally applicable implicit conversions, the result is an error. To - disambiguate these cases, a cast is appropriate: + disambiguate these cases, a cast or a postfix of c, + w or d can be used: +

    cast(wchar [])"abc"	// this is an array of wchar characters
    +"abc"w			// so is this
     
    - String literals are implicitly converted between chars, - wchars, and dchars as necessary. -

    - - Strings a single character in length can also be exactly - converted to a char, wchar or dchar constant: +

    String literals that do not have a postfix character and that + have not been cast can be implicitly converted between char[], + wchar[], and dchar[] as necessary. +

    char c;
     wchar w;
    @@ -805,63 +820,74 @@
     w = 'b';		// w is assigned the wchar character 'b'
     w = 'bc';		// error - only one wchar character at a time
     w = "b"[0];		// w is assigned the wchar character 'b'
    -w = \r;			// w is assigned the carriage return wchar character
    +w = \r[0];		// w is assigned the carriage return wchar character
     d = 'd';		// d is assigned the character 'd'
     
    -

    printf() and Strings

    +

    C's printf() and Strings

    - printf() is a C function and is not part of D. printf() +

    printf() is a C function and is not part of D. printf() will print C strings, which are 0 terminated. There are two ways to use printf() with D strings. The first is to add a terminating 0, and cast the result to a char*: +

    str ~= "\0";
     printf("the string is '%s'\n", (char*)str);
     
    - The second way is to use the precision specifier. The way D arrays - are laid out, the length comes first, so the following works: +

    or:

    -
    printf("the string is '%.*s'\n", str);
    +
    import std.string;
    +printf("the string is '%s'\n", std.string.toStringz(str));
     
    - In the future, it may be necessary to just add a new format - specifier to printf() instead of relying on an implementation - dependent detail. +

    String literals already have a 0 appended to them, so + can be used directly:

    -

    Implicit Conversions

    +
    printf("the string is '%s'\n", "string literal");
    +
    - A pointer T* can be implicitly converted to - one of the following: +

    which is, of course, why the format string to printf was + working.

    -
      -
    • U* where U is a base class of T. -
    • void* -
    +

    The second way is to use the precision specifier. The way D arrays + are laid out, the length comes first, so the following works:

    + +
    printf("the string is '%.*s'\n", str);
    +
    +

    The best way is to use std.stdio.writefln, which can handle + D strings:

    + +
    import std.stdio;
    +writefln("the string is '%s'", str);
    +
    + +

    Implicit Conversions

    + +

    A pointer T* can be implicitly converted to + a void*. A static array T[dim] can be implicitly converted to one of the following: +

    • T*
    • T[] -
    • U[dim] where U is a base class of T. -
    • U[] where U is a base class of T. -
    • U* where U is a base class of T.
    • void*
    • void[]
    - A dynamic array T[] can be implicitly converted to +

    A dynamic array T[] can be implicitly converted to one of the following: +

    • T* -
    • U[] where U is a base class of T. -
    • U* where U is a base class of T.
    • void* +
    • void[]

    @@ -1046,8 +1072,9 @@

    Associative Array Example: word count

    -
    import std.file;		// D file I/O
    -
    +
    import std.file;         // D file I/O
    +import std.stdio;
    +
     int main (char[][] args)
     {
         int word_total;
    @@ -1055,25 +1082,26 @@
         int char_total;
         int[char[]] dictionary;
     
    -    printf("   lines   words   bytes file\n");
    -    for (int i = 1; i < args.length; ++i)	// program arguments
    +    writefln("   lines   words   bytes file");
    +    for (int i = 1; i < args.length; ++i)      // program arguments
         {
    -	char[] input;		// input buffer
    -	int w_cnt, l_cnt, c_cnt;	// word, line, char counts
    +	char[] input;            // input buffer
    +	int w_cnt, l_cnt, c_cnt; // word, line, char counts
     	int inword;
     	int wstart;
     
    -	input = std.file.read(args[i]);	// read file into input[]
    -
    -	foreach (char c; input)
    +	// read file into input[]
    +	input = cast(char[])std.file.read(args[i]);
    +
    +	foreach (j, char c; input)
     	{
     	    if (c == '\n')
    -		++l_cnt;
    +		    ++l_cnt;
     	    if (c >= '0' && c <= '9')
     	    {
     	    }
     	    else if (c >= 'a' && c <= 'z' ||
    -		c >= 'A' && c <= 'Z')
    +		    c >= 'A' && c <= 'Z')
     	    {
     		if (!inword)
     		{
    @@ -1083,18 +1111,19 @@
     		}
     	    }
     	    else if (inword)
    -	    {   char[] word = input[wstart .. j];
    -
    -		dictionary[word]++;		// increment count for word
    +	    {
    +		char[] word = input[wstart .. j];
    +		dictionary[word]++;        // increment count for word
     		inword = 0;
     	    }
     	    ++c_cnt;
     	}
     	if (inword)
    -	{   char[] word = input[wstart .. input.length];
    +	{
    +	    char[] word = input[wstart .. input.length];
     	    dictionary[word]++;
     	}
    -	printf("%8ld%8ld%8ld %.*s\n", l_cnt, w_cnt, c_cnt, args[i]);
    +	writefln("%8d%8d%8d %s", l_cnt, w_cnt, c_cnt, args[i]);
     	line_total += l_cnt;
     	word_total += w_cnt;
     	char_total += c_cnt;
    @@ -1102,17 +1131,14 @@
     
         if (args.length > 2)
         {
    -	printf("-------------------------------------\n%8ld%8ld%8ld total",
    -	    line_total, word_total, char_total);
    +	writef("-------------------------------------\n%8ld%8ld%8ld total",
    +		line_total, word_total, char_total);
         }
     
    -    printf("-------------------------------------\n");
    -    char[][] keys = dictionary.keys;	// find all words in dictionary[]
    -    for (int i = 0; i < keys.length; i++)
    -    {   char[] word;
    -
    -	word = keys[i];
    -	printf("%3d %.*s\n", dictionary[word], word);
    +    writefln("-------------------------------------");
    +    foreach (word; dictionary.keys.sort)
    +    {
    +	writefln("%3d %s", dictionary[word], word);
         }
         return 0;
     }
    diff -uNr dmd-0.175/dmd/html/d/ascii-table.html dmd-0.176/dmd/html/d/ascii-table.html
    --- dmd-0.175/dmd/html/d/ascii-table.html	2006-11-15 02:42:26.000000000 +0100
    +++ dmd-0.176/dmd/html/d/ascii-table.html	2006-11-27 18:15:58.000000000 +0100
    @@ -32,7 +32,7 @@
     	
     	
     
    -	
    Last update Wed Nov 15 02:42:24 2006 +
    Last update Mon Nov 27 18:15:57 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/attribute.html dmd-0.176/dmd/html/d/attribute.html --- dmd-0.175/dmd/html/d/attribute.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/attribute.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:52 2006
    @@ -412,7 +412,7 @@
    // error, b is not initialized } - this(int x); + this(int x) { this(); // ok, forwarding constructor } diff -uNr dmd-0.175/dmd/html/d/builtin.html dmd-0.176/dmd/html/d/builtin.html --- dmd-0.175/dmd/html/d/builtin.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/builtin.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:23 2006 +
    Last update Mon Nov 27 18:15:55 2006
    diff -uNr dmd-0.175/dmd/html/d/changelog1.html dmd-0.176/dmd/html/d/changelog1.html --- dmd-0.175/dmd/html/d/changelog1.html 2006-11-15 02:42:26.000000000 +0100 +++ dmd-0.176/dmd/html/d/changelog1.html 2006-11-27 18:15:58.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:24 2006 +
    Last update Mon Nov 27 18:15:57 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/changelog.html dmd-0.176/dmd/html/d/changelog.html --- dmd-0.175/dmd/html/d/changelog.html 2006-11-25 00:31:54.000000000 +0100 +++ dmd-0.176/dmd/html/d/changelog.html 2006-12-02 20:10:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Sat Nov 25 00:31:52 2006 +
    Last update Sat Dec 2 20:10:53 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + @@ -192,6 +194,8 @@
      +
    • What's new for D 0.176
    • +
    • What's new for D 0.175
    • What's new for D 0.174
    • @@ -277,6 +281,74 @@
      +

      + What's New for + D 0.176 +

      + + +Dec 2, 2006 + +

      New/Changed Features

      + +
      • Added std.bind.
      • +
      • Need to recompile because: +
        • Associative arrays now are PTRSIZE, not PTRSIZE*2.
        • +
        • Destructors no longer stored in vtbl[].
        • +
        • "_arguments" now passed differently to variadic functions.
        • +
        • Improved name mangling, see D.announce/5791 + + and D.announce/5759 +.
        • +
        +
      • +
      + +

      Bugs Fixed

      + +
      • Fixed Bugzilla 221: Inconsistent name mangling of bool (a relic of 'bit') [Patch included]
      • +
      • Fixed Bugzilla 294: DDoc: Function templates get double and incomplete documentation
      • +
      • Fixed Bugzilla 500: Struct Initializers conflict with Delegate Literals in initializers
      • +
      • Fixed Bugzilla 501: Bad interaction between 'with' and IFTI in template methods
      • +
      • Fixed Bugzilla 503: Names of arguments to atan2 are backwards
      • +
      • Fixed Bugzilla 505: rdmd and dmd do not correctly preserve program arguments with spaces.
      • +
      • Fixed Bugzilla 507: Error: 'this' is required, but ... is not a base class of ...
      • +
      • Doc fixed for Bugzilla 508: All members of an array need not be initialised
      • +
      • Doc fixed for Bugzilla 509: [wd]char[1] does not convert to [wd]char
      • +
      • Doc fixed for Bugzilla 510: Nonworking implicit conversions between arrays and pointers
      • +
      • Doc fixed for Bugzilla 511: Various problems in the documentation
      • +
      • Fixed Bugzilla 513: using struct initializer on static array crashes the compiler
      • +
      • Fixed Bugzilla 514: Misleading error message for static const initialisation
      • +
      • Fixed Bugzilla 517: std.compiler outdated
      • +
      • Fixed Bugzilla 521: frontend: incorrect error(Loc, const char*, char*) declaration in mars.h
      • +
      • Fixed Bugzilla 522: frontend: 64-bit format string cleanup
      • +
      • Fixed Bugzilla 524: Compiler crash when compiling
      • +
      • Fixed Bugzilla 530: segfault assigning array literal to a non-array const
      • +
      • Fixed Bugzilla 534: IPF trying to initialize an associative array
      • +
      • Fixed Bugzilla 550: Shifting by more bits than size of quantity is allowed
      • +
      • Fixed Bugzilla 554: Division by zero results in two identical errors
      • +
      • Fixed Bugzilla 555: Integral ireal literals can't be specified
      • +
      • Fixed Bugzilla 557: ICE returning a tuple from a function (Assertion failure: '0' on line 694 in file 'glue.c')
      • +
      • Fixed Bugzilla 560: Cannot escape reference to variadic parameter
      • +
      • Fixed Bugzilla 562: Source file without BOM starting with non-ASCII compiles and runs
      • +
      • Fixed Bugzilla 564: Setting predefined versions on the command line causes crashes
      • +
      • Fixed Bugzilla 567: Compiler crash with conflicting templates
      • +
      • Fixed Bugzilla 574: DMD uses D calling convention for returning complex floats from functions with C calling convention
      • +
      • Fixed Bugzilla 585: dmd crashes with segmentation fault
      • +
      • Fixed Bugzilla 587: DMD crashes compiling char[][] initialization
      • +
      • Fixed Bugzilla 589: std.string.newline should be char[] not char[2]
      • +
      • Fixed Bugzilla 591: version=LittleEndian crash the compiler
      • +
      • Fixed Bugzilla 592: can't deduce from arrayliteral
      • +
      • Fixed Bugzilla 597: std.socket TcpSocket and UdpSocket are missing.
      • +
      • Fixed Bugzilla 598: missing reentrant Linux functions
      • +
      • Fixed Bugzilla 610: Undocumented behaviour: ~ and ~= can now concatenate an array with a single element
      • +
      • Fixed Bugzilla 613: Error message still states that '===' and '!==' are merely deprecated
      • +
      • Fixed Bugzilla 618: The following program crashes dmd.exe 0.175
      • +
      • Fixed Bugzilla 619: Alias of templated struct instance crashes 0.175
      • +
      + +
      +

      What's New for D 0.175 @@ -329,7 +401,7 @@
    • Fixed Bugzilla 476: DMD doesn't resolve its location properly on Windows
    • Fixed Bugzilla 478: can't compare arrayliteral statically with variable
    • Fixed Bugzilla 480: too many initializers error message doesn't give line number
    • -
    • Fixed Bugzilla 485: Writefln on null object should not trigger access error.
    • +
    • Fixed Bugzilla 486: Writefln on null object should not trigger access error.
    • Fixed Bugzilla 488: regression: recursive typeof segmentfaults
    • Fixed Bugzilla 490: Static struct initializer without static attribute aborts dmd with assertion
    • Fixed Bugzilla 525: can't use array variable in typetuple index
    • diff -uNr dmd-0.175/dmd/html/d/class.html dmd-0.176/dmd/html/d/class.html --- dmd-0.175/dmd/html/d/class.html 2006-11-21 00:04:46.000000000 +0100 +++ dmd-0.176/dmd/html/d/class.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@

    -
    Last update Tue Nov 21 00:04:44 2006 +
    Last update Mon Nov 27 18:15:53 2006
    @@ -197,7 +197,7 @@ Classes consist of:
    -
    super class +
    a super class
    interfaces
    dynamic fields
    static fields @@ -411,7 +411,7 @@
    this()	{ a || super(); }	// illegal
     
    -this() { this(1) || super(); }	// ok
    +this() { if (a) ? this(1) : super(); }	// ok
     
     this()
     {
    @@ -443,10 +443,11 @@
     
     	
  • The raw data is statically initialized using the values provided in the class definition. - The pointer to the vtbl is assigned. + The pointer to the vtbl[] (the array of pointers to virtual functions) + is assigned. This ensures that constructors are - passed fully formed objects. - This operation is equivalent to doing a memcpy() of a static + passed fully formed objects for which virtual functions can be called. + This operation is equivalent to doing a memory copy of a static version of the object onto the newly allocated one, although more advanced compilers may be able to optimize much of this away. @@ -657,8 +658,6 @@ class representing a date might have an invariant that the day must be 1..31 and the hour must be 0..23: - -
    class Date
     {
         int day;
    @@ -707,9 +706,11 @@
     assert(mydate);		// check that class Date invariant holds
     
    - If the invariant fails, it throws an InvariantException. + Invariants contain assert expressions, and so when they fail, + they throw a AssertErrors. Class invariants are inherited, that is, - any class invariant is implicitly anded with the invariants of its base classes. + any class invariant is implicitly anded with the invariants of its base + classes.

    There can be only one ClassInvariant per class. @@ -1037,7 +1038,7 @@ class Nested : Base { int m_; - this() { m_ = m; + this() { m_ = m; } int foo() { return m_; } } diff -uNr dmd-0.175/dmd/html/d/code_coverage.html dmd-0.176/dmd/html/d/code_coverage.html --- dmd-0.175/dmd/html/d/code_coverage.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/code_coverage.html 2006-11-27 18:15:58.000000000 +0100 @@ -31,7 +31,7 @@ -

    Last update Wed Nov 15 02:42:23 2006 +
    Last update Mon Nov 27 18:15:57 2006
    @@ -86,6 +86,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/comparison.html dmd-0.176/dmd/html/d/comparison.html --- dmd-0.175/dmd/html/d/comparison.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/comparison.html 2006-11-27 18:15:56.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 15 02:42:23 2006 +
    Last update Mon Nov 27 18:15:55 2006
    diff -uNr dmd-0.175/dmd/html/d/cppcomplex.html dmd-0.176/dmd/html/d/cppcomplex.html --- dmd-0.175/dmd/html/d/cppcomplex.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/cppcomplex.html 2006-11-27 18:15:52.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:51 2006
    diff -uNr dmd-0.175/dmd/html/d/cppdbc.html dmd-0.176/dmd/html/d/cppdbc.html --- dmd-0.175/dmd/html/d/cppdbc.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/cppdbc.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:52 2006
    diff -uNr dmd-0.175/dmd/html/d/cppstrings.html dmd-0.176/dmd/html/d/cppstrings.html --- dmd-0.175/dmd/html/d/cppstrings.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/cppstrings.html 2006-11-27 18:15:52.000000000 +0100 @@ -33,7 +33,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:51 2006
    @@ -180,7 +180,7 @@ str.resize(newsize);
    -

    D takes advantage of knowing that str is a string, and +

    D takes advantage of knowing that str is an array, and so resizing it is just changing the length property:

    @@ -425,7 +425,7 @@ and wccpp2. The input file - alice30.txt + alice30.txt is the text of "Alice in Wonderland." The D compiler, dmd, diff -uNr dmd-0.175/dmd/html/d/cpptod.html dmd-0.176/dmd/html/d/cpptod.html --- dmd-0.175/dmd/html/d/cpptod.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/cpptod.html 2006-11-27 18:15:52.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:51 2006
    @@ -442,18 +442,18 @@ the same effect.
    -

    Namespace using declarations

    +

    Namespace using declarations

    The C++ Way

    A using-declaration in C++ is used to bring a name from a namespace scope into the current scope: -
    namespace Foo 
    +
    namespace foo
     {
         int x;
     }
    -using Foo::x;
    +using foo::x;
     

    The D Way

    @@ -461,13 +461,13 @@ D uses modules instead of namespaces and #include files, and alias declarations take the place of using declarations: -
    /** Module Foo.d **/
    -module Foo;
    +
    /** Module foo.d **/
    +module foo;
     int x;
     
     /** Another module **/ 
    -import Foo;
    -alias Foo.x x;
    +import foo;
    +alias foo.x x;
     
    Alias is a much more flexible than the single purpose using @@ -475,7 +475,7 @@ template members, refer to nested class types, etc.
    -

    RAII (Resource Acquisition Is Initialization)

    +

    RAII (Resource Acquisition Is Initialization)

    The C++ Way

    @@ -503,10 +503,10 @@ declarations and statements.

    - The few RAII issues left are handled by auto classes. - Auto classes get their destructors run when they go out of scope. + The few RAII issues left are handled by scope classes. + Scope classes get their destructors run when they go out of scope. -

    auto class File
    +
    scope class File
     {   Handle h;
     
         ~this()
    @@ -518,7 +518,7 @@
     void test()
     {
         if (...)
    -    {   auto File f = new File();
    +    {   scope f = new File();
     	...
         } // f.~this() gets run at closing brace, even if 
           // scope was exited via a thrown exception
    @@ -836,9 +836,9 @@
     
    template IsFunctionT(T)
     {
         static if ( is(T[]) )
    -	const int IsFunctionT = 1;
    -    else
     	const int IsFunctionT = 0;
    +    else
    +	const int IsFunctionT = 1;
     }
     
     void test()
    @@ -857,7 +857,7 @@
     
     
    void test()
     {
    -    typedef int fp(int);
    +    alias int fp(int);
     
         assert( is(fp == function) );
     }
    diff -uNr dmd-0.175/dmd/html/d/ctod.html dmd-0.176/dmd/html/d/ctod.html
    --- dmd-0.175/dmd/html/d/ctod.html	2006-11-15 02:42:22.000000000 +0100
    +++ dmd-0.176/dmd/html/d/ctod.html	2006-11-27 18:15:52.000000000 +0100
    @@ -33,7 +33,7 @@
     	
     	
     
    -	
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:51 2006
    @@ -117,7 +117,7 @@
  • Primitive Types
  • Special Floating Point Values
  • Remainder after division of floating point numbers -
  • Dealing with NAN's in floating point compares +
  • Dealing with NANs in floating point compares
  • Asserts
  • Initializing all elements of an array
  • Looping through an array @@ -126,7 +126,7 @@
  • Formatted printing
  • Forward referencing functions
  • Functions that have no arguments -
  • Labelled break's and continue's +
  • Labelled break and continue statements
  • Goto Statements
  • Struct tag name space
  • Looking up strings @@ -140,7 +140,7 @@
  • Escaped String Literals
  • Ascii vs Wide Characters
  • Arrays that parallel an enum -
  • Creating a new typedef'd type +
  • Creating a new type with typedef
  • Comparing structs
  • Comparing strings
  • Sorting arrays @@ -178,8 +178,7 @@

  • - -

    Get the max and min values of a type

    +

    Get the max and min values of a type

    The C Way

    @@ -201,8 +200,7 @@

    - -

    Primitive Types

    +

    Primitive Types

    C to D types

    @@ -222,8 +220,8 @@ float => float double => double long double => real -_Imaginary long double => imaginary -_Complex long double => complex +_Imaginary long double => ireal +_Complex long double => creal

    Although char is an unsigned 8 bit type, and @@ -233,8 +231,7 @@ Ints and unsigneds in C are of varying size; not so in D.


    - -

    Special Floating Point Values

    +

    Special Floating Point Values

    The C Way

    @@ -289,8 +286,7 @@

    - -

    Dealing with NAN's in floating point compares

    +

    Dealing with NANs in floating point compares

    The C Way

    @@ -315,8 +311,7 @@

    - -

    Assert's are a necessary part of any good defensive coding strategy.

    +

    Asserts are a necessary part of any good defensive coding strategy

    The C Way

    @@ -337,8 +332,7 @@


    - -

    Initializing all elements of an array

    +

    Initializing all elements of an array

    The C Way

    @@ -355,8 +349,7 @@

    - -

    Looping through an array

    +

    Looping through an array

    The C Way

    @@ -378,7 +371,7 @@

    The D Way

    -The length of an array is accessible the property "length". +The length of an array is accessible through the property "length".
    int array[17]; 
     for (i = 0; i < array.length; i++) 
    @@ -394,8 +387,7 @@
     
     
     
    - -

    Creating an array of variable size

    +

    Creating an array of variable size

    The C Way

    @@ -429,13 +421,12 @@

    - -

    String Concatenation

    +

    String Concatenation

    The C Way

    There are several difficulties to be resolved, like - when can storage be free'd, dealing with null pointers, + when can storage be freed, dealing with null pointers, finding the length of the strings, and memory allocation:
    #include <string.h> 
    @@ -483,8 +474,7 @@
     

    - -

    Formatted printing

    +

    Formatted printing

    The C Way

    @@ -505,14 +495,13 @@ writefln() improves on printf() by being type-safe and thread-safe: -
    import stdio;
    +
    import std.stdio;
     
     writefln("Calling all cars %s times!", ntimes); 
     

    - -

    Forward referencing functions

    +

    Forward referencing functions

    The C Way

    @@ -553,8 +542,7 @@

    - -

    Functions that have no arguments

    +

    Functions that have no arguments

    The C Way

    @@ -574,12 +562,11 @@

    - -

    Labelled break's and continue's.

    +

    Labelled break and continue statements

    The C Way

    - Break's and continue's only apply to the innermost nested loop or + Break and continue statements only apply to the innermost nested loop or switch, so a multilevel break must use a goto:
        for (i = 0; i < 10; i++) 
    @@ -619,20 +606,22 @@
     

    - -

    Goto Statements

    +

    Goto Statements

    The C Way

    - The much maligned goto statement is a staple for professional C coders. It's + The much maligned goto statement is a staple for professional C coders. + It's necessary to make up for sometimes inadequate control flow statements.

    The D Way

    - Many C-way goto statements can be eliminated with the D feature of labelled - break and continue statements. But D is a practical language for practical - programmers who know when the rules need to be broken. So of course D supports - the goto! + Many C-way goto statements can be eliminated with the D feature of + labelled + break and continue statements. But D is a practical language for + practical + programmers who know when the rules need to be broken. So of course D + supports goto statements.

    Struct tag name space

    @@ -650,12 +639,11 @@ Struct tag names are not in a separate name space, they are in the same name space as ordinary names. Hence: -
    struct ABC { ... }; 
    +
    struct ABC { ... }
     

    - -

    Looking up strings

    +

    Looking up strings

    The C Way

    @@ -720,14 +708,13 @@ and time required in hand-coding one.
    - -

    Setting struct member alignment

    +

    Setting struct member alignment

    The C Way

    It's done through a command line switch which affects the entire program, and woe results if any modules or libraries didn't get - recompiled. To address this, #pragma's are used: + recompiled. To address this, #pragmas are used:
    #pragma pack(1) 
     struct ABC 
    @@ -761,8 +748,7 @@
     

    - -

    Anonymous Structs and Unions

    +

    Anonymous Structs and Unions

    Sometimes, it's nice to control the layout of a struct with nested structs and unions. @@ -820,8 +806,7 @@

    - -

    Declaring struct types and variables.

    +

    Declaring struct types and variables

    The C Way

    @@ -849,8 +834,7 @@ are used.
    - -

    Getting the offset of a struct member.

    +

    Getting the offset of a struct member

    The C Way

    @@ -868,12 +852,11 @@
    struct Foo { int x; int y; } 
     
    -off = Foo.y.offset; 
    +off = Foo.y.offsetof; 
     

    - -

    Union initializations.

    +

    Union Initializations

    The C Way

    @@ -891,14 +874,13 @@ In D, which member is being initialized is mentioned explicitly:
    union U { int a; long b; } 
    -U x = { a:5 } 
    +U x = { a:5 };
     
    avoiding the confusion and maintenance problems.
    - -

    Struct initializations.

    +

    Struct Initializations

    The C Way

    @@ -919,14 +901,13 @@ Member initialization can be done explicitly:
    struct S { int a; int b; } 
    -S x = { b:3, a:5 } 
    +S x = { b:3, a:5 };
     
    The meaning is clear, and there no longer is a positional dependence.
    - -

    Array initializations.

    +

    Array Initializations

    The C Way

    @@ -939,7 +920,7 @@

    The D Way

    - D does it by positional dependence too, but an index can be used as well: + D does it by positional dependence too, but an index can be used as well. The following all produce the same result:
    int[3] a = [ 3, 2, 0 ]; 
    @@ -961,8 +942,7 @@
     

    - -

    Escaped String Literals

    +

    Escaped String Literals

    The C Way

    @@ -990,8 +970,7 @@

    - -

    Ascii vs Wide Characters

    +

    Ascii vs Wide Characters

    Modern programming requires that wchar strings be supported in an easy way, for internationalization of the programs. @@ -1015,8 +994,7 @@


    - -

    Arrays that parallel an enum

    +

    Arrays that parallel an enum

    The C Way

    @@ -1040,12 +1018,11 @@ Not perfect, but better.
    - -

    Creating a new typedef'd type

    +

    Creating a new type with typedef

    The C Way

    - Typedef's in C are weak, that is, they really do not introduce + Typedefs in C are weak, that is, they really do not introduce a new type. The compiler doesn't distinguish between a typedef and its underlying type. @@ -1126,8 +1103,7 @@ There's only one name to remember: Handle.
    - -

    Comparing structs

    +

    Comparing structs

    The C Way

    @@ -1422,7 +1398,7 @@
    If i is an int, this works fine. But if i is - of a typedef'd type, + of a type created with typedef,
    myint i, j;
     ...
    @@ -1464,8 +1440,8 @@
     
     	A generic context pointer is also needed, represented here by
     	void *p. The example here is of a trivial container
    -	class that holds an array of int's, and a user of that container
    -	that computes the maximum of those int's.
    +	class that holds an array of ints, and a user of that container
    +	that computes the maximum of those ints.
     
     
    struct Collection
     {
    diff -uNr dmd-0.175/dmd/html/d/dbc.html dmd-0.176/dmd/html/d/dbc.html
    --- dmd-0.175/dmd/html/d/dbc.html	2006-11-15 02:42:24.000000000 +0100
    +++ dmd-0.176/dmd/html/d/dbc.html	2006-11-27 18:15:56.000000000 +0100
    @@ -32,7 +32,7 @@
     	
     	
     
    -	
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Mon Nov 27 18:15:54 2006
    @@ -168,7 +168,7 @@
    C programmers will find it familiar. Unlike C, however, an assert in function bodies - works by throwing an AssertException, + works by throwing an AssertError, which can be caught and handled. Catching the contract violation is useful when the code must deal with errant uses by other code, when it must be failure proof, and as a useful tool for debugging. @@ -194,9 +194,10 @@ ...code... }
    - By definition, if a pre contract fails, then the body received bad parameters. - An InException is thrown. If a post contract fails, - then there is a bug in the body. An OutException is thrown. + By definition, if a pre contract fails, then the body received bad + parameters. + An AssertError is thrown. If a post contract fails, + then there is a bug in the body. An AssertError is thrown.

    Either the in or the out clause can be omitted. If the out clause is for a function @@ -210,11 +211,11 @@ } out (result) { - assert((result * result) == x); + assert((result * result) <= x && (result+1) * (result+1) >= x); } body { - return math.sqrt(x); + return cast(long)std.math.sqrt(cast(real)x); } The assert's in the in and out bodies are called contracts. @@ -269,7 +270,7 @@ If a function in a derived class overrides a function in its super class, then only one of the in contracts of the function and its base functions - must be satisified. + must be satisfied. Overriding functions then becomes a process of loosening the in contracts. diff -uNr dmd-0.175/dmd/html/d/dcompiler.html dmd-0.176/dmd/html/d/dcompiler.html --- dmd-0.175/dmd/html/d/dcompiler.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/dcompiler.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@ -

    Last update Wed Nov 15 02:42:23 2006 +
    Last update Mon Nov 27 18:15:55 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + @@ -769,22 +771,6 @@
  • The configuration file is /etc/dmd.conf -

    Linux Bugs

    - - -

    General

    @@ -823,34 +809,6 @@ They are a feature of the compiler, and serve only as an optimization of the build process. -

    Bugs

    - - These are some of the major bugs: - - - -

    Questions?

    - - We welcome all feedback - kudos, flames, bugs, suggestions, hints, - and most especially donated code! Join the fray in the - D forum. - -



    diff -uNr dmd-0.175/dmd/html/d/ddoc.html dmd-0.176/dmd/html/d/ddoc.html --- dmd-0.175/dmd/html/d/ddoc.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/ddoc.html 2006-11-27 18:15:58.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 15 02:42:23 2006 +
    Last update Mon Nov 27 18:15:56 2006
    @@ -532,26 +532,27 @@

    Embedded Code

    -

    D code can be embedded using lines with at least three -'s in - them to delineate the code section: +

    D code can be embedded using lines with at least three hyphens + in them to delineate the code section:

     /++++++++++++++++++++++++
       + Our function.
       + Example:
       + --------------------------
    -  +  #include <stdio.h>
    +  +  import std.stdio;
       +
       +  void foo()
       +  {
    -  +	printf("foo!\n");  /* print the string */
    +  +	writefln("foo!");  /* print the string */
       +  }
       + --------------------------
       +/
     
    -

    Note that documentation comment uses the /++ ... +/ form - so that /* ... */ can be used inside the code section. +

    Note that the documentation comment uses the /++ ... +/ + form + so that /* ... */ can be used inside the code section.

    Embedded HTML

    diff -uNr dmd-0.175/dmd/html/d/declaration.html dmd-0.176/dmd/html/d/declaration.html --- dmd-0.175/dmd/html/d/declaration.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/declaration.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:52 2006
    diff -uNr dmd-0.175/dmd/html/d/dlinks.html dmd-0.176/dmd/html/d/dlinks.html --- dmd-0.175/dmd/html/d/dlinks.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/dlinks.html 2006-11-27 18:15:52.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:51 2006
    @@ -86,6 +86,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + @@ -213,8 +215,6 @@ Dprogramming Wiki -
  • D real-time programming: drealtime.com
  • -
  • Japanese language: D wiki
  • @@ -240,18 +240,10 @@
  • D-mode an emacs mode for D -
  • - DMD Front End Starter Kit -
  • akide is an open source IDE written in D. Comes with D syntax colouring, D project wizard and DMD compiler support. -
  • Andy Friesen has taken - SWIG - and - modified it to generate code for D. -
  • Zeus for Windows comes with D compiler (*) and keywords predefined and @@ -264,7 +256,7 @@ customized for use with D . -
  • Build +
  • Bud tool for building D executables and libraries.
  • DStress @@ -273,7 +265,7 @@
  • The Ragel State Machine Compiler compiles finite state machines from regular languages into executable D code. -
  • CandyDoc +
  • CanDyDoc shows how one can customize the Ddoc results with macros and style sheets.
  • @@ -282,19 +274,8 @@

    Libraries

    @@ -375,15 +355,13 @@ with C, C++, C# and Java. -
  • Dr. Dobb's January 2005 has a - cover story +
  • Dr. Dobb's January 2005 has a cover story on D -.
    +.
  • Dr. Dobb's February 2002 has a - cover story - on D -.
    + cover story on D +.
  • D 's appearance on @@ -437,9 +415,6 @@ development, including forums, source-code control, bug-tracking, and distribution. -
  • Ben Hinkle's D page - contains several D-related projects. -
  • DMedia is dedicated to multimedia development with D. It will include 2d and 3d graphics, sound programming and probably more.
  • @@ -448,13 +423,9 @@
  • Check for a D user's group in your community. -
  • Extend or embed Python using D at - - http://www.scratch-ware.net/D/. -
  • AFB's The D Language -
  • +
  • Why D isn't Java? By Daniel Yokomiso. @@ -474,8 +445,8 @@ FAQs, D news, etc.
    -
  • - The Pragmatic Programmers +
  • + The Pragmatic Programmers
  • @@ -529,8 +500,6 @@
  • Justin's D Stuff -
  • Stephan Wienczny's D Programming page. -
  • MKoD - D Programming @@ -543,15 +512,11 @@ general information (ex: how to install D and D programming 101), and D site banners. -
  • Deja's D.NET PreAlpha Release. - -
  • Heresy 3D graphics engine - -
  • Ares +
  • Ares -
  • Elephant IDE +
  • Elephant IDE -
  • D DBI +
  • D DBI database independent interface for the D programming language
  • Harmonia @@ -560,8 +525,6 @@
  • Unsorted D links.
  • -
  • Gnu-D, GNU for the D language
  • -
  • Walter Bright's SDWest 2004 presentation on D.
  • @@ -613,9 +576,6 @@
  • Programmiersprache D, Deutsches D Buch, Autor: Manfred Hansen
  • -
  • Sprungmarke.NET, - Die deutschsprachige D Community
  • -

    Images

    diff -uNr dmd-0.175/dmd/html/d/dll.html dmd-0.176/dmd/html/d/dll.html --- dmd-0.175/dmd/html/d/dll.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/dll.html 2006-11-27 18:15:56.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 15 02:42:23 2006 +
    Last update Mon Nov 27 18:15:54 2006
    @@ -86,6 +86,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + @@ -786,17 +788,17 @@ The import library mydll.lib is not needed. The DLL is loaded with a call to - LoadLibraryA(), + LoadLibraryA(), and each exported function has to be retrieved via a call to - GetProcAddress(). + GetProcAddress(). An easy way to get the decorated name to pass to GetProcAddress() is to copy and paste it from the generated mydll.map file under the Export heading. Once this is done, we can use the member functions of the DLL classes as if they were part of test.exe. When done, release the DLL with - FreeLibrary(). + FreeLibrary().

    Running it looks like this: diff -uNr dmd-0.175/dmd/html/d/download.html dmd-0.176/dmd/html/d/download.html --- dmd-0.175/dmd/html/d/download.html 2006-11-15 02:42:26.000000000 +0100 +++ dmd-0.176/dmd/html/d/download.html 2006-11-27 18:15:58.000000000 +0100 @@ -32,7 +32,7 @@ -

    Last update Wed Nov 15 02:42:24 2006 +
    Last update Mon Nov 27 18:15:57 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/dstyle.html dmd-0.176/dmd/html/d/dstyle.html --- dmd-0.175/dmd/html/d/dstyle.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/dstyle.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:23 2006 +
    Last update Mon Nov 27 18:15:55 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/entity.html dmd-0.176/dmd/html/d/entity.html --- dmd-0.175/dmd/html/d/entity.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/entity.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:23 2006 +
    Last update Mon Nov 27 18:15:54 2006
    diff -uNr dmd-0.175/dmd/html/d/enum.html dmd-0.176/dmd/html/d/enum.html --- dmd-0.175/dmd/html/d/enum.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/enum.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Mon Nov 27 18:15:53 2006
    @@ -211,6 +211,7 @@

    Enum Properties

    +.init			First enum member value
     .min			Smallest value of enum
     .max			Largest value of enum
     .sizeof			Size of storage for an enumerated value
    diff -uNr dmd-0.175/dmd/html/d/errors.html dmd-0.176/dmd/html/d/errors.html
    --- dmd-0.175/dmd/html/d/errors.html	2006-11-15 02:42:24.000000000 +0100
    +++ dmd-0.176/dmd/html/d/errors.html	2006-11-27 18:15:56.000000000 +0100
    @@ -32,7 +32,7 @@
     	
     	
     
    -	
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Mon Nov 27 18:15:54 2006
    @@ -228,7 +228,9 @@ If code detects an error like "out of memory," then an Error is thrown with a message saying "Out of memory". The function call stack is unwound, -looking for a handler for the Error. Finally blocks are executed as the +looking for a handler for the Error. +Finally blocks +are executed as the stack is unwound. If an error handler is found, execution resumes there. If not, the default Error handler is run, which displays the message and terminates the program. diff -uNr dmd-0.175/dmd/html/d/exception-safe.html dmd-0.176/dmd/html/d/exception-safe.html --- dmd-0.175/dmd/html/d/exception-safe.html 2006-11-15 02:42:26.000000000 +0100 +++ dmd-0.176/dmd/html/d/exception-safe.html 2006-11-27 18:15:58.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:24 2006 +
    Last update Mon Nov 27 18:15:57 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + @@ -246,7 +248,7 @@ void abc() { Mutex m = new Mutex; - auto Lock L = new Lock(m); + scope L = new Lock(m); foo(); // do processing }
    @@ -351,7 +353,7 @@ Transaction abc() { - auto FooX f = new FooX(); + scope f = new FooX(); Bar b = dobar(); f.commit = true; return Transaction(f.f, b); @@ -382,7 +384,7 @@

    These work too, but have the same problems. The RAII approach involves the creation of dummy classes, and the obtuseness of moving some of the logic out of the abc() function. -The try-finally approach is wordy even with this simple example, try +The try-finally approach is wordy even with this simple example; try writing it if there are more than two components of the transaction that must succeed. It scales poorly.

    @@ -543,7 +545,7 @@ Rewriting it with RAII would require two extra silly classes, MessageTitleSaver and MessageRemover. Rewriting the example with try-finally would require nested try-finally -statements or use an extra variable to track state evolution. +statements or use of an extra variable to track state evolution.

    Example

    @@ -578,7 +580,7 @@

    When to use RAII, try-catch-finally, and Scope

    RAII is for managing resources, which is different from managing state -or transactions. try-catch is still needed, as on_scope doesn't catch +or transactions. try-catch is still needed, as scope doesn't catch exceptions. It's try-finally that becomes redundant.

    Acknowledgements

    @@ -597,7 +599,7 @@ especially Dawid Ciezarkiewicz and Chris Miller.

    -

    I am idebted to Scott Meyers for teaching +

    I am indebted to Scott Meyers for teaching me about exception safe programming.

    diff -uNr dmd-0.175/dmd/html/d/expression.html dmd-0.176/dmd/html/d/expression.html --- dmd-0.175/dmd/html/d/expression.html 2006-11-21 00:04:46.000000000 +0100 +++ dmd-0.176/dmd/html/d/expression.html 2006-12-02 02:29:14.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Tue Nov 21 00:04:43 2006 +
    Last update Sat Dec 2 02:29:13 2006
    @@ -472,7 +472,7 @@ unsigned for a <, <=, > or >= expression. Use casts to make both operands signed or both operands unsigned. -

    Floating point comparisons

    +

    Floating point comparisons

    If one or both operands are floating point, then a floating point comparison is performed. @@ -606,33 +606,48 @@ MulExpression AddExpression + MulExpression AddExpression - MulExpression - AddExpression ~ MulExpression + CatExpression - If the operands are of integral types, they undergo integral +

    If the operands are of integral types, they undergo integral promotions, and then are brought to a common type using the usual arithmetic conversions. -

    +

    - If either operand is a floating point type, the other is implicitly +

    If either operand is a floating point type, the other is implicitly converted to floating point and they are brought to a common type via the usual arithmetic conversions. -

    +

    - If the operator is + or -, and +

    If the operator is + or -, and the first operand is a pointer, and the second is an integral type, the resulting type is the type of the first operand, and the resulting value is the pointer plus (or minus) the second operand multiplied by the size of the type pointed to by the first operand. -

    +

    - If the second operand is a pointer, and the first is an integral type, +

    If the second operand is a pointer, and the first is an integral type, and the operator is +, the operands are reversed and the pointer arithmetic just described is applied. -

    +

    + +

    Add expressions for floating point operands are not associative. +

    + +

    Cat Expressions

    + +
    CatExpression:
    +	AddExpression ~ MulExpression
    +
    - Add expressions for floating point operands are not associative. +

    A CatExpression concatenates arrays, producing + a dynmaic array with the result. The arrays must be + arrays of the same element type. If one operand is an array + and the other is of that array's element type, that element + is converted to an array of length 1 of that element, + and then the concatenation is performed. +

    Mul Expressions

    @@ -652,7 +667,7 @@ correspond to multiply, divide, and modulus operations. For multiply, overflows are ignored and simply chopped to fit into the integral type. If the right operand of divide or modulus - operators is 0, a DivideByZeroException is thrown. + operators is 0, an Exception is thrown.

    For integral operands of the % operator, the sign of the @@ -887,11 +902,12 @@ static array or dynamic array, the variable length is declared and set to be the length of the array. if PostfixExpression is an ExpressionTuple, - the variable length + the variable length (and the special variable $) is declared and set to be the the number of elements in the tuple. A new declaration scope is created for the evaluation of the - ArgumentList and length appears in that scope only. + ArgumentList and length (and $) + appears in that scope only.

    If PostfixExpression is an ExpressionTuple, @@ -913,10 +929,11 @@

    PostfixExpression is evaluated. if PostfixExpression is an expression of type static array or dynamic array, the variable length + (and the special variable $) is declared and set to be the length of the array. A new declaration scope is created for the evaluation of the AssignExpression..AssignExpression - and length appears in that scope only. + and length (and $) appears in that scope only.

    The first AssignExpression is taken to be the inclusive @@ -1005,6 +1022,7 @@ Within a non-static member function, super resolves to a reference to the object that called the function, cast to its base class. It is an error if there is no base class. + (Only class Object has no base class.) super is not allowed in struct member functions. If a member function is called with an explicit reference @@ -1226,7 +1244,9 @@ typeid ( Type ) - Returns an instance of class TypeInfo corresponding + Returns an instance of class + TypeInfo + corresponding to Type.

    IsExpression

    @@ -1249,6 +1269,7 @@ enum function delegate + super IsExpressions are evaluated at compile time and are @@ -1331,7 +1352,7 @@
    alias short bar;
     typedef char foo;
    -void foo(bar x)
    +void test(bar x)
     {
         if ( is(bar == int) )	// not satisfied because short is not
     				// the same type as int
    @@ -1456,14 +1477,14 @@
     
     
    alias short bar;
     enum E : byte { Emember }
    -void foo(bar x, abc a)
    +void foo(bar x)
     {
         static if ( is(bar T == int) ) // not satisfied, short is not int
     	alias T S;
         alias T U;			   // error, T is not defined
     
         static if ( is(E V == enum) )  // satisified, E is an enum
    -	V x;			   // x is declared to be a byte
    +	V v;			   // x is declared to be a byte
     }
     
    diff -uNr dmd-0.175/dmd/html/d/faq.html dmd-0.176/dmd/html/d/faq.html --- dmd-0.175/dmd/html/d/faq.html 2006-11-20 00:21:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/faq.html 2006-11-27 18:15:56.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Mon Nov 20 00:21:20 2006 +
    Last update Mon Nov 27 18:15:55 2006
    @@ -86,6 +86,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + @@ -193,7 +195,7 @@ prepare a FAQ.

    -
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Mon Nov 27 18:15:54 2006
    @@ -160,7 +160,7 @@ Algorithms should be written to work based on the minimum precision of the calculation. They should not degrade or fail if the actual precision is greater. Float or double types, - as opposed to the extended type, should only be used for: + as opposed to the real (extended) type, should only be used for:
    - Complex numbers have two properties: + Complex, real and imaginary numbers have two properties:
    -.re	get real part
    -.im	get imaginary part as a real
    +.re	get real part (0 for imaginary numbers)
    +.im	get imaginary part as a real (0 for real numbers)
     
    For example: @@ -257,6 +257,8 @@ cd.im is 2 double c.re is 4.5 real c.im is 2 real +j.im is 1.3 real +j.re is 0 real

    Rounding Control

    @@ -266,9 +268,19 @@

    Exception Flags

    - IEEE 754 floating point arithmetic can set several flags based on what happened with a - computation: [blah, blah, blah]. - These flags can be set/reset via the functions in std.c.fenv. +

    IEEE 754 floating point arithmetic can set several flags based on what + happened with a + computation:

    + + + + + + + +
    FE_INVALID
    FE_DENORMAL
    FE_DIVBYZERO
    FE_OVERFLOW
    FE_UNDERFLOW
    FE_INEXACT
    + +

    These flags can be set/reset via the functions in std.c.fenv.

    Floating Point Comparisons

    @@ -285,29 +297,7 @@ !<> and match the semantics for the NCEG extensions to C. - -
    -Floating point comparison operators 
    -
    -Operator	Relations	Invalid? 	Description
    -
    -		> < = ? 
    -
    -<		F T F F		yes 	less than
    ->		T F F F		yes 	greater than
    -<=		F T T F		yes	less than or equal to
    ->=		T F T F		yes	greater than or equal to 
    -==		F F T F		no	equal to
    -!=		T T F T		no	unordered, less than, or greater than
    -!<>=		F F F T		no	unordered
    -<>		T T F F		yes	less than or greater than
    -<>=		T T T F		yes	less than, equal to, or greater than
    -!<=		T F F T		no	unordered or greater than
    -!<		T F T T		no	unordered, greater than, or equal to
    -!>=		F T F T		no	unordered or less than
    -!>		F T T T		no	unordered, less than, or equal to
    -!<>		F F T T		no	unordered or equal to
    -
    + See Floating point comparisons. diff -uNr dmd-0.175/dmd/html/d/function.html dmd-0.176/dmd/html/d/function.html --- dmd-0.175/dmd/html/d/function.html 2006-11-21 00:36:42.000000000 +0100 +++ dmd-0.176/dmd/html/d/function.html 2006-12-02 20:08:52.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Tue Nov 21 00:36:41 2006 +
    Last update Sat Dec 2 20:08:51 2006
    @@ -151,6 +151,9 @@

    Virtual Functions

    + Virtual functions are functions that are called indirectly + through a function + pointer table, called a vtbl[], rather than directly. All non-static non-private non-template member functions are virtual. This may sound inefficient, but since the D compiler knows all of the class @@ -159,8 +162,8 @@ In fact, since C++ programmers tend to "when in doubt, make it virtual", the D way of "make it - virtual unless we can prove it can be made non-virtual" results on - average much + virtual unless we can prove it can be made non-virtual" results, on + average, in many more direct function calls. It also results in fewer bugs caused by not declaring a function virtual that gets overridden. @@ -250,7 +253,7 @@ void bar(A a) { - a.foo(); // calls B.foo(int) + a.foo(1); // calls B.foo(int) } @@ -397,15 +400,41 @@ out parameters are set to the default initializer for the type of it. For example: -
    void foo(out int bar)
    +
    void foo(out int x)
     {
    +    // x is set to 0 at start of foo()
    +}
    +
    +int a = 3;
    +foo(a);
    +// a is now 0
    +
    +
    +void abc(out int x)
    +{
    +    x = 2;
    +}
    +
    +int y = 3;
    +abc(y);
    +// y is now 2
    +
    +
    +void def(inout int x)
    +{
    +    x += 1;
     }
     
    -int bar = 3;
    -foo(bar);
    -// bar is now 0
    +int z = 3;
    +def(z);
    +// z is now 4
     
    +

    For dynamic array and object parameters, which are passed + by reference, in/out/inout + apply only to the reference and not the contents. +

    +

    Lazy arguments are evaluated not when the function is called, but when the parameter is evaluated within the function. Hence, a lazy argument can be executed 0 or more times. A lazy parameter @@ -459,15 +488,14 @@ foo(2); // error, y is a required argument

    - There must have at least one non-variadic parameter declared. + There must be at least one non-variadic parameter declared.
    extern (C) int def(...); // error, must have at least one parameter
     
    - This kind of function matches the C calling convention for + C-style variadic functions match the C calling convention for variadic functions, and is most useful for calling C library functions like printf. - The implementiations of these variadic functions have a special local variable declared for them, _argptr, which is a void* pointer to the first of the @@ -491,7 +519,7 @@
    import std.c.stdarg;
     
    -

    Variadic Functions With Type Info

    +

    D-style Variadic Functions

    Variadic functions with argument and type info are declared as taking a parameter of ... after the required function parameters. @@ -648,7 +676,7 @@ int func() { - static int[3] ii = [4, 5, 6]; + int[3] ii = [4, 5, 6]; return sum(ii); // returns 15 } @@ -671,7 +699,7 @@ int func() { - static int[3] ii = [4, 5, 6]; + int[3] ii = [4, 5, 6]; int[] jj = ii; return sum(ii); // returns 15 return sum(jj); // error, type mismatch @@ -688,7 +716,17 @@ For class objects: -
    class Foo { int x; char[] s; }
    +
    class Foo
    +{
    +    int x;
    +    char[] s;
    +
    +    this(int x, char[] s)
    +    {
    +	this.x = x;
    +	this.s = s;
    +    }
    +}
     
     void test(int x, Foo f ...);
     
    @@ -762,7 +800,7 @@
     	

    It is an error to declare a local variable that is never referred to. - Dead variables, like anachronistic dead code, is just a source of + Dead variables, like anachronistic dead code, are just a source of confusion for maintenance programmers.

    @@ -792,7 +830,7 @@ It is an error to have a local variable and a label with the same name. -

    Nested Functions

    +

    Nested Functions

    Functions may be nested within other functions: @@ -818,12 +856,13 @@ { void A() { - B(); // ok + B(); // error, B() is forward referenced C(); // error, C undefined } void B() { - void C() + A(); // ok, in scope + void C() { void D() { @@ -927,6 +966,7 @@ { return c + a; } + return 0; } }
    @@ -954,6 +994,8 @@ // so are members of Foo accessible via // the 'this' pointer to Foo.bar() } + + return 0; } } } diff -uNr dmd-0.175/dmd/html/d/future.html dmd-0.176/dmd/html/d/future.html --- dmd-0.175/dmd/html/d/future.html 2006-11-20 14:18:56.000000000 +0100 +++ dmd-0.176/dmd/html/d/future.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Mon Nov 20 14:18:54 2006 +
    Last update Mon Nov 27 18:15:55 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/garbage.html dmd-0.176/dmd/html/d/garbage.html --- dmd-0.175/dmd/html/d/garbage.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/garbage.html 2006-11-30 02:37:58.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Thu Nov 30 02:37:57 2006
    @@ -192,11 +192,11 @@
  • Garbage collectors reclaim unused memory, therefore they do not suffer from "memory leaks" which can cause long running applications to gradually - consume more and more memory until they bring down the system. GC'd programs + consume more and more memory until they bring down the system. GC programs have longer term stability.
  • Garbage collected programs have fewer hard-to-find pointer bugs. This - is because there are no dangling references to free'd memory. There is no + is because there are no dangling references to freed memory. There is no code to explicitly manage memory, hence no bugs in such code.
  • Garbage collected programs are faster to develop and debug, because @@ -300,7 +300,7 @@
    • Do not xor pointers with other values, like the - xor'd pointer linked list trick used in C. + xor pointer linked list trick used in C.

    • Do not use the xor trick to swap two pointer values. @@ -414,7 +414,7 @@ rendering most explicit pointer uses obsolete, such as reference objects, dynamic arrays, and garbage collection. Pointers - are provided in order to interface successfully with C API's and for + are provided in order to interface successfully with C APIs and for some low level work.

      Working with the Garbage Collector

      diff -uNr dmd-0.175/dmd/html/d/glossary.html dmd-0.176/dmd/html/d/glossary.html --- dmd-0.175/dmd/html/d/glossary.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/glossary.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@
    -
    Last update Wed Nov 15 02:42:23 2006 +
    Last update Mon Nov 27 18:15:55 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/html.html dmd-0.176/dmd/html/d/html.html --- dmd-0.175/dmd/html/d/html.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/html.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Mon Nov 27 18:15:54 2006
    diff -uNr dmd-0.175/dmd/html/d/htod.html dmd-0.176/dmd/html/d/htod.html --- dmd-0.175/dmd/html/d/htod.html 2006-11-15 02:42:26.000000000 +0100 +++ dmd-0.176/dmd/html/d/htod.html 2006-11-27 18:15:58.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 15 02:42:24 2006 +
    Last update Mon Nov 27 18:15:57 2006
    @@ -86,6 +86,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/htomodule.html dmd-0.176/dmd/html/d/htomodule.html --- dmd-0.175/dmd/html/d/htomodule.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/htomodule.html 2006-11-30 02:37:58.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 15 02:42:23 2006 +
    Last update Thu Nov 30 02:37:57 2006
    @@ -86,6 +86,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + @@ -273,7 +275,7 @@ wchar or dchar bool - byte or int + bool, byte, int size_t size_t @@ -306,8 +308,9 @@ with: -
    cast(wchar[])"string"
    -
    +
    "string"w	// for 16 bit wide characters
    +"string"d	// for 32 bit wide characters
    +

    Macros

    @@ -544,7 +547,7 @@ int c; } Bar bar; -}; +} struct Abc { @@ -553,7 +556,7 @@ { int c; } -}; +}

    __cdecl, __pascal, __stdcall

    diff -uNr dmd-0.175/dmd/html/d/iasm.html dmd-0.176/dmd/html/d/iasm.html --- dmd-0.175/dmd/html/d/iasm.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/iasm.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Mon Nov 27 18:15:54 2006
    diff -uNr dmd-0.175/dmd/html/d/index.html dmd-0.176/dmd/html/d/index.html --- dmd-0.175/dmd/html/d/index.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/index.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:52 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/interface.html dmd-0.176/dmd/html/d/interface.html --- dmd-0.175/dmd/html/d/interface.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/interface.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Mon Nov 27 18:15:54 2006
    diff -uNr dmd-0.175/dmd/html/d/interfaceToC.html dmd-0.176/dmd/html/d/interfaceToC.html --- dmd-0.175/dmd/html/d/interfaceToC.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/interfaceToC.html 2006-11-30 02:38:00.000000000 +0100 @@ -23,7 +23,7 @@ www.digitalmars.com
    -
    -
    Last update Wed Nov 15 02:42:23 2006 +
    Last update Thu Nov 30 02:37:58 2006
    @@ -502,7 +502,7 @@ Copyright © 1999-2006 by Digital Mars, All Rights Reserved | Page generated by Ddoc. | -Comments diff -uNr dmd-0.175/dmd/html/d/intro.html dmd-0.176/dmd/html/d/intro.html --- dmd-0.175/dmd/html/d/intro.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/intro.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:52 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/lazy-evaluation.html dmd-0.176/dmd/html/d/lazy-evaluation.html --- dmd-0.175/dmd/html/d/lazy-evaluation.html 2006-11-15 02:42:26.000000000 +0100 +++ dmd-0.176/dmd/html/d/lazy-evaluation.html 2006-11-27 18:16:00.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:24 2006 +
    Last update Mon Nov 27 18:15:58 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/lex.html dmd-0.176/dmd/html/d/lex.html --- dmd-0.175/dmd/html/d/lex.html 2006-11-18 14:13:40.000000000 +0100 +++ dmd-0.176/dmd/html/d/lex.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Fri Nov 17 23:25:52 2006 +
    Last update Mon Nov 27 18:15:52 2006
    @@ -378,6 +378,7 @@ >>> ! != + !== !<> !<>= !< @@ -398,6 +399,7 @@ $ = == + === * *= % diff -uNr dmd-0.175/dmd/html/d/lisp-java-d.html dmd-0.176/dmd/html/d/lisp-java-d.html --- dmd-0.175/dmd/html/d/lisp-java-d.html 2006-11-15 02:42:26.000000000 +0100 +++ dmd-0.176/dmd/html/d/lisp-java-d.html 2006-11-27 18:16:00.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 15 02:42:24 2006 +
    Last update Mon Nov 27 18:15:58 2006
    diff -uNr dmd-0.175/dmd/html/d/memory.html dmd-0.176/dmd/html/d/memory.html --- dmd-0.175/dmd/html/d/memory.html 2006-11-20 23:53:28.000000000 +0100 +++ dmd-0.176/dmd/html/d/memory.html 2006-11-30 02:37:58.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Mon Nov 20 23:53:27 2006 +
    Last update Thu Nov 30 02:37:57 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + @@ -662,7 +664,7 @@ -

    Interrupt Service Routines

    +

    Interrupt Service Routines

    When the garbage collector does a collection pass, it must pause all running threads in order to scan their stacks and register diff -uNr dmd-0.175/dmd/html/d/mixin.html dmd-0.176/dmd/html/d/mixin.html --- dmd-0.175/dmd/html/d/mixin.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/mixin.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@ -

    Last update Wed Nov 15 02:42:22 2006 +
    Last update Mon Nov 27 18:15:54 2006
    diff -uNr dmd-0.175/dmd/html/d/module.html dmd-0.176/dmd/html/d/module.html --- dmd-0.175/dmd/html/d/module.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/module.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:52 2006
    diff -uNr dmd-0.175/dmd/html/d/operatoroverloading.html dmd-0.176/dmd/html/d/operatoroverloading.html --- dmd-0.175/dmd/html/d/operatoroverloading.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/operatoroverloading.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Mon Nov 27 18:15:53 2006
    @@ -554,6 +554,18 @@ determine equality or inequality.

    + Note: Comparing a reference to a class object against null + should be done as: +
    if (a is null)
    +
    + and not as: +
    if (a == null)
    +
    + The latter is converted to: +
    if (a.opCmp(null))
    +
    + which will fail if opCmp() is a virtual function. +

    Overloading <, <=, > and >=

    These comparison operators all use the opCmp() function. @@ -575,18 +587,6 @@ to compare two structs is an error.

    - Note: Comparing a reference to a class object against null - should be done as: -

    if (a is null)
    -
    - and not as: -
    if (a == null)
    -
    - The latter is converted to: -
    if (a.opCmp(null))
    -
    - which will fail if opCmp() is a virtual function. -

    Rationale

    The reason for having both opEquals() and opCmp() is that:

    @@ -630,7 +630,7 @@ int i; i = f(); // same as i = f.opCall(); - i = f(3,4,5); // same as i = a.opCall(3,4,5); + i = f(3,4,5); // same as i = f.opCall(3,4,5); } diff -uNr dmd-0.175/dmd/html/d/overview.html dmd-0.176/dmd/html/d/overview.html --- dmd-0.175/dmd/html/d/overview.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/overview.html 2006-11-27 18:15:54.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:52 2006
    @@ -86,6 +86,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/phobos/object.html dmd-0.176/dmd/html/d/phobos/object.html --- dmd-0.175/dmd/html/d/phobos/object.html 2006-11-25 00:31:28.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/object.html 2006-12-02 02:46:24.000000000 +0100 @@ -28,7 +28,7 @@ -
    Last update Sat Nov 25 00:31:26 2006 +
    Last update Sat Dec 2 02:46:23 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:29 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -62,6 +62,7 @@

    std

    -
    Last update Sat Nov 25 00:31:26 2006 +
    Last update Sat Dec 2 02:46:23 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:23 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:24 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:29 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:26 2006 +
    Last update Sat Dec 2 02:46:23 2006
    @@ -65,6 +65,7 @@

    std

    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:24 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:24 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:29 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:24 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:29 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:29 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:29 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:29 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:24 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:29 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:29 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:24 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:29 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:23 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:24 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:26 2006 +
    Last update Sat Dec 2 02:46:23 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:26 2006 +
    Last update Sat Dec 2 02:46:23 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:24 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:24 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:25 2006 +
    Last update Sat Dec 2 02:46:22 2006
    @@ -61,6 +61,7 @@

    std

    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:23 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_mmfile.html dmd-0.176/dmd/html/d/phobos/std_mmfile.html --- dmd-0.175/dmd/html/d/phobos/std_mmfile.html 2006-11-25 00:31:28.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_mmfile.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:24 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_openrj.html dmd-0.176/dmd/html/d/phobos/std_openrj.html --- dmd-0.175/dmd/html/d/phobos/std_openrj.html 2006-11-25 00:31:28.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_openrj.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:24 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_outbuffer.html dmd-0.176/dmd/html/d/phobos/std_outbuffer.html --- dmd-0.175/dmd/html/d/phobos/std_outbuffer.html 2006-11-25 00:31:28.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_outbuffer.html 2006-12-02 02:46:24.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:26 2006 +
    Last update Sat Dec 2 02:46:22 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_outofmemory.html dmd-0.176/dmd/html/d/phobos/std_outofmemory.html --- dmd-0.175/dmd/html/d/phobos/std_outofmemory.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_outofmemory.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:24 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_path.html dmd-0.176/dmd/html/d/phobos/std_path.html --- dmd-0.175/dmd/html/d/phobos/std_path.html 2006-11-25 00:31:26.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_path.html 2006-12-02 02:46:24.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:25 2006 +
    Last update Sat Dec 2 02:46:22 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_process.html dmd-0.176/dmd/html/d/phobos/std_process.html --- dmd-0.175/dmd/html/d/phobos/std_process.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_process.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:24 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_random.html dmd-0.176/dmd/html/d/phobos/std_random.html --- dmd-0.175/dmd/html/d/phobos/std_random.html 2006-11-25 00:31:28.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_random.html 2006-12-02 02:46:24.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:26 2006 +
    Last update Sat Dec 2 02:46:23 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_regexp.html dmd-0.176/dmd/html/d/phobos/std_regexp.html --- dmd-0.175/dmd/html/d/phobos/std_regexp.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_regexp.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:25 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_signals.html dmd-0.176/dmd/html/d/phobos/std_signals.html --- dmd-0.175/dmd/html/d/phobos/std_signals.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_signals.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:25 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_socket.html dmd-0.176/dmd/html/d/phobos/std_socket.html --- dmd-0.175/dmd/html/d/phobos/std_socket.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_socket.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:25 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • @@ -976,6 +977,50 @@ +
      class TcpSocket: std.socket.Socket; +
      +
      TcpSocket is a shortcut class for a TCP Socket. +

      + +
      this(AddressFamily family); +
      +
      Constructs a blocking TCP Socket. +

      + +
      +
      this(); +
      +
      Constructs a blocking TCP Socket. +

      + +
      +
      this(Address connectTo); +
      +
      Constructs a blocking TCP Socket and connects to an InternetAddress. +

      + +
      +
      +
      +
      class UdpSocket: std.socket.Socket; +
      +
      UdpSocket is a shortcut class for a UDP Socket. +

      + +
      this(AddressFamily family); +
      +
      Constructs a blocking UDP Socket. +

      + +
      +
      this(); +
      +
      Constructs a blocking UDP Socket. +

      + +
      +
      +
      diff -uNr dmd-0.175/dmd/html/d/phobos/std_socketstream.html dmd-0.176/dmd/html/d/phobos/std_socketstream.html --- dmd-0.175/dmd/html/d/phobos/std_socketstream.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_socketstream.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:25 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_stdint.html dmd-0.176/dmd/html/d/phobos/std_stdint.html --- dmd-0.175/dmd/html/d/phobos/std_stdint.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_stdint.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:25 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_stdio.html dmd-0.176/dmd/html/d/phobos/std_stdio.html --- dmd-0.175/dmd/html/d/phobos/std_stdio.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_stdio.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:25 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_stream.html dmd-0.176/dmd/html/d/phobos/std_stream.html --- dmd-0.175/dmd/html/d/phobos/std_stream.html 2006-11-25 00:31:28.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_stream.html 2006-12-02 02:46:24.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:26 2006 +
    Last update Sat Dec 2 02:46:22 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_string.html dmd-0.176/dmd/html/d/phobos/std_string.html --- dmd-0.175/dmd/html/d/phobos/std_string.html 2006-11-25 00:31:28.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_string.html 2006-12-02 02:46:24.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:26 2006 +
    Last update Sat Dec 2 02:46:22 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_system.html dmd-0.176/dmd/html/d/phobos/std_system.html --- dmd-0.175/dmd/html/d/phobos/std_system.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_system.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:25 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_thread.html dmd-0.176/dmd/html/d/phobos/std_thread.html --- dmd-0.175/dmd/html/d/phobos/std_thread.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_thread.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:25 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_traits.html dmd-0.176/dmd/html/d/phobos/std_traits.html --- dmd-0.175/dmd/html/d/phobos/std_traits.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_traits.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:25 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • @@ -188,6 +189,20 @@
      +
      template isStaticArray(T)
      +
      Detect whether type T is a static array. + +

      + +
      +
      +
      template isExpressionTuple(T...)
      +
      Tells whether the tuple T is an expression tuple. + +

      + +
      +
      diff -uNr dmd-0.175/dmd/html/d/phobos/std_typetuple.html dmd-0.176/dmd/html/d/phobos/std_typetuple.html --- dmd-0.175/dmd/html/d/phobos/std_typetuple.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_typetuple.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:25 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_uni.html dmd-0.176/dmd/html/d/phobos/std_uni.html --- dmd-0.175/dmd/html/d/phobos/std_uni.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_uni.html 2006-12-02 02:46:26.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:25 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_uri.html dmd-0.176/dmd/html/d/phobos/std_uri.html --- dmd-0.175/dmd/html/d/phobos/std_uri.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_uri.html 2006-12-02 02:46:28.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_utf.html dmd-0.176/dmd/html/d/phobos/std_utf.html --- dmd-0.175/dmd/html/d/phobos/std_utf.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_utf.html 2006-12-02 02:46:28.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_windows_charset.html dmd-0.176/dmd/html/d/phobos/std_windows_charset.html --- dmd-0.175/dmd/html/d/phobos/std_windows_charset.html 2006-11-25 00:31:30.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_windows_charset.html 2006-12-02 02:46:28.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:28 2006 +
    Last update Sat Dec 2 02:46:26 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_zip.html dmd-0.176/dmd/html/d/phobos/std_zip.html --- dmd-0.175/dmd/html/d/phobos/std_zip.html 2006-11-25 00:31:28.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_zip.html 2006-12-02 02:46:24.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:23 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/phobos/std_zlib.html dmd-0.176/dmd/html/d/phobos/std_zlib.html --- dmd-0.175/dmd/html/d/phobos/std_zlib.html 2006-11-25 00:31:28.000000000 +0100 +++ dmd-0.176/dmd/html/d/phobos/std_zlib.html 2006-12-02 02:46:24.000000000 +0100 @@ -28,7 +28,7 @@
    -
    Last update Sat Nov 25 00:31:27 2006 +
    Last update Sat Dec 2 02:46:23 2006
    @@ -61,6 +61,7 @@

    std

    • std.base64
    • +
    • std.bind
    • std.bitarray
    • std.boxer
    • std.compiler
    • diff -uNr dmd-0.175/dmd/html/d/portability.html dmd-0.176/dmd/html/d/portability.html --- dmd-0.175/dmd/html/d/portability.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/portability.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@
    -
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Mon Nov 27 18:15:54 2006
    diff -uNr dmd-0.175/dmd/html/d/pragma.html dmd-0.176/dmd/html/d/pragma.html --- dmd-0.175/dmd/html/d/pragma.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/pragma.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:52 2006
    diff -uNr dmd-0.175/dmd/html/d/pretod.html dmd-0.176/dmd/html/d/pretod.html --- dmd-0.175/dmd/html/d/pretod.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/pretod.html 2006-11-27 18:15:52.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:51 2006
    diff -uNr dmd-0.175/dmd/html/d/property.html dmd-0.176/dmd/html/d/property.html --- dmd-0.175/dmd/html/d/property.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/property.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:52 2006
    diff -uNr dmd-0.175/dmd/html/d/rationale.html dmd-0.176/dmd/html/d/rationale.html --- dmd-0.175/dmd/html/d/rationale.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/rationale.html 2006-11-27 18:15:58.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:23 2006 +
    Last update Mon Nov 27 18:15:56 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/regular-expression.html dmd-0.176/dmd/html/d/regular-expression.html --- dmd-0.175/dmd/html/d/regular-expression.html 2006-11-15 02:42:26.000000000 +0100 +++ dmd-0.176/dmd/html/d/regular-expression.html 2006-11-27 18:15:58.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 15 02:42:24 2006 +
    Last update Mon Nov 27 18:15:57 2006
    @@ -86,6 +86,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/statement.html dmd-0.176/dmd/html/d/statement.html --- dmd-0.175/dmd/html/d/statement.html 2006-11-18 02:44:56.000000000 +0100 +++ dmd-0.176/dmd/html/d/statement.html 2006-11-27 18:15:54.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Sat Nov 18 02:44:54 2006 +
    Last update Mon Nov 27 18:15:53 2006
    @@ -132,25 +132,25 @@ C and C++ programmers will find the D statements very familiar, with a few interesting additions. -
    Statement:
    +
    Statement:
         ;
         NonEmptyStatement
         ScopeBlockStatement
     
    -NoScopeNonEmptyStatement:
    +NoScopeNonEmptyStatement:
         NonEmptyStatement
         BlockStatement
     
    -NoScopeStatement:
    +NoScopeStatement:
         ;
         NonEmptyStatement
         BlockStatement
     
    -NonEmptyOrScopeBlockStatement:
    +NonEmptyOrScopeBlockStatement:
         NonEmptyStatement
         ScopeBlockStatement
     
    -NonEmptyStatement:
    +NonEmptyStatement:
         LabeledStatement
         ExpressionStatement
         DeclarationStatement
    @@ -748,11 +748,11 @@
     int[] b;
     foreach (int i; a)
     {
    -    a = null;		// error
    -    a.length += 10;	// error
    -    a = b;		// error
    +    a = null;			// error
    +    a.length = a.length + 10;	// error
    +    a = b;			// error
     }
    -a = null;		// ok
    +a = null;			// ok
     

    If the aggregate is a tuple, there @@ -774,11 +774,12 @@ type.

    -
    import std.typelist;	// for TypeList
    +
    import std.stdio;
    +import std.typetuple;	// for TypeTuple
     
     void main()
     {
    -    alias TypeList!(int, long, double) TL;
    +    alias TypeTuple!(int, long, double) TL;
     
         foreach (T; TL)
         {
    @@ -808,10 +809,10 @@
     
    SwitchStatement:
     	switch ( Expression ) ScopeStatement
     
    -CaseStatement:
    +CaseStatement:
     	case ExpressionList : Statement
     
    -DefaultStatement:
    +DefaultStatement:
     	default: Statement
     
    @@ -1239,6 +1240,7 @@ printf("catch %.*s\n", e.msg); } printf("done\n"); + return 0; }
    diff -uNr dmd-0.175/dmd/html/d/struct.html dmd-0.176/dmd/html/d/struct.html --- dmd-0.175/dmd/html/d/struct.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/struct.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Mon Nov 27 18:15:53 2006
    diff -uNr dmd-0.175/dmd/html/d/template.html dmd-0.176/dmd/html/d/template.html --- dmd-0.175/dmd/html/d/template.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/template.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Mon Nov 27 18:15:54 2006
    @@ -469,15 +469,15 @@ alias TFoo!(int) Foo1; // (1) T is deduced to be int alias TFoo!(char*) Foo2; // (1) T is deduced to be char* -template TFoo(T : T*) { } -alias TFoo!(char*) Foo3; // (2) T is deduced to be char +template TBar(T : T*) { } +alias TBar!(char*) Foo3; // (2) T is deduced to be char -template TBar(D, U : D[]) { } -alias TBar!(int, int[]) Bar1; // (2) D is deduced to be int, U is int[] -alias TBar!(char, int[]) Bar2; // (4) error, D is both char and int +template TAbc(D, U : D[]) { } +alias TAbc!(int, int[]) Bar1; // (2) D is deduced to be int, U is int[] +alias TAbc!(char, int[]) Bar2; // (4) error, D is both char and int -template TBar(D : E*, E) { } -alias TBar!(int*, int) Bar3; // (1) E is int +template TDef(D : E*, E) { } +alias TDef!(int*, int) Bar3; // (1) E is int // (3) D is int*
    @@ -559,7 +559,7 @@ { alias Foo!(x) bar; *bar.p = 3; // set x to 3 - int y; + static int y; alias Foo!(y) abc; *abc.p = 3; // set y to 3 } @@ -776,7 +776,7 @@ return x + y + z; } - auto plus_two = Curry(&minus, 2); + auto plus_two = Curry(&plus, 2); printf("%d\n", plus_two(6, 8)); // prints 16 }
    @@ -858,7 +858,7 @@
    void Foo(T : T*)(T t) { ... }
     
     int x,y;
    -Foo!(int*)(&x);  // ok, T is not deduced from function argument
    +Foo!(int*)(x);   // ok, T is not deduced from function argument
     Foo(&y);         // error, T has specialization
     
    diff -uNr dmd-0.175/dmd/html/d/templates-revisited.html dmd-0.176/dmd/html/d/templates-revisited.html --- dmd-0.175/dmd/html/d/templates-revisited.html 2006-11-15 02:42:26.000000000 +0100 +++ dmd-0.176/dmd/html/d/templates-revisited.html 2006-11-27 18:15:58.000000000 +0100 @@ -33,7 +33,7 @@ -
    Last update Wed Nov 15 02:42:24 2006 +
    Last update Mon Nov 27 18:15:57 2006
    @@ -88,6 +88,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + @@ -646,9 +648,9 @@
    template IsFunctionT(T)
     {
       static if ( is(T[]) )
    -    const int IsFunctionT = 1;
    -  else
         const int IsFunctionT = 0;
    +  else
    +    const int IsFunctionT = 1;
     }
     
     void test()
    diff -uNr dmd-0.175/dmd/html/d/tuple.html dmd-0.176/dmd/html/d/tuple.html
    --- dmd-0.175/dmd/html/d/tuple.html	2006-11-20 00:21:22.000000000 +0100
    +++ dmd-0.176/dmd/html/d/tuple.html	2006-11-27 18:16:00.000000000 +0100
    @@ -34,7 +34,7 @@
     	
     	
     
    -	
    Last update Mon Nov 20 00:21:21 2006 +
    Last update Mon Nov 27 18:15:58 2006
    @@ -89,6 +89,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/type.html dmd-0.176/dmd/html/d/type.html --- dmd-0.175/dmd/html/d/type.html 2006-11-15 02:42:22.000000000 +0100 +++ dmd-0.176/dmd/html/d/type.html 2006-11-27 18:15:54.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:21 2006 +
    Last update Mon Nov 27 18:15:52 2006
    @@ -152,7 +152,7 @@ double 64 bit floating point double.nan real largest hardware implemented floating - point size (Implementation Note: 80 bits for Intel CPU's) + point size (Implementation Note: 80 bits for Intel CPUs) real.nan ifloat imaginary float diff -uNr dmd-0.175/dmd/html/d/variadic-function-templates.html dmd-0.176/dmd/html/d/variadic-function-templates.html --- dmd-0.175/dmd/html/d/variadic-function-templates.html 2006-11-15 02:42:26.000000000 +0100 +++ dmd-0.176/dmd/html/d/variadic-function-templates.html 2006-11-27 18:16:00.000000000 +0100 @@ -33,7 +33,7 @@ -
    Last update Wed Nov 15 02:42:24 2006 +
    Last update Mon Nov 27 18:15:58 2006
    @@ -88,6 +88,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/version.html dmd-0.176/dmd/html/d/version.html --- dmd-0.175/dmd/html/d/version.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/version.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@ -
    Last update Wed Nov 15 02:42:22 2006 +
    Last update Mon Nov 27 18:15:54 2006
    diff -uNr dmd-0.175/dmd/html/d/warnings.html dmd-0.176/dmd/html/d/warnings.html --- dmd-0.175/dmd/html/d/warnings.html 2006-11-15 02:42:26.000000000 +0100 +++ dmd-0.176/dmd/html/d/warnings.html 2006-11-27 18:15:58.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 15 02:42:24 2006 +
    Last update Mon Nov 27 18:15:57 2006
    @@ -86,6 +86,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + @@ -459,7 +461,8 @@ The potential for bugs with that is high, as it is a common error to accidentally omit a case, or to add a new value in one part of the program and overlook adding a case for it in another part. - Although D will catch this error at runtime, some prefer at least + Although D will catch this error at runtime by throwing + an instance of std.switcherr.SwitchError, some prefer at least a warning so such errors can be caught at compile time.

    diff -uNr dmd-0.175/dmd/html/d/wc.html dmd-0.176/dmd/html/d/wc.html --- dmd-0.175/dmd/html/d/wc.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/wc.html 2006-11-27 18:15:56.000000000 +0100 @@ -32,7 +32,7 @@ -

    Last update Wed Nov 15 02:42:23 2006 +
    Last update Mon Nov 27 18:15:55 2006
    @@ -87,6 +87,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/windbg.html dmd-0.176/dmd/html/d/windbg.html --- dmd-0.175/dmd/html/d/windbg.html 2006-11-15 02:42:26.000000000 +0100 +++ dmd-0.176/dmd/html/d/windbg.html 2006-11-27 18:15:58.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 15 02:42:24 2006 +
    Last update Mon Nov 27 18:15:57 2006
    @@ -86,6 +86,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • + diff -uNr dmd-0.175/dmd/html/d/windows.html dmd-0.176/dmd/html/d/windows.html --- dmd-0.175/dmd/html/d/windows.html 2006-11-15 02:42:24.000000000 +0100 +++ dmd-0.176/dmd/html/d/windows.html 2006-11-27 18:15:56.000000000 +0100 @@ -31,7 +31,7 @@ -
    Last update Wed Nov 15 02:42:23 2006 +
    Last update Mon Nov 27 18:15:54 2006
    @@ -86,6 +86,8 @@
  • Warnings
  • +
  • Issues & Bugs
  • +