This release supports PHP 8 and its new features.
It bumps the minimum requirement to PHP 7.3.
It includes better unused variable detection.
It includes these breaking changes for v4:
User-facing
- remove issues
MisplacedRequiredParam,TypeCoercion,MixedTypeCoercion - remove support for
@template-typeof - default to not disabling checks with
UnresolvableInclude(#2818) - Remove
requireVoidReturnType,useAssertForTypeconfig flags, both now permanently true - Change default on
resolveFromConfigFileto"true". This means if your Psalm config is not in the same directory that you run Psalm from, and you want to keep all the paths correct, you'll need to addresolveFromConfigFile="false"to maintain existing path resolution
Internals (for plugin developers)
- class constants should live in their own storage object
- rename
TFntoTClosure,ObjectLiketoTKeyedArray,GetClassTtoTDependentGetClass,GetTypeTtoTDependentGetType - Remove return type manipulation from
AfterFunctionCallAnalysisInterface– use theMethodReturnTypeProviderInterfaceandFunctionReturnTypeProviderInterfacehooks instead - Added return and param types to plugin hooks