[dmd-internals] Implementation change without matching spec change

Mathias Lang via dmd-internals dmd-internals at puremagic.com
Thu Jun 23 16:55:55 PDT 2016

Hi everyone,
A problem that recently became obviously painful to me is that too many 
P.R. goes in in DMD without the matching dlang.org specs change.

I'll give some examples:

- The changes to protection attributes (visibility attributes).
   It was a major change to the language, one that was wanted for a long 
time, and it was
   done quite gracefully except that it wasn't documented at all.
   So anyone looking at 
https://dlang.org/spec/attribute.html#ProtectionAttribute will see 
completely outdated informations, including "Protection does not 
participate in name lookup." (gasp!).
   An issue was raised ( https://issues.dlang.org/show_bug.cgi?id=16004 
) and a P.R. ( https://github.com/dlang/dlang.org/pull/1325 ) which 
haven't been merged yet. The changes have been in for 3,5 months and 
released since 2.5 months.

- extern(C++, {class,struct}) : https://github.com/dlang/dmd/pull/5875 
is not documented.
   The same happened for most of the C++ enhancements, and the 
documentation only recently caught up with the implementation.

- version (PlayStation) & PlayStation4 
(https://github.com/dlang/dmd/pull/5850) are not documented as reserved

- All the `@safe` improvements are going in without any documentation 
change, and Walter said he's going to review @safe specs ( 
https://github.com/dlang/dmd/pull/5876#issuecomment-226985430 ), however 
stuff like this are easily forgotten, especially when there is no 
deadline and it is assigned to someone as busy as Walter.

- (Not yet merged) align(n) with CT-known constant: 

- Last but not least: https://github.com/dlang/dlang.org/pull/1040

It seems pretty clear that we currently have a flakey process regarding 
spec changes, one that doesn't scale and rely on the core contributors 
knowing "what to do".

Hence, I would suggest we start enforcing that every change that require 
a spec change must not be merged before a corresponding spec change is 

- Raise dlang.org P.R. and mark as being `[Pending]`
- Raise DMD P.R. and link to said dlang.org P.R.
- DMD P.R. is reviewed / merged
- dlang.org P.R. can then be unblocked and be reviewed

Thoughts ?

More information about the dmd-internals mailing list