Install
To start a new Drupal project with version 10.0.0-alpha2@alpha: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 an alpha release for the next major version of Drupal. This alpha release is intended for module or theme authors to test whether their code is compatible with recent significant changes in Drupal 10.0.x. Drupal 10 alpha releases should not be used in production. No upgrade path will be provided between Drupal 10 alpha releases, nor to Drupal 10.0.0-beta1.
This release fixes security vulnerabilities. Sites are urged to update immediately after reading the notes below and the security announcements:
- Drupal core - Moderately critical - Improper input validation - SA-CORE-2022-003
- Drupal core - Moderately critical - Information disclosure - SA-CORE-2022-004
Many breaking changes will be added before Drupal 10.0.0-beta1
Drupal 10 alphas do not include all the breaking changes that will be included in 10.0.0. Any further alpha releases as well as the first beta release will include more dependency updates and remove more APIs that are (or that will be) deprecated in Drupal 9, including several core modules and themes that will be moved to contributed projects. Refer to How to prepare your Drupal 7 or 8 site for Drupal 9 for tools you can use to check the Drupal 10 compatibility of modules, themes, and sites.
Specific, highly disruptive changes that are not available in 10.0.0-alpha2:
-
CKEditor 4 will be removed from Drupal 10 core, and content created with CKEditor 4 might not work in CKEditor 5 because of upstream changes. You must either install the CKEditor 4 module in contrib (which will receive security fixes until Drupal 9's end-of-life in 2023), or update your site and content to CKEditor 5. There is a beta-stability CKEditor 5 module available for testing in Drupal 9 and 10.
-
Various core modules and themes will be moved to contributed projects.
-
Numerous JavaScript libraries and APIs will be removed.
There will be many other specific updates and deprecated API removals beyond this list. For more information on 10.0.x development, see #3118143: [meta] Release Drupal 10 on December 14... or 15... 2022.
The 10.0.x branch also includes all the latest commits that will be backported to 9.4.x and earlier branches. 10.0.x will be nearly identical to 9.4.x except for the following:
- Deprecated code will be removed, including entire deprecated modules.
- Dependencies will be updated to new major versions as appropriate.
For all other changes, refer to the 9.4.x branch.
Important update information
Refer to the Drupal 10.0.0-alpha1 release notes for additional changes from 9.4.x.
Drupal 10 platform requirement changes
PHP requirements
Drupal 10 now requires PHP 8.1. (We will publish a broader announcement about this requirement in the near future, including recommendations for sites that do not yet have PHP 8.1 available to them.)
PostgreSQL requirements
Drupal 10's PostgreSQL database driver requires PostgreSQL 12 with the pg_trgm extension enabled. A requirements error is now displayed when installing or updating a PostgreSQL site without this extension enabled.
SQLite requirements
Drupal 10's SQLite database drives requires SQLite 3.26 with the json1 extension. In Drupal 9.4, site owners will receive warnings if this extension is not available. In Drupal 10, Drupal cannot be installed or updated without the extension. (Refer to the change record for information on checking for JSON support with other computational database drivers.)
Note that the MySQL database server requirements are unchanged from Drupal 9. (More information on Drupal 10's database server requirements.)
Data updates before 9.3.0 have been removed
Data updates added prior to Drupal 9.3.0 have been removed from Drupal 10.0.x. To update to Drupal 10, you must first ensure your site is running Drupal 9.3.0 or a later release. We recommend updating to the most recent core 9.x release, as well as updating all of your contributed modules to their latest releases, prior to updating to Drupal 10.
Removed core modules
The following modules have been removed from core in 10.0.0-alpha2:
-
Entity Reference: If this module is installed on your site for some reason, simply uninstall it. (It is an obsolete, empty stub with no impact on site functionality.)
-
Migrate Drupal Multilingual: This functionality is now provided by the core Migrate Drupal module. If this module is installed on your site for some reason, simply uninstall it. (It is an obsolete, empty stub with no impact on site functionality.)
Numerous other modules and themes will be removed prior to 10.0.0-beta1.
Per-table prefixing support removed
Drupal previously supported per-table prefixing for complex multisite setups. This functionality has been deprecated since Drupal 8.2. Warnings are displayed on the status reports of sites that still use this functionality from Drupal 9.3.0 on, and the functionality has been removed from Drupal 10. See the change record for alternatives to per-table prefixing.
SimpleTest support removed from the core test runner
The SimpleTest module was moved to contrib prior to Drupal 9.0.0. Drupal 10 removes support for SimpleTest from the core test runner. Projects that use SimpleTest should convert their tests to PHPUnit.
Deprecated API removals
Numerous deprecated core APIs have been removed since 10.0.0-alpha1. Many more will be removed between 10.0.0-alpha2 and 10.0.0-beta1.
Change to hook_entity_view_mode_alter()
hook_entity_view_mode_alter() no longer receives the $context argument, which was always empty arra. Existing implementations of hook_entity_view_mode_alter() should remove the $context argument. See the hook_entity_view_mode_alter() change record for more details.
Dependency updates
The following dependencies have been changed or updated since 10.0.0-alpha1:
Symfony
Symfony has been updated from Symfony 5.4 to 6.0, except for the symfony/console component which will remain at version 5.4 until an upstream Composer issue is resolved.
Twig
Drupal 10's Twig version requirement has been increased from 3.0 to 3.3.8 to address a security vulnerability in Twig. (The vulnerability required advanced, administrator-level permissions to exploit in Drupal.)
Development dependencies
-
Drupal's
composer/composerdevelopment dependency is now required to be at least version 2.2.4 to support the Automatic Updates initiative. (2.3 may be required before 10.0.0 to resolve an upstream bug, andcomposer/composermay also become a production dependency.) -
The Stylelint development dependency has been updated to version 14, and minor changes have been made to whitespace and quoting in core CSS. Refer to the change record on the Stylelint 14 update for more information.
-
Drupal core's JavaScript development dependencies have been updated to the latest allowed minor and patch versions to address a few security issues in those dependencies. This should have minimal impact on contributed or custom code and CI workflows. Core developers should completely remove their
node_modulesdirectory and re-runyarn installfrom within thecore/directory.Additionally, acorn has been temporarily added as a direct development dependency of core to work around an upstream bug in Terser. Acorn will be removed as a direct dependency again once Terser creates a new release with a fix for the bug.
Added dependencies
-
The PHPStan static analysis library has been added to Drupal core and is run against all core patches and merge requests.
Removed dependencies
-
Drupal 10 core no longer depends on the
TYPO3/phar-stream-wrapperlibrary, because this library is only needed for PHP 7.3 and earlier.
More backend and frontend dependency changes will be made prior to beta1.
What's next?
We may release further alpha versions as needed. There are two remaining release scenarios for Drupal 10. If we complete all Drupal 10.0.0 beta requirements by the May 13, the first beta will be released on the week of May 16 and Drupal 10.0.0 will be released on August 17, 2022. If the beta requirements are not completed by May 13, a later beta window will be used.
Known issues
Search the issue queue for known issues.
All changes since 10.0.0-alpha1
- Issue #3265094 by xjm, longwave: Update our composer/composer dev dependency to the required minimum for Automatic Updates
- Issue #3228464 by nod_, Wim Leers, lauriii, Reinmar: API for contrib projects to load CKEditor translations
- Issue #3203193 by murilohp, ankithashetty, Gábor Hojtsy, daffie, catch: Fail install if JSON is not supported by the database in Drupal 10
- Issue #3252757 by catch, longwave, Gábor Hojtsy, xjm, daffie, andypost, dww: Update Drupal 10 to depend on Symfony 6.0
- Issue #3255809 by nod_, lauriii, xjm, hooroomoo: Add nightwatch tests for toolbar
- Issue #3262492 by lauriii, Wim Leers: Refactor isMediaUrl to more generic API that supplies frontend metadata about media entities
- Issue #3224652 by Wim Leers, hooroomoo, vlyalko, lauriii, bnjmnm, huzooka: [drupalImage] Add ckeditor5-image's imageresize plugin to allow image resizing
- Issue #3228334 by Wim Leers, larowlan, lauriii, DieterHolvoet, beatrizrodrigues: Refactor HTMLRestrictionsUtilities to a HtmlRestrictions value object
- Issue #3264451 by Wim Leers, bnjmnm: ImageTest::testWidth() has wrong selector, but no assertion: increases DrupalCI by 20 seconds
- Issue #1777270 by aries, quietone, AkashKumar07, shetpooja04, Devin Carlson, dermario, joshua1234511, ZeiP, smokris, David_Rothstein, danjro, smiletrl, longwave, balintk, Kristen Pol, larowlan, borisson_: Write tests for: Users with passwords over 60 characters cannot log in via the user login block
- Issue #3263793 by naveenvalecha: Move tracker help topics to tracker module
- Issue #3264819 by xjm: Require PHP 8.1 for Drupal 10.0.0-alpha2
- Issue #3261244 by andypost, longwave: Remove deprecated layout_builder module functions
- Fix coding standards issue from security advisory.
- SA-CORE-2022-004 by samuel.mortenson, xjm, nod_, effulgentsia, phenaproxima, mcdruid, Wim Leers, tedbow, longwave, dww, larowlan, pandaski
- SA-CORE-2022-003 by ciss, xjm, larowlan, benjy, mcdruid, jenlampton, quicksketch, Fabianx, effulgentsia
- Issue #3255887 by murilohp, heddn, neclimdul, Berdir: MediaThumbnailFormatter => Calling ImageFormatter::__construct() without the $file_url_generator argument is deprecated in drupal:9.3.0
- Issue #2966859 hotfix by andypost, xjm, catch: Remove the self.version references to the module.
- Issue #3264435 by catch, Spokje: Help topics and rest don't filter out deprecated modules when testing
- Issue #3188858 by andypost, longwave, Gábor Hojtsy: Remove the entity_reference module entirely on the Drupal 10 branch
- Issue #3261942 by hooroomoo, lauriii, Wim Leers: Compatibility issues with inline form errors
- Issue #3257127 by bbrala, quietone, murilohp, Spokje, anabpv, catch, xjm, Gábor Hojtsy, daffie, dww: Trigger a deprecation message when a deprecated module or theme is enabled
- Issue #3214922 by murilohp, daffie: Add a requirements error in Drupal 10 when PostgreSQL is used and the pg_trgm extension is not installed or created
- Issue #3166449 by ravi.shankar, adamzimmermann, mmatsoo, walangitan, joshua.boltz, Cottser: Improve wording around twig.cache setting for production environments
- Issue #2940025 by andypost, nickolaj, quietone: Remove deprecated functions from file module
- Issue #3254723 by mondrake, murilohp, longwave: Remove SimpletestUiPrinter
- Issue #3259807 by idebr, anneke_vde: #type => 'toolbar_item' without a tab triggers a deprecation notice on PHP8.1
- Issue #3264061 by andypost: Remove deprecated functions from image module
- Issue #3264067 by andypost: Remove deprecated code from session namespace
- Issue #2966859 by longwave, ravi.shankar, heddn, quietone: Remove Migrate Drupal Multilingual module in Drupal 10
- Issue #3244802 by andypost, Spokje, catch, dww: Remove BC layers in entity system
- Issue #3254198 by longwave: Remove Media Entity compatibility check from media_install()
- Issue #3264057 by andypost, daffie, quietone: Remove deprecated media system functions
- Issue #3264153 by neclimdul: Fix missing sprintf argument in CKEditor5ImageController
- Issue #3263395 by longwave: Remove deprecated code from asset library system
- Issue #3264062 by andypost: Remove deprecated functions from editor module
- Issue #3264072 by andypost: Remove deprecated code from Drupal\Core\Archiver
- Issue #3264050 by neclimdul, andypost: Fuzzed tag values to EntityAutocompleteController::handleAutocomplete can cause deprecation warning
- Issue #3264073 by andypost: Remove deprecated code from Drupal\Core\Condition
- Issue #3259953 by andregp, paulocs, benjifisher, AaronMcHale, vikashsoni, sonvir249, anmolgoyal74, ranjith_kumar_k_u, Abhijith S, Rinku Jacob 13, Sivaji_Ganesh_Jojodae, Gábor Hojtsy, alexpott, djsagar, worldlinemine, webchick, tanubansal, tedbow: Status report should be near the top of the Reports menu
- Issue #3263126 by longwave, bbrala: Avoid unnecessary installs when testing JSON:API on config entities
- Issue #3263391 by longwave: Remove deprecated code from book.module
- Revert "Issue #3255809 by nod_, lauriii, hooroomoo: Add nightwatch tests for toolbar"
- Issue #3255809 by nod_, lauriii, hooroomoo: Add nightwatch tests for toolbar
- Issue #2949457 by idebr, jibran, Wim Leers, dungahk, fago, kim.pepper, neclimdul, ravi.shankar, Suresh Prabhu Parkala, Sam152, joshua1234511, Kristen Pol, kualee, MiroslavBanov, acbramley, alexpott, Fabianx: Enhance Toolbar's subtree caching so that menu links with CSRF token do not need one subtree cache item per session
- Issue #3262937 by mallezie, alexpott, catch, mondrake, mglaman: PHPStan fails when @legacy tests call deprecated code
- Issue #3262853 by longwave, daffie: [Symfony 6] Drop support for services as container parameters
- Issue #3262160 by nod_, lauriii: Simplify code in assets.js, remove mix of await and promise code
- Issue #3250191 by nod_, Wim Leers, lauriii, rkoller, Joachim Namyslo: Translation of toolbar button tooltips not working when text part language plugin is enabled
- Issue #3261239 by andypost, longwave: Remove deprecations from search module
- Revert "Issue #3217699 by mondrake, daffie, alexpott, andypost: Convert select query extenders to backend-overrideable services"
- Issue #3261251 by ravi.shankar, andypost, longwave, daffie: Remove deprecated node module functions
- Issue #3260554 by lauriii, hooroomoo, Wim Leers, nod_: [drupalMedia] Support alignment on
- Issue #3262931 by voleger, andypost: Remove drupal_required_modules() and mentions
- Issue #3261486 by catch, longwave, dww: Remove core updates added prior to 9.3.0 and adjust test coverage
- Issue #3254726 follow-up by catch: adjust phpstan baseline.
- Issue #3261241 by andypost, longwave: Remove deprecated field module functions
- Issue #3231321 by bnjmnm, nod_, lauriii: Improve keyboard accessibility in a particular edge case
- Issue #3124382 by mondrake, daffie, alexpott, catch: Remove per-table prefixing
- Issue #3248879 by alexpott: UpdatePathTestTrait doesn't test what it thinks it does
- Issue #3254726 by longwave, mondrake: Remove SimpleTest support from run-tests.sh, TestDiscovery and TestRunnerKernel
- Issue #3254727 by Leon Kessler, ranjith_kumar_k_u, cmlara, andileco: File links with query parameters no longer work
- Issue #3262805 by andypost, ravi.shankar, voleger: Deprecate drupal_required_modules()
- Issue #3261243 by andypost, longwave: Remove deprecated comment module functions
- Issue #3261252 by andypost: Remove deprecated system.module functions
- Issue #3164210 by jungle, sylus, Akhildev.cs, dww: Refactor array_merge() usage in loops as possible for performance
- Issue #3262500 by andypost: Remove leftover mentions of drupal_find_theme_functions() in Drupal 10
- Issue #3260781 by andypost: Remove deprecated module.inc functions
- Issue #2807949 by kunal.sachdev, tim.plunkett, tedbow, Dropa: update.module is incorrectly only responding when modules are installed
- Issue #3097889 by longwave, paulocs, anushrikumari, SenthilMohith, andypost, Gábor Hojtsy, catch, lauriii, Wim Leers: Remove deprecated theme functions
- Revert "Issue #3262500 by catch, andypost: Mark drupal_find_theme_functions() @internal in Drupal 9"
- Issue #3065574 by Charlie ChX Negyesi, quietone, amateescu: getUntranslated() doesn't refer to anything
- Issue #3262500 by catch, andypost: Mark drupal_find_theme_functions() @internal in Drupal 9
- Issue #3260615 by andypost, voleger, quietone, longwave: Remove deprecated schema.inc
- Issue #3172166 by Pooja Ganjage, ekes, Megha_kundar, xjm, alexpott, tstoeckler, mbovan, Spokje: Element::properties() produces notices if given an array with integer keys
- Issue #3262583 by xjm, neclimdul, bnjmnm, catch: Update Twig to 2.14.11
- Issue #3261957 by longwave, quietone, andypost: Properly deprecate migrate_drupal_multilingual for future removal
- Issue #3262183 by daffie, longwave: Remove DrupalKernelLegacyTest
- Issue #3262227 by daffie, longwave: Suppress deprecation message for Symfony 6
- Issue #3260765 by andypost, quietone, xjm: Remove deprecated code from menu-related subsystems
- Issue #3262190 by daffie, longwave: Add miscellaneous return type hints for Symfony 6
- Issue #3258030 by hooroomoo, lauriii, andregp, Wim Leers, rkoller: Text fields using CKEditor 5 do not get visual error indicator
- Issue #3248469 by nod_, lauriii, Wim Leers, longwave: Research if the CKE off-canvas CSS reset could be optimized
- Issue #3248423 by nod_, lauriii: Decide how CKEditor 5-provided types should be referenced
- Issue #3261262 by mondrake: Remove PHPUnit 8 warnings conversion to deprecations
- Issue #3261265 by andypost, longwave: Remove deprecated MimeTypeGuesser code
- Issue #3261253 by andypost, longwave: Remove deprecated path.module functions
- Issue #3261250 by andypost, longwave: Remove deprecated update.module functions
- Issue #3261264 by andypost: Remove deprecated code from \Drupal\Core\Cache\DatabaseCacheTagsChecksum
- Issue #3249592 by hooroomoo, vlyalko, Wim Leers, lauriii: [drupalImage]
upcast assumes HTML5: px unit, but HTML4 allowed % unit - Issue #3258435 by ravi.shankar, alexpott, longwave: Remove deprecated feed.reader.* and feed.writer.* services from the container
- Issue #3261629 by catch: Database dumps are no longer driver-agnostic
- Issue #3261743 by Spokje: Remove @composer require phpspec/prophecy-phpunit:^2 from "drupal-phpunit-upgrade"
- Issue #3261712 by Wim Leers, bnjmnm: Expand SmartDefaultSettingsTest to also test a format + editor with media embedding
- Issue #3232550 by Wim Leers, hooroomoo, xjm, ravi.shankar: Improve messaging about Internet Explorer 11
- Issue #3259532 by mondrake, murilohp: Add a kernel test for Connection::hasJson
- Issue #3258276 by Spokje: Remove deprecated flag --no-suggest from drupal-phpunit-upgrade composer script
- Issue #3254347 by murilohp, joachim, danflanagan8, quietone: Add the process plugin ID to migration exception message
- Issue #3259110 by longwave, mglaman: Fix undefined variables where files are included
- Issue #3115054 by chr.fritsch, vsujeetkumar, Vidushi Mehta, sergiuteaca, janmejaig, ranjith_kumar_k_u, phenaproxima: Media library widget forgets ordering when adding or removing items
- Issue #3256433 by andregp, Abhijith S, awangsetyawan, DuneBL, mherchel: wide-image class should not be added for user pictures
- Issue #3174402 by beatrizrodrigues, shetpooja04, ravi.shankar, ayushmishra206, longwave, catch: Fix unused variable $unpublished in TrackerTest.php
- Issue #3258642 by ilgnerfagundes, asishsajeev, Chi: Fix documentation for _toolbar_get_subtrees_hash()
- Issue #3258969 by heddn: Wrong argument for @message in ModuleInstaller::install call to watchdog_exception
- Issue #3261613 by mglaman: Ignore transliteration data when scanning with PHPStan
- Issue #3261539 by catch: Don't scan gzips
- Issue #3261357 by xjm: Increase Drupal 10's RECOMMENDED_PHP to 8.1 now
- Revert "Issue #3172166 by Pooja Ganjage, ekes, Megha_kundar, tstoeckler, mbovan, Spokje, alexpott: Element::properties() produces notices if given an array with integer keys"
- Issue #3259674 by longwave, andypost: [Symfony 6] Drupal\Core\Routing\Router::matchCollection(): Return value must be of type array, null returned
- Issue #3254149 by andypost, longwave, Spokje: Remove config.autoloader-suffix from composer.json
- Issue #3227265 by mondrake, murilohp: Remove the legacy assert traits
- Issue #3258918 by Spokje, longwave: Remove deprecated 'cache.null' service
- Issue #3210931 by andypost: Remove deprecated update.inc functions
- Issue #3260780 by andypost: Remove deprecated code from common.inc
- Issue #3260806 by andypost: Remove deprecated code from core/lib/Drupal/Core/Config
- Issue #3260801 by andypost: Remove deprecated code from core/lib/Drupal/Component/Utility
- Issue #3260778 by andypost, daffie: Remove deprecated code from bootstrap.inc
- Issue #3259024 by longwave: Remove deprecated 'app.root' and 'site.path' services
- Issue #3260805 by andypost: Remove deprecated code from core/lib/Drupal/Core/Routing
- Issue #3260520 by TR: GenericEvent is used improperly
- Issue #3260766 by andypost: Remove deprecated file.inc and its mentions
- Issue #3259380 by lauriii, Wim Leers, DamienMcKenna, hooroomoo, bnjmnm: CKEditor 5's toolbar occludes Drupal's toolbar if and only if CKEditor 5 has focus
- Back to dev.