Skip to content

Releases: vimeo/psalm

Psalm v6

26 Jan 12:04
Compare
Choose a tag to compare

This is the first release of Psalm v6!

Users are encouraged to switch to Psalm v6 right away, as v5 is not supported anymore.

Also announcing Psalm's new support model: you can support Psalm development by requesting a support contract from Daniil Gentili, the only active maintainer of Psalm.

Support contracts can cover full integration of Psalm into existing codebases, support for Psalm issues and development of additional Psalm features.

See here » for info, pricing and contact information.

Main highlights of Psalm v6:

  • PHP 8.4 support
  • Amp v3 support
  • PHP-Parser v5 support
  • Fully overhauled dictionaries, for much more accurate and always up to date signatures for PHP and extension functions and methods, and much simpler PHP version upgrades.
  • ignoreInternalFunctionFalseReturn and ignoreInternalFunctionNullReturn are now false by default: this means Psalm now warns when a false/null return type of a native function is not explicitly checked.
  • Modernization of the codebase for higher performance.
  • Many other bugfixes and performance improvements.

Plugin authors should consult the changelog for info about BC-breaking changes.

What's Changed

Features

Fixes

Docs

Internal changes

Typos

Other changes

New Contributors

Full Changelog: 5.26.1...6.0.0

5.26.1

09 Sep 16:19
d747f65
Compare
Choose a tag to compare

What's Changed

Fixes

  • Fix JSON formatter crashes with invalid UTF in error messages by @weirdan in #11092

Full Changelog: 5.26.0...5.26.1

5.26.0

08 Sep 17:21
4787eaf
Compare
Choose a tag to compare

What's Changed

Features

Fixes

New Contributors

Full Changelog: 5.25.0...5.26.0

5.25.0

19 Jun 19:58
01a8eb0
Compare
Choose a tag to compare

What's Changed

Features

Fixes

New Contributors

Full Changelog: 5.24.0...5.25.0

5.24.0

01 May 20:25
462c80e
Compare
Choose a tag to compare

What's Changed

Features

  • Allow specifying flags to Codebase::isTypeContainedByType by @danog in #10829
  • Allow more callable types as subtypes of callable by @weirdan in #10805
  • Report parent being used in callable context when the class does not extend anything by @kkmuffme in #10838
  • Report error for additional deprecated arg types in PHP 8.1/8.3 by @kkmuffme in #10824
  • Add MissingClassConstType Issue by @jack-worman in #10828
  • Enforce parameter names for consistent constructors by @kkmuffme in #10821
  • Add misc missing errors for invalid callable methods by @kkmuffme in #10839

Fixes

  • Forbid named arguments for ArrayAcccess methods by @weirdan in #10804
  • Don't crash on invalid templates by @weirdan in #10806
  • report error for single param name mismatch too since named args can even be used then by @kkmuffme in #10822
  • add support for named arguments for filter_var and filter_input by @pilif in #10815
  • When inside isset, make array fetch result nullable by @edsrzf in #10756
  • Promoted properties missing in extended __construct should report PropertyNotSetInConstructor by @kkmuffme in #10817
  • Updating signature of getmxrr() by @ThomasLandauer in #10847
  • Improve string-int juggle consistency in array keys and display for int-like strings in type by @kkmuffme in #10814
  • Fix storage not available in thread for intersection doc types by @simonberger in #10856
  • Don't emit MissingOverrideAttribute for implicit Stringable implementations by @edsrzf in #10858
  • Specify array return type of session_get_cookie_params by @jorgsowa in #10859
  • Unknown @psalm annotation should not make whole docblock invalid by @kkmuffme in #10885
  • Add mail to impure functions list by @smaddock in #10923
  • Update PHP 8.2 Call map delta with refined types for string comparison functions by @gsteel in #10883

Docs

  • document that @psalm-internal works for namespace + class too by @kkmuffme in #10866

Internal changes

  • fix tests running with other than called PHP binary if called with a non-default PHP binary by @kkmuffme in #10842
  • Explicitly set value in config to fix warning in tests by @kkmuffme in #10843
  • [PHP 8.4] Fixes for implicit nullability deprecation by @Ayesh in #10832
  • Throw exception instead of silently logging issues occurred during scan by @danog in #10902

