Thread overview
DIP 1000--Scoped Pointers--Superseded
Mar 12
Chris M.
March 07
As most of you surely know, DIP 1000, "Scoped Pointers", has been sitting in the DIP queue with the Draft status for ages and was significantly out of sync with the implementation. When I first took over as DIP Manager, the initial plan was to rewrite the DIP to match the implementation once the implementation had stabilized.

I asked Walter about it recently and he agreed that, at this point, the "Superseded" status would be appropriate for this DIP. It was introduced when an implementation of DIP 1006 was implemented that differed from the proposal. The circumstances for DIP 1000 are similar, though perhaps more extreme.

So DIP 1000 is now branded "Superseded".

https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md
March 07
On Thursday, 7 March 2019 at 11:30:01 UTC, Mike Parker wrote:
> As most of you surely know, DIP 1000, "Scoped Pointers", has been sitting in the DIP queue with the Draft status for ages and was significantly out of sync with the implementation. When I first took over as DIP Manager, the initial plan was to rewrite the DIP to match the implementation once the implementation had stabilized.
>
> I asked Walter about it recently and he agreed that, at this point, the "Superseded" status would be appropriate for this DIP. It was introduced when an implementation of DIP 1006 was implemented that differed from the proposal. The circumstances for DIP 1000 are similar, though perhaps more extreme.
>
> So DIP 1000 is now branded "Superseded".
>
> https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md

What is it superseded by?  Is there another DIP that supersedes the concept or implementation?
March 07
On Thursday, 7 March 2019 at 13:08:34 UTC, Vijay Nayar wrote:

>
> What is it superseded by?  Is there another DIP that supersedes the concept or implementation?

The implementation supersedes the DIP.
March 11
On Thursday, 7 March 2019 at 14:24:29 UTC, Mike Parker wrote:
> The implementation supersedes the DIP.

I think the question a lot of people have in mind is "Is there any plan to formally organize a discussion about the future of scoped pointers?"

More specifically, are you planning a new DIP discussing the semantics of scope and return scope, ideally one that would take into account previous feedback, address concerns that DIP-1000 had originally inspired, and include an analysis of the pros and cons of -dip1000's implementation, as reported by its current users?

Less formally, what I mean is that a lot of people had concerns at the time DIP-1000 was discussed; many of these concerns (including mine) weren't really addressed, and Walter's reaction gave the impression that he didn't understand them, and as a result, considered them unimportant, which led to a lot of frustration (including, if I remember correctly, Dicebot stepping down as DIP manager) and a general break in communication between Walter and the community.

So, considering how important scoped pointers are to the language (betterC, webasm, video games, C++ interop, competing with Rust), I think (and I realize this is a lot to ask) that this is an area where Walter needs to bite the bullet and make a sustained effort to interact with the community and address DIP-1000's problems, whether by starting another DIP or through some other mean.

If nothing else, we should probably have a "Who here uses -dip1000, and does it work for you?" thread.
March 12
On Monday, 11 March 2019 at 22:57:33 UTC, Olivier FAURE wrote:
> On Thursday, 7 March 2019 at 14:24:29 UTC, Mike Parker wrote:
>> The implementation supersedes the DIP.
>
> I think the question a lot of people have in mind is "Is there any plan to formally organize a discussion about the future of scoped pointers?"
>
> More specifically, are you planning a new DIP discussing the semantics of scope and return scope, ideally one that would take into account previous feedback, address concerns that DIP-1000 had originally inspired, and include an analysis of the pros and cons of -dip1000's implementation, as reported by its current users?
>
> Less formally, what I mean is that a lot of people had concerns at the time DIP-1000 was discussed; many of these concerns (including mine) weren't really addressed, and Walter's reaction gave the impression that he didn't understand them, and as a result, considered them unimportant, which led to a lot of frustration (including, if I remember correctly, Dicebot stepping down as DIP manager) and a general break in communication between Walter and the community.
>
> So, considering how important scoped pointers are to the language (betterC, webasm, video games, C++ interop, competing with Rust), I think (and I realize this is a lot to ask) that this is an area where Walter needs to bite the bullet and make a sustained effort to interact with the community and address DIP-1000's problems, whether by starting another DIP or through some other mean.
>
> If nothing else, we should probably have a "Who here uses -dip1000, and does it work for you?" thread.

There will be a section of the Dlang foundation meeting at Dconf about this. I'm not very happy about the state of documentation and specification of DIP1000 and even less happy about the way it has been handled, both initially and the subsequent updates.

Anyway there will be plenty of high bandwidth time to discuss this then.
March 12
On Thursday, 7 March 2019 at 11:30:01 UTC, Mike Parker wrote:
> As most of you surely know, DIP 1000, "Scoped Pointers", has been sitting in the DIP queue with the Draft status for ages and was significantly out of sync with the implementation. When I first took over as DIP Manager, the initial plan was to rewrite the DIP to match the implementation once the implementation had stabilized.
>
> I asked Walter about it recently and he agreed that, at this point, the "Superseded" status would be appropriate for this DIP. It was introduced when an implementation of DIP 1006 was implemented that differed from the proposal. The circumstances for DIP 1000 are similar, though perhaps more extreme.
>
> So DIP 1000 is now branded "Superseded".
>
> https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md

Is the implementation documented anywhere?
March 12
On Tuesday, 12 March 2019 at 17:48:20 UTC, Chris M. wrote:
> On Thursday, 7 March 2019 at 11:30:01 UTC, Mike Parker wrote:
>> As most of you surely know, DIP 1000, "Scoped Pointers", has been sitting in the DIP queue with the Draft status for ages and was significantly out of sync with the implementation. When I first took over as DIP Manager, the initial plan was to rewrite the DIP to match the implementation once the implementation had stabilized.
>>
>> I asked Walter about it recently and he agreed that, at this point, the "Superseded" status would be appropriate for this DIP. It was introduced when an implementation of DIP 1006 was implemented that differed from the proposal. The circumstances for DIP 1000 are similar, though perhaps more extreme.
>>
>> So DIP 1000 is now branded "Superseded".
>>
>> https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md
>
> Is the implementation documented anywhere?

Sort of. The semantics of the `scope` and `return` attributes (no, they're not transitive type-qualifiers/constructors) are documented here:

* https://dlang.org/spec/function.html#return-ref-parameters
* https://dlang.org/spec/function.html#return-scope-parameters
* https://dlang.org/spec/function.html#ref-return-scope-parameters

Full checking is performed only for @safe functions, when compiled with -preview=dip1000.