Reference implementation: Difference between revisions

Content deleted Content added
m Reverted 1 edit by 64.134.123.156 identified as test/vandalism using STiki
http://keccak.noekeon.org/Implementation that is on quotes in footnote, is a dead link; what to do about it? And their zip-file link redirected so I fixed that one: ... KeccakReferenceAndOptimized-3.2.zip
Line 1:
In the [[software development process]], a '''reference implementation''' (or, less frequently, ''sample implementation'' or ''model implementation'') is the standard from which all other implementations and corresponding customizations are derived. An improvement to a reference implementation reflects an unchanging [[specification (technical standard)|specification]]. Conversely, a failed attempt at an implementation may prove that the specification is not suitable and needs improvement itself. [[Software testing|Testing]] the implementation-vs.-specification relationship further enhances the [[Product family engineering|production]]'s inter-process efficiencies:
 
{{quote|A reference implementation is, in general, an implementation of a specification to be used as a definitive interpretation for that specification (This definition is a bit grandiloquent but works). During the development of the ... conformance test suite, at least one relatively trusted implementation of each interface is necessary to (1) discover errors or ambiguities in the specification, and (2) validate the correct functioning of the test suite.<ref>Dalci, Eric; Fong, Elizabeth; Goldfine, Alan (2003). ''Requirements for GSC-IS Reference Implementations''. National Institute of Standards and Technology, Information Technology Laboratory. [https://web.archive.org/web/20060928231404/http://xw2k.sdct.itl.nist.gov/smartcard/document/ref-imp51.pdf]</ref>}}
Requirements for GSC-IS Reference Implementations]</ref>}}
 
{{quote|Characteristics of a Reference Implementation:
Line 10 ⟶ 11:
# Helps to clarify the intent of the specification in situations where [[Conformance testing|conformance tests]] are inadequate<ref>Curran, Patrick (2003). ''Conformance Testing: An Industry Perspective''. Sun Microsystems. [https://web.archive.org/web/20120303000051/http://vote.nist.gov/speeches/1%20-%20Specification%20Panel/6%20-%20Curran.pdf]</ref>}}
 
Reference implementations of algorithms, for instance [[cryptographic algorithm]]s, are often the result or the input of [[standardization]] processes. In this function they are often dedicated to the [[public ___domain]] with their [[source code]] as [[public ___domain software]]. Examples are the first [[CERN HTTPd|CERN's httpd]],<ref>[https://web.archive.org/web/20140817185526/http://home.web.cern.ch/topics/birth-web/licensing-web The birth of the web Licensing the web] on cern.ch (2014)</ref> [[Serpent (cipher)|Serpent]] cipher, [[base64]] variants,<ref>[http://libb64.sourceforge.net/ libb64] on sourceforge</ref> and [[SHA-3]].<ref>[https://web.archive.org/web/20170630041850/http://keccak.noekeon.org/KeccakReferenceAndOptimized-3.2.zip KeccakReferenceAndOptimized-3.2.zip] mainReference.c ''"The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche. For more information, feedback or questions, please refer to our website: http://keccak.noekeon.org/Implementation by the designers, hereby denoted as "the implementer". To the extent possible under law, the implementer has waived all copyright and related or neighboring rights to the source code in this file. https://creativecommons.org/publicdomain/zero/1.0/"''</ref> The [[Openwall Project]] maintains a list of several algorithms with their reference [[source code]] in the public ___domain.<ref>[http://openwall.info/wiki/people/solar/software/public-___domain-source-code Source code snippets and frameworks placed in the public ___domain] on [[Openwall Project|openwall.info]]</ref>
 
A reference implementation may or may not be production quality. For example, the [[Fraunhofer Society|Fraunhofer]] reference implementation of the [[MP3]] standard usually does not compare favorably to other common implementations, such as [[LAME]], in listening tests that determine sound quality.{{citation needed|date=January 2012}} In contrast, [[CPython]], the reference implementation of the [[Python programming language]],<ref>{{cite web|last1=Snow|first1=Eric|title=PEP 421 -- Adding sys.implementation|url=<!-- FIXME: captcha is broken. https://www.python.org/dev/peps/pep-0421/#motivation -->|website=Python.org|publisher=Python Software Foundation|accessdate=6 January 2017|date=2012-01-26|quote=For a number of years now, the distinction between Python-the-language and CPython (the reference implementation) has been growing.}}{{cleanup|reason=Please fix URL here. Captcha is broken so I can't add it.|date=January 2017}}</ref>, is also the implementation most widely used in production.
 
==References==