Mark Shannon writes:

 > Calling something a "reference" implementation suggests that it is 
 > something that people can refer to, that is near perfectly correct and 
 > fills in the gaps in the specification.

Shoe fits, doesn't it?  Both Guido and Brandt to my recall have
specifically considered the possibility that the implementation is the
better design, and therefore that the PEP should be changed.

 > That is a high standard, and one that is very difficult to attain.

That depends on context, doesn't it?  In the case of a public release,
yes, it's a very high standard.  In the context of a feature in
development, it *cannot* be that high, because even when the spec and
the implementation are in *perfect* agreement, both may be changed in
the light of experience or a change in requirements.

Furthermore, in this instance, the implementation achieves *your*
standard (Brandt, again):

 > > both authors have agreed that it needs to be fixed in the PEP,
 > > not the implementation

You added:

 > It is why I use the term "implementation", and not "reference 
 > implementation" in my PEPs.

A reasonable usage.

I think my more flexible, context-dependent definition is more useful.
Unmodified, the word "implementation" covers everything from
unrunnable pseudo-code to the high standard of a public release that
is officially denoted "reference implementation".

On the other hand, when Brandt says that a merge request is a
"reference implementation", I interpret that to be a claim that, to
his knowledge the MR is a perfect implementation of the specification,
and an invitation to criticize the specification by referring to that
implementation.  That's a strong claim, even in my interpretation.
However, I think that if the developer dares to make it, it's very
useful to reviewers.

As it was in this case.

Final note: once this is merged and publicly released, it will lose
its status as reference implementation in the above, strong sense.
Any deviations from documented spec (the Language Reference) will be
presumed to have to be fixed in the implementation (with due
consideration for backward compatibility).  "Although practicality
beats purity," of course, but treating the Language Reference as
authoritative is strongly preferred to keeping the implementation and
modifying the Reference (at least as I understand it).

Regards,
Steve

_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/AOM3ZPO4U263T2ZYGDOLFWIDOO2QSKZB/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to