Skip to content

Conversation

@nicolas-grekas
Copy link
Member

This is a behavior that has been broken about one year ago by a change is composer.

The attached implementation is way more robust since it uses a documented hook for plugins.

I tried to explain why this behavior should be the default also for composer without success so far, see:
composer/composer#12581

This is a must when testing lowest deps seriously, backed by years of practice :)

@nicolas-grekas nicolas-grekas merged commit 2d3822e into 2.x Oct 30, 2025
6 of 7 checks passed
@nicolas-grekas nicolas-grekas deleted the dev-low-stable branch October 30, 2025 14:00
Comment on lines +53 to +61
if ($this->ignoreUnstableReleases) {
$filteredPackages = [];
foreach ($data as $package) {
if (\in_array($package->getStability(), ['stable', 'dev'], true)) {
$filteredPackages[] = $package;
}
}
$data = $filteredPackages;
}
Copy link
Member

Choose a reason for hiding this comment

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

IMO this is very risky and should only be done if the minimum-stability is dev. If not you will for sure break projects using flex together with --prefer-lowest/--prefer-stable. If they require anything that has only an RC/beta/alpha but dev is not allowed, it will fail resolution.

Ideally it would check per package if dev is available and if yes clean pre-release versions, if not keep everything.

Copy link
Member Author

Choose a reason for hiding this comment

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

I very much doubt there is a use case where testing with lowest deps and neither dev nor stable are available.
I'd rather wait for a real world use case to be described before doing anything :)

nicolas-grekas added a commit that referenced this pull request Oct 31, 2025
…e (nicolas-grekas)

This PR was merged into the 2.x branch.

Discussion
----------

Leverage COMPOSER_PREFER_DEV_OVER_PRERELEASE when possible

This leverages composer/composer#12585

The code added in #1066 remains as a fallback.

Commits
-------

cc37c66 Leverage COMPOSER_PREFER_DEV_OVER_PRERELEASE when possible
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants