CHANGELOG for 7.3.x
===================

This changelog references the relevant changes (bug and security fixes) done
in 7.3 minor versions.

To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash
To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v7.3.0...v7.3.1

* 7.3.0-RC1 (2025-05-25)

 * bug #60529 [AssetMapper] Fix SequenceParser possible infinite loop (smnandre)
 * bug #60532 [Routing] Fix inline default `null` (HypeMC)
 * bug #60535 [DoctrineBridge] Fix resetting the manager when using native lazy objects (HypeMC)
 * bug #60500 [PhpUnitBridge] Fix cleaning up mocked features with attributes (HypeMC)
 * bug #60330 [FrameworkBundle] skip messenger deduplication middleware registration when no "default" lock is configured (lyrixx)
 * bug #60494 [Messenger] fix: Add argument as integer (overexpOG)
 * bug #60524 [Notifier] Fix Clicksend transport (BafS)
 * bug #60479 [FrameworkBundle] object mapper service definition without form (soyuka)
 * bug #60478 [Validator] add missing `$extensions` and `$extensionsMessage` to the `Image` constraint (xabbuh)
 * bug #60491 [ObjectMapper] added earlier skip to allow if=false when using source mapping (maciekpaprocki)
 * bug #60484 [PhpUnitBridge] Clean up mocked features only when ``@group`` is present (HypeMC)
 * bug #60490 [PhpUnitBridge] set path to the PHPUnit autoload file (xabbuh)
 * bug #60489 [FrameworkBundle] Fix activation strategy of traceable decorators (nicolas-grekas)
 * feature #60475 [Validator] Revert Slug constraint (wouterj)
 * feature #60105 [JsonPath] Add `JsonPathAssertionsTrait` and related constraints (alexandre-daubois)
 * bug #60423 [DependencyInjection] Make `DefinitionErrorExceptionPass` consider `IGNORE_ON_UNINITIALIZED_REFERENCE` and `RUNTIME_EXCEPTION_ON_INVALID_REFERENCE` the same (MatTheCat)
 * bug #60439 [FrameworkBundle] Fix declaring field-attr tags in xml config files (nicolas-grekas)
 * bug #60428 [DependencyInjection] Fix missing binding for ServiceCollectionInterface when declaring a service subscriber (nicolas-grekas)
 * bug #60426 [Validator] let the `SlugValidator` accept `AsciiSlugger` results (xabbuh)
 * bug #60421 [VarExporter] Fixed lazy-loading ghost objects generation with property hooks (cheack)
 * bug #60419 [SecurityBundle] normalize string values to a single ExposeSecurityLevel instance (xabbuh)
 * bug #60266 [Security] Exclude remember_me from default login authenticators (santysisi)
 * bug #60407 [Console] Invokable command `#[Option]` adjustments (kbond)
 * bug #60400 [Config] Fix generated comment for multiline "info" (GromNaN)
 * bug #60260 [Serializer] Prevent `Cannot traverse an already closed generator` error by materializing Traversable input (santysisi)
 * bug #60292 [HttpFoundation] Encode path in `X-Accel-Redirect` header (Athorcis)
 * bug #60401 Passing more than one Security attribute is not supported (santysisi)

* 7.3.0-BETA2 (2025-05-10)

 * bug #58643 [SecurityBundle] Use Composer `InstalledVersions` to check if flex is installed (andyexeter)
 * feature #54276 [Workflow] Add support for executing custom workflow definition validators during the container compilation (lyrixx)
 * feature #52981 [FrameworkBundle] Make `ValidatorCacheWarmer` and `SerializeCacheWarmer` use `kernel.build_dir` instead of `kernel.cache_dir` (Okhoshi)
 * feature #54384 [TwigBundle] Use `kernel.build_dir` to store the templates known at build time (Okhoshi)
 * bug #60275 [DoctrineBridge] Fix UniqueEntityValidator Stringable identifiers (GiuseppeArcuti, wkania)
 * feature #59602 [Console] `#[Option]` rules & restrictions (kbond)
 * feature #60389 [Console] Add support for `SignalableCommandInterface` with invokable commands (HypeMC)
 * bug #60293 [Messenger] fix asking users to select an option if `--force` option is used in `messenger:failed:retry` command (W0rma)
 * bug #60392 [DependencyInjection][FrameworkBundle] Fix precedence of `App\Kernel` alias and ignore `container.excluded` tag on synthetic services (nicolas-grekas)
 * bug #60379 [Security] Avoid failing when PersistentRememberMeHandler handles a malformed cookie (Seldaek)
 * bug #60308 [Messenger] Fix integration with newer versions of Pheanstalk (HypeMC)
 * bug #60373 [FrameworkBundle] Ensure `Email` class exists before using it (Kocal)
 * bug #60365 [FrameworkBundle] ensure that all supported e-mail validation modes can be configured (xabbuh)
 * bug #60350 [Security][LoginLink] Throw `InvalidLoginLinkException` on invalid parameters (davidszkiba)
 * bug #60366 [Console] Set description as first parameter to `Argument` and `Option` attributes (alamirault)
 * bug #60361 [Console] Ensure overriding `Command::execute()` keeps priority over `__invoke()` (GromNaN)
 * feature #60028 [ObjectMapper] Condition to target a specific class  (soyuka)
 * feature #60344 [Console] Use kebab-case for auto-guessed input arguments/options names (chalasr)
 * bug #60340 [String] fix EmojiTransliterator return type compatibility with PHP 8.5 (xabbuh)
 * bug #60322 [FrameworkBundle] drop the limiters option for non-compound rater limiters (xabbuh)

* 7.3.0-BETA1 (2025-05-02)

 * feature #60232 Add PHP config support for routing (fabpot)
 * feature #60102 [HttpFoundation] Add `UriSigner::verify()` that throws named exceptions (kbond)
 * feature #60222 [FrameworkBundle][HttpFoundation] Add Clock support for `UriSigner` (kbond)
 * feature #60226 [Uid] Add component-specific exception classes (rela589n)
 * feature #60163 [TwigBridge] Allow attachment name to be set for inline images (aleho)
 * feature #60186 [DependencyInjection] Add "when" argument to #[AsAlias] (Zuruuh)
 * feature #60195 [Workflow] Deprecate `Event::getWorkflow()` method (lyrixx)
 * feature #60193 [Workflow] Add a link to mermaid.live from the profiler (lyrixx)
 * feature #60188 [JsonPath] Add two utils methods to `JsonPath` builder (alexandre-daubois)
 * feature #60018 [Messenger] Reset peak memory usage for each message (TimWolla)
 * feature #60155 [FrameworkBundle][RateLimiter] compound rate limiter config (kbond)
 * feature #60171 [FrameworkBundle][RateLimiter] deprecate `RateLimiterFactory` alias (kbond)
 * feature #60139 [Runtime] Support extra dot-env files (natepage)
 * feature #60140 Notifier mercure7.3 (ernie76)
 * feature #59762 [Config] Add `NodeDefinition::docUrl()` (alexandre-daubois)
 * feature #60099 [FrameworkBundle][RateLimiter] default `lock_factory` to `auto` (kbond)
 * feature #60112 [DoctrineBridge] Improve exception message when `EntityValueResolver` gets no mapping information (MatTheCat)
 * feature #60103 [Console] Mark `AsCommand` attribute as ``@final`` (Somrlik, GromNaN)
 * feature #60069 [FrameworkBundle] Deprecate setting the `collect_serializer_data` to `false` (mtarld)
 * feature #60087 [TypeInfo] add TypeFactoryTrait::arrayKey() (xabbuh)
 * feature #42124 [Messenger] Add `$stamps` parameter to `HandleTrait::handle` (alexander-schranz)
 * feature #58200 [Notifier] Deprecate sms77 Notifier bridge (MrYamous)
 * feature #58380 [WebProfilerBundle] Update the logic that minimizes the toolbar (javiereguiluz)
 * feature #60039 [TwigBridge] Collect all deprecations with `lint:twig` command (Fan2Shrek)
 * feature #60081 [FrameworkBundle] Enable controller service with `#[Route]` attribute (GromNaN)
 * feature #60076 [Console] Deprecate returning a non-int value from a `\Closure` function set via `Command::setCode()` (yceruto)
 * feature #59655 [JsonPath] Add the component (alexandre-daubois)
 * feature #58805 [TwigBridge][Validator] Add the Twig constraint and its validator (sfmok)
 * feature #54275 [Messenger] [Amqp] Add default exchange support (ilyachase)
 * feature #60052 [Mailer][TwigBridge] Revert "Add support for translatable objects" (kbond)
 * feature #59967 [Mailer][TwigBridge] Add support for translatable subject (norkunas)
 * feature #58654 [FrameworkBundle] Binding for Object Mapper component (soyuka)
 * feature #60040 [Messenger] Use newer version of Beanstalkd bridge library (HypeMC)
 * feature #52748 [TwigBundle] Enable `#[AsTwigFilter]`, `#[AsTwigFunction]` and `#[AsTwigTest]` attributes to configure runtime extensions (GromNaN)
 * feature #59831 [Mailer][Mime] Refactor S/MIME encryption handling in `SMimeEncryptionListener` (Spomky)
 * feature #59981 [TypeInfo] Add `ArrayShapeType::$sealed` (mtarld)
 * feature #51741 [ObjectMapper] Object to Object mapper component (soyuka)
 * feature #57309 [FrameworkBundle][HttpKernel] Allow configuring the logging channel per type of exceptions (Arkalo2)
 * feature #60007 [Security] Add methods param in IsCsrfTokenValid attribute (Oviglo)
 * feature #59900 [DoctrineBridge] add new `DatePointType` Doctrine type (garak)
 * feature #59904 [Routing] Add alias in `{foo:bar}` syntax in route parameter (eltharin)
 * feature #59978 [Messenger] Add `--class-filter` option to the `messenger:failed:remove` command (arnaud-deabreu)
 * feature #60024 [Console] Add support for invokable commands in `LockableTrait` (yceruto)
 * feature #59813 [Cache] Enable namespace-based invalidation by prefixing keys with backend-native namespace separators (nicolas-grekas)
 * feature #59902 [PropertyInfo] Deprecate `Type` (mtarld, chalasr)
 * feature #59890 [VarExporter] Leverage native lazy objects (nicolas-grekas)
 * feature #54545 [DoctrineBridge] Add argument to `EntityValueResolver` to set type aliases (NanoSector)
 * feature #60011 [DependencyInjection] Enable multiple attribute autoconfiguration callbacks on the same class (GromNaN)
 * feature #60020 [FrameworkBundle] Make `ServicesResetter` autowirable (lyrixx)
 * feature #59929 [RateLimiter] Add `CompoundRateLimiterFactory` (kbond)
 * feature #59993 [Form] Add input with `string` value in `MoneyType` (StevenRenaux)
 * feature #59987 [FrameworkBundle] Auto-exclude DI extensions, test cases, entities and messenger messages (nicolas-grekas)
 * feature #59827 [TypeInfo] Add `ArrayShapeType` class (mtarld)
 * feature #59909 [FrameworkBundle] Add `--method` option to `debug:router` command (santysisi)
 * feature #59913 [DependencyInjection] Leverage native lazy objects for lazy services (nicolas-grekas)
 * feature #53425 [Translation] Allow default parameters (Jean-Beru)
 * feature #59464 [AssetMapper] Add `--dry-run` option on `importmap:require` command (chadyred)
 * feature #59880 [Yaml] Add the `Yaml::DUMP_FORCE_DOUBLE_QUOTES_ON_VALUES` flag to enforce double quotes around string values (dkarlovi)
 * feature #59922 [Routing] Add `MONGODB_ID` to requirement patterns (GromNaN)
 * feature #59842 [TwigBridge] Add Twig `field_id()` form helper (Legendary4226)
 * feature #59869 [Cache] Add support for `valkey:` / `valkeys:` schemes (nicolas-grekas)
 * feature #59862 [Messenger] Allow to close the transport connection (andrew-demb)
 * feature #59857 [Cache] Add `\Relay\Cluster` support (dorrogeray)
 * feature #59863 [JsonEncoder] Rename the component to `JsonStreamer` (mtarld)
 * feature #52749 [Serializer] Add discriminator map to debug commmand output (jschaedl)
 * feature #59871 [Form] Add support for displaying nested options in `DebugCommand` (yceruto)
 * feature #58769 [ErrorHandler] Add a command to dump static error pages (pyrech)
 * feature #54932 [Security][SecurityBundle] OIDC discovery (vincentchalamon)
 * feature #58485 [Validator] Add `filenameCharset` and `filenameCountUnit` options to `File` constraint (IssamRaouf)
 * feature #59828 [Serializer] Add `defaultType` to `DiscriminatorMap` (alanpoulain)
 * feature #59570 [Notifier][Webhook] Add Smsbox support (alanzarli)
 * feature #50027 [Security] OAuth2 Introspection Endpoint (RFC7662) (Spomky)
 * feature #57686 [Config] Allow using an enum FQCN with `EnumNode` (alexandre-daubois)
 * feature #59588 [Console] Add a Tree Helper + multiple Styles  (smnandre)
 * feature #59618 [OptionsResolver] Deprecate defining nested options via `setDefault()` use `setOptions()` instead (yceruto)
 * feature #59805 [Security] Improve DX of recent additions (nicolas-grekas)
 * feature #59822 [Messenger] Add options to specify SQS queue attributes and tags (TrePe0)
 * feature #59290 [JsonEncoder] Replace normalizers by value transformers (mtarld)
 * feature #59800 [Validator] Add support for closures in `When` (alexandre-daubois)
 * feature #59814 [Framework] Deprecate the `framework.validation.cache` config option (alexandre-daubois)
 * feature #59804 [TypeInfo] Add type alias support (mtarld)
 * feature #59150 [Security] Allow using a callable with `#[IsGranted]` (alexandre-daubois)
 * feature #59789 [Notifier] [Bluesky] Return the record CID as additional info (javiereguiluz)
 * feature #59526 [Messenger] [AMQP] Add TransportMessageIdStamp logic for AMQP (AurelienPillevesse)
 * feature #59771 [Security] Add ability for voters to explain their vote (nicolas-grekas)
 * feature #59768 [Messenger][Process] add `fromShellCommandline` to `RunProcessMessage` (Staormin)
 * feature #59377 [Notifier] Add Matrix bridge (chii0815)
 * feature #58488 [Serializer] Fix deserializing XML Attributes into string properties (Hanmac)
 * feature #59657 [Console] Add markdown format to Table (amenk)
 * feature #59274 [Validator] Allow Unique constraint validation on all elements (Jean-Beru)
 * feature #59704 [DependencyInjection] Add `Definition::addExcludedTag()` and `ContainerBuilder::findExcludedServiceIds()` for auto-discovering value-objects (GromNaN)
 * feature #49750 [FrameworkBundle] Allow to pass signals to `StopWorkerOnSignalsListener` in XML config and as plain strings (alexandre-daubois)
 * feature #59479 [Mailer] [Smtp] Add DSN param to enforce TLS/STARTTLS (ssddanbrown)
 * feature #59562 [Security] Support hashing the hashed password using crc32c when putting the user in the session (nicolas-grekas)
 * feature #58501 [Mailer] Add configuration for dkim and smime signers (elias-playfinder, eliasfernandez)
 * feature #52181 [Security] Ability to add roles in `form_login_ldap` by ldap group (Spomky)
 * feature #59712 [DependencyInjection] Don't skip classes with private constructor when autodiscovering (nicolas-grekas)
 * feature #50797 [FrameworkBundle][Validator] Add `framework.validation.disable_translation` option (alexandre-daubois)
 * feature #49652 [Messenger] Add `bury_on_reject` option to Beanstalkd bridge (HypeMC)
 * feature #51744 [Security] Add a normalization step for the user-identifier in firewalls (Spomky)
 * feature #54141 [Messenger] Introduce `DeduplicateMiddleware` (VincentLanglet)
 * feature #58546 [Scheduler] Add MessageHandler result to the `PostRunEvent` (bartholdbos)
 * feature #58743 [HttpFoundation] Streamlining server event streaming (yceruto)
 * feature #58939 [RateLimiter] Add `RateLimiterFactoryInterface` (alexandre-daubois)
 * feature #58717 [HttpKernel] Support `Uid` in `#[MapQueryParameter]` (seb-jean)
 * feature #59634 [Validator] Add support for the `otherwise` option in the `When` constraint (alexandre-daubois)
 * feature #59670 [Serializer] Add `NumberNormalizer` (valtzu)
 * feature #59679 [Scheduler] Normalize `TriggerInterface` as `string` (valtzu)
 * feature #59641 [Serializer] register named normalizer & denormalizer aliases (mathroc)
 * feature #59682 [Security] Deprecate UserInterface & TokenInterface's `eraseCredentials()` (chalasr, nicolas-grekas)
 * feature #59667 [Notifier] [Bluesky] Allow to attach website preview card (ppoulpe)
 * feature #58300 [Security][SecurityBundle] Show user account status errors (core23)
 * feature #59630 [FrameworkBundle] Add support for info on `ArrayNodeDefinition::canBeEnabled()` and `ArrayNodeDefinition::canBeDisabled()` (alexandre-daubois)
 * feature #59612 [Mailer] Add attachments support for Sweego Mailer Bridge (welcoMattic)
 * feature #59302 [TypeInfo] Deprecate `CollectionType` as list and not as array (mtarld)
 * feature #59481 [Notifier] Add SentMessage additional info (mRoca)
 * feature #58819 [Routing] Allow aliases in `#[Route]` attribute (damienfern)
 * feature #59004 [AssetMapper] Detect import with a sequence parser (smnandre)
 * feature #59601 [Messenger] Add keepalive support (silasjoisten)
 * feature #59536 [JsonEncoder] Allow to warm up object and list (mtarld)
 * feature #59565 [Console] Deprecating Command getDefaultName and getDefaultDescription methods (yceruto)
 * feature #59473 [Console] Add broader support for command "help" definition (yceruto)
 * feature #54744 [Validator] deprecate the use of option arrays to configure validation constraints (xabbuh)
 * feature #59493 [Console] Invokable command adjustments (yceruto)
 * feature #59482 [Mailer] [Smtp] Add DSN option to make SocketStream bind to IPv4 (quilius)
 * feature #57721 [Security][SecurityBundle] Add encryption support to OIDC tokens (Spomky)
 * feature #58599 [Serializer] Add xml context option to ignore empty attributes (qdequippe)
 * feature #59368 [TypeInfo] Add `TypeFactoryTrait::fromValue` method (mtarld)
 * feature #59401 [JsonEncoder] Add `JsonEncodable` attribute (mtarld)
 * feature #59123 [WebProfilerBundle] Extend web profiler listener & config for replace on ajax requests (chr-hertel)
 * feature #59477 [Mailer][Notifier] Add and use `Dsn::getBooleanOption()` (OskarStark)
 * feature #59474 [Console] Invokable command deprecations (yceruto)
 * feature #59340 [Console] Add support for invokable commands and input attributes (yceruto)
 * feature #59035 [VarDumper] Add casters for object-converted resources (alexandre-daubois)
 * feature #59225 [FrameworkBundle] Always display service arguments & deprecate `--show-arguments` option for `debug:container` (Florian-Merle)
 * feature #59384 [PhpUnitBridge] Enable configuring mock namespaces with attributes (HypeMC)
 * feature #59370 [HttpClient] Allow using HTTP/3 with the `CurlHttpClient` (MatTheCat)
 * feature #50334 [FrameworkBundle][PropertyInfo] Wire the `ConstructorExtractor` class (HypeMC)
 * feature #59354 [OptionsResolver] Support union of types (VincentLanglet)
 * feature #58542 [Validator] Add `Slug` constraint (raffaelecarelle)
 * feature #59286 [Serializer] Deprecate the `CompiledClassMetadataFactory` (mtarld)
 * feature #59257 [DependencyInjection] Support `@>` as a shorthand for `!service_closure` in YamlFileLoader (chx)
 * feature #58545 [String] Add `AbstractString::pascal()` method (raffaelecarelle)
 * feature #58559 [Validator] [DateTime] Add `format` to error messages (sauliusnord)
 * feature #58564 [HttpKernel] Let Monolog handle the creation of log folder for improved readonly containers handling (shyim)
 * feature #59360 [Messenger] Implement `KeepaliveReceiverInterface` in Redis bridge (HypeMC)
 * feature #58698 [Mailer] Add AhaSend Bridge (farhadhf)
 * feature #57632 [PropertyInfo] Add `PropertyDescriptionExtractorInterface` to `PhpStanExtractor` (mtarld)
 * feature #58786 [Notifier] [Brevo][SMS] Brevo sms notifier add options (ikerib)
 * feature #59273 [Messenger] Add `BeanstalkdPriorityStamp` to Beanstalkd bridge (HypeMC)
 * feature #58761 [Mailer] [Amazon] Add support for custom headers in ses+api (StudioMaX)
 * feature #54939 [Mailer] Add `retry_period` option for email transport (Sébastien Despont, fabpot)
 * feature #59068 [HttpClient] Add IPv6 support to NativeHttpClient (dmitrii-baranov-tg)
 * feature #59088 [DependencyInjection] Make `#[AsTaggedItem]` repeatable (alexandre-daubois)
 * feature #59301 [Cache][HttpKernel] Add a `noStore` argument to the `#` attribute (smnandre)
 * feature #59315 [Yaml] Add compact nested mapping support to `Dumper` (gr8b)
 * feature #59325 [Config] Add `ifFalse()` (OskarStark)
 * feature #58243 [Yaml] Add support for dumping `null` as an empty value by using the `Yaml::DUMP_NULL_AS_EMPTY` flag (alexandre-daubois)
 * feature #59291 [TypeInfo] Add `accepts` method (mtarld)
 * feature #59265 [Validator] Validate SVG ratio in Image validator (maximecolin)
 * feature #59129 [SecurityBundle][TwigBridge] Add `is_granted_for_user()` function  (natewiebe13)
 * feature #59254 [JsonEncoder] Remove chunk size definition (mtarld)
 * feature #59022 [HttpFoundation] Generate url-safe hashes for signed urls (valtzu)
 * feature #59177 [JsonEncoder] Add native lazyghost support (mtarld)
 * feature #59192 [PropertyInfo] Add non-*-int missing types for PhpStanExtractor (wuchen90)
 * feature #58515 [FrameworkBundle][JsonEncoder] Wire services (mtarld)
 * feature #59157 [HttpKernel] [MapQueryString] added key argument to MapQueryString attribute (feymo)
 * feature #59154 [HttpFoundation] Support iterable of string in `StreamedResponse` (mtarld)
 * feature #51718 [Serializer] [JsonEncoder] Introducing the component (mtarld)
 * feature #58946 [Console] Add support of millisecondes for `formatTime` (SebLevDev)
 * feature #48142 [Security][SecurityBundle] User authorization checker (natewiebe13)
 * feature #59075 [Uid] Add ``@return` non-empty-string` annotations to `AbstractUid` and relevant functions (niravpateljoin)
 * feature #59114 [ErrorHandler] support non-empty-string/non-empty-list when patching return types (xabbuh)
 * feature #59020 [AssetMapper] add support for assets pre-compression (dunglas)
 * feature #58651 [Mailer][Notifier] Add webhooks signature verification on Sweego bridges (welcoMattic)
 * feature #59026 [VarDumper] Add caster for Socket instances (nicolas-grekas)
 * feature #58989 [VarDumper] Add caster for `AddressInfo` objects (nicolas-grekas)

