Symfony 5.3.0-BETA1 has just been released. Here is a list of the most important changes:

  • feature #40838 [SecurityBundle] Deprecate public services to private (@fancyweb)
  • feature #40782 [DependencyInjection] Add #[When(env: 'foo')] to skip autoregistering a class when the env doesn't match (@nicolas-grekas)
  • feature #40840 [Security] Add passport to AuthenticationTokenCreatedEvent (@scheb)
  • feature #40799 [FrameworkBundle] Add AbstractController::handleForm() helper (@dunglas)
  • feature #40646 [Notifier] Add MessageBird notifier bridge (@StaffNowa)
  • feature #40804 [Config][FrameworkBundle] Add CacheWarmer for ConfigBuilder (@Nyholm)
  • feature #40814 Remove the experimental flag from the authenticator system 🚀 (@chalasr)
  • feature #40690 [Form] Add support for sorting fields (@yceruto)
  • feature #40691 [Notifier] Add SmsBiuras notifier bridge (@StaffNowa)
  • feature #40406 [DependencyInjection] Autowire arguments using attributes (@derrabus, @nicolas-grekas)
  • feature #40155 [Messenger] Support Redis Cluster (@nesk)
  • feature #40600 [Config][DependencyInjection] Add configuration builder for writing PHP config (@Nyholm)
  • feature #40171 [Workflow] Add Mermaid.js dumper (@eFrane)
  • feature #40761 [MonologBridge] Reset loggers on workers (@l-vo)
  • feature #40785 [Security] Deprecate using UsageTrackingTokenStorage outside the request-response cycle (@wouterj)
  • feature #40718 [Messenger] Add X-Ray trace header support to the SQS transport (@WaylandAce)
  • feature #40682 [DependencyInjection] Add env() and EnvConfigurator in the PHP-DSL (@fancyweb)
  • feature #40145 [Security] Rework the remember me system (@wouterj)
  • feature #40695 [Console] Deprecate Helper::strlen() for width() and length() (@Nyholm)
  • feature #40486 [Security] Add concept of required passport badges (@wouterj)
  • feature #39007 [Notifier] Add notifier for Microsoft Teams (@idetox)
  • feature #40710 [Serializer] Construct annotations using named arguments (@derrabus)
  • feature #40647 [Notifier] [FakeChat] Added the bridge (@OskarStark)
  • feature #40607 [Notifier] Add LightSms notifier bridge (@Vasilij Dusko, @StaffNowa)
  • feature #40576 [Mime] Remove @internal from Headers methods (@VincentLanglet)
  • feature #40575 [FrameworkBundle][HttpKernel][TwigBridge] Add an helper to generate fragments URL (@dunglas)
  • feature #38468 Messenger multiple failed transports (@monteiro)
  • feature #39949 [Notifier] [FakeSms] Add the bridge (@JamesHemery)
  • feature #40403 [Security] Rename UserInterface::getUsername() to getUserIdentifier() (@wouterj)
  • feature #40602 [Cache] Support a custom serializer in the ApcuAdapter class (@ste93cry)
  • feature #40449 [TwigBridge] add tailwindcss form layout (@kbond)
  • feature #40567 [Security] Move the badges resolution check to AuthenticatorManager (@chalasr)
  • feature #40300 [HttpFoundation] Add support for mysql uni _socket and charset in PdoSessionHandler::buildDsnFromUrl (@bcremer, @Nyholm)
  • feature #40153 [Security] LoginLink with specific locale (@roromix)
  • feature #40489 [Serializer] Add a Custom End Of Line in CSV File (@xfifix)
  • feature #40554 [Contracts] Add TranslatorInterface::getLocale() (@nicolas-grekas)
  • feature #40556 Add #[As-prefix] to service attributes (@nicolas-grekas)
  • feature #40555 [HttpKernel] Add #[AsController] attribute for declaring standalone controllers on PHP 8 (@nicolas-grekas)
  • feature #40550 [Notifier] Move abstract test cases to namespace (@OskarStark)
  • feature #40530 [Uid] Handle predefined namespaces keywords "dns", "url", "oid" and "x500" (@fancyweb)
  • feature #40536 [HttpFoundation][HttpKernel] Rename master request to main request (@derrabus)
  • feature #40513 [Runtime] make GenericRuntime ... generic (@nicolas-grekas)
  • feature #40430 [Form] Add "for _attr" FormType option (@cristoforocervino)
  • feature #38488 [Validator] Add normalizer option to Unique constraint (@henry2778)
  • feature #40487 [Security] Remove deprecated support for passing a UserInterface implementation to Passport (@wouterj)
  • feature #40443 [Security] Rename User to InMemoryUser (@chalasr)
  • feature #40468 Deprecate configuring tag names and service ids in compiler passes (@nicolas-grekas)
  • feature #40248 [DependencyInjection] Add #[TaggedItem] attribute for defining the index and priority of classes found in tagged iterators/locators (@nicolas-grekas)
  • feature #40240 [Validator] Add Validation::createIsValidCallable() that returns a boolean instead of exception (@wouterj)
  • feature #40366 [FrameworkBundle] Add KernelTestCase::getContainer() (@Nyholm)
  • feature #40441 [WebProfilerBundle] Disable CSP if dumper was used (@monojp)
  • feature #40448 [twig-bridge] Allow NotificationEmail to be marked as public (@maxailloud)
  • feature #38465 [Runtime] a new component to decouple applications from global state (@nicolas-grekas)
  • feature #40432 [HttpKernel] Deprecate returning a ContainerBuilder from KernelInterface::registerContainerConfiguration() (@nicolas-grekas)
  • feature #40337 [DependencyInjection] Add support an integer return for defaul _inde _method (@maranqz)
  • feature #39693 [PropertyAccess] use bitwise flags to configure when the property accessor should throw (@xabbuh)
  • feature #40267 [Security] Decouple passwords from UserInterface (@chalasr)
  • feature #40377 [Notifier] [OvhCloud] Add "sender" (@notFloran)
  • feature #40384 [DependencyInjection] Implement psr/container 1.1 (@derrabus)
  • feature #40229 [FrameworkBundle][Translation] Extract translation IDs from all of src (@natewiebe13)
  • feature #40338 [FrameworkBundle] Add support for doctrine/annotations:1.13 || 2.0 (@Nyholm)
  • feature #40323 [TwigBridge][TwigBundle] Twig serialize filter (@jrushlow)
  • feature #40339 [RateLimiter][Security] Add a logi _throttling.interval (in security.firewalls) option to change the default throttling interval. (@damienfa, @wouterj)
  • feature #40307 [HttpKernel] Handle multi-attribute controller arguments (@chalasr)
  • feature #40284 [RateLimiter][Security] Allow to use no lock in the rate limiter/login throttling (@wouterj)
  • feature #39607 [Messenger] Add rediss:// DSN scheme support for TLS to Redis transport (@njutn95)
  • feature #40306 [HttpClient] Add HttpClientInterface::withOptions() (@nicolas-grekas)
  • feature #39883 [Uid] Add Generate and Inspect commands (@fancyweb)
  • feature #40140 [DependencyInjection] Add ContainerBuilder::willBeAvailable() to help with conditional configuration (@nicolas-grekas)
  • feature #40266 [Routing] Construct Route annotations using named arguments (@derrabus)
  • feature #40288 Deprecate passing null as $message or $code to exceptions (@derrabus)
  • feature #40298 [Form] Remove hard dependency on symfony/intl (@Nyholm)
  • feature #40214 [FrameworkBundle] allow container/routing configurators to vary by env (@nicolas-grekas)
  • feature #40257 [Intl] Add Currencies::getCashFractionDigits() and Currencies::getCashRoundingIncrement() (@nicolas-grekas)
  • feature #39326 [Security] Added debug:firewall command (@TimoBakx)
  • feature #40234 [Console] Add ConsoleCommand attribute for declaring commands on PHP 8 (@nicolas-grekas)
  • feature #39897 [DependencyInjection] Autoconfigurable attributes (@derrabus)
  • feature #39804 [DependencyInjection] Add #[Autoconfigure] to help define autoconfiguration rules (@nicolas-grekas)
  • feature #40174 [Mailer] AWS SES transport Source ARN header support (@chekalsky)
  • feature #38473 [Framework] Add tag assets.package to register asset packages (@GromNaN)
  • feature #39399 [Serializer] Allow to provide (de)normalization context in mapping (@ogizanagi)
  • feature #40202 [Workflow] Deprecate InvalidTokenConfigurationException (@chalasr)
  • feature #40176 [PasswordHasher] Use bcrypt as default hash algorithm for "native" and "auto" (@chalasr)
  • feature #40048 [FrameworkBundle] Deprecate session.storage service (@jderusse)
  • feature #40169 [DependencyInjection] Negated (not:) env var processor (@bpolaszek)
  • feature #39802 [Security] Extract password hashing from security-core - with proper wording (@chalasr)
  • feature #40143 [Filesystem] improve messages on failure (@nicolas-grekas)
  • feature #40144 [Filesystem] Remove dirs atomically if possible (@nicolas-grekas)
  • feature #39507 [Uid] Add UidFactory to create Ulid and Uuid from timestamps and randomness/nodes (@fancyweb)
  • feature #39688 [FrameworkBundle][Messenger] Added RouterContextMiddleware (@jderusse)
  • feature #40102 [Notifier] [Firebase] Add data field to options (@Raresmldvn)
  • feature #39978 [DoctrineBridge] Make subscriber and listeners prioritizable (@jderusse)
  • feature #39732 [Routing] don't decode nor double-encode already encoded slashes when generating URLs (@nicolas-grekas)
  • feature #39893 [HttpKernel] Show full URI when route not found (@ruudk)
  • feature #40059 [PhpUnitBridge] Add SYMFON _PHPUNI _REQUIRE env variable (@acasademont)
  • feature #39948 [Notifier] [SpotHit] Add the bridge (@JamesHemery)
  • feature #38973 [Messenger] Allow to limit consumer to specific queues (@dbu)
  • feature #40029 [DoctineBridge] Remove UuidVGenerator classes (@nicolas-grekas)
  • feature #39976 [Console] Add bright colors to console. (@CupOfTea696)
  • feature #40028 [Semaphore] remove "experimental" status (@jderusse)
  • feature #38616 [FrameworkBundle][HttpFoundation][Security] Deprecate service "session" (@jderusse)
  • feature #40010 [Uid] remove "experimental" status (@nicolas-grekas)
  • feature #40012 [Uid] Add RFC4122 UUID namespaces as constants (@nicolas-grekas)
  • feature #40008 [Uid] Replace getTime() with getDateTime() (@fancyweb)
  • feature #39910 [FrameworkBundle] Command cache:pool:clear warns and fails when one of the pools fails to clear (@jderusse)
  • feature #39699 [String] Made AsciiSlugger fallback to parent locale's symbolsMap (@jontjs)
  • feature #39971 [Cache] Change PDO cache table collate from utf _bin to utf8mb _bin (@pdragun)
  • feature #38922 [Notifier] Add notifier for Clickatell (@Kevin Auivinet, @Kevin Auvinet, @ke20)
  • feature #39587 [Notifier] [Mobyt] Change ctor signature and validate message types (@OskarStark)
  • feature #39919 [Security] Randomize CSRF token to harden BREACH attacks (@jderusse)
  • feature #39850 [Uid] Add fromBase58(), fromBase32(), fromRfc4122() and fromBinary() methods (@fancyweb)
  • feature #39904 [Console] add option --short to the list command (@nicolas-grekas)
  • feature #39851 [Console] enable describing commands in ways that make the list command lazy (@nicolas-grekas)
  • feature #39838 [Notifier] Add Gitter Bridge (@christingruber)
  • feature #39342 [Notifier] Add mercure bridge (@mtarld)
  • feature #39863 [Form][Uid] Add UlidType and UuidType form types (@Gemorroj)
  • feature #39806 [DependencyInjection] Add a remove() method to the PHP configurator (@dunglas)
  • feature #39843 [FrameworkBundle] Add renderForm() helper setting the appropriate HTTP status code (@dunglas)
  • feature #39852 [Security] RoleHierarchy returns an unique array of roles (@lyrixx)
  • feature #39855 [HttpFoundation] deprecate the NamespacedAttributeBag class (@xabbuh)
  • feature #39579 [Notifier] [GoogleChat] [BC BREAK] Rename threadKey parameter to threa _key + set parameter via ctor (@OskarStark)
  • feature #39617 [Notifier] Add AllMySms Bridge (@qdequippe)
  • feature #39702 [Notifier] Add Octopush notifier transport (@aurelienheyliot)
  • feature #39568 [Notifier] Add GatewayApi bridge (@Piergiuseppe Longo)
  • feature #39585 [Notifier] Change Dsn api (@OskarStark)
  • feature #39675 [Serializer] [UidNormalizer] Add normalization formats (@fancyweb)
  • feature #39457 [Notifier] [DX] Dsn::getRequiredOption() (@OskarStark)
  • feature #39098 [PhpUnitBridge] Add log file option for deprecations (@michaelKaefer)
  • feature #39642 [Console] Support binary / negatable options (@greg-1-anderson, @jderusse)
  • feature #39051 [WebProfilerBundle] Possibility to dynamically set mode (@brusch)
  • feature #39701 [Lock] Create flock directory (@jderusse)
  • feature #39696 [DoctrineBridge] Deprecate internal test helpers in Test namespace (@wouterj)
  • feature #39684 [DomCrawler] deprecate parents() in favor of ancestors() (@xabbuh)
  • feature #39666 [FrameworkBundle][HttpFoundation] add assertResponseFormatSame() (@dunglas)
  • feature #39660 [Messenger] Deprecate option prefetc _count (@jderusse)
  • feature #39577 [Serializer] Migrate ArrayDenormalizer to DenormalizerAwareInterface (@derrabus)
  • feature #39020 [PropertyInfo] Support multiple types for collection keys & values (@Korbeil)
  • feature #39557 [Notifier] [BC BREAK] Final classes (@OskarStark)
  • feature #39592 [Notifier] [BC BREAK] Change constructor signature for Mattermost and Esendex transport (@OskarStark)
  • feature #39643 [PhpUnitBridge] Remove obsolete polyfills (@derrabus)
  • feature #39606 [Notifier] [Slack] Validate token syntax (@OskarStark)
  • feature #39549 [Notifier] [BC BREAK] Fix return type (@OskarStark)
  • feature #39096 [Notifier] add iqsms bridge (@alexandrbarabolia)
  • feature #39493 [Notifier] Introduce LengthException (@OskarStark)
  • feature #39484 [FrameworkBundle] Allow env variables in jso _manifes _path (@jderusse)
  • feature #39480 [FrameworkBundle] Add "mailer" monolog channel to mailer transports (@chalasr)
  • feature #39419 [PhpUnitBridge] bump "php" to 7.1+ and "phpunit" to 7.5+ (@nicolas-grekas)
  • feature #39410 [Notifier] Add HeaderBlock for slack notifier (@norkunas)
  • feature #39365 [Notifier] [DX] UnsupportedMessageTypeException for notifier transports (@OskarStark)
  • feature #38469 [Form] Add "choic _translatio _parameters" option (@VincentLanglet)
  • feature #39352 [TwigBridge] export concatenated translations (@Stephen)
  • feature #39378 [Messenger] Use "warning" instead of "error" log level for RecoverableException (@lyrixx)
  • feature #38622 [BrowserKit] Allowing body content from GET with a content-type (@thiagomp)
  • feature #39363 [Cache] Support Redis Sentinel mode when using phpredis/phpredis extension (@renan)
  • feature #39340 [Security] Assert voter returns valid decision (@jderusse)
  • feature #39327 [FrameworkBundle] Add validator.expressio _language service (@fbourigault)
  • feature #39276 [FrameworkBundle] Added option to specify the event dispatcher in debug:event-dispatcher (@TimoBakx)
  • feature #39042 [Console] Extracting ProgressBar's format's magic strings into const (@CesarScur)
  • feature #39323 Search for pattern on debug:event-dispatcher (@Nyholm)
  • feature #39317 [Form] Changed DataMapperInterface $forms parameter type to Traversable (@vudaltsov)
  • feature #39258 [Notifier] Add ContextBlock for slack notifier (@norkunas)
  • feature #39300 [Notifier] Check for maximum number of buttons in slack action block (@malteschlueter)
  • feature #39097 [DomCrawler] Cache discovered namespaces (@simonberger, @fabpot)
  • feature #39037 [Ldap] Ldap Entry case-sensitive attribute key option (@karlshea)
  • feature #39146 [Console] Added Invalid constant into Command Class (@TheGarious)
  • feature #39075 [Messenger] Allow InMemoryTransport to serialize message (@tyx)
  • feature #38982 [Console][Yaml] Linter: add Github annotations format for errors (@ogizanagi)
  • feature #38846 [Messenger] Make all the dependencies of AmazonSqsTransport injectable (@jacekwilczynski)
  • feature #38596 [BrowserKit] Add jsonRequest function to the browser-kit client (@alexander-schranz)
  • feature #38998 [Messenger][SQS] Make sure one can enable debug logs (@Nyholm)
  • feature #38974 [Intl] deprecate polyfills in favor of symfony/polyfill-intl-icu (@nicolas-grekas)

Want to upgrade to this new release? Because Symfony protects backwards-compatibility very closely, this should be quite easy. Use SymfonyInsight upgrade reports to detect the code you will need to change in your project and read our upgrade documentation to learn more.

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.

Published in #Releases