Symfony 8.1.0-BETA1 has just been released.
This is a pre-release version of Symfony 8.1. If you want to test it in your own applications before its final release, run the following commands:
1 2 3
$ composer config minimum-stability beta
$ composer config extra.symfony.require "8.1.*"
$ composer update
These commands assume that all your Symfony dependencies in composer.json
use * as their version constraint. Otherwise, you will need to update
the version constraints of those Symfony dependencies to 8.1.*.
Read the Symfony upgrade guide to learn more about upgrading Symfony and use the SymfonyInsight upgrade reports to detect the code you will need to change in your project.
Tip
Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.
Changelog Since Symfony 8.0
- data #64149 Release v8.1.0-BETA1
- data #64145 Release v8.0.10
- feature #63751 [DependencyInjection][HttpKernel] Add support for resetting non-shared services (@Pechynho)
- feature #63689 [Routing] Allow collection prefixes to disable trailing slash on root (@vvaswani)
- feature #62127 [RateLimiter] Add calendar-aligned mode to FixedWindowLimiter (@Crovitche-1623)
- bug #64128 [Messenger] Fix "--fetch-size" option rejecting valid values (@xeno-suter)
- feature #64118 [Security] Revert "Add per-username login rate-limit to prevent brute-force attacks" (@wouterj)
- bug #63976 [FrameworkBundle] Remove console service definitions already declared by ConsoleBundle (@Jean-Beru)
- feature #64094 [Messenger] Deprecate StopWorkerOnTimeLimitListener in favor of time_limit worker option (@Toflar)
- feature #64104 [Security] Add per-username login rate-limit to prevent brute-force attacks (@ayyoub-afwallah)
- feature #63862 [Console] Use ECH sequence for block padding (@Amoifr)
- feature #64087 [HttpKernel][VarDumper][WebProfilerBundle] Forward CSP nonce to dump() instead of disabling CSP (@Amoifr)
- feature #64079 [ErrorHandler] Trigger @method deprecation notices for abstract classes (@lacatoire)
- feature #46654 [Serializer] Add COLLECT_EXTRA_ATTRIBUTES_ERRORS and full deserialization path (@NorthBlue333)
- feature #62112 [Console] Add support for OSC 9;4 escape sequence for progress reporting (@canvural)
- feature #52173 [Serializer] Add AbstractObjectNormalizer::ENABLE_TYPE_CONVERSION for scalar type transformation (@Jeroeny)
- feature #60008 [HttpFoundation] Add SessionHasFlashMessage test constraint (@Pierstoval)
- feature #63810 [VarDumper] Dump class-strings as class stubs with source location and static properties (@lyrixx)
- feature #63929 [TwigBundle] Add twig.safe_class resource tag to register safe classes for the escaper (@GromNaN)
- feature #62801 [Notifier][Prelude] Add bridge (@zairigimad)
- feature #63727 [Form] Use translation_domain for expanded ChoiceType placeholder (@eyupcanakman)
- feature #63762 [VarDumper] Add CSP nonce support to HtmlDumper (@Amoifr)
- bug #63789 [ObjectMapper] Fix #[Map] attribute breaking auto-mapping of other properties (@Amoifr)
- feature #63809 [Workflow] Add support for dumping listeners in Graphviz diagrams (@lyrixx)
- feature #63879 [JsonStreamer] Add DateTimeZone value object support (@mtarld)
- feature #63905 [FrameworkBundle] Add --sort option to debug:router command (Michael Thieulin)
- feature #63907 [RateLimiter] Add #[RateLimit] attribute to rate limit controllers declaratively (@ayyoub-afwallah)
- feature #63925 [MonologBridge] Add $subjectMaxLength option to MailerHandler (@Amoifr)
- feature #63945 [Validator] Make constraint validators reentrant instead of being stateful (@stof)
- feature #64055 [Runtime] Add FRANKENPHP_RESET_KERNEL to reset the kernel between requests (@nicolas-grekas)
- feature #63988 [DependencyInjection] Support autowiring env vars as closures or Stringable when using #[Autowire(env: 'FOO')] (@nicolas-grekas)
- feature #64070 [Messenger] Release deduplication lock on definitive failure (@ousamabenyounes)
- feature #63778 [Tui] Add the component (@fabpot)
- feature #64049 [VarExporter] Deprecate Hydrator and Instantiator classes (@nicolas-grekas)
- feature #64009 Improve phpdoc types (@stof)
- feature #63910 [DependencyInjection] Allow inline Definition as factory and configurator (@GromNaN)
- bug #63962 [DependencyInjection] Fix empty bundle cache when container is rebuilt (@HypeMC)
- feature #63943 [WebProfilerBundle] Improve toolbar accessibility for screen reader (@Nitram1123)
- feature #63912 [JsonStreamer] Improve error message when unable to encode (@GaryPEGEOT)
- bug #63921 [DependencyInjection] Fix bundles cache freshness check (@HypeMC)
- feature #63695 [VarExporter] Make DeepCloner::__serialize() return a pure array and add toArray()/fromArray() (@nicolas-grekas)
- bug #63913 [ErrorHandler] Fix http_response_code() warning on PHP 8.5 for max execution time errors (@ruudk)
- feature #63880 [DependencyInjection] Add #[RequiredBundle], ServicesBundle and ConsoleBundle (@nicolas-grekas)
- bug #63765 [VarExporter] Fix serialization of objects with __serialize/__unserialize (@Amoifr)
- bug #63895 [HttpKernel] Fix cache warmers running on every kernel boot instead of only on compilation (@nicolas-grekas)
- feature #63877 [DependencyInjection] Add AddBehaviorDescribingTagsPass (@nicolas-grekas)
- feature #63875 [EventDispatcher] Add hot-path and no-preload support to AddEventAliasesPass (@nicolas-grekas)
- bug #63863 [Console] Allow nullable #[Autowire] service references in command arguments (@ruudk)
- feature #63710 [DependencyInjection] Add Kernel and Bundle infrastructure for HTTP-less DI-powered apps (@nicolas-grekas)
- feature #63771 [Security] Add enforce_key_usage_verification option to OIDC discovery (@ruudk)
- feature #60334 [Twig] Add daisyUI form layout (@Oviglo)
- feature #63742 [JsonStreamer] Add DateInterval value object support (@mtarld)
- feature #63745 [FrameworkBundle][HttpKernel] Deprecate Bundle::registerCommands() (@derrabus)
- feature #63735 [JsonStreamer] Support date time timezone (@mtarld)
- feature #63714 [Console] Add validation constraints support to #[MapInput] (@chalasr)
- bug #63704 [VarExporter] Fix DeepCloner crash with objects using __serialize() (@pcescon)
- feature #63709 [Console] Add optional PSR container parameter to Application (@nicolas-grekas)
- feature #57598 [Console] Expose the original input arguments and options and to unparse options (@theofidry)
- feature #52134 [HttpKernel] Add option to map empty data with MapQueryString and MapRequestPayload (@Jeroeny)
- feature #41574 [Messenger] Add AmqpPriorityStamp for per-message priority on AMQP transport (Valentin Nazarov)
- feature #63661 [Runtime] Add FrankenPhpWorkerResponseRunner for simple response return (@guillaume-sainthillier)
- feature #63666 [Messenger] Allow configuring the service reset interval in the messenger:consume command via the --no-reset option (@nicolas-grekas)
- feature #63665 [Messenger] Add MessageExecutionStrategyInterface and refactor Worker to use it (@nicolas-grekas)
- feature #63662 [Messenger] Add a --fetch-size option to the messenger:consume command to control how many messages are fetched per iteration (@nicolas-grekas)
- feature #63663 [Contracts] Add ContainerAwareInterface (@nicolas-grekas)
- feature #63631 [Form] Add labels option to DateType to customize year/month/day sub-field labels (@guillaumeVDP)
- feature #62823 [JsonPath] Add custom function support (@alexandre-daubois)
- bug #63640 [VarExporter] Fix readonly deep-cloning and Instantiator cache priming (@nicolas-grekas)
- feature #63590 [DependencyInjection] Add support for using service stacks as decorators (@nicolas-grekas)
- feature #63595 [ObjectMapper] Add IsNotNull built-in condition (@Nayte91)
- feature #63612 [VarExporter] Add DeepCloner for COW-friendly deep cloning (@nicolas-grekas)
- feature #51379 [HttpKernel] Adding new #[MapRequestHeader] attribute and resolver (@StevenRenaux)
- feature #63585 [Security] Deprecate erase_credentials config, container parameter and AuthenticatorManager constructor argument (@guillaumeVDP)
- feature #62029 [Mailer][SES] Allow configuring port and tls options (@adars)
- feature #63615 [Uid] Pass invalid UID value to InvalidArgumentException for better debug (@rela589n)
- feature #63339 [JsonStreamer] Handle value objects (@mtarld)
- feature #63383 [ObjectMapper] Allow class FQDN arrays as TargetClass and SourceClass param (@rrajkomar)
- feature #63520 [FrameworkBundle] Allow configuring Webhook's header names and signing algo (@lacatoire)
- feature #63593 [Uid] Add Uuid47Transformer support for UUIDv7/v4 conversion (@nicolas-grekas)
- feature #63528 [TypeInfo] Resolve tentative return types (@valtzu)
- feature #63546 [Console] Add outline-style block methods to SymfonyStyle (@guillaumeVDP)
- feature #63581 [FrameworkBundle][Messenger] Deprecate "senders" nesting level in routing config (@W0rma)
- feature #63441 [HttpClient] Default CachingHttpClient's $maxTtl to 86400s to prevent eternal cache items (@Lctrs, @nicolas-grekas)
- bug #63597 [FrameworkBundle] Fix wiring of "debug.console.argument_resolver" (@nicolas-grekas)
- feature #63541 [HttpFoundation] Deprecate setting public properties of Request and Response objects directly (@nicolas-grekas)
- feature #63552 [Runtime] Add SymfonyRuntime::resolveType() for customizing how types are resolved in extending runtimes (@Kingdutch)
- feature #63481 [ErrorHandler] Allow namespace remapping in DebugClassLoader to relax the "same vendor" constraint (@mpdude)
- feature #63524 [Translation][Crowdin] Replace deprecated Upload Translations method with Import Translations (@bhdnb)
- feature #63505 [FrameworkBundle] Deprecate terminate_on_cache_hit http_cache option (@Mynyx)
- feature #63538 [Console] Sort suggested commands alphabetically (@javiereguiluz)
- feature #63537 [Console] Replace executeCommand() by runCommand() when testing commands (@javiereguiluz)
- feature #45553 [Translation] Extract locale fallback computation into a dedicated class (@mpdude)
- feature #63433 [HttpClient] Add GuzzleHttpHandler that allows using Symfony HttpClient as a Guzzle handler (@nicolas-grekas)
- feature #63465 [Translation] Add support for XLIFF PGS (Plural, Gender, and Select Module) (@alexandre-daubois)
- feature #62888 [Messenger] Route decode failures through failure handling (@nicolas-grekas)
- feature #63453 [Console][WebProfilerBundle] Trace argument value resolvers (@chalasr)
- feature #52055 [Console] Deprecate combining incompatible mode flags in InputArgument and InputOption (@jnoordsij)
- feature #52058 [Console] Allow setting a boolean default value on InputOption::VALUE_NEGATABLE options (@jnoordsij)
- feature #45081 [Form] Add support for submitting forms with unchecked checkboxes in request handlers (@filiplikavcan)
- feature #63443 [Console] Add customization to SymfonyStyle progressBar (@guillaumeVDP)
- feature #63451 [PropertyInfo] Add support for property hook settable types (@alexandre-daubois)
- feature #63455 [Translation] Add support for XLIFF versions 2.1 and 2.2 (@alexandre-daubois)
- feature #63427 [WebLink] : Adding consts for as attributes (@ThomasLandauer)
- feature #63426 [DependencyInjection] Deprecate named autowiring alias that don't use #[Target] (@nicolas-grekas)
- feature #63429 [FrameworkBundle] Add MicroKernelTrait::$allowedEnvs to enforce allowed values for APP_ENV (@vincentpabst)
- bug #63402 [Messenger] Improve PostgreSQL LISTEN/NOTIFY idle listener (@nicolas-grekas)
- feature #61494 [Console] Allow to test the different streams at the same time with a new result-based testing API for CommandTester (@theofidry)
- feature #63371 [Form] Add uid_format option to EntityType (@lacatoire)
- feature #61462 [Messenger] Add ListableReceiverInterface support to RedisReceiver (@mudassaralichouhan)
- feature #49388 [CssSelector] Add :has() support (@franckranaivo)
- feature #63242 [FrameworkBundle] Add decoration stack to debug:container command (@ayyoub-afwallah)
- bug #63385 [Contracts] skip property hook check on PHP < 8.4 (@xabbuh)
- feature #63373 [HttpFoundation] Add BinaryFileResponse::shouldDeleteFileAfterSend() (@lacatoire)
- feature #49518 Create #[Serialize] Attribute to serialize Controller Result (@Koc)
- feature #63355 [Validator] Add ValidatorBuilder::enablePropertyMetadataExistenceCheck() (@lacatoire)
- feature #63335 [TwigBridge] Add form_flow_* helper functions (@ker0x)
- feature #63356 [FrameworkBundle] Configure custom marshaller per cache pool (@mvanduijker)
- feature #63359 [Console] Allow passing Validator constraints to QuestionHelper and #[Ask] (@chalasr)
- feature #54817 [HttpKernel] Support variadic with #[MapRequestPayload] (@DjordyKoert)
- feature #63360 [Validator] Add clock-awareness to comparison and range validators (@lacatoire)
- bug #63361 [FrameworkBundle] Properly set tag "lock.store" on flock and semaphore stores when they're used (@nicolas-grekas)
- feature #63346 [Messenger][AMQP] Allow disabling default queue binding via queues option (@xammmue)
- feature #52265 [HttpClient] Configure MockClient if mock_response_factory has been set on a scoped client (@tarjei)
- feature #63293 [Console] Add image support to QuestionHelper and #[Ask] (@chalasr)
- feature #47969 [Filesystem] rename Filesystem::mirror() option copy_on_windows to follow_symlinks (@maxbeckers)
- feature #58871 [Form] BirthdayType has automatic attr when widget is single_text (@nicolas-grekas)
- feature #59202 [Semaphore] Add a semaphore store based on locks (@alexander-schranz)
- bug #63341 [WebProfilerBundle] fix compatibility with HttpKernel component < 8.1 (@xabbuh)
- feature #47666 [Messenger] Move PostgreSQL LISTEN/NOTIFY blocking to worker idle event listener (@d-ph)
- feature #62638 [DependencyInjection] Add tag decoration support (@mtarld)
- feature #62320 [WebProfiler] add cURL copy/paste to request tab (@darkweak)
- feature #63214 [Form] Allow ViolationMapperInterface injection for ValidatorExtension and FormTypeValidatorExtension (@ktherage)
- feature #63304 [Contracts][DependencyInjection] Support hooked properties in ServiceMethodsSubscriberTrait (@derrabus)
- feature #63277 [Messenger] Add idle timeout option to BatchHandlerTrait (@HypeMC)
- feature #61458 [HttpKernel] Validate typed request attribute values before calling controllers (@mudassaralichouhan)
- feature #63274 [HttpKernel] Add ControllerEvent::evaluate() et al. to help with evaluating expressions or closures in controller attributes (@nicolas-grekas)
- feature #63032 [HttpKernel] Dispatch events named after controller attributes (@nicolas-grekas)
- feature #63263 [FrameworkBundle][Lock] Scope semaphore and flock stores by project dir by default (@nicolas-grekas)
- feature #61457 [FrameworkBundle] Deprecate container parameters router.request_context.scheme and .host (@stollr)
- feature #63092 [HttpKernel] Expose controller metadata throughout the request lifecycle (@nicolas-grekas)
- feature #58273 Allow usage of expressions for defining validation groups in #[MapRequestPayload] (@Brajk19)
- feature #63201 [Security] Add this to #[IsGranted] subject expression vars when available (@valtzu)
- bug #63256 [Validator] Fix Xml constraint behavior when ext-simplexml/ext-dom are not installed (@nicolas-grekas)
- feature #63181 [DependencyInjection] Add target parameter to #[AsAlias] attribute (@ayyoub-afwallah)
- feature #53559 [DomCrawler] Allow to add choices to single select (@norkunas)
- feature #53998 [Security] Add retrieval of parent role names (@PierreCapel)
- feature #62875 [Messenger] Add regex support for transport name matching in messenger:consume command (@santysisi)
- feature #58732 [Finder] Allow finder to set the UNIX_PATH flag when recursing directories (Shane McKinley)
- feature #62754 [ExpressionLanguage] Add support for null-safe syntax for array access (@cancan101)
- feature #57365 [Validator] Add Xml constraint (@sfmok)
- feature #58966 [Serializer] Trigger deprecation when could not parse date with default format (@alexndlm)
- feature #57769 [Notifier] [Telegram] Add support for local API server (@ahmedghanem00)
- feature #57653 [FrameworkBundle] Allow default action in HtmlSanitizer configuration (@Neirda24)
- feature #54866 [Messenger] Added the ability to force RedisCluster (@adideas)
- feature #63130 [Console] Add TesterTrait::assertCommandFailed and TesterTrait::assertCommandIsInvalid helpers (@darovic)
- feature #63095 [FrameworkBundle] Add shortcut to run console command in tests (@Koc)
- feature #63097 [Security] Decouple SameOriginCsrfTokenManager from event listening (@jprivet-dev)
- feature #62599 [FrameworkBundle][JsonStreamer] Add default options (@mtarld)
- feature #63061 [Messenger] Add support for custom type in Serializer Transport (@lyrixx)
- feature #62885 [TypeInfo] Allow resolving object shapes (@bnf)
- feature #63183 [Console] Allow object as default for input options and arguments (@chalasr)
- feature #63157 [Security] Add support for enums in SignatureHasher::computeSignatureHash() (@nicolas-grekas)
- feature #63024 [ObjectMapper] Add targetClass on MapCollection transform (@soyuka)
- feature #63111 [DependencyInjection] Add argument exclude to ContainerConfigurator::import() (@tilaven)
- feature #63135 [Scheduler] Add option to order recurring messages by next run date in debug command (@yoye)
- feature #62434 [HttpKernel] deprecate the Extension class (@xabbuh)
- feature #63059 [Semaphore] Add SemaphoreKeyNormalizer (@clegginabox)
- feature #62909 [FrameworkBundle] Enable mocking non-shared services in tests (@HypeMC)
- feature #62751 [HttpClient] Add support of the persistent cURL handles (@Koc)
- feature #63121 [Translation][FramworkBundle] Allow using env vars in the list of enabled locales (@nicolas-grekas)
- feature #62566 [FrameworkBundle] Add AbstractController::createFormFlowBuilder (@silasjoisten)
- feature #62917 [Console] Add ArgumentResolver (@chalasr)
- feature #63090 [HttpKernel] Return attributes as a flat list when using Controller[Arguments]Event::getAttributes(*) (@nicolas-grekas)
- feature #63039 [PhpUnitBridge] add logic for checking for dist.xml, xml.dist and xml phpunit config (@gennadigennadigennadi)
- feature #62941 [HttpKernel] Allow the Cache attribute to be applied conditionally (@HypeMC)
- feature #62511 [ObjectMapper] merge nested properties when targeting the same class (@soyuka)
- bug #63050 [ObjectMapper] improve test expectations (@soyuka)
- feature #62835 [DependencyInjection] Allow environment variables with . in them (Max Baldanza)
- bug #63028 [FrameworkBundle] Fix debug:container --tag=service.tag not showing priority of #[AsTaggedItem] (@ayyoub-afwallah)
- feature #62957 [ObjectMapper] Throw exception for invalid transform callable (@calm329, @Asenar)
- feature #62522 [FrameworkBundle][ObjectMapper] Add automatic class-map array based on map attributes (@Orkin)
- feature #63023 [Uid] Add argument $format to Ulid::isValid() (@mms-uret)
- feature #62854 [HttpClient] Add support for the max_connect_duration option (@alexandre-daubois)
- feature #62940 [HttpKernel] Allow using closures with the Cache attribute (@HypeMC)
- feature #62925 [HttpKernel] Deserialize UploadedFile for #[MapRequestPayload] (@Grafikart)
- feature #62911 [Console] Add #[AskChoice] attribute for interactive choice questions (@yceruto)
- feature #62939 [HttpKernel] Improve Cache attribute expression vars (@HypeMC)
- feature #62850 [HttpKernel] Decouple controller attributes from source code and add ResponseEvent::getControllerAttributes() (@nicolas-grekas)
- feature #62567 [Console] Add support for method-based commands (@yceruto)
- feature #62538 [HttpKernel] Add support for SOURCE_DATE_EPOCH environment variable (Charles-Édouard Coste)
- feature #62824 [DependencyInjection][SecurityBundle] Leverage #[AsTaggedItem] for voters (@ayyoub-afwallah)
- feature #62339 [DependencyInjection] Deprecate default index/priority methods when defining tagged locators/iterators (@nicolas-grekas)
- feature #62792 [DoctrineBridge] Deprecate RegisterMappingsPass::$aliasMap (@GromNaN)
- feature #62800 [HttpKernel] Add support for bundles as compiler passes (@yceruto)
- feature #62578 [Form] Add reset button in NavigatorFlowType (@Nayte91)
- feature #62572 [Messenger] Use clock in DelayStamp and RedeliveryStamp instead of native time classes and methods (@bluemmb)
- feature #62483 [DependencyInjection] Deprecate invalid options when using from_callable (@yoeunes)
- feature #60372 [Mailer][SendGrid] add support for scheduling delivery via send_at API parameter (Mickael GOETZ, @MrMitch)
- feature #62322 [Security] add missing Clear-Site-Data directives (@xabbuh)
- feature #62390 [Mailer] Add support of ipPoolId for infobip mailer transport (@jbdelhommeau)