November 3, 2018 Fabien Potencier

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

feature #28622 [VarDumper] add caster for Memcached (@jschaedl)

feature #29042 [DI] use filte _var() instead of XmlUtils::phpize() in EnvVarProcessor (@nicolas-grekas)

feature #29047 Revert "[HttpFoundation] Adds getAcceptableFormats() method for Request" (@Tobion)

feature #29046 [Bridge/Doctrine] remove workarounds from the past (@nicolas-grekas)

feature #29022 [Cache] allow to skip saving the computed value when using CacheInterface::get() (@nicolas-grekas)

feature #29010 [Messenger] make senders and handlers subscribing to parent interfaces receive all matching messages, wildcard included (@nicolas-grekas)

feature #29006 [Messenger] make TraceableMiddleware decorate a StackInterface instead of each middleware to free the callstack from noisy frames (@nicolas-grekas)

feature #28970 [FrameworkBundle] make debug:autowiring list useful services and their description (@nicolas-grekas)

feature #28952 [Translation] allow using the ICU message format using domains with the "+intl-icu" suffix (@nicolas-grekas)

feature #27914 [Security][SecurityBundle] Add voter individual decisions to profiler (@l-vo)

feature #28985 [Messenger] Move MiddlewareTestCase in Test ns (@ogizanagi)

feature #28892 [FrameworkBundle] Deprecate support for legacy directories in Translation comands (@chalasr)

feature #28854 [VarDumper] Scroll into view when searching (@ro0NL)

feature #28997 [FrameworkBundle] Deprecating support for legacy translations directory (@yceruto)

feature #28983 [Messenger] make dispatch(), handle() and send() methods return Envelope (@nicolas-grekas)

feature #28533 [DotEnv] Add a new loadForEnv() method mimicking Ruby's dotenv behavior (@dunglas)

feature #28943 [Messenger] Add StackInterface, allowing to unstack the call stack (@nicolas-grekas)

feature #28860 [Form] Deprecate TimezoneType regions option (@ro0NL)

feature #28945 [Messenger] remove AllowNoHandlerMiddleware in favor of a constructor argument on HandleMessageMiddleware (@nicolas-grekas)

feature #28947 [Messenger] remove classifying sub-namespaces in favor of semantic ones (@nicolas-grekas)

feature #27917 [Validator] catch any UnexpectedValueException on validation (@xabbuh)

feature #28875 [FWBundle] Add a new method AbstractController::addLink() (@dunglas)

feature #28934 [WebProfilerBundle] Add channel log filter (@ro0NL)

feature #28939 [WebProfilerBundle] Remove application name (@ro0NL)

feature #28709 [Serializer] Refactor and uniformize the config by introducing a default context (@dunglas)

feature #28914 [Messenger] make Envelope first class citizen for middleware handlers (@nicolas-grekas)

feature #28909 [Messenger] made dispatch() and handle() return void (@nicolas-grekas)

feature #28936 [WebProfilerBundle] Replay referer URL (@ro0NL)

feature #28893 [TwigBundle] Fix usage of TwigBundle without FrameworkBundle (@tgalopin)

feature #28891 [TwigBundle] Deprecating support for legacy templates directories (@yceruto)

feature #28911 [Messenger] rename "envelope items" and move them in the "Stamp" namespace (@nicolas-grekas)

feature #27043 [Form][TwigBridge] Add hel _attr (@mpiot)

feature #28810 [HttpKernel] Deprecate usage of getRootDir() and kernel.roo _dir (@fabpot)

feature #28809 [HttpKernel] Deprecate the Kernel name (@fabpot)

feature #28807 [HttpFoundation] Make ResponseHeaderBag::makeDisposition static (@fabpot)

feature #28842 [Validator] Deprecate checkMX and checkHost on Email validator (@fabpot)

feature #28833 [Intl] Blacklist invalid languages (@ro0NL)

feature #28815 YamlEncoder handle yml format (@kevin-biig)

