Thread overview
Changes for newer version...
Jan 19, 2012
Era Scarecrow
Jan 20, 2012
Jesse Phillips
Jan 20, 2012
Timon Gehr
January 19, 2012
 Been a bit out of it for a while, but finding enough tools at my disposal I feel I can work on/convert a project now.

 I happen to have one of the first printing books (without the name on the cover), and although it may be worth millions in a few years, apparently there's been enough changes that certain features are not familiar in the discussions.

 So I need to ask since I don't see any obvious pages that describe it. What are the changes to D2, since the book's release? What has externally changed? (Internal implementation of features need not be mentioned if it's transparent to the programmer and user).
January 20, 2012
On Thursday, 19 January 2012 at 20:44:04 UTC, Era Scarecrow wrote:
> Been a bit out of it for a while, but finding enough tools at my disposal I feel I can work on/convert a project now.
>
> I happen to have one of the first printing books (without the name on the cover), and although it may be worth millions in a few years, apparently there's been enough changes that certain features are not familiar in the discussions.
>
> So I need to ask since I don't see any obvious pages that describe it. What are the changes to D2, since the book's release? What has externally changed? (Internal implementation of features need not be mentioned if it's transparent to the programmer and user).

For the most part the language has been changing to match the book. There are still bugs in that regard.

http://d.puremagic.com/issues/buglist.cgi?quicksearch=[tdpl]

The book itself has its own bugs, which can be found on the errata page.

http://erdani.com/index.php?cID=109
January 20, 2012
On 01/19/2012 09:30 PM, Era Scarecrow wrote:
>   Been a bit out of it for a while, but finding enough tools at my disposal I feel I can work on/convert a project now.
>
>   I happen to have one of the first printing books (without the name on the cover), and although it may be worth millions in a few years, apparently there's been enough changes that certain features are not familiar in the discussions.
>
>   So I need to ask since I don't see any obvious pages that describe it. What are the changes to D2, since the book's release? What has externally changed? (Internal implementation of features need not be mentioned if it's transparent to the programmer and user).

The most important changes are probably:

- inout type qualifier

The type qualifier inout can be used as a wildcard to stand for any of mutable, const, immutable. Its meaning is automatically deduced and is the same throughout a certain function definition or function call.

For example:

inout(int)[] identity(inout(int)[] x){return x;}
int[] x;
immutable(int)[] y;
const(int)[] z;
static assert(is(typeof(identity(x)) == int[]));
static assert(is(typeof(identity(y)) == immutable(int)[]));
static assert(is(typeof(identity(z)) == const(int)[]));



- function local imports
void main(){
    import std.stdio;
    writeln("hello world!");
}


- new function/delegate literal syntax (coming DMD 2.058)

identifier => expression
or
(id1, id2) => expression
or
(type id1, type id2) => expression

import std.stdio, std.range, std.algorithm;
void main(){
    writeln("some odd squares:");
    writeln(map!(x=>x^^2)(filter!(x=>x&1)(iota(1,1000))));
}