On Friday, 28 July 2017 at 00:32:33 UTC, Mike wrote:
On Thursday, 27 July 2017 at 14:44:23 UTC, Mike Parker wrote:
DIP 1012 is titled "Attributes".

https://github.com/dlang/DIPs/blob/master/DIPs/DIP1012.md

Terminology:
I was confused by the term "attribute group". Although the term is defined in the DIP, it implies a combination of attributes rather than a mutually exclusive attribute category. Still having trouble understanding the DIP in detail due to this.

If you have a better name, please do tell.


Rationale:
The rationale is weak, but reading the "Description" appears that there's more to this DIP than what the rationale describes. I suggest an enumerated list of problem/solution pairs that this DIP addresses.

Good idea.

Description:
It is also possible for the end user to directly control core.attribute.defaultAttributeSet by editing DRuntime directly.

Does this mean we can create an @safe-by-default or @final-by-default runtime? if so, cool!, but that should be spelled out in more detail in the rationale.

Hmm, the runtime may have to be a special case for attribute inference, I suspect that it does a whole bunch of things that are unsafe and the GC itself being @nogc is a bit weird (though I suppose you just link it out anyway). Not to mention global state being impure.

@core.attribute.GarbageCollectedness.inferred
That is way too verbose. Is that just an illustration or is that really what we would need to be typing out?


Illustration, I expect that one will be able to go

@infer!(GarbageCollectedness, FunctionSafety)
or
@infer!(nogc,safe)

to both mean the same thing (or a combination of the above), but infer will be the default anyway I suspect. where `infer` just selects the inferred value of the enum and build an AliasSeq from them

Breaking changes / deprecation process:
It would be nice to get some decision early from the leadership if they would be willing to deprecate the no-leading-@ on attributes that are used with such proliferation in D code, as otherwise there will be a lot of time reviewing and debating this for nothing. Sounds like a risky gamble.

Mike

IIRC the reason they lack a leading @ is purely historical and considered not good but not worth breaking code over. I believe this DIP presents an opportunity and reason to make that change. Existing code will still work i.e. we can deprecate the old form, since both the new and the old are implementation controlled, and make it become a positional keyword or the like.

Reply via email to