9.8.0 - 2026-10-19
Goals
- Have in minds to reduce vendor dependencies, as much as possible.
- Load extensions/plugins on demand.
- Have User Experience migration as smooth as possible.
Do not hesitate to read the FAQ
and the Migration Guide.
Highlights
-
Parallel Processing: Speed up analysis on large codebases
using the CPU auto-detection offidry/cpu-core-counterpackage
or use the-j,--jobflag. -
The
lintcommand is now modernized and use the Symfony invokable syntax. -
The Console Argument Resolvers introduced with Symfony 8.1
is now available in a compatible format for PHP 8.2 / Symfony 7.4 LTS, and PHP 8.4+ / Symfony 8.1 -
A new Extension Architecture was introduced with five basic extensions/plugins :
CacheManagerto handle all cached results runs (usingsymfony/cachepackage).Read the Cache Manager User Guide
and learn more on architecture, if you want to contribute or adapt behaviors
with the Developer Guide.DiagnoseManagerto output diagnostic information either after running thelintcommand, or just with thediagnosecommand.Read the Diagnose Manager User Guide
and learn more on architecture, if you want to contribute or adapt behaviors
with the Developer Guide.OutputManagerto handle results in different formats:console(default),sarif,checkstyle,junit,json.Read the Output Manager User Guide
and learn more on architecture, if you want to contribute or adapt behaviors
with the Developer Guide.ProfileManagerto output a mini profiler information to identify what resources are consumed by PHPLint.Read the Profile Manager User Guide
and learn more on architecture, if you want to contribute or adapt behaviors
with the Developer Guide.ProgressManagerto handle all progress bars format:auto(default) ,dots,bar,indicator.Read the Progress Manager User Guide
and learn more on architecture, if you want to contribute or adapt behaviors
with the Developer Guide.
Changes since RC-2
- Commit
a81901a: Fixed the project autoloader to be compatible with global_composer_autoload_pathvariable defined by Composer bin proxy - Commit
7dc1d5d: Fixed a PHP error whencache_manageris not loaded andcacheis asked - Commit
6ccc8e0: PHAR distribution do not check anymore the requirement before to run on a platform - Commit
013ec7c: to help PHPLint 9.7 users to migrate easily to new version 9.8 - Commit
7d109f7: restore thecacheoption for a smooth migration for PHPLint 9.7 users - Commit
8a973bc: collect and show all deprecations triggered bysymfony/deprecation-contractspackage - Commit
8ece9ed: FixedPathValueResolverforexcludeparameter that should not be realpath resolved - Commit
05fa0b8: introduces the newVarDumpHelperfor debugging purpose only - Commit
1dc7edf: the logger instance is now inject directly into the Application Class Constructor - Commit
b596c75: default colors skin is moved outside application to be able to initialize them on the new ConsoleLogger class
Changes since RC-3
- Commit
8f9ae8d: The profiler may be enabling with the profile mode (PLINT_MODE=profile) - Commit
cd6325a: The profiler may now be disabled even on legacy mode - Commit
b55f445: Restore theextensionslegacy option for a smooth UX - Commit
fc8ec7d: Raise deprecations when runningphplintwith obsolete options - Commit
59b5b5f: Use semantic rather than pretty string for short version identification - Commit
0b006bb: Use Git tag, if possible, to identify current version - Commit
9ca9b71: Thediagnosecommand is able to print information about the caching feature (usePLINT_DIAGNOSTIC=cache) - Commit
f064b2b: Fixed a regression with caching feature since first RC - Commit
95a4e78: Introduces EventAwareInterface contract and extracted code from AbstractManager (to new EventAwareTrait) - Commit
c90e1a0: Allows to exclude some metadata from a collection
Full Changelog: 9.8.0-rc.3...9.8.0