Other changes

New Contributors

Full Changelog: 5.23.1...5.24.0

5.23.1

11 Mar 20:36
8471a89
Compare
Choose a tag to compare

What's Changed

Fixes

  • Fixed analysis of existing static methods if the __callStatic() method exists by @issidorov in #10812

Full Changelog: 5.23.0...5.23.1

5.23.0

09 Mar 19:40
005e318
Compare
Choose a tag to compare

What's Changed

Features

  • Update PHP 8.2 stubs to include SensitiveParameterValue by @gsteel in #10726
  • Add list of statements to BeforeFileAnalysisEvent by @ohader in #10728
  • Forbid iterating over generators with non-nullable send() by @weirdan in #10697
  • Initial support for named parameters for callables by @weirdan in #10772

Fixes

  • Improve randomizer stubs by @danog in #10709
  • Fix detecting magic static methods by @issidorov in #10704
  • Fix non-empty-lowercase-string handling with literal non-lowercase strings by @kkmuffme in #10722
  • Fix RiskyTruthyFalsyComparison irrelevant errors when there is no explicit truthy/falsy type by @kkmuffme in #10733
  • Allow Override attribute to be used in pure contexts by @weirdan in #10734
  • Revert "Allow tainted numerics except for 'html' and 'has_quotes'" by @ohader in #10729
  • Fix loading stubs from phar file on Windows by @weirdan in #10748
  • Fix a false flag issue with InvalidConstantAssignmentValue by @MelechMizrachi in #10738
  • Set inside_isset false when analyzing ArrayDimFetch index by @edsrzf in #10752
  • Set inside_isset = false when analyzing arguments by @edsrzf in #10753
  • Fix PHP notice - crash on invalid taint-escape by @kkmuffme in #10760
  • Fix version comparison for @since by @weirdan in #10764
  • Since annotations outside phpstub should not infer php version by @kkmuffme in #10769
  • Backport WeakMap iterator fix from master by @weirdan in #10778
  • Namespace anonymous classes by @weirdan in #10779
  • Update CallMap for sqlsrv_connect and sqlsrv_errors to match reflection by @theodorejb in #10781
  • $resource parameter of mkdir() is nullable since PHP 7.3 by @weirdan in #10802
  • Use wider class-string when combining class strings with intersections by @weirdan in #10800

Internal changes

New Contributors

Full Changelog: 5.22.2...5.23.0

5.22.2

22 Feb 23:40
d768d91
Compare
Choose a tag to compare

What's Changed

Fixes

Full Changelog: 5.22.1...5.22.2

5.22.1

15 Feb 22:56
e9dad66
Compare
Choose a tag to compare

What's Changed

Fixes

Full Changelog: 5.22.0...5.22.1

5.22.0

14 Feb 04:42
fe2c67e
Compare
Choose a tag to compare

What's Changed

Features

  • Allow inline comments in typedef shapes by @weirdan in #10623
  • allow typedef imports from any kind of classlike by @weirdan in #10625
  • Allow enum cases to be global constants by @weirdan in #10634
  • New InvalidOverride issue for Override attribute by @edsrzf in #10644
  • Analyze dynamic names for static property and const fetches by @edsrzf in #10629
  • New MissingOverrideAttribute issue by @edsrzf in #10651
  • Flag stdClass::__construct() calls that have arguments by @weirdan in #10661
  • Improve Reflection stubs by @vudaltsov in #10091
  • Forbid constructors from returning any values by @weirdan in #10686
  • Report first class callables generated for unknown static methods by @weirdan in #10691
  • Process @psalm-this-out on __construct() as well by @weirdan in #10690
  • Report invalid number of arguments for psalm-taint-* by @staabm in #10699

Fixes

Internal changes

  • Drop unused local composer repo by @weirdan in #10647
  • Clarify that Pull request labels failure is to be resolved by maintainers by @weirdan in #10649
  • Fix unstable hasFullyQualified(Interface|Enum)() by @weirdan in #10603
  • Revert partial mistakenly pushed fix by @danog in #10671

Full Changelog: 5.21.1...5.22.0