rfc:peclversioning
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
rfc:peclversioning [2008/04/02 10:34] – sfox | rfc:peclversioning [2008/08/18 12:49] – Update - the base proposal was implemented across PECL several months ago, but the core extensions still need addressing. sfox | ||
---|---|---|---|
Line 1: | Line 1: | ||
===== Request for Comments: PECL Versioning ===== | ===== Request for Comments: PECL Versioning ===== | ||
- | * **Version: | + | === History === |
- | * **Date:** 2008-03-21 | + | PECL versioning has historically been fairly anarchic. This made it impossible to determine the status of an extension, or whether an update would break binary compatibility with previous versions (or work with a given PHP release) without a long try-&-fail process. Some of the processes in php.net that currently use hard-coded lists could also benefit from a standardized versioning process. |
- | * **Author:** Steph Fox | + | |
- | * **Status:** Nearing completion | + | |
- | === The Problem === | + | The base proposal was implemented across |
- | Currently, | + | |
- | === A Solution? === | + | There are actually two RFCs (proposals) |
- | I would like to formally propose that all PECL modules: | + | |
- | * **Declare** PHP_EXTNAME_VERSION in php_extname.h | + | * [[rfc: |
- | * **Use** PHP_EXTNAME_VERSION in both the zend_module_entry declaration and PHP_MINFO() (the phpinfo() source) | + | * [[rfc: |
- | * **Tag** the version with -dev at all times except during a package release | + | |
- | * **Use** a recognized versioning structure (so that version_compare() can be useful and users can easily see which version they have). That is, x.x.x(-dev|-alpha|-beta|RC) | + | |
- | * **Utilize** $Revision or $Id as well as the version number in PHP_MINFO() //up to the individual developer// | + | |
- | === Some Facts and Figures === | ||
- | There are currently 214 modules in PECL. Of these: | ||
- | |||
- | * 1 is written in PHP | ||
- | * 3 are SAPIs | ||
- | * 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 | ||
- | |||
- | === Update 22/3/08 === | ||
- | I committed a change to the Windows build script to enable independent versioning for PECL modules in DLL properties. | ||
- | |||
- | === Update 24/3/08 === | ||
- | Following discussion, it was agreed that use of $Id/ | ||
- | |||
- | === Update 25/3/08 === | ||
- | Open items: | ||
- | |||
- | * The problem of PHP version-specific PECL builds | ||
- | * The problem of core module versioning | ||
- | * Labelling core modules as such on the pecl.php.net project homepage | ||
- | * Labelling PECL releases with their target PHP branches on the pecl.php.net project homepage | ||
- | |||
- | === Update 2/4/08 === | ||
- | Most of the modules in PECL now comply fully with the following rules: | ||
- | |||
- | * use x.x.x numbers for versioning | ||
- | * tag the version with ' | ||
- | * declare the macro PHP_EXTNAME_VERSION in php_extname.h | ||
- | * use the macro in zend_module_entry (so phpversion(' | ||
- | * use the macro in PHP_MINFO (so phpinfo() will include module versioning information) | ||
- | * express alpha, beta or RC using the format: 1.0.1a2, 1.0.0RC3, 2.5.3b1 | ||
- | |||
- | The seven ' | ||
- | |||
- | Two modules (maxdb and timezonedb) use a versioning structure based on third-party code that can't sensibly be altered. | ||
- | |||
- | One module (APC) already uses the proposed versioning structure, but declares a non-standard macro in a non-standard header. A handful of other modules (less than a dozen) declare their standard macro in a non-standard file. I'll do what I can to bring all modules fully into line, since a reliable convention potentially allows the declaration to have uses beyond populating Windows DLL properties. | ||
- | |||
- | One standard module (wxWidgets) doesn' | ||
- | |||
- | Obvious CVS errors and any modules containing no code have been deleted from PECL. As a side-effect, | ||
- | |||
- | Hartmut Holzgraefe has updated PECL_Gen to reflect the new versioning requirements. | ||
- | |||
- | === Core modules === | ||
- | 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 by 127.0.0.1