Repository navigation
Conversation
tomaj
force-pushed
the
deprecations-5.1
branch
2 times, most recently
from
October 22, 2026 09:25
5e86fed to
de9621d
Compare
This was referenced Oct 22, 2026
tomaj
force-pushed
the
deprecations-5.1
branch
from
October 23, 2026 14:42
de9621d to
2a9faeb
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #90
Adds 5.1.0 to the new
5.xbranch, which I created from tag5.0.0(ca91b4a). 5.1.0 changes no behaviour unless you opt in. It reports code that 6.0 will treat differently asE_USER_DEPRECATEDnotices. No tag has been created.What is reported
Dispatcher,Emitter,Message, the drivers and the shutdowns. They also get a@final since 5.1annotation, so static analysers flag it as well.shouldShutdown()orshutdown()takesDateTimeis reported, because 6.0 passesDateTimeInterface. The check runs both in the Dispatcher constructor and inShutdownTrait::setShutdown.canRetry()/maxRetry()is reported.RetryTraituser that overridescanRetry(), because 6.0 calls it and can skip the retry.LazyRabbitMqDriverwithout the new$durableargument is reported.Opt-in 6.0 behaviour
RetryableHandlerInterfacehas the 6.0 signature. Handlers that implement it follow the 6.0 retry rules now.RetryTrait::canRetry()accepts the optional$messageand$exceptionarguments.LazyRabbitMqDriver(..., bool $durable = false):truedeclares a durable queue and publishes persistent messages. An explicitdelivery_modestill wins.6.0 changes that cannot be deprecated
5.x can't detect these, or can't offer the new behaviour without breaking the old one. They are listed in the CHANGELOG:
Throwablecatching, and driver errors being rethrownsuggestreadonlyproperties andneverreturn typesDecisions
@trigger_error(the Symfony convention). They reach deprecation collectors (PHPUnit, Symfony ErrorHandler, a custom handler) without spamming production logs.[Unreleased]. I renamed that section to5.0.0 - 2025-11-19(the tag date) and added5.1.0 - unreleasedabove it. The empty[Unreleased]section stays for work after 5.1.Deprecation::name()strips the NUL suffix from them, because PHP 7.4'strigger_errorcuts the message at the NUL.UPGRADE-6.0.mdon master says "None of these changes has a deprecation notice in 5.x: there is no 5.x maintenance branch". That sentence will be wrong once 5.1 is released, and should be updated on master at that point. This PR doesn't touch it.Review fixes (this round)
canRetry()or onlymaxRetry()(no retry, no notice), so Infection kills the&&→||mutant on the legacy retry gate inDispatcher.## [Unreleased][unreleased]heading cleaned to## [Unreleased](the[unreleased]link target was missing).Verification
wait()loops is unchanged and out of scope. The branch's composer.json is unchanged for infection.Docs
RetryableHandlerInterface, and a short "Preparing for 6.0" section points to the CHANGELOG.examples/rabbitmqpasses$durable = falseexplicitly, so it creates the same queue as before and raises no notice.CI fixes for
5.x(the base branch was already red)aws/aws-sdk-phprelease that still supports PHP < 8.1 carries two of them. As a result,composer installcould not resolve.composer.jsonnow ignores exactly those two advisories inconfig.audit.ignore: PKSA-4t1p-xpk2-nsss (CloudFront signed policies) and PKSA-dxyf-6n16-t87m (S3 encryption client). Hermes uses neither, and the fixes need PHP 8.1.AMQPConnectionBlockedException. The@throwsofLazyRabbitMqDriver::send()now names the parentAMQPRuntimeException, which covers the closed and blocked exceptions in every 2.x version.forceCoversAnnotation/beStrictAboutCoversAnnotationstayed on for the suite; DeprecationTest lists the classes it covers so PHPUnit does not mark it risky.Milestone
Assigned to milestone 6.0.0 (there is no 5.1.0 milestone). Tag
5.1.0on the5.xbranch after merge is a separate step.