What requires a DIP?

Quirin Schroll qs.il.paperinik at gmail.com
Sat May 6 16:49:51 UTC 2023


On Friday, 5 May 2023 at 15:10:12 UTC, Steven Schveighoffer wrote:
> On 5/5/23 10:28 AM, Quirin Schroll wrote:
>
>> My sense was that, informally:
>> * Any change that necessitates potentially real-world breakage 
>> needs a DIP.
>
> Not *necessarily*. If this is a bug fix, then it may not need a 
> DIP. Especially if a deprecation can help people migrate their 
> code.

Fixing a bug that people relied on being there is a separate 
discussion.

>> * Mere additions need a DIP if they introduce a new language 
>> feature.
>
> "language feature" is pretty broad. If, for example, you want 
> to add a new property/function that can be used on an 
> associative array, then it might be OK to add without a DIP.

Wouldn’t that be a library feature? I mean, sure, associative 
arrays are specified by the language, but from a programmer 
perspective, they could as well be in Phobos.

By language feature I meant core functionality that the language 
offers. An example would be HTML entities in string literals. D 
supports them, but if it didn’t, suggesting them would constitute 
a (core) language feature.

Allowing attributes on unit tests after the `unittest` keyword 
does not add any functionality, it’s not a (core) language 
feature. (And IMO wouldn’t require a DIP.)

> But these are judgment calls that probably need someone higher 
> up to make.
>
>> * Even small additions need a DIP if they require 
>> justification in terms of cost–benefit ratio, with cost both 
>> in terms of initial implementation and long-term maintenance.
>
> Yeah.... Again, judgment calls from others can help.
>
> What I'd recommend is to propose the change here, see what 
> people say, and then if it's agreed that a DIP is required, 
> start the process. Writing and successfully navigating a DIP 
> through the process isn't trivial, and it sucks to do it and 
> have someone say it wasn't necessary, or that it had no chance 
> of succeeding.

I did: 
https://forum.dlang.org/thread/lxcjsxxamwwtkdpmjhze@forum.dlang.org

In my opinion, it does not require a DIP. It’s basically like the 
`unittest` example.


More information about the Digitalmars-d mailing list