Install
To start a new Drupal project with version 9.0.0-beta3@beta:To update your site and all dependencies to the latest version of Drupal:
To update your site to this specific release:
Using Composer to manage Drupal site dependencies
Downloads
Release notes
This is a beta release for the next major version of Drupal. Drupal 9 beta releases are intended for site owners and module or theme authors to test compatibility and upgrade paths for Drupal 9.0. Beta releases are not intended for production.
Refer to How to prepare your Drupal 7 or 8 site for Drupal 9 for tools you can use to check the Drupal 9 compatibility of modules, themes, and sites. For more information on 9.0.x development, see #3007300: [META] Release Drupal 9 on June 3 2020.
The 9.0.x branch also includes all the latest commits that will be backported to 8.9.x and earlier branches. 9.0.x and 8.9.x have the same APIs and features. The key changes in 9.0.x are:
- Deprecated code will be removed.
- Dependencies will be updated to new major versions as appropriate.
- Platform requirements (supported PHP and database versions) will be increased.
For all other changes, refer to the 8.9.x branch.
Important update information
For a full list of important changes in 9.0, also see the following:
- 9.0.0-alpha1 release notes
- 9.0.0-alpha2 release notes
- 9.0.0-beta1 release notes
- 9.0.0-beta2 release notes
Database driver handling improvements
-
The default database is now checked when Drupal is updated to ensure it complies with the minimum version supported by the database driver. (Previously, this only happened during installation.) Updates will not proceed if the requirement is not met.
If you see an error about your database version when running
update.php, ensure your database meets the minimum database requirements or install one of the legacy database drivers provided as contributed projects. -
Database drivers provided by modules can now be placed in
src/Driver/Database. These drivers will be listed in the installer. Existing custom or contributed drivers do not need to make any changes and will continue to work as before. -
Contributed and custom database drivers no longer need to extend core's database-agnostic database classes unless they need to override functionality provided by that code. The core database drivers have had unnecessary classes removed. Read the change record for the full list of classes removed.
Upgrade path changes
-
The Views configuration fixes previously applied as post-updates in #2846614: Incorrect field name is used in views integration for multi-value base fields are now applied at every Views save in order to resolve an upgrade path bug. The old configurations are now formally deprecated in 9.0.0 and will be removed from 10.0.0. For more information on the changes that introduced this in previous releases, see the related change records:
Updates and changes to dependencies
-
Drupal 9's PHP dependencies have been updated to the latest compatible versions wherever possible. In particular:
- Symfony components have been updated from 4.4.7 to 4.4.8.
symfony/mimeandsymfony/var-dumperhave been updated from 5.0.7 to 5.0.8, andsymfony-cmf/routinghas been updated from 2.1.1 to 2.3.1. doctrine/annotationshas been updated from 1.8.0 to 1.10.2, anddoctrine/reflectionhas been updated from 1.1.0 to 1.2.1.- Diactoros has been updated from 2.2.2 to 2.3.0, and other Laminas components have received patch-level updates.
- Guzzle has been updated from 6.5.2 to 6.5.3.
- PHPUnit has been updated from 8.5.2 to 8.5.4.
psr/loghas been updated from 1.1.2 to 1.1.3.- Other development dependencies have received patch-level updates.
- Symfony components have been updated from 4.4.7 to 4.4.8.
-
The Composer plugins provided by Drupal -- the scaffold plugin, the vendor hardening plugin, and the project message plugin -- are now compatible with Composer 2, and Drupal core now allows either Composer 1 or 2.
-
The
composer/installersdevelopment dependency is no longer pinned to1.9.0indrupal/core-recommended. Version 1.9 is now the minimum requirement, andcomposer/installersmay be upgraded whenever a new version is available and a Composer-managed site runscomposer update.Additionally, Composer has been updated from 1.10.0 to 1.10.5, and
composer/ca-bundlehas been updated from 1.2.6 to 1.2.7. -
The
wikimedia/composer-merge-plugindependency has been removed because it is incompatible with Composer 2. It was deprecated in Drupal 8.8.0, and has not been used in core since that release. Any sites that have a separate requirement for this project should add it as a direct dependency. -
jQuery has been updated from 3.4.1 to 3.5.1.
-
The
core/js-cookielibrary (which was introduced in Drupal 9.0.0-beta1 to replace jquery.cookie) has updated its js-cookie dependency from version 2.2.1 to version 3.0.0-rc.0. A summary of the differences in 2.2.1 and 3.0.0-rc.0 can be found by reviewing js-cookie's release history. Code that interacts with js-cookie via the shim provided bycore/jquery.cookieis not impacted by this change.Review the change record on js-cookie for more information.
-
Node.js is a development dependency for Drupal core. In Drupal 9, Drupal core's Node.js requirement has been updated from 8.11.0 to 12.0.0. (Information on changes in Node.js 12.) An updated version of Node.js can be installed directly or with nvm. This only affects sites that have installed Drupal core's JavaScript development dependencies with npm or yarn.
Changes to coding standards
-
The development dependency
drupal/coderhas been updated from 8.3.7 to 8.3.9. New coding standards rules are now available with this update.php_codesnifferhas also been updated from 3.5.4 to 3.5.5. -
The
Drupal.Classes.ClassFileNamerule is now enabled in the core ruleset to ensure classes are named properly so that they can be autoloaded. -
The new
Drupal.Commenting.Deprecatedrule has been enabled to ensure that@deprecateddocumentation follows a standard format with relevant information for upgrading the code. See the deprecation policy for documentation of the standard.
Other important bugfixes
- #3123537: /admin/reports/status should not WSOD if it finds an extension missing core_version_requirement in its info.yml file
- #3126003: Increased memory usage during install
- #3126658: Support enclosing reserved words with brackets.
- #2992631: Update report incorrectly recommends security releases for old minors when a security update is needed and a secure version of the old minor is also available
- #3125763: Hidden dependency on migrate_drupal from node module when only migrate.module is enabled
- #3131388: Visiting the config translation listing of fields you get a WSOD
- #3134606: [backport] PHP Fatal error in 8.9.x / 9.0.x upgrade path
- #3120910: Sites with missing schema information can't update to 8.8.3+ - attempts to run all historical updates
Known issues
- #3137264: Installing drupal/core-composer-scaffold (9.0.0-beta3) with composer causes 'ErrorException stream_context_create()'
- #3107155: Raise SQLite version requirement to 3.26 in Drupal 9
- #3107926: Update stylelint to ^13.0.0
- #3120731: Incorrect "Drupal already installed" if any database settings are wrong or unsatisfactory
- #3090183: UPGRADE.txt only mentions migrating from Drupal 6 and 7, UPDATE.txt only mentions 8-8 updates
All changes since 9.0.0-beta2
- #3136604 by lauriii, xjm, effulgentsia, justafish: Update to jQuery 3.5.1
- #3135302 by longwave, Kristen Pol: Remove Symfony 3 legacy test from ReverseProxyMiddlewareTest
- #3119733 by Raunak.singh, Suresh Prabhu Parkala, daffie, bertboerland, Kristen Pol, xjm: COPYRIGHT.txt outdated
- #3135629 by alexpott, dww, daffie, jungle, Rkumar, balsama, xjm: Minimum MySQL version requirement is not confirmed when upgrading existing sites from Drupal 8 to Drupal 9
- #3123537 by tedbow, dww, DamienMcKenna, xjm, Berdir, tim.plunkett, pingwin4eg: /admin/reports/status should not WSOD if it finds an extension missing core_version_requirement in its info.yml file
- #3134459 by ridhimaabrol24, aleevas, longwave, heddn, quietone, xjm: Remove @group legacy from migrate tests
- #3134731 by jungle, jonathan1055, longwave, andypost: Update coder to 8.3.9
- #3135308 by sja112, longwave, Kristen Pol: Fix 'The "Symfony\Component\BrowserKit\Response::getStatus()" method is deprecated since Symfony 4.3, use getStatusCode() instead.'
- #3131379 by daffie, Beakerboy, Lendude, alexpott: CONCAT_WS requires at least 3 arguments
- #3133305 by quietone, xjm, daffie, benjifisher, longwave: Use \Drupal::VERSION to get the version in Migrate UI rather than hardcoding it
- Revert "Revert "Revert "Issue #3133305 by quietone, daffie, xjm, benjifisher, longwave: Use \Drupal::VERSION to get the version in Migrate UI rather than hardcoding it"""
- Revert "Revert "Issue #3133305 by quietone, daffie, xjm, benjifisher, longwave: Use \Drupal::VERSION to get the version in Migrate UI rather than hardcoding it""
- Revert "Issue #3133305 by quietone, daffie, xjm, benjifisher, longwave: Use \Drupal::VERSION to get the version in Migrate UI rather than hardcoding it"
- #3133305 by quietone, daffie, xjm, benjifisher, longwave: Use \Drupal::VERSION to get the version in Migrate UI rather than hardcoding it
- #3134676 by Lendude, Kristen Pol: Update CHANGELOG.txt from D8 to D9 or D‚àû
- #3134606 by greg.1.anderson, longwave, Kristen Pol, catch, jungle, alexpott: PHP Fatal error in 8.9.x / 9.0.x upgrade path
- #3134648 by alexpott, dww, greg.1.anderson, hussainweb, catch, xjm: Don't pin the composer/installers version in drupal/core-recommended
- #3131343 by mondrake, dww, jungle: Replace assertions involving calls to in_array() with assertContains()/assertNotContains()
- #2946073 by claudiu.cristea, mpp, neclimdul, Berdir, idimopoulos, remkoklein: Node grant access check missing cacheable dependency on node
- #3101635 by mrinalini9, TylerMarshall, Kristen Pol: Update comments in taxonomy.es6.js to reflect taxonomy and not blocks
- #3126906 by jungle, longwave, AndyF: MenuLinkContentTest.php is recognized as a binary file by git
- #3133604 by Berdir, dww: Dependency compatibility check in system doesn't check if version is defined
- #3113124 by B2F, Kristen Pol: Incorrect API example about default widget override
- #3134333 by xjm, longwave, ravi.shankar, daffie: Change Drupal\Tests\search\Functional\SearchSimplifyTest and Drupal\Tests\search\Functional\SearchTokenizerTest to kerneltests
- #3087465 by zuhair_ak, tim.plunkett, Kristen Pol: Move hook_views_ui_display_top_links_alter() to views_ui.api.php
- #3123211 by jungle, Kristen Pol: Replace usages of \Drupal::menuTree() with IoC injection
- #3134475 by Beakerboy, daffie: Avoid directly comparing string to blob in CommentIntegrationTest
- #3130341 by jungle, longwave, catch, xjm: [backport] Remove Drupal\Core\Update\UpdateKernel::fixSerializedExtensionObjects()
- #3114122 by jungle, klausi, dww: ExceptionLoggingSubscriber should log 403 access denied reason
- #3121020 by dww, Kristen Pol: Move Update Manager XML test fixtures into a fixtures/release-history directory
- #2988309 by Krzysztof Domański, Berdir, hchonov: Ensure that all field types return TRUE on equals() for the same values
- #3106304 by huzooka, Wim Leers: Migrate: add mapping for editor module's editor_align and editor_caption filters
- #2907402 by Berdir, neel24, Wim Leers, damiankloip, tedbow: HAL normalization of file fields don't provide file entity id or file entity REST URL
- #3101891 by tim.plunkett, zrpnr: Allow layout plugins to define default values for column widths
- #3110620 by salah1, xjm, kiamlaluno: Documentation for ModuleHandler::invokeAll() says the method uses a PHP function that is not used anymore
- #3126965 by jungle, quietone, longwave, mondrake, dww: Replace assert* involving count() and an integer literal with assertCount()
- #3134318 by jungle, daffie: Enable phpcs rule Drupal.Classes.ClassFileName
- #3094398 by martin107, alexpott, andypost, klausi: Update Symfony response and request events to new classes
- #3107472 by ravi.shankar, alexpott, kishor_kolekar, jibran: DbDumpCommand should not hardcode the version string
- #3093173 by Neslee Canil Pinto, jungle, swatichouhan012, lauriii, xjm, dww, longwave: Improve README for forked jQuery UI components
- #3032686 by longwave, jibran, xjm, alexpott, Berdir, amateescu: Remove references to unused packages in Drupal 9's vendor hardening
- #3133442 by alexpott, jungle, longwave: Update dependencies for Drupal 9.0
- #3126617 by hansfn: Invalid HTML for Field UI in Help Topics module
- #3131819 by jungle, mondrake, xjm, dww: Replace assertions involving calls to is_resource() with assertIsResource()
- #3128761 by Beakerboy, daffie, alexpott, xjm: Duplicate timestamp placeholder in statistics query
- #2980304 by dww, jrockowitz, Rithesh BK, Kristen Pol, andrewmacpherson, dorianwinterfeld, bnjmnm: Seven theme's details/summary focus style is broken/missing in some browsers
- #3131818 by jungle, mero.S: Replace assertions involving calls to is_object() with assertIsObject()/assertIsObject()
- #3131816 by Spokje, jungle, mondrake, xjm, longwave: Replace assertions involving calls to is_array() with assertIsArray()/assertIsNotArray()
- #3130438 by stefanos.petrakis, andypost, longwave: Inject page_cache_kill_switch service to LanguageNegotiationBrowser
- #3126566 by greg.1.anderson, jungle, tedbow, hussainweb, Kristen Pol, alexpott: Allow Drupal to work with Composer 2
- #3067617 by jhodgdon, Gayathri J, shimpy, spitzialist, batigolix, alonaoneill, volkswagenchick, andypost, CelSki, Amber Himes Matz, Sutharsan: Convert contact module hook_help() to topic(s)
- #3119279 by dww, Lendude, alexpott, lauriii: views-view-table.html.twig template directly uses details without render array and polyfills
- #3094067 by kishor_kolekar, Suresh Prabhu Parkala, jungle, dpi, xjm: Update missing @param and @return documentation and docs typehints for TypedDataInterface
- #3131817 by quietone, Suresh Prabhu Parkala, jungle, mondrake, daffie, catch, xjm: Replace assertions involving calls to is_numeric() with assertIsNumeric()/assertIsNotNumeric()
- #3123253 by mondrake, Lal_, prabha1997, longwave, xjm, alexpott, jungle: Remove usage of AssertLegacyTrait::pass() from base test classes
- #3055317 by jhodgdon, andypost, batigolix, amarphule, alonaoneill, Amber Himes Matz, volkswagenchick: Convert history, statistics, tracker module hook_help() to topic(s)
- #3046957 by Gayathri J, shimpy, jhodgdon, Madhura BK, spitzialist, dandaman, carletex, christinlepson, alonaoneill, Vinodhini.E, anmolgoyal74, volkswagenchick, kdassing: Convert aggregator module hook_help() to topic(s)
- #3103090 by greg.1.anderson, alexpott, jungle, ravi.shankar, dww, Mile23, larowlan: Avoid re-scaffolding unchanged files (and printing scaffold file information over and over)
- #3124354 by daffie, abhisekmazumdar, alexpott, johnwebdev, catch, Beakerboy: Remove unnecessary classes from the database drivers
- #3115772 by saurabh.rocksoul, swatichouhan012, Wim Leers, alexpott: User::load calls should be avoided in classes, use dependency injection instead in jsonapi module
- #3117421 by alexpott, swatichouhan012, Mile23, Lendude: Stop trying to run non-existent simpletests on Drupal 9
- #3103010 by AndrewsizZ, No Sssweat, jungle, Lendude, jshimota01: Machine Name needs further clarification
- #3124281 by emyu01: Multiple grammatical errors in docs of BasicAuth class in basic_auth module
- #3111463 followup by dww: Fix line wrapping
- #3063694 by dhirendra.mishra, devoidfury, joachim: class docs for Url should give an overview of how to create one
- #3128069 by quietone: Capitalize name of book module in OverviewForm
- #3111463 by dww, benjifisher, xjm: Improve code documentation for \Drupal\update\ProjectSecurityData
- #3074064 by TR: LoggerChannelFactoryInterface documentation references non-existent class
- #3120961 by dww, tedbow: Remove VERSION from update test modules that receive dynamic version numbers in tests
- #3131821 by jungle, longwave: Replace assertions involving calls to is_callable() with assertIsCallable()/assertIsNotCallable()
- #3131258 by longwave, mondrake, dww: Remove redundant $message from assertFile(Not)Exists and assertDirectory(Not)Exists calls
- #2978398 by ilya.no, mcdruid, iyyappan.govind, aleevas, quietone, joachim, tvb, alexpott, catch: UserPasswordResetTest extends PageCacheTagsTestBase unecessarily
- #3132745 by jungle, longwave, xjm, swatichouhan012, daffie: Fix Drupal.Array.Array.LongLineDeclaration coding standard for instances of the $modules test property
- #3100251 by Hardik_Patel_12, longwave: Several code comments have incorrect namespaces for classes or interfaces they reference
- #3020905 by kiamlaluno, johnwebdev: Remove the implementation example from the documentation for ModuleUninstallValidatorInterface::validate()
- #3132287 by jungle, dww, xjm: Fix wrong usages of {@inheritdoc}
- #3112641 by leolando.tan, Hardik_Patel_12, xjm: Remove stale reference to datetime_range_view_presave()
- #3131820 by jungle, mero.S, quietone: Replace assertions involving calls to is_string() with assertIsString()/assertIsNotString()
- #3129074 by longwave, mondrake, Lal_, Suresh Prabhu Parkala, johnwebdev, jungle, kapilkumar0324: Refactor assertions that use return values in conditionals
- #3131474 by jungle, mondrake: Replace assertions involving calls to array_search() with assertContains()/assertNotContains()
- #3118726 by AndyF, lauriii, jungle, xjm, bnjmnm, catch, mradcliffe, effulgentsia: Upgrade to js.cookie 3
- #3120910 by catch, longwave, tedbow, Pascal-, alexpott, Punyasloka: Sites with missing schema information can't update to 8.8.3+ - attempts to run all historical updates
- #3099528 by andrewmacpherson: Duplicate paragraph in Media Library help
- #3126957 by Suresh Prabhu Parkala, Neslee Canil Pinto, Kristen Pol, jungle: Add missing curly brackets around @inheritdoc
- #3107918 by lauriii, xjm, longwave, effulgentsia: Require Node.js 12
- #3125763 by quietone, heddn, dww, benjifisher, Lal_, Neslee Canil Pinto, alexpott, mikelutz: Hidden dependency on migrate_drupal from node module when only migrate.module is enabled
- #3131388 by penyaskito: Visiting the config translation listing of fields you get a WSOD
- #3131223 by jungle, mondrake, longwave: Replace assertions involving calls to array_key_exists() with assertArrayHasKey()/assertArrayNotHasKey()
- #3130427 by jungle, longwave, xjm: Fix upstream failing tests involving in oEmbed
- #3131402 by longwave, jungle, Berdir: Remove return type hints from abstract test classes
- #3094454 by jonathan1055, longwave: Fix remaining @deprecated (missing a change record) manually and enable the coding standard
- #3125391 by Beakerboy, daffie: Connection::query() return types missing string
- #3131088 by Spokje, longwave: Replace assertions involving calls to file_exists with assertFileExists()/assertFileNotExists() or assertDirectoryExists()/assertDirectoryNotExists()
- #3131090 by longwave: Replace assertions involving calls to is_dir with assertDirectoryExists()/assertDirectoryNotExists()
- #3130811 by mondrake, jungle, longwave: Remove redundant $message from assert(Not)InstanceOf calls
- #3130396 by longwave, jungle, dww, mondrake: Replace assertions involving calls to is_file with assertFileExists()/assertFileNotExists()
- #3128746 by mondrake, longwave, dww: Replace assertions involving calls to strpos() with more accurate string assertions
- #3128575 by longwave, jungle, daffie: Replace assert*(*, is_null()) with assertNotNull()/assertNull()
- #3128905 by jungle, longwave, Kristen Pol, mondrake: Replace assert* involving an instanceof operator with assertInstanceOf()/assertNotInstanceOf()
- #3084078 by lauriii, alexpott, Jaesin: AdminNegotiator::determineActiveTheme() does not adhere to the interface
- #3101040 by reinchek, swatichouhan012, Vinodhini.E, ckrina, KondratievaS: Password confirm field gets the green focus ring cropped
- #3129508 by Lal_, daffie, Suresh Prabhu Parkala: Change multiple dirname()'s into a single dirname() with the use of the second parameter of dirname()
- #3039296 by jungle, abhisekmazumdar, pandaski, tvb, dww, alexpott, init90: Fix examples in hook_install() and hook_uninstall()
- #3109351 by neelam_wadhwani, kostyashupenko, bnjmnm, Kristen Pol: Remove image-widget library from Claro
- #3117857 by longwave, jungle, govind.maloo, Kristen Pol: [Symfony 5] The "Symfony\Component\Debug\BufferingLogger" class is deprecated since Symfony 4.4, use "Symfony\Component\ErrorHandler\BufferingLogger" instead
- #3115987 by jungle, kiamlaluno, quietone: Rename the $instanceIDs property used from plugin classes to $instanceIds
- #3119278 by nterbogt, hansfn: Better messaging for locale batches
- #3125234 by martin107, longwave: ProxyBuilder compatibility with Symfony 5
- #3127838 by Lendude: In MediaLibrary the 'save and insert' is nested in code when it doesn't have to be
- #2956556 by johndevman, daffie, Neslee Canil Pinto, dan.munn, aleevas, dubcanada, alexpott: class isn't set in FETCH_OBJECT when class_name isn't set
- #3117869 by longwave: [Symfony 5] Passing arguments to "Symfony\Component\HttpFoundation\Request::isMethodSafe()" has been deprecated since Symfony 4.4
- #3127674 by jungle, longwave, imalabya, mondrake: Update dependencies for Drupal 9.0
- #3128814 by longwave, jungle, dww: Replace assert* involving count() and an equality operator with assertCount()
- #2992631 by dww, swatichouhan012, tedbow, jungle, xjm: Update report incorrectly recommends security releases for old minors when a security update is needed and a secure version of the old minor is also available
- #3119170 by tstoeckler, daffie: Optimize pgsql/Schema::findPrimaryKeyColumns() for Postgres >= 9.6
- #3126971 by mondrake, alexpott, longwave: Replace usage of getObjectAttribute() that is deprecated
- #3117858 by longwave, druprad, Kristen Pol: [Symfony 5] The "Symfony\Component\Process\Process::inheritEnvironmentVariables()" method is deprecated since Symfony 4.4, env variables are always inherited
- #3121885 by jungle, longwave, alexpott: Update coder to 8.3.8
- #3126970 by mondrake, longwave: Replace usage of readAttribute() that is deprecated
- #3126563 by mondrake, daffie, alexpott: Replace usage of assertAttributeEquals() that is deprecated
- #3121362 by jungle, Meenakshi.g, dww, xjm, alexpott, tim.plunkett: Fix duplicate word typos (the the, to to, etc.) for code comments
- #3070745 by AndyF, ravi.shankar, olli, tedbow, samuel.mortenson, droplet, alexpott: Off canvas filling up localStorage's quota, causing errors
- #3082415 by Krzysztof Domański, mondrake, alexpott, longwave, jungle: Replace assert(Not)Same/Identical() on booleans with assert(Not)True/False() in PHPUnit tests
- #3126969 by mondrake, longwave, alexpott, daffie: Replace usage of assertAttributeInstanceOf() that is deprecated
- #3015855 by Neslee Canil Pinto, mondrake, hash6, neel24, daffie, andypost: Replace all db calls to block_content table with Entity APIs
- #3119924 by sinn: SelectPagerDefaultTest should not rely on default sorting order
- #2455465 by stefan.r, Darren Oh, cosmicdreams, longwave, benjy, alexpott: Add mod_php7 check to htaccess and remove php5 code
- #3127960 by Kartagis: Incorrectly put underscore in string
- #3122547 by dww, jungle, Kristen Pol: Fix duplicate word typos (the the, to to, etc) for test assertions
- #3119710 by daffie, Kristen Pol: Remove lowercase table naming in NodeMigrateTypeTestTrait::getTableName()
- #3124769 by Chi, msuthars: Fix hardcoded destination in UiHelperTrait::drupalLogout()
- #3119922 by sinn, daffie: DeleteTruncateTest should not rely on default sorting order in DB
- #2997748 by amateescu, maseyuk, vijaycs85, daffie: Views query alter for fields stored in dedicated tables is not working properly
- #3117863 by longwave, Kristen Pol: [Symfony 5] Using the "Symfony\Component\Validator\Constraints\Length" constraint with the "min" option without setting the "allowEmptyString" one is deprecated
- #3126694 by Neslee Canil Pinto: Replace tpl.twig with html.twig in ThemeTest
- #3126564 by longwave, mondrake: Replace usage of assertArraySubset(), that is deprecated
- #3078524 by huzooka, kostyashupenko, thalles, katrienc, pranav45, neelam_wadhwani, prabha1997, ckrina, emma.maria, Maithri Shetty, Meenakshi.g, pminf, shimpy, fhaeberle, KondratievaS, Vinodhini.E, lauriii, cedric_a, bnjmnm, mradcliffe, DyanneNova, katannshaw: Focus styling of WYSIWYG field inputs should be consistent with other inputs
- #3112476 by alexpott, Neslee Canil Pinto, mondrake, daffie, salah1, neelam_wadhwani: Always set $info['namespace'] on database connection info
- #3082602 by bnjmnm, longwave: Remove transform rule from css_disable_transitions_test
- #3127455 by nevergone: fix placeBlock() function comment
- #3127641 by mglaman, longwave: Typo in ResourceIdentifierNormalizer, "mach" instead of "match"
- #3123376 by swatichouhan012, johndevman, longwave, xjm: update_fix_incompatibility() is (theoretically) dead code, but is also theoretically dangerous
- #3032605 by mikelutz, Gábor Hojtsy, longwave, martin107: [symfony 4] Drupal\Component\DependencyInjection\Container should implement Symfony\Contracts\Service\ResetInterface
- #3126940 by Beakerboy, daffie: New DB URI breaks if an existing query part is missing the new module parameter
- #3127013 by greg.1.anderson, jungle, andrey.troeglazov, andypost, Mixologic, Mile23: Remove wikimedia/composer-merge-plugin
- #2822382 by voleger, pfrenssen, erozqba, jungle, RytoEX, borisson_, jofitz, shashikant_chauhan, sidharthap, dawehner, xjm, kiamlaluno, catch, daffie, klausi: Make every $modules property protected on classes extending BrowserTestBase and KernelTestBase
- #3107732 by mondrake, longwave, swatichouhan012, salah1, xjm, catch, alexpott, Berdir: Between April 13 and April 17, 2020: Add return typehints to setUp/tearDown methods in concrete test classes
- #3126784 by quietone, jungle: \Drupal\ban\Plugin\migrate\destination\BlockedIP is not identical with its filename BlockedIp.php
- #3126848 by mondrake, longwave, daffie: Replace usage of the $ignoreCase parameter of assertContains(), that is deprecated
- #3126569 by mondrake, longwave: Replace usage of assertAttributeEmpty() that is deprecated
- #3074047 by Neslee Canil Pinto, mikelutz, quietone: Update MigrateDestinationInterface::import return type documentation
- #3126792 by mondrake: Replace usage of assertAttributeSame() that is deprecated
- #3113077 by mondrake, Hardik_Patel_12, Neslee Canil Pinto, swatichouhan012, prabha1997, neelam_wadhwani, Berdir, longwave: Replace assertContains() on strings with assertStringContainsString() or assertStringContainsStringIgnoringCase()
- #3126658 by alexpott, daffie, Beakerboy: Support enclosing reserved words with brackets
- #3108006 by mondrake, ravi.shankar, longwave: Replace assertInternalType() calls with dedicated methods
- #3126333 by mondrake, longwave: Replace usage of the optional $canonicalize parameter of assertEquals(), that is deprecated
- #3126003 by tedbow, alexpott, pfrenssen, lauriii: Increased memory usage during install
- #3120096 by alexpott, daffie, effulgentsia, Neslee Canil Pinto, xjm, mondrake, catch, ravi.shankar: Support contrib database driver directories in a fixed location in a module
- #3122961 by mondrake: PHPUnit\Framework\TestCase::__construct() should not be extended
- #2989745 by plach, jungle, alexpott, Lendude, catch, tim.plunkett: views_update_8500() inlines configuration changes instead of this being done on config save for bc
- #3107243 by kishor_kolekar, Kartagis, prabha1997, Neslee Canil Pinto, jungle, kiamlaluno, longwave, pandaski, alexpott, catch: Fix punctuation in link.schema.yml label
- #3016814 by jhedstrom, peximo, alexpott, jungle, scuba_fly, mr.baileys, FrancescoQ, cgoffin, Petr Illek, fabio84: Don't trigger hook_file_download when no file is requested
- #3030989 by Lendude, emyu01, ravi.shankar, nisha_gupta, kaszarobert: Error while trying to bulk delete already deleted nodes
- #3123653 by emyu01, naresh_bavaskar: Grammatical error in function description in views module
- #3123326 by Neslee Canil Pinto, longwave, Berdir: Remove pathauto version check from 9.0, no incompatible version is Drupal 9 compatible
- #3113876 by Hardik_Patel_12, himmatbhatia, jungle, longwave, klausi: The "Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent::getException()" method is deprecated since Symfony 4.4, use "getThrowable()" instead
- #3122605 by Beakerboy, daffie: EntityResourceTestBase.php uses a static query that should be dynamic