Psalm 7.0.0-rc25 has been released: https://github.com/vimeo/psalm/releases/tag/7.0.0-rc25 #psalm
GitHub
Release 7.0.0-rc25 · vimeo/psalm
What's Changed
Features
Add an imagick extension stub by @alies-dev in #12720
Fixes
Give the closure of a Class::method string callable the signature of the method by @jirkace in #12708
Don&...
Features
Add an imagick extension stub by @alies-dev in #12720
Fixes
Give the closure of a Class::method string callable the signature of the method by @jirkace in #12708
Don&...
Psalm 7.0.0-rc26 has been released: https://github.com/vimeo/psalm/releases/tag/7.0.0-rc26 #psalm
GitHub
Release 7.0.0-rc26 · vimeo/psalm
What's Changed
Fixes
Fix: psalm --init crash on non-existent composer autoload directories by @alies-dev in #12659
[6.x] Support #[\DelayedTargetValidation] (PHP 8.5) by @alies-dev in #12282
[...
Fixes
Fix: psalm --init crash on non-existent composer autoload directories by @alies-dev in #12659
[6.x] Support #[\DelayedTargetValidation] (PHP 8.5) by @alies-dev in #12282
[...
Psalm 6.20.5 has been released: https://github.com/vimeo/psalm/releases/tag/6.20.5 #psalm
GitHub
Release 6.20.5 · vimeo/psalm
What's Changed
Fixes
[6.x] Treat New Relic PHP ext functions as impure and correct their signatures by @alies-dev in #12293
Fix: psalm --init crash on non-existent composer autoload directorie...
Fixes
[6.x] Treat New Relic PHP ext functions as impure and correct their signatures by @alies-dev in #12293
Fix: psalm --init crash on non-existent composer autoload directorie...
👍1
Psalm 6.20.6 has been released: https://github.com/vimeo/psalm/releases/tag/6.20.6 #psalm
GitHub
Release 6.20.6 · vimeo/psalm
What's Changed
Internal changes
CI: Make the perf PR comment and table more readable by @alies-dev in #12922
Add guzzle/promises to the perf corpus by @alies-dev in #12984
Push the docker imag...
Internal changes
CI: Make the perf PR comment and table more readable by @alies-dev in #12922
Add guzzle/promises to the perf corpus by @alies-dev in #12984
Push the docker imag...
Psalm 7.0.0-rc28 has been released: https://github.com/vimeo/psalm/releases/tag/7.0.0-rc28 #psalm
GitHub
Release 7.0.0-rc28 · vimeo/psalm
What's Changed
Removed
Drop the BC baseline entry for an unreleased storage property by @alies-dev in #13000
Features
Accept PHP 8.6 as an analysis target and require nikic/php-parser ^5.9 b...
Removed
Drop the BC baseline entry for an unreleased storage property by @alies-dev in #13000
Features
Accept PHP 8.6 as an analysis target and require nikic/php-parser ^5.9 b...
🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Security analysis is on by default: types, taints and dead code in one pass, on a rewritten, 10x faster taint engine.
New: NoSQL, LLM prompt and URL injection, php://input and upload names as sources, taint through closures and generators.
Try it: https://psalm.dev/r/7631291cc5
New: NoSQL, LLM prompt and URL injection, php://input and upload names as sources, taint through closures and generators.
Try it: https://psalm.dev/r/7631291cc5
Hack-style purity: declare which side effects code may have (io, time, write-props...) and catch the "pure" function that reads the clock or edits its input.
Purity templates make array_map() and your interfaces as pure as what you pass them.
Try it: https://psalm.dev/r/be7eb39420
Purity templates make array_map() and your interfaces as pure as what you pass them.
Try it: https://psalm.dev/r/be7eb39420
Dead code detection on a reference graph: if nothing reachable uses it, Psalm finds it. Classes that only call each other, cycles included, and exceptions you create but never throw.
Try it: https://psalm.dev/r/31c62c069b
Try it: https://psalm.dev/r/31c62c069b
Template defaults for classes, functions and methods: Result<int> now means Result<int, RuntimeException>.
Libraries can add a template without breaking the types their users already wrote.
Try it: https://psalm.dev/r/4e21eb262e
Libraries can add a template without breaking the types their users already wrote.
Try it: https://psalm.dev/r/4e21eb262e
PHP 8.6 pipelines with partial application, fully typed:
$slug = $title |> trim(...) |> str_replace(' ', '-', ?);
// string
$title |> explode(' ', ?) |> strtolower(...);
// InvalidArgument: strtolower expects string, non-empty-list<string> given
Try it: https://psalm.dev/r/3c08a570e0
$slug = $title |> trim(...) |> str_replace(' ', '-', ?);
// string
$title |> explode(' ', ?) |> strtolower(...);
// InvalidArgument: strtolower expects string, non-empty-list<string> given
Try it: https://psalm.dev/r/3c08a570e0
Framework plugins in the box: PHPUnit, Mockery, Symfony, Laravel and sabre/event plugins switch on by themselves when your composer.json uses the library. Zero setup.
Daily releases from now on: features and fixes reach you the day they land. And the team grew: Alies Lapatsin joined the maintainers.
Upgrading is a dependency bump away: https://psalm.dev/docs/running_psalm/upgrading_to_psalm_7/
Upgrading is a dependency bump away: https://psalm.dev/docs/running_psalm/upgrading_to_psalm_7/
Psalm 7.0.1 has been released: https://github.com/vimeo/psalm/releases/tag/7.0.1 #psalm
GitHub
Release 7.0.1 · vimeo/psalm
What's Changed
Fixes
Report each property write in a restricted purity context once by @danog in #13067
[7.x] Cut peak memory 22 to 25% (4.6 to 3.6 GB on Laravel) by stopping workers before un...
Fixes
Report each property write in a restricted purity context once by @danog in #13067
[7.x] Cut peak memory 22 to 25% (4.6 to 3.6 GB on Laravel) by stopping workers before un...
Psalm 7.0.2 has been released: https://github.com/vimeo/psalm/releases/tag/7.0.2 #psalm
GitHub
Release 7.0.2 · vimeo/psalm
What's Changed
Fixes
Fix the caller of @internal checks in namespaced functions by @roxblnfk in #13136
Perf: speed up analysis with a warm cache by @alies-dev in #13153
fix(unused): don't ...
Fixes
Fix the caller of @internal checks in namespaced functions by @roxblnfk in #13136
Perf: speed up analysis with a warm cache by @alies-dev in #13153
fix(unused): don't ...
Psalm 7.0.3 has been released: https://github.com/vimeo/psalm/releases/tag/7.0.3 #psalm
GitHub
Release 7.0.3 · vimeo/psalm
What's Changed
Fixes
Fix: issues found while scanning are lost with a warm cache by @alies-dev in #13156
fix(types): an array key that may be mixed is array-key by @jirkace in #13176
Fix impli...
Fixes
Fix: issues found while scanning are lost with a warm cache by @alies-dev in #13156
fix(types): an array key that may be mixed is array-key by @jirkace in #13176
Fix impli...