May 7, 2018 Fabien Potencier

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

feature #26945 [Messenger] Support configuring messages when dispatching (@ogizanagi)

feature #27168 [HttpKernel] Add Kernel::getAnnotatedClassesToCompile() (@nicolas-grekas)

feature #27170 Show the deprecations tab by default in the logger panel (@javiereguiluz)

feature #27130 [Messenger] Add a new time limit receiver (@sdelicata)

feature #27104 [DX] Redirect to proper Symfony version documentation (@noniagriconomie)

feature #27105 [Serializer] Add ->hasCacheableSupportsMethod() to CacheableSupportsMethodInterface (@nicolas-grekas)

feature #24896 Add COD _O _CONDUCT.md (@egircys)

feature #27092 [Workflow] "clear()" instead of "reset()" (@nicolas-grekas)

feature #26655 [WebProfilerBundle] Make WDT follow ajax requests if header set (@jeffreymb)

feature #27049 [Serializer] Cache the normalizer to use when possible (@dunglas, @nicolas-grekas)

feature #27062 [SecurityBundle] Register a UserProviderInterface alias if one provider only (@sroze)

feature #27065 [DI][Routing] Allow invokable objects to be used as PHP-DSL loaders (@aurimasniekis)

feature #26975 [Messenger] Add a memory limit option for ConsumeMessagesCommand (@sdelicata)

feature #26864 [Messenger] Define multiple buses from the framework.messenger.buses configuration (@sroze)

feature #27017 [Serializer] Allow to access to the context and various other infos in callbacks and max depth handler (@dunglas)

feature #26832 [MonologBridge] Added WebSubscriberProcessor to ease processor configuration (@lyrixx)

feature #24699 [HttpFoundation] Add HeaderUtils class (@c960657)

feature #26791 [BrowserKit] Bypass Header Informations (@cfjulien)

feature #26825 [Form] Add choic _translatio _locale option for Intl choice types (@yceruto, @fabpot)

feature #26921 [DI][FrameworkBundle] Hide service ids that start with a dot (@nicolas-grekas)

feature #23659 [HttpKernel] LoggerDataCollector: splitting logs on different sub-requests (@vtsykun)

feature #26768 [DI] Allow autoconfigured calls in PHP (@Gary PEGEOT, @GaryPEGEOT)

feature #26833 [HttpKernel] Added support for timings in ArgumentValueResolvers (@iltar)

feature #26770 Do not normalize array keys in twig globals (@lstrojny)

feature #26787 [Security] Make security.providers optional (@MatTheCat)

feature #26970 [VarDumper] Add dd() helper == dump() + exit() (@nicolas-grekas)

feature #26941 [Messenger] Allow to configure the transport (@sroze)

feature #26632 [Messenger] Add AMQP adapter (@sroze)

feature #26863 [Console] Support iterable in SymfonyStyle::write/writeln (@ogizanagi)

feature #26847 [Console] add support for iterable in output (@Tobion)

feature #26660 [SecurityBundle] allow using custom function inside allo _if expressions (@dmaicher)

feature #26096 [HttpFoundation] Added a migrating session handler (@rossmotley)

feature #26528 [Debug] Support any Throwable object in FlattenException (@derrabus)

feature #26811 [PhpUnitBridge] Search for other SYMFON _ env vars in phpunit.xml then phpunit.xml.dist (@lyrixx)

feature #26800 [PhpUnitBridge] Search for SYMFON _PHPUNI _REMOVE env var in phpunit.xml then phpunit.xml.dist (@lyrixx)

feature #26684 [Messenger] Remove the Doctrine middleware configuration from the FrameworkBundle (@sroze)

feature #21856 [LDAP] Allow adding and removing values to/from multi-valued attributes (@jean-gui)

feature #26767 [Form] ability to set rounding strategy for MoneyType (@syastrebov)

feature #23707 [Monolog Bridge][DX] Add a Monolog activation strategy for ignoring specific HTTP codes (@simshaun, @fabpot)

feature #26685 [Messenger] Add a MessageHandlerInterface (multiple messages + auto-configuration) (@sroze)

feature #26648 [Messenger] Added a middleware that validates messages (@Nyholm)

feature #26475 [HttpFoundation] split FileException into specialized ones about upload handling (@fmata)

feature #26702 Mark ExceptionInterfaces throwable (@ostrolucky)

feature #26656 [Workflow][Registry] Added a new 'all' method (@alexpozzi, @lyrixx)

feature #26693 [Console] Add box-double table style (@maidmaid)

feature #26698 [Console] Use UTF-8 bullet for listing (@ro0NL)

feature #26682 Improved the lint:xliff command (@javiereguiluz)

feature #26681 Allow to easily ask Symfony not to set a response to private automatically (@Toflar)

feature #26627 [DI] Add runtime service exceptions to improve the error message when controller arguments cannot be injected (@nicolas-grekas)

feature #26504 [FrameworkBundle] framework.ph _errors.log now accept a log level (@Simperfit)

feature #26498 Allow "json:" env var processor to accept null value (@mcfedr)

feature #25928 [DI] Allow binary values in parameters. (@bburnichon)

feature #26647 [Messenger] Add a middleware that wraps all handlers in one Doctrine transaction. (@Nyholm)

feature #26668 [WebProfilerBundle] Live duration of AJAX request (@ostrolucky)

feature #26650 [Messenger] Clone messages to show in profiler (@Nyholm)

feature #26281 [FrameworkBundle] keep query in redirect (@Simperfit)

feature #26665 Improved the Ajax profiler panel when there are exceptions (@javiereguiluz)

feature #26654 [VarDumper] Provide binary, allowing to start a server at any time (@ogizanagi)

feature #26332 Add a dat _help method in Form (@mpiot, @Nyholm)

feature #26671 More compact display of vendor code in exception pages (@javiereguiluz)

feature #26502 [Form] Add Bootstrap 4 style for field FileType (@zenmate)

feature #23888 [DI] Validate env vars in config (@ro0NL)

feature #26658 Adding support to bind scalar values to controller arguments (@weaverryan)

feature #26651 [Workflow] Added a TransitionException (@andrewtch, @lyrixx)

feature #23831 [VarDumper] Introduce a new way to collect dumps through a server dumper (@ogizanagi, @nicolas-grekas)

feature #26220 [HttpFoundation] Use pars _str() for query strings normalization (@nicolas-grekas)

feature #24411 [Messenger] Add a new Messenger component (@sroze)

feature #22150 [Serializer] Added a ConstraintViolationListNormalizer (@lyrixx)

feature #26639 [SecurityBundle] Added an alias from RoleHierarchyInterface to security.rol _hierarchy (@lyrixx)

feature #26636 [DI] deprecate TypedReference::canBeAutoregistered() and getRequiringClass() (@nicolas-grekas)

feature #26445 [Serializer] Ignore comments when decoding XML (@q0rban)

feature #26284 [Routing] allow no-slash root on imported routes (@nicolas-grekas)

feature #26092 [Workflow] Add a MetadataStore to fetch some metadata (@lyrixx)

feature #26121 [FrameworkBundle] feature: add the ability to search a route (@Simperfit)

feature #25197 [FrameworkBundle][TwigBridge] make csr _token() usable without forms (@xabbuh)

feature #25631 [DI] Service decoration: autowire the inner service (@dunglas)

feature #26076 [Workflow] Add transition blockers (@d-ph, @lyrixx)

feature #24363 [Console] Modify console output and print multiple modifyable sections (@pierredup)

feature #26381 Transform both switchToXHR() and removeXhr() to xmlHttpRequest() (@Simperfit)

feature #26449 Make ProgressBar::setMaxSteps public (@ostrolucky)

feature #26308 [Config] Introduce BuilderAwareInterface (@ro0NL)

feature #26518 [Routing] Allow inline definition of requirements and defaults (@nicolas-grekas)

feature #26143 [Routing] Implement i18n routing (@frankdejonge, @nicolas-grekas)

feature #26564 [HttpFoundation] deprecate call to Request::getSession() when Request::hasSession() returns false (@fmata)

feature #26408 Readd 'for _labe _errors' block to disable errors on form labels (@birkof)

feature #25456 [Console] Make pretty the box style table (@maidmaid)

feature #26499 [FrameworkBundle] Allow fetching private services from test clients (@nicolas-grekas)

feature #26509 [BrowserKit] Avoid nullable values in some Client's methods (@ossinkine)

feature #26288 [FrameworkBundle] show the unregistered command warning at the end of the list command (@Simperfit)

feature #26520 Added some HTML5 features to the Symfony Profiler (@javiereguiluz)

feature #26398 [WebProfilerBundle] Display the missing translation panel by default (@javiereguiluz)

feature #23409 [Security] AuthenticationUtils::getLastUsername() return type inconsistency (@vudaltsov)

feature #26439 [Console] [DX] Fix command description/help display (@noniagriconomie)

feature #26372 Revert "feature #24763 [Process] Allow writing portable "prepared" command lines (Simperfit)" (@nicolas-grekas)

feature #26223 [FrameworkBundle] Add command to delete an item from a cache pool (@pierredup)

feature #26341 Autoconfigure service locator tag (@apfelbox)

feature #26330 [FORM] Fix HTML errors. (@Nyholm)

feature #26334 [SecurityBundle] Deprecate switc _user.stateless config node (@chalasr)

feature #26304 [Routing] support scheme requirement without redirectable dumped matcher (@Tobion)

feature #26283 [Routing] Redirect from trailing slash to no-slash when possible (@nicolas-grekas)

feature #25732 [Console] Add option to automatically run suggested command if there is only 1 alternative (@pierredup)

feature #26085 Deprecate bundle:controller:action and service:method notation (@Tobion)

feature #26175 [Security] Add configuration for Argon2i encryption (@CoalaJoe)

feature #26075 [Validator] Deprecate use of Locale validation constraint without setting "canonicalize" option to true (@phansys)

feature #26218 [MonologBridge] Allow to change level format in ConsoleFormatter (@ostrolucky)

feature #26232 [Lock] Add a TTL to refresh lock (@jderusse)

feature #26108 [Serializer] Add a MaxDepth handler (@dunglas)

feature #24778 [BrowserKit] add a way to switch to ajax for one request (@Simperfit)

feature #25605 [PropertyInfo] Added support for extracting type from constructor (@lyrixx)

feature #24763 [Process] Allow writing portable "prepared" command lines (@Simperfit)

feature #25218 [Serializer] add a constructor arguement to return csv always as collection (@Simperfit)

feature #25369 [Serializer] add a context key to return always as collection for XmlEncoder (@Simperfit)

feature #26213 [FrameworkBundle] Add support to 307/308 HTTP status codes in RedirectController (@ZipoKing)

feature #26149 Added support for name on the unit node (@Nyholm)

feature #24308 [Validator] support protocolless urls validation (@MyDigitalLife)

feature #26059 [Routing] Match 77.7x faster by compiling routes in one regexp (@nicolas-grekas)

feature #22447 [WebProfilerBundle] Imply forward request by a new X-Previous-Debug-Token header (@ro0NL)

feature #26152 [Intl] Add polyfill for Locale::canonicalize() (@nicolas-grekas)

feature #26073 [DoctrineBridge] Add support for datetime immutable types in doctrine type guesser (@jvasseur)

feature #26079 [Workflow] Remove constraints on transition/place name + Updated Dumper (@lyrixx)

feature #23617 [PropertyInfo] Add hassers for accessors prefixes (@sebdec)

feature #25997 Always show all deprecations except legacy ones when not weak (@greg0ire)

feature #25582 [Form] Support DateTimeImmutable (@vudaltsov)

feature #24705 [Workflow] Add PlantUML dumper to workflow:dump command (@Plopix)

feature #24508 [Serializer] Fix security issue on CsvEncoder about CSV injection (@welcoMattic)

feature #25772 [Security] The AuthenticationException should implements Security's ExceptionInterface (@sroze)

feature #25164 [WebProfilerBundle] Improve controller linking (@ro0NL)

feature #22353 [Validator] Add canonicalize option for Locale validator (@phansys)

feature #26036 Added support for getting default values in Accept headers (@javiereguiluz)

feature #25780 [TwigBundle] Deprecating "false" in favor of "kernel.debug" as default value of "stric _variable" (@yceruto)

feature #23508 Deprecated the AdvancedUserInterface (@iltar)

feature #24781 [HttpFoundation] RedisSessionHandler (@dkarlovi)

feature #26028 Unwrap errors in FlattenException (@derrabus)

feature #25892 Adding an array adapter (@weaverryan)

feature #24894 [FrameworkBundle] add a notice when passing a routerInterface without warmupInterface in RouterCacheWarmer (@Simperfit)

feature #24632 [DependencyInjection] Anonymous services in PHP DSL (@unkind)

feature #25836 [HttpKernel] Make session-related services extra-lazy (@nicolas-grekas)

feature #25775 Introduce signaled process specific exception class (@Soullivaneuh)

feature #22253 [Config] allow changing the path separator (@bburnichon)

feature #25493 [Serializer] defaul _constructo _arguments context option for denormalization (@Nek-)

feature #25839 [SecurityBundle] Deprecate i _memory.user abstract service (@chalasr)

feature #24392 Display orphaned events in profiler (@kejwmen)

feature #25275 [DI] Allow for invokable event listeners (@ro0NL)

feature #25627 [DI] Add a simple CSV env var processor (@dunglas)

feature #25092 [Security] #25091 add target user to SwitchUserListener (@jwmickey)

feature #24777 [TwigBundle] Added priority to twig extensions (@Brunty)

feature #25710 [FrameworkBundle] add cache.app.simple psr simple cache (@dmaicher)

feature #25669 [Security] Fail gracefully if the security token cannot be unserialized from the session (@thewilkybarkid)

feature #25504 [Validator] Add option to pass custom values to Expression validator (@ostrolucky)

feature #25701 [FrameworkBundle] add autowiring aliases for TranslationReaderInterface, ExtractorInterface & TranslationWriterInterface (@Dennis Langen)

feature #25516 [Validator] Deprecated "checkDNS" option in Url constraint (@ro0NL)

feature #25588 Move SecurityUserValueResolver to security-http (@chalasr)

feature #25629 [Process] Make PhpExecutableFinder look for the PH _BINARY env var (@nicolas-grekas)

feature #25562 allow autowire for htt _utils class (@do-see)

feature #25478 [FrameworkBundle] add emai _validatio _mode option (@xabbuh)

feature #25366 [HttpKernel] Decouple exception logging from rendering (@ro0NL)

feature #25450 [PropertyAccess] add more information to NoSuchPropertyException Message (@Simperfit)

feature #25148 Pr/workflow name as graph label (@shdev)

feature #25324 [HttpFoundation] Incorrect documentation and method name for UploadedFile::getClientSize() (@Simperfit)

feature #24738 [FrameworkBundle][Routing] Use a PSR-11 container in FrameworkBundle Router (@ogizanagi)

feature #25439 Add ControllerTrait::getParameter() (@chalasr)

feature #25332 [VarDumper] Allow VarDumperTestTrait expectation to be non-scalar (@romainneutron)

feature #25301 [Console] Add box style table (@maidmaid)

feature #25415 [FrameworkBundle] Add atom editor to ide config (@lexcast)

feature #24442 [Validator] Html5 Email Validation (@PurpleBooth)

feature #25288 [DI][FrameworkBundle] Add PSR-11 "ContainerBag" to access parameters as-a-service (@nicolas-grekas, @sroze)

feature #25290 [FrameworkBundle] debug:autowiring: don't list FQCN when they are aliased (@nicolas-grekas)

feature #24375 [Serializer] Serialize and deserialize from abstract classes (@sroze)

feature #25346 [DoctrineBridge] DoctrineDataCollector comments the non runnable part of the query (@Simperfit)

feature #24216 added clean option to assets install command (@robinlehrmann)

feature #25142 [Process] Create a "isTtySupported" static method (@nesk)

feature #24751 [Workflow] Introduce a Workflow interface (@Simperfit)

feature #25293 [Routing] Parse PHP constants in YAML routing files (@ostrolucky)

feature #25295 [Translation] Parse PHP constants in YAML translation files (@ostrolucky)

feature #25294 [Serializer] Parse PHP constants in YAML mappings (@ostrolucky)

feature #24637 [FrameworkBundle] Improve the DX of TemplateController when using SF 4 (@dunglas)

feature #25178 [Routing] Allow to set name prefixes from the configuration (@sroze)

feature #25237 [VarDumper] add a GMP caster in order to cast GMP resources into string or integer (@Simperfit)

feature #25166 [WebProfilerBundle] Expose dotenv variables (@ro0NL)

feature #24785 [Profiler][Translation] Logging false by default and desactivated when using the profiler (@Simperfit)

feature #24826 [FrameworkBundle] Allow to pass a logger instance to the Router (@ogizanagi)

feature #24937 [DependencyInjection] Added support for variadics in named arguments (@PabloKowalczyk)

feature #24819 [Console] add setInputs to ApplicationTester and share some code (@Simperfit)

feature #25131 [SecurityBundle][Security][Translation] trigger some deprecations for legacy methods (@xabbuh)

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.