Releases: Roave/BackwardCompatibilityCheck
3.0.0
This release improves the architecture for scanning of source and dependency files,
leading to a 100x speed improvement when dealing with larger codebases, such as
doctrine/orm or doctrine/dbal.
A new backwards incompatibility check was also introduced (and enabled by default),
inspecting whether an ancestor of a symbol was introduced or removed.
Total issues resolved: 8
- 97: Allow specifying different source locations across separate versions of a library thanks to @Majkl578
- 106: Are removal of parent classes/interfaces to be considered BC breaks? thanks to @Nyholm
- 108: Moved all BC compliance and
Changesinstance to internally use generators for better "on the fly" results thanks to @Ocramius - 109: Added BC checkers to verify that no ancestors of a class or interface were removed thanks to @Ocramius
- 110: Looking for classes in a
DirectoriesSourceLocatoris extremely slow, since all AST symbols are traversed to look for existing classes thanks to @Ocramius - 119: Running out of memory thanks to @nschoellhorn
- 120: Usage of roave/better-reflection composer source-locators for major performance improvements thanks to @Ocramius
- 121: Update to doctrine/cs v5 thanks to @carusogabriel
2.1.0
This release fixes an issue with pre-releases (alpha/beta/rc) being considered for
stability checks, and introduces documentation for the github actions provided by @Nyholm.
Total issues resolved: 4
- 114: Undefined offset: 0 in ... PickLastMinorVersionFromCollection thanks to @schmunk42
- 116: Added docs how to use Github actions and docker thanks to @Nyholm
- 117: #114 "Undefined offset: 0" error in
PickLastMinorVersionFromCollectionthanks to @schmunk42 - 118: #114 skip pre-release versions when picking the last minor release thanks to @Ocramius
2.0.0
This new major release due to some backwards-incompatible changes
in some signatures and parameters of the CLI tooling. This release:
- introduces auto-discovery of source directory based on your project's
composer.json - removes the
sources-pathCLI argument - changes the constructor signature of
Roave\BackwardCompatibility\Command\AssertBackwardsCompatible - deprecates
Roave\BackwardCompatibility\Factory\DirectoryReflectorFactory
This is the full list of statically detected BC breaks:
[BC] CHANGED: The parameter $reflectorFactory of Roave\BackwardCompatibility\Command\AssertBackwardsCompatible#__construct() changed from Roave\BackwardCompatibility\Factory\DirectoryReflectorFactory to a non-contravariant Roave\BackwardCompatibility\Factory\ComposerInstallationReflectorFactory
Total issues resolved: 2
1.1.1
This release fixes an issue in which removed classes were not detected as such, but rather detected as
classes that were changed to interfaces due to internall fallback symbol stubbing mechanisms.
Total issues resolved: 3
1.1.0
This release improves the reliability of the library by marking crashes as "SKIPPED"
BC checks. Skipped checks still count as backwards-incompatible changes for now, so
the tool will exit with a non-zero status code in case a crash occurred.
Starting from this release, a PHAR distribution of the package will be available for
each new release under https://github.com/Roave/BackwardCompatibilityCheck/releases.
We also improved the autoloading of the library, with the clear pre-condition that it
must either be installed via composer require or as an application via composer create-project
or git clone + `composer install.
The test automation has also been hardened by introducing both PSALM
and PHPStan static analysis checks.
Total issues resolved: 9
- 23: Automate generation of PHAR on releases thanks to @asgrim
- 69: re-enable phpstan thanks to @bendavies
- 85: Add
Throwable-safe wrappers around allRoave\BackwardCompatibility\DetectChanges\BCBreak\*classes that may crash during reflection operations thanks to @Ocramius - 86: Build PHAR using BOX and use Travis to publish PHAR releases thanks to @Majkl578
- 89: Add infection back to the build thanks to @BackEndTea
- 91: fix: detect the auto-loader of the project you're installed in thanks to @dkarlovi
- 92: #85 fail-safe wrapper around BC compliance checks that access risky/throw-happy reflection API thanks to @Ocramius
- 94: Remove CWD usage from autoload discovery paths, limit supported installations to
composer require,composer create-projectorgit clone+composer installthanks to @Ocramius - 95: #69 re-introduced PHPStan static analysis thanks to @Ocramius
1.0.3
This release fixes a few mistakes in the handling of --from. Specifically:
- omitting
--fromwill now lead to--fromto default to the lowest latest minor release - specifying
--fromis now permitted again (bug introduced in1.0.2)
Total issues resolved: 1
1.0.2
This release fixes the omission of the --from flag in the CLI interface,
which was defaulting to the incorrect '' (empty string).
Also, classes that were previously not found are now stubbed out as
interfaces without inheritance nor methods, which allows scanning for
BC breaks in packages with optional dependencies.
Total issues resolved: 5
- 66: fix when no from option is given thanks to @bendavies
- 67:
Roave\BetterReflection\Reflection\ReflectionClass"XXX" could not be found in the located source thanks to @bendavies - 72: Git error when running without --from option thanks to @ciaranmcnulty
- 73: Check that from is actually provided thanks to @ciaranmcnulty
- 74: #67 stub out dependencies that cannot be located by using empty classes thanks to @Ocramius
1.0.1
This release fixes an autoloading issue when the project is required as a
composer dependency rather than being installed standalone.
Total issues resolved: 3
1.0.0
This is the first public release of roave/backward-compatibility-check.
From this release on, this library follows strict semantic versioning, with
each release that introduces a new backwards compatibility break (BC)
being a new major version.
Total issues resolved: 40
- 1: Initial basic implementation thanks to @asgrim
- 4: Identify removed public / protected properties thanks to @asgrim
- 5: Identify reduced visibility of properties thanks to @asgrim
- 6: Identify reduced visibility of methods thanks to @asgrim
- 13: Discuss usage and public API for tool thanks to @asgrim
- 14: Detect making a class final thanks to @asgrim
- 15: Run api-compare via CLI thanks to @asgrim
- 16: Colourise Symfony\Console text output thanks to @asgrim
- 17: Brainstorm reasonable ways to determine "src" path to examine thanks to @asgrim
- 24: Re-naming the package...? thanks to @asgrim
- 25: Feature: auto-detect
fromversion (use default last tag) thanks to @asgrim - 26: Run the
bin/api-comparescript in the CI build thanks to @asgrim - 27: Feature: #4 - BC check on removed properties thanks to @Ocramius
- 28: Define an interface for
Comparatorthanks to @asgrim - 29: Return 2 from CLI tool when changes are detected thanks to @asgrim
- 30: #5 #6 detected property/method visibility/existence change thanks to @Ocramius
- 31: Consider
finalin combination withprotectedto exclude some code analysis scenarios thanks to @Ocramius - 33: Constant removal, visibility reduction and value change detection thanks to @Ocramius
- 34: #33 corrected variable name as per @akrabat's review thanks to @Ocramius
- 35: Added a basic Markdown output formatter - and some basic docs thanks to @asgrim
- 36: Add phpcs and phpstan thanks to @asgrim
- 38: Verify method, function, property, constant and interface changes and report BC breaks thanks to @Ocramius
- 41: identify changes to references on methods/parameters thanks to @Majkl578
- 42: Comparison is not just restricted to the source directory thanks to @Ocramius
- 43: Design trait change BC detectors thanks to @Ocramius
- 47: Move
roave/security-advisoriestorequire-devthanks to @Ocramius - 48: #42 Discover and load dependencies via composer only after having discovered all source symbols thanks to @Ocramius
- 49: Memoize reflected symbols, allow getting dependencies even if
"autoload": {"files": [...\}is not used, correct composer usage thanks to @Ocramius - 50: #24 rename package to
roave/backward-compatibility-checkthanks to @Ocramius - 53: Build fails on
masterbecause from/to revisions are the same thanks to @asgrim - 54: Create CompareApi interface thanks to @ntzm
- 55: Add facilities to filter out anonymous classes and anonymous functions when analyzing BC breaks thanks to @Ocramius
- 56: Handle invalid version strings gracefully thanks to @ntzm
- 57: Avoid yearly updates on LICENSE thanks to @nunomaduro
- 58: Add uniqueness to GitCheckoutRevisionToTemporaryPath to avoid collisions when checking out the same revision from/to thanks to @asgrim
- 60: Filter out anonymous classes thanks to @asgrim
- 61: Bump nikolaposa/version version thanks to @ntzm
- 62: Upgrade to latest BetterReflection version thanks to @Ocramius
- 63: Skip anon classes in "defined API" thanks to @asgrim
- 64: Skip anonymous classes in defined API thanks to @asgrim