Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Jan 27, 2025

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
vimeo/psalm ^5.26.1 -> ^6.0.0 age adoption passing confidence

Release Notes

vimeo/psalm (vimeo/psalm)

v6.13.1

Compare Source

What's Changed

Fixes

Full Changelog: vimeo/psalm@6.13.0...6.13.1

v6.13.0

Compare Source

What's Changed

Features
  • ✨ Full support for iterables for iterator_to_array by @​andrew-demb in #​11430
  • Add an arrayCache configuration key that can be used to disable the newly introduced array cache: this will slightly slow down execution times while reducing RAM usage, avoiding OOM issues on bigger codebases by @​danog

Full Changelog: vimeo/psalm@6.12.1...6.13.0

v6.12.1

Compare Source

What's Changed

Fixes

Full Changelog: vimeo/psalm@6.12.0...6.12.1

v6.12.0: - Cache refactoring

Compare Source

This release features a major cache refactoring, improving stability, removing race conditions and adding a new feature called cache consolidation, which consolidates the cache, normally composed of split files, into one single file with the --consolidate-cache flag, for quicker runs when doing whole project scans!

To use cache consolidation, simply run Psalm with the --consolidate-cache flag after running a normal analysis: running with this flag will skip analysis and only consolidate the cache.
If you consolidate your cache in CI runs, sure to re-consolidate the cache again after running Psalm before re-saving the updated cache.

What's Changed

Features
Fixes
Docs

New Contributors

Full Changelog: vimeo/psalm@6.11.0...6.12.0

v6.11.0

Compare Source

What's Changed

Features
  • Add new ClassFilePathProviderInterface plugin hook to polyfill custom autoloaders by @​danog in #​11422
Fixes

Subscribe to the brand new Psalm newsletter to stay up to date with all of Psalm's news!

Full Changelog: vimeo/psalm@6.10.3...6.11.0

v6.10.3

Compare Source

What's Changed

Fixes

Full Changelog: vimeo/psalm@6.10.2...6.10.3

v6.10.2

Compare Source

What's Changed

Fixes

New Contributors

Full Changelog: vimeo/psalm@6.10.1...6.10.2

v6.10.1

Compare Source

What's Changed

Fixes

Full Changelog: vimeo/psalm@6.10.0...6.10.1

v6.10.0

Compare Source

Join the new official Psalm news channel and the Psalm community!

The news channel will be used to share inside exclusive news about upcoming Psalm features (including property hook support, coming within the next few releases!), and the community group can be used to discuss and share the way you use Psalm!

What's Changed

Features

Full Changelog: vimeo/psalm@6.9.6...6.10.0

v6.9.6

Compare Source

Add git, ssh and composer to the docker image by @​danog.

Full Changelog: vimeo/psalm@6.9.5...6.9.6

v6.9.5

Compare Source

What's Changed

Fixes

Full Changelog: vimeo/psalm@6.9.4...6.9.5

v6.9.4

Compare Source

What's Changed

Fixes

Full Changelog: vimeo/psalm@6.9.3...6.9.4

v6.9.3

Compare Source

What's Changed

Fixes
Internal changes

Full Changelog: vimeo/psalm@6.9.2...6.9.3

v6.9.2

Compare Source

Fixes multiplatform builds for the latest tag of the docker image ».

Full Changelog: vimeo/psalm@6.9.1...6.9.2

v6.9.1

Compare Source

v6.9.0: - Docker image!

Compare Source

Psalm now has an official docker image!

It uses a custom build of PHP built from scratch, running Psalm +30% faster on average than normal PHP (+50% faster if comparing to PHP without opcache installed).

To use it, simply run:

docker run -v $PWD:/app --rm -it ghcr.io/danog/psalm:latest /composer/vendor/bin/psalm --no-cache

Issues due to missing extensions can be fixed by enabling them in psalm.xml and/or requiring them in composer.json, see here » for more info.

Extensions not stubbed by Psalm itself (and thus not available as a psalm config option) may be stubbed using traditional PHP stubs.

What's Changed

Features

Full Changelog: vimeo/psalm@6.8.9...6.9.0

v6.8.9

Compare Source

What's Changed

Fixes
Internal changes

Full Changelog: vimeo/psalm@6.8.8...6.8.9

v6.8.8

Compare Source

What's Changed

Fixes
Internal changes

Full Changelog: vimeo/psalm@6.8.7...6.8.8

v6.8.7

Compare Source

What's Changed

Fixes

Full Changelog: vimeo/psalm@6.8.6...6.8.7

v6.8.6

Compare Source

What's Changed

Fixes

Full Changelog: vimeo/psalm@6.8.5...6.8.6

v6.8.5

Compare Source

What's Changed

Fixes
  • Fixes PHP Error: Undefined array key 1 by @​tm1000 in #​11328
  • Fix issue with plugins by @danog

Full Changelog: vimeo/psalm@6.8.4...6.8.5

v6.8.4

Compare Source

This release introduces fully reproducible builds (the composer.lock file is now added to phars).

Full Changelog: vimeo/psalm@6.8.3...6.8.4

v6.8.3

Compare Source

What's Changed

Fixes
  • Fix phar build by bumping box (the minimum supported PHP version for the phar is now PHP 8.2) by @​danog in #​11324
Internal changes

Full Changelog: vimeo/psalm@6.8.2...6.8.3

v6.8.2

Compare Source

What's Changed

Fixes

Full Changelog: vimeo/psalm@6.8.1...6.8.2

v6.8.1

Compare Source

What's Changed

Internal changes

Full Changelog: vimeo/psalm@6.8.0...6.8.1

v6.8.0

Compare Source

What's Changed

Features
Fixes

New Contributors

Full Changelog: vimeo/psalm@6.7.1...6.8.0

v6.7.1

Compare Source

What's Changed

Internal changes

Full Changelog: vimeo/psalm@6.7.0...6.7.1

v6.7.0

Compare Source

What's Changed

Features
  • Add new allowBoolToLiteralBoolComparison config (disabled by default), used to control emission of RedundantIdentityWithTrue issues (previously, their emission was controlled by the strictBinaryOperands config) by @​danog in #​11283
  • Enable missing #[Override] attribute detection (automatic Psalter fixer available) by @​danog in #​11283
  • Enable strict binary operand comparison checks (useful for strict_types migration) by @​danog in #​11283
  • Seal all class properties and methods: this enforces exact description of all class magic (__get/__call...) methods and properties with @method or @property, see here for more info by @​danog in #​11283
  • Disable dangerous @psalm-suppress all annotation (may be re-enabled manually with the disableSuppressAll config) by @​danog in #​11283
  • Types in lazy objects by @​BenMorel in #​11296
Fixes
Internal changes

New Contributors

Full Changelog: vimeo/psalm@6.6.2...6.7.0

v6.6.2

Compare Source

What's Changed

Fixes

Full Changelog: vimeo/psalm@6.6.1...6.6.2

v6.6.1

Compare Source

What's Changed

Fixes
Docs

Full Changelog: vimeo/psalm@6.6.0...6.6.1

v6.6.0

Compare Source

What's Changed

Features
Fixes
Docs
Internal changes

Full Changelog: vimeo/psalm@6.5.1...6.6.0

v6.5.1

Compare Source

What's Changed

Fixes
Internal changes

Full Changelog: vimeo/psalm@6.5.0...6.5.1

v6.5.0

Compare Source

What's Changed

Features
  • The psalm.dev REPL now supports the disableVarParsing config by @​danog
  • Add allFunctionsGlobal and allConstantsGlobal options, useful for legacy codebases which do not use Composer to preload functions and constants by @​danog in #​11259
Fixes

Full Changelog: vimeo/psalm@6.4.1...6.5.0

v6.4.1

Compare Source

What's Changed

Fixes
Internal changes

New Contributors

Full Changelog: vimeo/psalm@6.4.0...6.5.0

v6.4.0

Compare Source

What's Changed

Features
Fixes

Full Changelog: vimeo/psalm@6.3.0...6.4.0

v6.3.0

Compare Source

This release adds the new psalm-review tool!

What's Changed

Features
Fixes

Full Changelog: vimeo/psalm@6.2.0...6.3.0

v6.2.0

Compare Source

This release was possible thanks to a Psalm support contract!

This release adds the new LiteralKeyUnshapedArray issue, controlled by the disallowLiteralKeysOnUnshapedArrays configuration flag (false by default), useful to enforce usage of shaped arrays instead of generic arrays.

What's Changed

Features
Fixes

Full Changelog: vimeo/psalm@6.1.0...6.2.0

v6.1.0

Compare Source

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
Fixes
Internal changes
Other changes

Full Changelog: vimeo/psalm@6.0.0...6.1.0

v6.0.0: Psalm v6

Compare Source

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: vimeo/psalm@5.26.1...6.0.0


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

Read more information about the use of Renovate Bot within Laminas.

@renovate renovate bot added the renovate label Jan 27, 2025
@renovate
Copy link
Contributor Author

renovate bot commented Jan 27, 2025

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: composer.lock
Command failed: composer update vimeo/psalm:6.13.1 --with-dependencies --ignore-platform-req='ext-*' --ignore-platform-req='lib-*' --no-ansi --no-interaction --no-scripts --no-autoloader --no-plugins --minimal-changes
Loading composer repositories with package information
Dependency psr/http-message is also a root requirement. Package has not been listed as an update argument, so keeping locked at old version. Use --with-all-dependencies (-W) to include root dependencies.
Dependency psr/http-factory is also a root requirement. Package has not been listed as an update argument, so keeping locked at old version. Use --with-all-dependencies (-W) to include root dependencies.
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires vimeo/psalm ^6.0.0, found vimeo/psalm[6.0.0, ..., 6.13.1] but these were not loaded, likely because it conflicts with another require.
  Problem 2
    - psalm/plugin-phpunit is locked to version 0.19.0 and an update of this package was not requested.
    - psalm/plugin-phpunit 0.19.0 requires vimeo/psalm dev-master || ^5@beta || ^5.0 -> found vimeo/psalm[5.0.0, ..., 5.26.1] but it conflicts with your root composer.json require (^6.0.0).

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

@renovate renovate bot force-pushed the renovate/vimeo-psalm-6.x branch 2 times, most recently from 10039d2 to 7ea0f96 Compare May 5, 2025 16:04
@renovate renovate bot changed the base branch from 3.6.x to 3.7.x May 5, 2025 16:16
@renovate renovate bot force-pushed the renovate/vimeo-psalm-6.x branch from 7ea0f96 to efa869a Compare May 13, 2025 17:32
@renovate renovate bot force-pushed the renovate/vimeo-psalm-6.x branch from efa869a to d98f502 Compare October 9, 2025 08:35
renovate bot and others added 2 commits October 9, 2025 18:42
| datasource | package     | from   | to     |
| ---------- | ----------- | ------ | ------ |
| packagist  | vimeo/psalm | 5.26.1 | 6.13.1 |

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@Xerkus Xerkus self-assigned this Oct 9, 2025
@Xerkus Xerkus added this to the 3.7.0 milestone Oct 9, 2025
@Xerkus Xerkus force-pushed the renovate/vimeo-psalm-6.x branch from d98f502 to 37b2062 Compare October 11, 2025 16:01
@renovate
Copy link
Contributor Author

renovate bot commented Oct 11, 2025

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

Comment on lines -115 to +122
* @param string $header Case-insensitive header name.
* @param string $name Case-insensitive header name.
* @return bool Returns true if any header names match the given header
* name using a case-insensitive string comparison. Returns false if
* no matching header name is found in the message.
*/
public function hasHeader(string $header): bool
public function hasHeader(string $name): bool
{
return isset($this->headerNames[strtolower($header)]);
return isset($this->headerNames[strtolower($name)]);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change to parameter name trips BC checker.
It did not match the PSR interface and it is only a BC break with named arguments.
I consider this a minor bugfix if anything.

@Xerkus
Copy link
Member

Xerkus commented Oct 11, 2025

@gsteel have you seen this amphp related deprecation failure on php 8.4 before?

@Xerkus
Copy link
Member

Xerkus commented Oct 11, 2025

I see. This is triggered due to RunInSeparateProcess option in couple tests. I've checked CI runs in others repos and every single one has this problem hidden in PHP 8.4 lowest run. amphp is a dependency of psalm v6.

Declaring conflict with the amphp package is not a good idea.

@Xerkus Xerkus force-pushed the renovate/vimeo-psalm-6.x branch from 79245bd to 37b2062 Compare October 11, 2025 16:39
@Xerkus Xerkus requested a review from a team October 11, 2025 16:46
@Xerkus Xerkus added the Bug Something isn't working label Oct 11, 2025
*/
public function getSize(): int
#[Override]
public function getSize(): ?int
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a bug that inadvertently narrowed interface return type. Technically a BC break so it trips BC checker.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say that the interface already declared ?int, so we're good: this is final, so there's almost no effect for downstream, unless they explicitly type against RelativeStream.

I'd say it's fine to keep the target merge into 3.x, and release there with the BC break label attached for clarity 👍

@gsteel
Copy link
Member

gsteel commented Oct 11, 2025

In the past I've just conflicted with amp/whatever to get an 8.4 compatible version

…o transient dependency

amphp is required by psalm 6 but in CI with lowest dependencies on PHP 8.4
phpunit tests fail in subprocess due to unrelated amphp deprecation notices.

Signed-off-by: Aleksei Khudiakov <[email protected]>
@Xerkus Xerkus force-pushed the renovate/vimeo-psalm-6.x branch from 164435a to 95b779e Compare October 11, 2025 17:36
@Xerkus
Copy link
Member

Xerkus commented Oct 11, 2025

I can mask the issue by going away with isolated process since only couple tests use it and globals are restored by phpunit between tests.

Copy link
Member

@Ocramius Ocramius left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, 🚢

*/
public function getSize(): int
#[Override]
public function getSize(): ?int
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say that the interface already declared ?int, so we're good: this is final, so there's almost no effect for downstream, unless they explicitly type against RelativeStream.

I'd say it's fine to keep the target merge into 3.x, and release there with the BC break label attached for clarity 👍

* in order to return a new request that composes a URI instance that reflects
* those headers.
*
* @psalm-immutable
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not super happy about this immutability removal, but OK with proceeding with it, for now

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah.

Psalm was treating methods as pure and complained about all other calls for whatever reason. I figured it was easier to drop annotation as it does not provide too much of a value here anyway.

Stuff like this:

ERROR: ImpureMethodCall - src/ServerRequestFilter/FilterUsingXForwardedHeaders.php:77:41 - Cannot call a possibly-mutating method Psr\Http\Message\ServerRequestInterface::getUri from a mutation-free context (see https://psalm.dev/203)
        $uri = $originalUri = $request->getUri();


ERROR: ImpureMethodCall - src/ServerRequestFilter/FilterUsingXForwardedHeaders.php:79:33 - Cannot call a possibly-mutating method Psr\Http\Message\ServerRequestInterface::getHeaderLine from a mutation-free context (see https://psalm.dev/203)
            $header = $request->getHeaderLine($headerName);


ERROR: ImpureMethodCall - src/ServerRequestFilter/FilterUsingXForwardedHeaders.php:105:30 - Cannot call a possibly-mutating method Psr\Http\Message\ServerRequestInterface::withUri from a mutation-free context (see https://psalm.dev/203)
            return $request->withUri($uri);

@Ocramius Ocramius self-assigned this Oct 11, 2025
@Ocramius Ocramius merged commit b6a3b5b into 3.7.x Oct 11, 2025
28 of 29 checks passed
@Ocramius Ocramius deleted the renovate/vimeo-psalm-6.x branch October 11, 2025 18:30
@Ocramius
Copy link
Member

Thanks @Xerkus!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

BC Break Bug Something isn't working renovate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants