rfc:peclversioning
Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
rfc:peclversioning [2008/04/02 15:51] sfox old revision restored |
rfc:peclversioning [2008/04/02 16:30] sfox |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Request for Comments: PECL Versioning ===== | ===== Request for Comments: PECL Versioning ===== | ||
- | * **Author:** Steph Fox, Pierre A. Joye | ||
- | * **Status:** Work in progress | ||
=== The Problem === | === The Problem === | ||
Currently, PECL versioning is fairly anarchic. It is impossible to determine the status of an extension, or whether an update will break binary compatibility with previous versions (or work with a given PHP release) without a long try-& | Currently, PECL versioning is fairly anarchic. It is impossible to determine the status of an extension, or whether an update will break binary compatibility with previous versions (or work with a given PHP release) without a long try-& | ||
- | === Some Facts and Figures === | + | There is actually two RFCs (proposals) to deal with version number |
- | There are currently 214 modules | + | |
- | * 1 is written in PHP | + | * [[peclversioning/ |
- | * 3 are SAPIs | + | * [[peclversioning/ |
- | * 2 are no longer hosted in PECL (and should be deleted) | + | |
- | * 1 doesn' | + | |
- | * 1 doesn' | + | |
- | * 1 was a CVS error (and should be deleted) | + | |
- | * 1 is the timezone library for ext/date, and probably has non-standard versioning requirements | + | |
- | Of the remaining 204: | ||
- | |||
- | * 13 already use PHP_EXTNAME_VERSION declared in php_extname.h, | ||
- | * 25 already declare and use a versioning macro in php_extname.h, | ||
- | * 27 already declare and use a versioning macro somewhere in the source | ||
- | * 3 do the whole thing in reverse and use the release version from package.xml | ||
- | * 136 either hard-code the version, use $Id alone, use $Revision alone or ignore the whole thing | ||
- | |||
- | === Requirements === | ||
- | |||
- | Each PECL package should adhere to the following requirements: | ||
- | |||
- | * Declare PHP_EXTNAME_VERSION in php_extname.h | ||
- | * Use PHP_EXTNAME_VERSION in the zend_module_entry declaration (for phpversion()) | ||
- | * Use PHP_EXTNAME_VERSION in PHP_MINFO() (the phpinfo() source) | ||
- | * The " | ||
- | * Use a recognized versioning structure (so that version_compare() can be useful and users can easily see which version they have). See [[|Version naming]]. | ||
- | |||
- | === Optional Extras === | ||
- | |||
- | The cvs $Revision$ or $Id$ placeholder may be used in PHP_MINFO(), | ||
- | |||
- | === Version Naming === | ||
- | |||
- | There are two kind of packages in PECL: normal PHP extensions providing a set of APIs (e.g. http, enchant, fileinfo) and those providing only data (e.g. timezonedb). Normal extensions should use the standard version number defined below. Data packages should use the versioning offered by the underlying package: | ||
- | |||
- | * Standard version: 2.2.11 | ||
- | * timezonedb version: 2008.2 (for February 2008) | ||
- | |||
- | The vast majority of PECL packages fall into the ' | ||
- | |||
- | * A version string **must** include a major, a minor and a patch level number (x.x.x) | ||
- | * The status of the package may be described using ' | ||
- | * //Note that the PEAR installer cannot recognize hyphens in a package version string// | ||
- | * In package.xml, | ||
- | |||
- | If you need further guidance, please refer to the extensive PEAR version naming rules at [[http:// | ||
- | |||
- | === Core Modules in PECL === | ||
- | Johannes Schlueter - as Release Master of the PHP 5.3 series - made it known early in the proceedings that he has concerns over -dev, alpha or beta tags appearing in PHP core module versions. There' | ||
- | |||
- | The idea of using the tag ' | ||
- | |||
- | **// | ||
- | |||
- | === Please comment on the pecl-dev mailing list === |
rfc/peclversioning.txt · Last modified: 2017/09/22 13:28 (external edit)