February 11, 2014
On Tuesday, 11 February 2014 at 17:09:39 UTC, Stanislav Blinov wrote:

> ref auto assumeLocal(T)(ref T v) if (is(T == shared))
> {
>     // Cast via pointer to preserve lvalue
>     return *cast(HeadUnshared!T*)&v;
> }

Well, maybe not HeadUnshared!T but some other template that removes shared qualifier.
February 11, 2014
On Tuesday, 11 February 2014 at 17:09:39 UTC, Stanislav Blinov
wrote:
>
> Maybe an additional function like this could be helpful:
>
> --8<--
>
> HeadUnshared!T localOp(string op,T,V)(T what, V mod) if (is(T == shared))
> { ... }
>
> -->8--
>
> Or even something like this:
>
> --8<--
>
> ref auto assumeLocal(T)(ref T v) if (is(T == shared))
> {
>     // Cast via pointer to preserve lvalue
>     return *cast(HeadUnshared!T*)&v;
> }
>
> -->8--
>
> With which we can perform this:
>
> --8<--
>
> --assumeLocal(m_numWaitersBlocked);
>
> -->8--
>
> What do you think?

I think it's a good idea.  Please file bugzilla requests for this
and the final method issue :-)

Regarding making Mutex methods final, this may require some care
because existing projects might rely on them being virtual.  I'm
pretty sure vibe.d, for example, overrides Condition as well.  I
don't know what the best process is for changing these to final
in terms of breaking code.
February 11, 2014
On Tuesday, 11 February 2014 at 21:08:24 UTC, Sean Kelly wrote:
> On Tuesday, 11 February 2014 at 17:09:39 UTC, Stanislav Blinov
> wrote:

>> What do you think?
>
> I think it's a good idea.  Please file bugzilla requests for this
> and the final method issue :-)

Will do.

> Regarding making Mutex methods final, this may require some care
> because existing projects might rely on them being virtual.  I'm
> pretty sure vibe.d, for example, overrides Condition as well.  I
> don't know what the best process is for changing these to final
> in terms of breaking code.

Heh. Yeah, I've just browsed through vibe.d code... such breakage would look pretty gruesome. Maybe it's not such a good idea after all. But I'll open the enhancement request anyway, if only to have a centralized place to gather all pros and cons on this specific issue.
February 12, 2014
Here's an ER for those functions: http://forum.dlang.org/thread/bug-12133-3@https.d.puremagic.com%2Fissues%2F

I guess in regards to final there will be room to maneuver anyway: http://forum.dlang.org/thread/bug-11616-3@https.d.puremagic.com%2Fissues%2F

:)
February 15, 2014
On Saturday, 8 February 2014 at 16:46:47 UTC, Andrei Alexandrescu wrote:
> We should add finalizing shared to our H1 goals.
>
> Andrei

Not sure what an H1 goal is, but please put this on the Agenda, so that we can reserve time for it. http://wiki.dlang.org/Agenda
February 15, 2014
On Saturday, 8 February 2014 at 13:59:59 UTC, Stanislav Blinov wrote:

> I've created a branch here:
>
> https://github.com/radcapricorn/druntime/tree/shared_sync_primitives

I've committed a considerable update. Still haven't tested on anything but Linux though, so if anyone is able to pull that branch and run druntime tests, I'd be obliged.

Criticism, suggestions and improvements are also welcome :)
February 15, 2014
On 2/15/14, 12:27 AM, Martin Nowak wrote:
> On Saturday, 8 February 2014 at 16:46:47 UTC, Andrei Alexandrescu wrote:
>> We should add finalizing shared to our H1 goals.
>>
>> Andrei
>
> Not sure what an H1 goal is, but please put this on the Agenda, so that
> we can reserve time for it. http://wiki.dlang.org/Agenda

I meant first half of the year. I don't think it fits the Agenda, which is release-focused.

Andrei

February 15, 2014
On Saturday, 15 February 2014 at 14:55:44 UTC, Andrei
Alexandrescu wrote:
> I don't think it fits the Agenda, which is release-focused.

So we're talking about a DIP here?
February 15, 2014
On 2/15/14, 7:54 AM, Martin Nowak wrote:
> On Saturday, 15 February 2014 at 14:55:44 UTC, Andrei
> Alexandrescu wrote:
>> I don't think it fits the Agenda, which is release-focused.
>
> So we're talking about a DIP here?

Not a DIP, it's more like a direction/focus thing. In my opinion we must focus this year on:

* Less garbage

* Address null pointers at language level

* Finish the language, in particular shared & comp

* Do something about this(this) that is less complicated than the Space Shuttle

* And of course quality, quality, quality



Andrei

February 15, 2014
On 2/15/14, 12:07 PM, Andrei Alexandrescu wrote:
> On 2/15/14, 7:54 AM, Martin Nowak wrote:
>> On Saturday, 15 February 2014 at 14:55:44 UTC, Andrei
>> Alexandrescu wrote:
>>> I don't think it fits the Agenda, which is release-focused.
>>
>> So we're talking about a DIP here?
>
> Not a DIP, it's more like a direction/focus thing. In my opinion we must
> focus this year on:
>
> * Less garbage
>
> * Address null pointers at language level
>
> * Finish the language, in particular shared & comp
>
> * Do something about this(this) that is less complicated than the Space
> Shuttle
>
> * And of course quality, quality, quality

Slipped my mind:

* Finalize portable shared lib support on Unixen, OSX, and Windows


Andrei