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
,useAssertForType
config flags, both now permanently true - Change default on
resolveFromConfigFile
to"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
TFn
toTClosure
,ObjectLike
toTKeyedArray
,GetClassT
toTDependentGetClass
,GetTypeT
toTDependentGetType
- Remove return type manipulation from
AfterFunctionCallAnalysisInterface
– use theMethodReturnTypeProviderInterface
andFunctionReturnTypeProviderInterface
hooks instead - Added return and param types to plugin hooks