utility

Backward Compatibility (BC) Promise

I try to develop my libraries to be as backward compatible (BC) as possible. This file describes my backward compatibility promise, along with:

Further restrictions (and/or allowances) might be added in the future.

Document Information  
Effective Date 04/22/2024
Last Updated 02/08/2026
Version 2.0.0

PHP Version Support

Semantic Versioning

This project follows Semantic Versioning (<major>.<minor>.<patch>). In general, this means that the version number is incremented based on the type of changes made:

Major Version Changes (BC breaks)

Minor Version Changes (allowed)

Patch Version Changes (allowed)

Public API Stability

Exception Handling

Experimental Features

Features marked as @experimental are not covered by the BC promise and may:

Usage of experimental features should be considered unstable and not suitable for production environments.

Exceptions to BC Promise

There are some exceptions to the backward compatible promise:

Security Fixes and Critical Bug Fixes

Internal Code

Unreleased Code

Named Arguments

Testing Requirements

Deprecations

Composer Dependencies

Changelogs

Version Control

Tags

Branches

Branches are private implementation details. For example:

Branch Support Timeline

Example scenario with version 3.0.0 as latest release:

Updates

I will keep the backward compatibility promise updated as this project evolves and new use cases emerge. The last updated date and version of this document under Document Information at the beginning of this file will be updated if any changes are made.

Acknowledgements

This backward compatibility promise was highly inspired by, and borrows from, the BC promises of: