May 9, 2019 Fabien Potencier

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

feature #31249 [Translator] Set sources when extracting strings from php files (@Stadly)

feature #31365 [Intl] Made countries ISO 3166 compliant + exclude Zzzz script code (@ro0NL)

feature #31060 [Validator] Make API endpoint for NotCompromisedPasswordValidator configurable (@xelan)

feature #31353 [FrameworkBundle] Show injected services for iterator and array arguments (@jschaedl)

feature #31350 [Intl] Rename Regions to Countries (@ro0NL)

feature #31364 [Bridge/PhpUnit] Extract all the code but shebang from bin/simple-phpunit (@JustBlackBird)

feature #30985 [Form] Keep preferred choices order in ChoiceType (@vudaltsov)

feature #31288 [Messenger] RoutableMessageBus route to default bus (@dirk39)

feature #31292 [Validator] Allow intl timezones (@ro0NL)

feature #30970 [Messenger] Adding failure transport support (@weaverryan)

feature #31318 [Intl] Compile localized timezone offset name (@ro0NL)

feature #31248 [Translator] Add sources when dumping qt files (@Stadly)

feature #31280 [WebServerBundle] Change the default pidfile location to cache directory (@jschaedl)

feature #31293 [Form] Remove default option grouping in TimezoneType (@ro0NL)

feature #31262 [Intl] Update timezones to ICU 64.2 + compile zone to country mapping (@ro0NL)

feature #31295 [Intl] Add timezone offset utilities (@ro0NL)

feature #30958 [Messenger] Allows to register handlers on a specific transport (@sroze)

feature #31061 [BridgeDoctrineMessenger] Doctrine ping connection middleware (@insidestyles)

feature #31282 [Messenger] Add WorkerStoppedEvent (@chalasr)

feature #31138 [Security] Dispatch an event when "logout user on change" steps in (@Simperfit)

feature #31242 Update LoggingTranslator to log the change of a locale (@gmponos)

feature #30917 [Messenger] Add a redis stream transport (@soyuka, @alexander-schranz)

feature #31195 [Form] Add intltimezone input to TimezoneType (@ro0NL)

feature #31134 [Routing] do not encode comma in query and fragment (@Tobion)

feature #31220 [TwigBridge] bootstrap4 fil _widget: allow setting label attributes declared in labe _attr (@AngelFQC)

feature #31204 [Messenger] ease testing and allow forking the middleware stack (@nicolas-grekas)

feature #30370 [Cache] Add optimized FileSystem & Redis TagAware Adapters (@andrerom)

feature #28831 [Intl] Add Timezones (@ro0NL)

feature #31170 [Security] deprecate BCryptPasswordEncoder in favor of NativePasswordEncoder (@nicolas-grekas)

feature #31140 [Security] Add NativePasswordEncoder (@nicolas-grekas)

feature #31130 [VarDumper] add caster for WeakReference instances of PHP 7.4 (@nicolas-grekas)

feature #31082 [Form] Show all option normalizers on debug:form command (@yceruto)

feature #30957 [Messenger] Remove base6 _encode & use addslashes (@weaverryan)

feature #30717 [Serializer] Use name converter when normalizing constraint violation list (@norkunas)

feature #28846 [Intl] Simplify API (@ro0NL)

feature #31093 [PhpUnitBridge] ClockMock does not mock gmdate() (@Simperfit)

feature #29211 [PhpUnitBridge] Url encoded deprecations helper config (@greg0ire)

feature #31062 [Dotenv] Deprecate useage of "putenv" (@Nyholm)

feature #31021 [Cache] Added command for list all available cache pools (@Nyholm)

feature #31027 [Config] Deprecate TreeBuilder::root (@gharlan)

feature #31019 [Security] Replace Argon2PasswordEncoder by SodiumPasswordEncoder (@chalasr)

feature #30997 [Console] Add callback support to ConsoleQuestion autocompleter (@Mikkel Paulson)

feature #30959 [FrameworkBundle] [TwigBundle] Move the hinclude key away from templating (@Simperfit)

feature #30968 [Security] Add Argon2idPasswordEncoder (@chalasr)

feature #30963 [Serializer] Experimental for ObjectListExtractor (@joelwurtz)

feature #30933 [Routing][ObjectRouteLoader] Allow invokable route loader services (@fancyweb)

feature #30897 [DIC] Add a require env var processor (@mpdude)

feature #30964 [HttpKernel] Add a "short" trace header format, make header configurable (@mpdude)

feature #29935 [DI] Fix bad error message for unused bind under _defaults (@przemyslaw-bogusz)

feature #30962 [DoctrineBridge] Deprecated implicit optimization in DoctrineChoiceLoader (@HeahDude)

feature #30862 [Routing] UrlHelper to get absolute URL for a path (@vudaltsov)

feature #30607 [Serializer] Add Support of recursive denormalization on objec _t _populate (@jewome62)

feature #30429 [Form] grou _by as callback returns array (@antonch1989)

feature #30887 [FrameworkBundle] fix search in debug autowiring (@sez-open)

feature #30935 Use env variable to create anytype of lock store (@jderusse)

feature #30932 [Validator] Add an option to disable NotCompromisedPasswordValidator (@lyrixx)

feature #30909 [Translator] Add comments when dumping po files (@deguif)

feature #30913 [Messenger] Uses an AmqpStamp to provide flags and attributes (@sroze)

feature #30900 [Validator] add new Timezone validation constraint (@phansys)

feature #30915 [Serializer] Add datetimezone normalizer (@jewome62)

feature #28937 Improve Translator caching (@rpkamp)

feature #30904 [Serializer] provide new ObjectPropertyListExtractorInterface (@dmaicher)

feature #30902 [Workflow] The TransitionEvent is able to modify the context (@lyrixx)

feature #30908 [Workflow] Added workflo _transitio _blockers twig function (@lyrixx)

feature #30893 Add "input" option to NumberType (@fancyweb, @Bernhard Schussek)

feature #30898 [Validator] Wire NotCompromisedPassword in FrameworkBundle and handle non UTF-8 password (@tgalopin)

feature #30890 [Workflow] Changed initia _places to initia _marking, added property (@HeahDude, @lyrixx)

feature #30906 [symfony/HttpKernel] Throws an error when the generated class name is invalid. (@drupol)

feature #30892 [DomCrawler] Improve Crawler HTML5 parser need detection (@tgalopin)

feature #30901 Renamed NotPwned to NotCompromisedPassword (@javiereguiluz)

feature #30020 [Messenger] Ensure message is handled only once per handler (@keulinho, @sroze)

feature #30545 #30536 PropertyAccessor->getValue disable exception (@dimabory)

feature #30008 [messenger] Adds a stamp to provide a routing key on message publishing (@G15N, @sroze)

feature #29097 [Messenger] Add a "in-memory://" transport (@GaryPEGEOT, @sroze)

feature #30537 [HttpClient] logger integration (@antonch1989, @nicolas-grekas)

feature #30853 [Twig] Remove TemplatedEmail::template() (@fabpot)

feature #30757 [Messenger] Adding MessageCountAwareInterface to get transport message count (@weaverryan)

feature #28929 [HttpKernel][Framework] Locale aware services (@neghmurken)

feature #29306 [DomCrawler] Optionally use html5-php to parse HTML (@tgalopin)

feature #30255 [DependencyInjection] Invokable Factory Services (@zanbaldwin)

feature #30843 [HttpClient] Add ScopingHttpClient::forBaseUri() + tweak MockHttpClient (@nicolas-grekas)

feature #30844 [Cache] add logs on early-recomputation and locking (@nicolas-grekas)

feature #30520 [RouterDebugCommand] add link to Controllers (@nicoweb)

feature #30212 [DI] Add support for "wither" methods - for greater immutable services (@nicolas-grekas)

feature #30674 [FrameworkBundle] change the way http clients are configured by leveraging ScopingHttpClient (@nicolas-grekas)

feature #29312 [EventDispatcher] Split events across requests (@ro0NL)

feature #30827 [TwigBridge] Add template file link to debug:twig command (@yceruto)

feature #30826 [Form] Add file links for described classes in debug:form command (@yceruto)

feature #30813 New PHPUnit assertions for the WebTestCase (@Pierstoval, @fabpot)

feature #27738 [Validator] Add a HaveIBeenPwned password validator (@dunglas)

feature #30690 Changing messenger bus id from 'messag _bus' to 'messenger.defaul _bus' (@THERAGE Kévin)

feature #30810 [Inflector] remove "internal" marker from the component (@nicolas-grekas)

feature #26890 [Inflector] Support pluralization in the inflector (@mbabker)

feature #28637 [Validator] add number constraints (@jschaedl)

feature #30754 [Messenger] New messenger:stop-workers Command (@weaverryan)

feature #30707 [Messenger][DX] Allow stamps to be passed directly to MessageBusInterface::dispatch() (@weaverryan)

feature #29007 [Messenger] Add a Doctrine transport (@vincenttouzet)

feature #30628 Making the serializer configurable by transport (@weaverryan)

feature #30569 [FrameworkBundle][HttpKernel] Provide intuitive error message when a controller fails because it's not registered as a service (@moynzzz)

feature #26484 [Validator] String normalization options for string-based validators (@renan-taranto)

feature #30320 [Form][TwigBridge] Add ro _attr to form theme (@alexander-schranz)

feature #30371 [OptionsResolver] Add a new method addNormalizer and normalization hierarchy (@yceruto)

feature #27735 [Validator][DoctrineBridge][FWBundle] Automatic data validation (@dunglas)

feature #30758 [PropertyAccess] Allow Can Accessor in Property Access (@ragboyjr)

feature #30116 [Filesystem] Fix mirroring a directory into itself or in his child with realpath checks (@Fleuv, @XuruDragon)

feature #28879 [Debug] Mimic toString php behavior in FlattenException (@Deltachaos)

feature #29495 [Ldap] Implement pagination (@kevans91)

feature #29448 [Ldap] Entry move support (@kevans91)

feature #30741 Add the Mailer component (@fabpot)

feature #30780 Fix some exception previous type hints (@fabpot)

feature #30729 [HttpKernel] change $previous argument for HttpException to Throwable (@sGy1980de)

feature #30744 [Finder] Throw a dedicated exception for non-existing directory (@xelan)

feature #30759 [Messenger] Adding the "sync" transport to call handlers synchronously (@weaverryan)

feature #30772 [Contracts][EventDispatcher] move the Event class to symfony/contracts (@nicolas-grekas)

feature #30708 [Messenger] ReceiverInterface::handle() to get() & Worker with prioritized transports (@weaverryan)

feature #27648 [Lock] Added MongoDBStore (@Joe Bennett)

feature #30752 [HttpClient] use "nyholm/psr7" by default in Psr18Client (@nicolas-grekas)

feature #30671 Add optional parameter prefetching for AMQP connection (@fbouchery)

feature #25707 [DI] ServiceProviderInterface, implementation for ServiceLocator (@kejwmen)

feature #30606 [Validator] allow brackets in the optional query string (@Emmanuel BORGES)

feature #29476 [Messenger] Add a command to setup transports (@vincenttouzet)

feature #30719 [Mime] Add BodyRendererInterface (@fabpot)

feature #30664 [Finder] Get filename without extension (@antonch1989)

feature #30645 Alias for each assets package (@gpenverne)

feature #30706 [PropertyInfo] Add possibility to extract private and protected properties in reflection extractor (@joelwurtz)

feature #27808 [DI] Deprecate non-string default envs (@ro0NL)

feature #30691 [Contracts][EventDispatcher] add EventDispatcherInterface to symfony/contracts and use it where possible (@nicolas-grekas)

feature #20978 [Form] TransformationFailedException: Support specifying message to display (@ogizanagi)

feature #30676 Avoid dispatching SendMessageToTransportsEvent on redeliver (@weaverryan)

feature #26555 [Validator] Add constraint on unique elements collection(AssertUnique) (@zenmate, @nicolas-grekas)

feature #27684 [FrameworkBundle] Debug container environment variables (@ro0NL)

feature #30666 [Form][Console] Use dumper (@ro0NL)

feature #30559 [HttpClient] Parse common API error formats for better exception messages (@dunglas)

feature #28898 [Console] Add dumper (@ro0NL)

feature #30629 [HttpClient] added CachingHttpClient (@fabpot)

feature #30602 [BrowserKit] Add support for HttpClient (@fabpot, @THERAGE Kévin)

feature #30651 Allow user to set the project dir (@tdutrion)

feature #30654 [HttpClient] Add a ScopingHttpClient (@XuruDragon)

feature #30388 [Security] undeprecate the RoleHierarchyInterface (@xabbuh)

feature #30652 Fixing a bug where messenger:consume could send message to wrong bus (@weaverryan)

feature #30650 Dispatching two events when a message is sent & handled (@weaverryan)

feature #30557 [Messenger] Worker events + global retry functionality (@weaverryan)

feature #30468 [Workflow] Added support for many inital places (@lyrixx)

feature #30448 [Finder] Ignore paths from .gitignore #26714 (@amaabdou)

feature #30625 [HttpKernel] add RealHttpKernel: handle requests with HttpClientInterface (@fabpot)

feature #30508 [Routing] Exposed "utf8" option, defaults "locale" and "format" in configuration (@Jules Pietri)

feature #28920 [EventDispatcher] swap arguments of dispatch() to allow registering events by FQCN (@nicolas-grekas)

feature #30605 [Cache] added DSN support for rediss in AbstractAdapter and RedisTrait (@alex-vasilchenko-md)

feature #30604 [HttpClient] add MockHttpClient (@nicolas-grekas)

feature #21035 [FrameworkBundle] Deprecate the Templating component integration (@dunglas, @fabpot)

feature #30567 [HttpClient] exceptions carry response (@antonch1989)

feature #28849 [Messenger] Support for handling messages after current bus is finished (@Nyholm)

feature #29538 [Workflow] Add colors to workflow dumps (@alexislefebvre)

feature #28975 [DI] Add an url EnvProcessor (@jderusse)

feature #30419 [FrameworkBundle] Add integration of http-client component (@Ioni14, @nicoweb)

feature #30583 [Messenger] Display a nice error when connection fail (@lyrixx)

feature #30450 [Profiler] Render the performance graph with SVG (@Tom32i)

feature #29130 [Serializer] Normalize constraint violation parameters (@ogizanagi)

feature #28330 [MonologBridge] Add monolog processors adding route and command info (@trakos)

feature #30339 [Monolog] Disable DebugLogger in CLI (@lyrixx)

feature #30584 [Intl] Add compile binary (@ro0NL)

feature #30579 Using AMQP auto-setup in all cases, not just in debug (@weaverryan)

feature #30348 [DependencyInjection] Add ability to define an index for service in an injected service locator argument (@XuruDragon, @nicolas-grekas)

feature #30469 Create a hyperlink to interfaces/classes that can be autowired (@SerkanYildiz)

feature #30334 [DI] add ReverseContainer: a locator that turns services back to their ids (@nicolas-grekas)

feature #30539 [Messenger] deprecate LoggingMiddleware in favor of providing a logger to SendMessageMiddleware (@nicolas-grekas)

feature #30556 [HttpClient] Allow to pass user/pw as an array (@dunglas)

feature #30547 [HttpClient] Add new bearer option (@dunglas)

feature #29303 [Messenger] add welcome notice when running the command (@nicolas-grekas)

feature #30541 [BrowserKit] Rename Client to Browser (@fabpot)

feature #30504 [DI] replace "nullable" env processor by improving the "default" one (@nicolas-grekas)

feature #30499 [HttpClient] add ResponseInterface::toArray() (@nicolas-grekas)

feature #30472 [Translation] Add XLIFF 1 source to metadata to differentiate from attr (@ostrolucky)

feature #30484 [Mime] added Headers::toArray() (@fabpot)

feature #30482 [Mime] Fix support for date form parts (@fabpot)

feature #30385 [SecurityBundle] Validate the IPs configured in acces _control (@javiereguiluz)

feature #30413 [HttpClient][Contracts] introduce component and related contracts (@nicolas-grekas)

feature #30377 [Validator] add MIR card scheme (@antonch1989)

feature #29146 [Workflow] Added a context to Workflow::apply() (@lyrixx)

feature #30433 [Form] Allow to disable and customize PercentType symbol (@Ken Stanley, @OskarStark)

feature #30408 [HttpKernel] Better exception page when the invokable controller returns nothing (@dimabory)

feature #30325 [HttpKernel] Prevent search engines from indexing dev applications (@GaryPEGEOT)

feature #30390 [FrameworkBundle] Fix UrlGenerator::generate to return an empty string instead of null (@Emmanuel BORGES)

feature #30375 [Messenger] Added transport agnostic exception (@nikossvnk, @lolmx)

feature #29254 [FrameworkBundle] Added the condition routing option to the debug router command (@soufianZantar)

feature #30286 Drop more usages of Serializable (@nicolas-grekas)

feature #30379 [FrameworkBundle][Routing] allow boolean container parameters for routes (@dmaicher)

feature #29661 [Filesystem] Support resources and deprecate using arrays in dumpFile() and appendToFile() (@thewilkybarkid)

feature #30358 [Form] be able to specify the input format for times (@xabbuh)

feature #30416 Mime messages (@fabpot)

feature #22048 [Security] deprecate the Role and SwitchUserRole classes (@xabbuh)

feature #30345 [Monolog] Added a way to configure the ConsoleFormatter from the ConsoleHandler (@lyrixx)

feature #30357 [TwigBridge] rename paren _form() to for _parent() (@xabbuh)

feature #30257 [DependencyInjection] Allow to choose an index for tagged collection (@deguif, @XuruDragon)

feature #30311 [VarDumper] Implement DsCaster (@enumag)

feature #27570 [PropertyInfo] Added support for extract type from default value (@tsantos84)

feature #28919 [DX][WebProfilerBundle] Add Pretty Print functionality for Request Content (@SamFleming)

feature #28723 [Form] deprecate custom formats with HTML5 widgets (@xabbuh)

feature #29865 [Console] Added suggestions for missing packages (@przemyslaw-bogusz)

feature #30301 [VarDumper] add link to source next to class names (@nicolas-grekas)

feature #30225 publish message with custom queue options : flags | attributes (@fedor.f, @insidestyles)

feature #30249 [Routing] deprecate some router options (@Tobion)

feature #30267 [Form] add option to render NumberType as type="number" (@xabbuh)

feature #28969 [Form] deprecate using invalid names for buttons (@xabbuh)

feature #29887 [Form] Add inpu _format option to DateType and DateTimeType (@fancyweb)

feature #30051 Drop Serializable implementations (@renanbr)

feature #30236 Add element to ghost in Exception (@przemyslaw-bogusz)

feature #30120 [FrameworkBundle][Translation] Added support for PHP files with trans() in translation commands (@yceruto)

feature #28812 [Form] add a convenience method to get the parent form in Twig templates (@xabbuh)

feature #29121 [FrameworkBundle][Translation] Add support for Translator paths, Twig paths and Translator aware services paths in commands (@yceruto)

feature #28477 [Validator] Add new json Validator (@zairigimad)

feature #30126 [Form] forward valid numeric values to transform() (@xabbuh)

feature #28635 [Form] Add labe _translatio _parameters, hel _translatio _parameters and att _translatio _parameters options to base form type (@webnet-fr)

feature #29767 Nullable environment variable processor (@bpolaszek)

feature #30111 [SecurityBundle] Deprecate the normalization of the cookie names (@javiereguiluz)

feature #30027 [FrameworkBundle] Add si _length and si _bit _pe _character session ini options in session configuration (@XuruDragon)

feature #30075 [DependencyInjection] Added information about deprecated aliases in debug:autowiring (@XuruDragon)

feature #30024 [Debug] Display more details in the simple error page of Debug (@javiereguiluz)

feature #30052 [Security] Replace serialization API (@renanbr)

feature #27898 [Yaml] Fixed invalid Parser behavior (@guiguiboy)

feature #29753 [Console] Add an iterate method to the ProgressBar class (@jvasseur)

feature #29999 [PropertyAccess] speed up accessing object properties (@xabbuh)

feature #29641 [Validator] NotBlank: add a new option to allow null values (@dunglas)

feature #28721 [Form] deprecate some options for singl _text widgets (@xabbuh)

feature #29936 [Mime] Add a set of default content-types for some extensions (@fabpot)

feature #28865 [Routing] allow using compiled matchers and generators without dumping PHP code (@nicolas-grekas)

feature #29236 [Cache] deprecate all PSR-16 adapters, provide Psr16Cache instead (@nicolas-grekas)

feature #29958 introducing native php serialize() support for Messenger transport (@weaverryan, @xabbuh)

feature #29861 [Form][TwigBridge] Add hel _html (@mpiot)

feature #29968 [DI] Added support for deprecating aliases (@j92, @Renan)

feature #29850 [FrameworkBundle] xliff-version option to translation update command (@andrewwro)

feature #29896 [Mime] Add the component (@fabpot)

feature #29862 Add block prefix to csrf token field (@alexander-schranz)

feature #29881 [BrowserKit] Various changes to the Response class (@fabpot)

feature #29813 [FrameworkBundle] Remove ControllerTrait::isFormValid() (@lyrixx)

feature #29148 Load original file metadata when loading Xliff 1.2 files (@eternoendless)

feature #29840 [FrameworkBundle] pass project dir into the assets install command (@xabbuh)

feature #29821 [VarDumper] add caster for OpenSSL X.509 resources (@nicolas-grekas)

feature #29781 [DI] Add trim env processor (@ogizanagi)

feature #28902 [Debug] Detect virtual methods using @method (@ro0NL)

feature #29780 [Profiler] Still show locale and fallback locale even if no trans used (@ogizanagi)

feature #29680 [Form] Add new bloc _prefix option for an easy form theming (@yceruto)

feature #29528 [DebugBundle] Added 'theme' option to change the color of dump() when rendered inside templates (@dem3trio)

feature #24576 [FrameworkBundle] Added ControllerTrait::isFormValid (@lyrixx)

feature #29483 [HttpKernel] Set the default locale early (@thewilkybarkid)

feature #29186 [HttpKernel] Increase priority of AddRequestFormatsListener (@thewilkybarkid)

feature #29658 [Validator] Choices constraint improvement (@nikophil)

feature #29283 [Serializer] CsvEncoder no header option (encode / decode) (@redecs)

feature #29718 [PHPUnit bridge] Bump php version of PHPUnit-bridge (@gmponos)

feature #29599 [Routing] Allow force-generation of trailing parameters using eg "/exports/news.{ _format}" (@zavulon)

feature #29613 [VarDumper] Use hyperlinks in CliDescriptor (@ogizanagi)

feature #28581 [DomCrawler] return empty string on Crawler::text() and Crawler::html() instead of an exception (@respinoza)

feature #29286 [WebProfilerBundle] Enable translation filters (@ro0NL)

feature #29517 [Hackday][Messenger] Add an alias for transport.symfon _serializer so SerializerInterface can be autowired (@karser)

feature #29108 [DI] compute autowiring error messages lazily (@nicolas-grekas)

feature #29235 [VarDumper] add support for links in CliDumper (@nicolas-grekas)

feature #29541 [FrameworkBundle] Stop calling Kernel::boot() twice in cli (@chalasr)

feature #28931 [PhpUnitBridge] Added ClassExistsMock (@ro0NL)

feature #29504 [Validator] Add support for UATP card validation (@raulfraile)

feature #29168 [Console] Add hyperlinks support (@ostrolucky)

feature #29439 [PhpUnitBridge] install PHPUnit 7 on PHP 7.1 and fix requir. for PHPUnit 6 (@gregurco)

feature #29452 [Form] Shortcut debug:form for partial type name (@ro0NL)

feature #28954 [Debug] Mark ErrorHandler and ExceptionHandler classes as final (@fancyweb)

feature #28479 [Validator] Checking a BIC along with an IBAN (@sylfabre)

feature #28858 [DI] Deprecated using env vars with cannotBeEmpty() (@ro0NL)

feature #28976 [DI] Add a "default" EnvProcessor (@jderusse)

feature #29127 [DomCrawler] Added return of element name in extract() method (@andrey-helldar)

feature #29145 [Workflow] Trigger entered event for subject entering in the Workflow for the first time (@lyrixx)

Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy. 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.