Skip to content

Releases: vimeo/psalm

6.1.0

30 Jan 19:42
827971f
Compare
Choose a tag to compare

This release was possible thanks to a Psalm support contract!

This release greatly improves multithreaded mode, fixing some nasty issues and greatly improving efficiency, thanks to efficient task scheduling powered by amphp/parallel (& some custom code to allow usage of copy-on-write optimizations with forks instead of spawning new processes).

This release also adds a runtime check to prevent Psalm from running on Linux systems where VM overcommitting is disabled: Psalm makes heavy use of VM overcommitting (specifically during forking in multithreaded mode) to greatly reduce RAM usage and improve performance.
Note that in the vast majority of Linux systems, VM overcommitting is already enabled by default.

What's Changed

Features

  • Refactor Pool for much more efficient multithreaded parallelism by @danog in #11219
  • Add support for --scan-threads CLI and config flag by @danog in #11216
  • Log files being processed for too long by @danog in #11225
  • Add VM overcommit warning by @danog in #1121

Fixes

Internal changes

Other changes

Full Changelog: 6.0.0...6.1.0

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