May 30, 2013
On 2013-05-30, 17:16, Andrei Alexandrescu wrote:

> For the full story, mosey to the redesigned changelog:
>
> http://dlang.org/changelog.html

Kudos to Andrej for this. *This* is how a great changelog looks.

-- 
Simen
May 30, 2013
30-May-2013 21:16, Simen Kjaeraas пишет:
> On 2013-05-30, 17:16, Andrei Alexandrescu wrote:
>
>> For the full story, mosey to the redesigned changelog:
>>
>> http://dlang.org/changelog.html
>
> Kudos to Andrej for this. *This* is how a great changelog looks.
>
Joins the cheering crowd :)

Nice job, Andrej!

-- 
Dmitry Olshansky
May 30, 2013
On Thursday, 30 May 2013 at 17:28:49 UTC, Dmitry Olshansky wrote:
> 30-May-2013 21:16, Simen Kjaeraas пишет:
>> On 2013-05-30, 17:16, Andrei Alexandrescu wrote:
>>
>>> For the full story, mosey to the redesigned changelog:
>>>
>>> http://dlang.org/changelog.html
>>
>> Kudos to Andrej for this. *This* is how a great changelog looks.
>>
> Joins the cheering crowd :)
>
> Nice job, Andrej!

Agreed, also very satisfying to see ones own bug fixes in there :P
May 30, 2013
Am Thu, 30 May 2013 19:36:59 +0200
schrieb "Diggory" <diggsey@googlemail.com>:

> On Thursday, 30 May 2013 at 17:28:49 UTC, Dmitry Olshansky wrote:
> > 30-May-2013 21:16, Simen Kjaeraas пишет:
> >> On 2013-05-30, 17:16, Andrei Alexandrescu wrote:
> >>
> >>> For the full story, mosey to the redesigned changelog:
> >>>
> >>> http://dlang.org/changelog.html
> >>
> >> Kudos to Andrej for this. *This* is how a great changelog looks.
> >>
> > Joins the cheering crowd :)
> >
> > Nice job, Andrej!
> 
> Agreed, also very satisfying to see ones own bug fixes in there :P

A nice changelog and a nice release afaics ;-)

May 30, 2013
What a great release! Great work!

I really like the new langugage changes. One change caught my attention: #10 "The Template This Parameter now changes the member function qualifier". Does this mean that const/immutable ranges can implement a useful opSlice? Like

struct MyRange!T {
  T[] data;

  MyRange!(ElementType!data) opSlice(this T)() {
    return MyRange(data);
  }
}

So that given the other range primitves this will work:

const myConstRange = MyRange([5, 6, 7, 8]);
foreach(x; myConstRange) {}

Could this be made work with 2.063?

Mafi
May 30, 2013
On 5/30/13, Andrei Alexandrescu <SeeWebsiteForEmail@erdani.org> wrote:
> This release brings unprecedented progress over the previous ones, owing to a explosive increase in collaboration and a concerted ongoing effort to improve process.

Agreed. And recently we've had an increase in new contributors as well.

Thanks to all for the kind words about the changelog. But don't forget to thank all the contributors which worked hard on fixing those D bugs!
May 30, 2013
On Thursday, May 30, 2013 20:00:24 Mafi wrote:
> What a great release! Great work!
> 
> I really like the new langugage changes. One change caught my attention: #10 "The Template This Parameter now changes the member function qualifier". Does this mean that const/immutable ranges can implement a useful opSlice? Like
> 
> struct MyRange!T {
> T[] data;
> 
> MyRange!(ElementType!data) opSlice(this T)() {
> return MyRange(data);
> }
> }
> 
> So that given the other range primitves this will work:
> 
> const myConstRange = MyRange([5, 6, 7, 8]);
> foreach(x; myConstRange) {}
> 
> Could this be made work with 2.063?

No, because you still have the fundamental problem that MyRange!T and MyRange! (const T) are different types which potentially have no relation to one another aside from the fact that they were generated by the same template. In the general case, you can't just convert MyRange!T to MyRange!(const T). It only works with arrays because the compiler understands them.

- Jonathan M Davis
May 30, 2013
On Thursday, 30 May 2013 at 15:31:36 UTC, F i L wrote:
> Steven Schveighoffer wrote:
>> Holy changelog!  That is awesome.
>>
>> Please send kudos to whoever took the time to create that.
>
> +1, excellent work on that changelog.

This is a really nice changelog. The change and rational section is perfect!
May 30, 2013
On Thursday, 30 May 2013 at 18:09:22 UTC, Jonathan M Davis wrote:
> On Thursday, May 30, 2013 20:00:24 Mafi wrote:
>> What a great release! Great work!
>> 
>> I really like the new langugage changes. One change caught my
>> attention: #10 "The Template This Parameter now changes the
>> member function qualifier". Does this mean that const/immutable
>> ranges can implement a useful opSlice? Like
>> 
>> struct MyRange!T {
>> T[] data;
>> 
>> MyRange!(ElementType!data) opSlice(this T)() {
>> return MyRange(data);
>> }
>> }
>> 
>> So that given the other range primitves this will work:
>> 
>> const myConstRange = MyRange([5, 6, 7, 8]);
>> foreach(x; myConstRange) {}
>> 
>> Could this be made work with 2.063?
>
> No, because you still have the fundamental problem that MyRange!T and MyRange!
> (const T) are different types which potentially have no relation to one another
> aside from the fact that they were generated by the same template. In the
> general case, you can't just convert MyRange!T to MyRange!(const T). It only
> works with arrays because the compiler understands them.
>
> - Jonathan M Davis

Well I'm aware of the fact that MyRange!T and MyRange!const(T) could be unrelated types. But they're not and the author the range provided a conversion function and called it opSlice(). Foreach shouldn't care if they're related or not, it should just call opSlice().
May 30, 2013
On 05/30/2013 08:00 PM, Mafi wrote:
> What a great release! Great work!
>
> I really like the new langugage changes. One change caught my attention:
> #10 "The Template This Parameter now changes the member function
> qualifier". Does this mean that const/immutable ranges can implement a
> useful opSlice?  ...

Yes, const/immutable containers are now able to implement a useful opSlice without manual duplication.