Hi! > Based on our recent discussion on #pecl , I'd like we clarify what we > think is a "BCB" (Backward Compatibility Break) as well as what "only > minor BC breaks" could mean. > Stas' recent topic on internals "On BC and interfaces" may serve as a > reflection basis. > As our release process told us that we should not add BCB (but only > "minor" ones ... hum) in any minor release (nor revision), and as 5.5 > release process is going to start soon, I'd like we try to all agree > on that point.
I think first we have to distinguish several levels of BC: 1. Binary BC 2. Source-level extension BC 3. PHP Code (API) BC Binary BC means that extension compiled with one version would work with another without recompilation. We keep this level of compatibility through all minor (5.x) releases and breaking it is an absolute no-no. However, between minors (5.5 -> 5.5) breaking it is fine. Source-level extension BC means that an extension may be successfully compiled and working in two versions. We strive to keep it between minors, though if absolutely necessary for implementing new stuff we may occasionally break it. But this has to be kept to absolute minimum and only done if there's absolutely no way to avoid it - e.g., if we refactoring the engine to use more efficient way to generate opcodes and we need to change zend_op_array structure, some extensions that use it may be broken. PHP Code BC means that a PHP script that works in one version also works in another version. We should keep this level of BC across all major version, and breaking it between minor versions is not acceptable. Only exceptions may be: introduction of new keywords (may break code that uses the same identifier), security fixes (if we have to introduce more secure way of doing something, application using insecure practices may be broken), bug fixes (if application relied on a buggy behavior of PHP to work, it may be broken), removal of already deprecated features. Adding new functions usually not considered BC break, though technically it may break code that used the same function name. -- Stanislav Malyshev, Software Architect SugarCRM: http://www.sugarcrm.com/ (408)454-6900 ext. 227 -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php