feature #27742 [Process] Add feature "wait until callback" to process class (@Nek-)

feature #28713 [Cache] added support for connecting to Redis clusters via DSN (@nicolas-grekas)

feature #24263 Filter logs by level (@ro0NL)

feature #24151 Display the log context in the debug pages (@javiereguiluz)

feature #26261 [Validator] Improvement: provide file basename for constr. violation messages in FileValidator. (@TheCelavi)

feature #26324 [Form] allow additional http methods in form configuration (@alekitto)

feature #26771 [Filesystem] Fix mirroring a directory with a relative path and a custom iterator (@fxbt)

feature #27291 [OptionsResolver] Added support for nesting options definition (@yceruto)

feature #27261 [VarDumper] Allow to use a light theme out of the box (@ogizanagi)

feature #27967 [Finder] Added a way to inverse a previous sorting (@lyrixx)

feature #28061 [Security] add port in acces _control (@roukmoute)

feature #28476 Added different protocols to be allowed as asset bas _url (@alexander-schranz)

feature #27770 [FrameworkBundle] Moving Cache-related CompilerPass to Cache component (@Korbeil)

feature #28738 [OptionsResolver] Passing Options argument to deprecation closure (@yceruto)

feature #28718 [Cache] add CacheInterface::delete() + improve CacheTrait (@nicolas-grekas)

feature #24530 [Form] simplify the form type extension registration (@xabbuh)

feature #28586 [WebServerBundle] Added ability to display the current hostname address if available when binding to 0.0.0.0 (@respinoza)

feature #28763 [WebProfilerBundle] Extract server parameters into their own tab (@fabpot)

feature #28375 [Translator] Deprecated transChoice and moved it away from contracts (@Nyholm, @nicolas-grekas)

feature #28745 [WebServerBundle] Deprecate relying on --env in server:start and server:run (@chalasr)

feature #28505 [Serialized] allow configuring the serialized name of properties through metadata (@fbourigault)

feature #28669 [Serializer] Object class resolver (@alanpoulain)

feature #28653 [FrameworkBundle] Deprecate the "--env" and "--no-debug" console options (@chalasr)

feature #28693 [Security] Deprecate simpl _preauth and simpl _form in favor of Guard (@chalasr)

feature #28626 [Translation] marked getFallbackLocales() as internal (@boscho87)

feature #28571 [DependencyInjection] Improve ServiceLocatorTagPass service matching (@codedmonkey)

feature #28644 [Validator] Pre-check constraint validator dependencies (@ro0NL)

feature #28661 [Serializer] Add an option to skip null values (@dunglas)

feature #28679 [FrameworkBundle] Add vscode editor to ide config (@lexcast)

feature #28656 When a CSRF occures on a Form submit add a cause on the FormError object (@gmponos)

feature #28588 [Cache] add "setCallbackWrapper()" on adapters implementing CacheInterface for more flexibility (@nicolas-grekas)

feature #28598 [Cache] support configuring multiple Memcached servers in one DSN (@nicolas-grekas)

feature #28447 [HttpFoundation] make cookies auto-secure when passing them $secure=null + plan to make it and samesite=lax the defaults in 5.0 (@nicolas-grekas)

feature #28446 [SecurityBundle] make remember-me cookies auto-secure + inherit their default config from framework.session.cooki _ (@nicolas-grekas)

feature #28417 [VarExporter] add Instantiator::instantiate() to create+populate objects without calling their constructor nor any other methods (@nicolas-grekas)

feature #27819 [Serializer] deprecated normalizers and encoders who dont implement the base interfaces (@rodnaph)

feature #28572 Make it clear that the profiler is for dev only (@fabpot)

feature #28536 Favor LogicException for missing classes & functions (@ro0NL)

feature #28569 [Form] deprecate precision in IntegerToLocalizedStringTransformer (@xabbuh)

feature #28570 [Form] deprecate the unused scale option (@xabbuh)

feature #28566 [VarDumper] add casters for IntlDateFormatter and IntlCalendar (@jschaedl)

feature #28559 [VarDumper] add caster for IntlTimeZone (@jschaedl)

feature #28449 [DependencyInjection] improved message when alias service is not found (@xabbuh)

feature #27434 [Console] Add support for error ouput in the CommandTester (@cdekok)

feature #28555 [VarDumper] add caster for NumberFormatter (@jschaedl)

feature #28538 [Lock] Wrap release exception (@jderusse)

feature #28551 [VarDumper] add caster for MessageFormatter (@nicolas-grekas)

feature #28329 [Debug] Trigger a deprecation for new parameters not defined in sub classes (@GuilhemN)

feature #27920 Add Zookeeper data store for Lock Component (@Ganesh Chandrasekaran)

feature #28317 [VarDumper] Allow dd() to be called without arguments (@SjorsO)

feature #28424 [Ldap] Add verbose ext-ldap error if present for easier debugging (@scaytrase)

feature #28521 [Yaml] Added support for multiple files or directories in LintCommand (@yceruto)

feature #28522 [Translation] Added support for multiple files or directories in XliffLintCommand (@yceruto)

feature #28523 [FrameworkBundle] Register an identity translator as fallback (@yceruto)

feature #28473 [Validator] Check the BIC country with symfony/intl (@sylfabre)

feature #28487 [FrameworkBundle] Ignore backslashes in service ids when using debug:container and debug:autowiring (@respinoza)

feature #28412 [PhpUnitBridge] enable DebugClassLoader by default (@nicolas-grekas)

feature #28416 [FrameworkBundle] bind "ContainerInterface $parameterBag" arguments to the "paramete _bag" service (@nicolas-grekas)

feature #28316 Trigger deprecation notices when inherited class calls parent method but misses adding new arguments (@kevinjhappy)

feature #28373 [Console] Support max column width in Table (@ro0NL)

feature #28422 [VarExporter] throw component-specific exceptions (@nicolas-grekas)

feature #28415 [FrameworkBundle] Deprecate ContainerAwareCommand (@chalasr)

feature #28419 [Messenger] Change AmqpExt classes constructor signature (@fabpot)

feature #28405 [Messenger] Uses a messenger serializer, not an individual encoder/decoder (@sroze)

feature #28298 [WebServerBundle] Add support for Xdebug's Profiler (@maidmaid)

feature #28399 [Messenger] Add a SenderLocator decoupled from ContainerInterface (@fabpot)

feature #27321 [Messenger][Profiler] Trace middleware execution (@ogizanagi)

feature #28400 [Messenger] Add a simple serializer (@fabpot)

feature #28397 [Messenger] Change exceptions to use component's one (@fabpot)

feature #28387 [HttpKernel][Profiler] Add arg value resolver category in performances panel (@ogizanagi)

feature #25015 [Validator] Deprecate validating DateTimeInterface in Date|Time|DateTime constraints (@ro0NL)

feature #28394 [Messenger] Add interfaces to be type-hinted even when not using a Container (@fabpot)

feature #27981 [TwigBridge] Added template "name" argument to debug:twig command to find their paths (@yceruto)

feature #28207 [DI] leverage ContractsService (@nicolas-grekas)

feature #22225 [Console] Support formatted text cutting (@ro0NL)

feature #28206 [Contracts] Add traits+interfaces from the DI component (@nicolas-grekas)

feature #27456 [LOCK] Add a PdoStore (@jderusse)

feature #24297 Feature/doctrine type guesser simple json array support (@iluuu1994)

feature #26859 [Dotenv] add a flag to allow env vars override (@fmata)

feature #26997 [PropertyInfo] Add an extractor to guess if a property is initializable (@dunglas)

feature #27667 [Form][OptionsResolver] Show deprecated options definition on debug:form command (@yceruto)

feature #27021 [Serializer] Allow to access extra infos in name converters (@dunglas)

feature #26923 [FrameworkBundle] Allow user to specify folder for flock (@MaksSlesarenko)

feature #25125 [VarDumper] New env var to select the dump format (@dunglas)

feature #28117 [FrameworkBundle] add class description to debug:container command (@gimler)

feature #28270 [Messenger] Uses Symfony Serializer by default for envelope items (@sroze)

feature #27935 [FrameworkBundle] [Command] TranslationUpdate change default output to xlf (@Alexis BOYER)

feature #28168 Add SameSite cookies to FrameWorkBundle (@rpkamp)

feature #28303 [Process] Add relative path support for PH _BINARY env var of PhpExecutableFinder (@maidmaid)

feature #28096 [Contracts] Add Cache contract to extend PSR-6 with tag invalidation, callback-based computation and stampede protection (@nicolas-grekas)

feature #27399 [Translation] Added intl message formatter. (@aitboudad, @Nyholm)

feature #28315 [DI] Trigger exception when using ' @ id' name in parent option (@Seb33300)

id' name in parent option (@Seb33300) feature #28210 [Contracts] Add TranslationTranslatorInterface + decouple symfony/validator from symfony/translation (@nicolas-grekas)

feature #28331 [FrameworkBundle] Don't populate fallback cache on warmup (@nicolas-grekas)

feature #28264 [VarDumper] make RedisCaster handle RedisCluster and dump all options on all drivers (@nicolas-grekas)

feature #28289 [Serializer] Add support for ignoring comments while XML encoding (@maidmaid)

feature #28294 [Messenger] Remove the "obscure" message subscriber configuration (@sroze)

feature #28271 [Messenger] Allow interfaces to be type-hinted as well (@sroze)

feature #28190 [Messenger] Add a --bus option to the messenger:consume-messages command (@chalasr, @sroze)

feature #28275 [Messenger] Only subscribe to a given bus from the MessageSubscriber (@sroze)

feature #28243 [FrameworkBundle] Deprecate SymfonyBundleFrameworkBundleControllerController (@sroze)

feature #28070 [Translator] Use ICU parent locales as fallback locales (@thewilkybarkid)

feature #28231 [VarExporter] a new component to serialize values to plain PHP code (@nicolas-grekas)

feature #28244 [FrameworkBundle] Added new "auto" mode for framework.session.cooki _secure to turn it on when https is used (@nicolas-grekas)

feature #28277 [Serializer] AbstractObjectNormalizer improve performance (@martiis)

feature #28247 [Messenger] Don't make EnvelopeItemInterface extend Serializable (@nicolas-grekas)

feature #27926 [Serializer] XmlEncoder doesn't ignore PI nodes while encoding (@maidmaid)

feature #27890 Mock date() in ClockMock (@Dominic Tubach)

feature #28218 Improve support for anonymous classes (@nicolas-grekas)

feature #28221 [DomCrawler] Add a way to filter direct children (@Einenlum)

feature #28234 [DI] Allow autowiring by type + parameter name (@nicolas-grekas)

feature #28156 [Serializer] Fix the XML comments encoding (@maidmaid)

feature #28069 [Validator] New DivisibleBy constraint for testing divisibility (@colinodell)

feature #28176 [DI] [FrameworkBundle] Add LoggerAwareInterface to auto configuration (@GaryPEGEOT)

feature #27957 [Routing] Add fallback to cultureless locale for internationalized routes (@fancyweb)

feature #28027 [Config] Rename FileLoaderLoadException to LoaderLoadException (@ProgMiner)

feature #28085 [Config] show proposals when unsupported option is provided (@fmata)

feature #27806 [DI] Allow autoconfiguring bindings (@nicolas-grekas)

feature #21002 [Form] Added options for separate date/time labels in DateTimeType. (@mktcode)

feature #27763 [WebProfilerBundle] Append new ajax request to the end of the list (@BoShurik)

feature #28035 [DomCrawler] Allow using non-absolute base URIs (@javiereguiluz)

feature #28106 [Yaml] save pre _match() calls when possible (@xabbuh)

feature #27678 Allow to configure some options of the profiler interface (@javiereguiluz)

feature #27943 [Security] Deprecate returning stringish objects from Security::getUser (@ro0NL)

feature #27956 Added types and tweaked PHPdoc of clickLink() and submitForm() methods (@javiereguiluz)

feature #27976 [Security] Remember me: allow to set the samesite cookie flag (@dunglas)

feature #27978 [WebProfilerBundle] Show relative path of the template and improving panel view (@yceruto)

feature #27891 [Finder] Allow arrays as parameters of some methods for better fluent experience and code readability (@jfredon)

feature #27829 [DoctrineBridge] Inject the entity manager instead of the class metadata factory in DoctrineExtractor (@dunglas)

feature #27093 Add symfony/contracts: a set of abstractions extracted out of the Symfony components (@nicolas-grekas)

feature #27807 Added new methods submitForm and clickLink to Client class (@nowiko)

feature #27879 [Routing] deprecate non string requirement names (@xabbuh)

feature #26933 [Console] Add title table (@maidmaid)

feature #27697 [ProxyManagerBridge][DI] allow proxifying interfaces with "lazy: SomeProxifiedInterface" (@nicolas-grekas)

feature #27645 [Cache] Add MarshallerInterface allowing to change the serializer, providing a default one that automatically uses igbinary when available (@nicolas-grekas)

feature #27694 [FrameworkBundle][Cache] Allow configuring PDO-based cache pools, with table auto-creation on first use (@nicolas-grekas)

feature #27774 [FrameworkBundle] allow turning routes to utf8 mode by default (@nicolas-grekas)

feature #27821 [Process][Console] deprecated defining commands as strings (@nicolas-grekas)

feature #27320 [Messenger] Activation middleware decorator (@ogizanagi)

feature #27519 [HttpKernel][FrameworkBundle] Turn HTTP exceptions to HTTP status codes by default (@nicolas-grekas)

feature #27020 [Serializer] Allow to access to the format and context in circular ref handler (@dunglas)

feature #27783 [DI] Add ServiceLocatorArgument to generate array-based locators optimized for OPcache shared memory (@nicolas-grekas)

feature #27850 [Security] Allow passing null as $filter in LdapUserProvider to get the default filter (@louhde)

feature #27650 [SecurityBundle] Add json login ldap (@Rudy Onfroy)

feature #27798 [Security] Use AuthenticationTrustResolver in SimplePreAuthenticationListener (@nicolas-grekas)

feature #27801 [MonologBridge] Add ProcessorInterface, enabling autoconfiguration of monolog processors (@nicolas-grekas)

feature #27503 [Serializer] Allow to pass a single value for the groups opt (@dunglas)

feature #27715 [Serializer] Deprecate CsvEncoder a _collection false default value (@ogizanagi)

feature #27768 [VarDumper] display the signature of callables (@nicolas-grekas)

feature #27766 [VarDumper] show proxified class on hover (@nicolas-grekas)

feature #27675 [DoctrineBridge] always load event listeners lazy via ServiceLocator (@dmaicher)

feature #27499 Improved an error message related to controllers (@javiereguiluz)

feature #26300 [PropertyInfo] Implement "Collection" types in PhpDocExtractor (@popy-dev)

feature #26946 [WebProfilerBundle] Display uploaded files in the profiler (@javiereguiluz)

feature #27476 [Config] deprecate tree builders without root nodes (@xabbuh)

feature #27586 [PropertyAccess] Add Property Path to Exception Message (@rodnaph)

feature #27699 Redesigned the default error page in production (@javiereguiluz)

feature #27655 [Translation] Added support for translation files with other filename patterns (@javiereguiluz)

feature #27580 [Form] Add ability to clear form errors (@colinodell)

feature #27247 [Form] Deprecate searchAndRenderBlock returning empty string (@ostrolucky)

feature #27646 [Cache] added support for phpredis 4 compression and tc _keepalive options (@nicolas-grekas)

feature #27605 [DX] Log potential redirect loops caused by forced HTTPS (@colinodell)

feature #27653 [Translation] Improved the performance of the lint:xliff command (@javiereguiluz)

feature #27421 CacheWarmerAggregate handle deprecations logs (@ScullWM)

feature #27611 [FrameworkBundle][SecurityBundle] Moved security expression providers pass logic to SecurityBundle (@HeahDude)

feature #27277 [OptionsResolver] Introduce ability to deprecate options, allowed types and values (@yceruto)

feature #26919 [TwigBridge] Added bundle name suggestion on wrongly overrided templates paths (@pmontoya, @Pascal Montoya)

feature #26486 [HttpFoundation] Adds getAcceptableFormats() method for Request (@AndreiIgna)

feature #27535 [TwigBundle] Enhance the twig not found exception (@behnoushnorouzi)

feature #27551 [FrameworkBundle] show public/private for aliases in debug:container command (@OskarStark)

feature #27543 [Cache] serialize objects using native arrays when possible (@nicolas-grekas)

feature #27563 [Cache] Improve perf of array-based pools (@nicolas-grekas)

feature #27604 [Cache] Prevent stampede at warmup using flock() (@nicolas-grekas)

feature #27315 [TwigBundle] add exception chain breadcrumbs navigation (@kiler129)

feature #27031 [Cache] Use sub-second accuracy for internal expiry calculations (@nicolas-grekas)

feature #27549 [Cache] Unconditionally use PhpFilesAdapter for system pools (@nicolas-grekas)

feature #27009 [Cache] Add stampede protection via probabilistic early expiration (@nicolas-grekas)

feature #27471 [DI] Improve performance of removing/inlining passes (@nicolas-grekas)

feature #27462 [FrameworkBundle] Deprecate auto-injection of the container in AbstractController instances (@nicolas-grekas)

feature #27077 [DependencyInjection] add ServiceSubscriberTrait (@kbond)

feature #27398 [Cache] Remove TaggableCacheInterface, alias cache.app.taggable to CacheInterface (@nicolas-grekas)

feature #27343 [Messenger][Profiler] Show dispatch caller (@ogizanagi)

feature #27429 [PropertyInfo] Auto-enable PropertyInfo component (@sroze)

feature #27430 [PropertyInfo] Add an alias to the property info type extractor (@sroze)

feature #27417 [WebProfilerBundle] Make Twig bundle an explicit dependency (@fabpot)

feature #27024 [Finder] added "use natural sort" option (@vyshkant)

feature #26934 [FrameworkBundle] Allow configuring taggable cache pools (@nicolas-grekas)

feature #26981 No more support for custom anon/remember tokens based on FQCN (@Iltar van der Berg)

feature #27336 [Security][SecurityBundle] FirewallMap/FirewallContext deprecations (@chalasr)

feature #27157 [DI] Select specific key from an array resolved env var (@bobvandevijver)

feature #27165 [DI] Allow binding by type+name (@nicolas-grekas)

feature #26929 [Cache] Add [Taggable]CacheInterface, the easiest way to use a cache (@nicolas-grekas)

feature #27305 [Security/Core] Add "i _granted()" to security expressions, deprecate "ha _role()" (@nicolas-grekas)

feature #27069 [LDAP] Add "applyOperations" method to EntryManager (@mablae)

feature #27118 [BrowserKit] Adds support for meta refresh (@jhedstrom)

feature #27268 [DI] fine tune dumped factories (@nicolas-grekas)

feature #27075 [DI][DX] Allow exclude to be an array of patterns (@magnetik)

feature #27138 [HttpKernel] Better exception page when the controller returns nothing (@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.