http://wiki.dlang.org/DIP25

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Tue Dec 30 04:14:24 PST 2014


On 12/29/14 8:10 PM, Manu via Digitalmars-d wrote:
> On 30 December 2014 at 07:29, Steven Schveighoffer via Digitalmars-d
> <digitalmars-d at puremagic.com> wrote:
>> On 12/29/14 3:42 PM, Dicebot wrote:
>>
>> I think it wouldn't be a bad idea to investigate a new way to express
>> attributes, but I think no matter what we do, we need to rein in the
>> explosion of attributes that needs to be put on every function.
>
> The approach is to infer everything, right?
> The only time you are required to make it explicit is when it's an
> important detail of your API, and you want to receive compile errors
> when you violate such explicit request.
>

This only works for templates. Unless we devise a new object scheme and 
linker...

But I agree. The problem is, most times, you WANT to ensure your code is 
@safe pure nothrow (and now @nogc), even for template functions. That's 
a lot of baggage to put on each signature. I just helped someone 
recently who wanted to put @nogc on all the std.datetime code, and every 
signature had these 4 attributes except a few. I tried to have him put a 
big @safe: pure: nothrow: @nogc: at the top, but the occasional 
exceptions made this impossible.

It's unfortunate we couldn't start with these being the defaults, and 
then add the occasional @system, @unpure, and @throws where appropriate.

Some mechanism of aliasing attribute combinations is itching to get done :)

-Steve


More information about the Digitalmars-d mailing list