VERSIONING.md
This document outlines the formal policy for versioning, deprecations, and backward compatibility (BC) for phpseclib.
phpseclib adheres to RomVer (Project.Major.Minor). Version increments are defined as follows:
To provide stability for enterprise users, all MAJOR releases are treated as Long-Term Support (LTS) branches.
README.md and on the official website at least one year (12 months) in advance.To ensure stability for enterprise integrations and mission-critical applications:
^3.0) without risk of API breakage.phpseclib does not use traditional E_USER_DEPRECATED notices for most changes to avoid disrupting production environments. Instead, a "Version-Targeted" communication strategy is used in the source code documentation.
Rather than generic deprecation warnings, phpseclib utilizes specific PHPDoc tags to signal future state:
@removed in phpseclib [version]: Indicates that the specific method, class, or property is stable in the current version but will be removed entirely in the specified future version.@changed in phpseclib [version]: Indicates that the API signature (e.g., parameter order or type-hinting) will be altered in the specified version.Any feature marked with @removed or @changed is guaranteed to remain functional in its current state for the remainder of the current Project/Major version's lifecycle. These tags serve as a long-term roadmap for developers, providing the necessary time to plan migrations without immediate pressure.
For Project-level transitions (e.g., v3.0 to v4.0), phpseclib commits to providing: