Symfony 4.1.0-BETA1 released

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.

Comments

nice!
Nice new features, especially the i18n routing :)

It seems some stuff is too much parsed in the blog post, eg. "CODE_OF_CONDUCT.md" => "COD _O _CONDUCT.md" or "choice_translation_locale" => "choic _translatio _locale".
are there any chances to get updated offline (pdf) documentation for 4.1? pdf documentation was not updated for some time.

Comments are closed.

To ensure that comments stay relevant, they are closed for old posts.