[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:
https://github.com/dlang/dmd/pull/5880
- 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
raised.
Basically:
- 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