Releases: Roave/BackwardCompatibilityCheck
4.0.0
This release excludes @internal
marked symbols from BC checks.
Dependencies have been updated, and testing/static-analysis have been hugely improved.
Complex types such as @var Foo<T1, T2>
also no longer cause the tool to crash during inspection.
Total issues resolved: 20
- 51: Allow filtering classes, interfaces, traits, methods, functions, properties and constants annotated via
@api
and@internal
thanks to @Ocramius - 122: Chore: dependency upgrades, mutation testing, strict type checking in the test suite thanks to @Ocramius
- 123: Bump phpunit/phpunit from 7.5.9 to 8.1.5 thanks to @dependabot-preview[bot]
- 124: Bump infection/infection from 0.9.3 to 0.13.1 thanks to @dependabot-preview[bot]
- 125: Bump symfony/process from 4.2.7 to 4.2.8 thanks to @dependabot-preview[bot]
- 126: Bump symfony/console from 4.2.7 to 4.2.8 thanks to @dependabot-preview[bot]
- 127: Bump doctrine/coding-standard from 5.0.1 to 6.0.0 thanks to @dependabot-preview[bot]
- 128: Bump phpunit/phpunit from 8.1.5 to 8.1.6 thanks to @dependabot-preview[bot]
- 129: Bump vimeo/psalm from 2.0.17 to 3.3.2 thanks to @dependabot-preview[bot]
- 130: Bump symfony/console from 4.2.8 to 4.3.0 thanks to @dependabot-preview[bot]
- 131: Bump beberlei/assert from 3.2.0 to 3.2.1 thanks to @dependabot-preview[bot]
- 132: Bump phpstan/phpstan from 0.11.5 to 0.11.8 thanks to @dependabot-preview[bot]
- 135: Use
VersionsCollection::first()
insteaditerator_to_array()[0]
thanks to @andrew-demb - 136: Bump vimeo/psalm from 3.4.2 to 3.4.7 thanks to @dependabot-preview[bot]
- 137: Bump symfony/process from 4.3.1 to 4.3.2 thanks to @dependabot-preview[bot]
- 138: Bump thecodingmachine/safe from 0.1.15 to 0.1.16 thanks to @dependabot-preview[bot]
- 139: Bump phpunit/phpunit from 8.2.1 to 8.2.3 thanks to @dependabot-preview[bot]
- 140: Bump symfony/console from 4.3.1 to 4.3.2 thanks to @dependabot-preview[bot]
- 141: Support skipping BC checks for
@internal
symbols thanks to @Ocramius - 142: #134 suppress exceptions in parsing
Fqsen
expressions for documented property types thanks to @Ocramius
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
Changes
instance 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
DirectoriesSourceLocator
is 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
PickLastMinorVersionFromCollection
thanks 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-path
CLI 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-project
orgit clone
+composer install
thanks 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
--from
will now lead to--from
to default to the lowest latest minor release - specifying
--from
is 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
from
version (use default last tag) thanks to @asgrim - 26: Run the
bin/api-compare
script in the CI build thanks to @asgrim - 27: Feature: #4 - BC check on removed properties thanks to @Ocramius
- 28: Define an interface for
Comparator
thanks 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
final
in combination withprotected
to 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-advisories
torequire-dev
thanks 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-check
thanks to @Ocramius - 53: Build fails on
master
because 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