Install
To start a new Drupal project with version 9.1.0-rc2@RC: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 release candidate for the next minor version (feature release) of Drupal 9. Release candidates are not supported for production sites, but they are intended for widespread testing in preparation for the upcoming stable release. More information on release candidates.
This minor release provides new improvements and functionality without breaking backward compatibility (BC) for public APIs. Note that there may be changes in internal APIs and experimental modules that require updates to contributed and custom modules and themes per Drupal core's backwards compatibility and experimental module policies.
Drupal 9.1.x contains new features, and should be the target for new site development. Drupal 9.0.x will continue to have security support until June 2021. Drupal 8.9.x will continue to have security support until November 2021.
Regardless of which version you choose now, features will only be added to Drupal 9 minor releases, so plan to adopt Drupal 9 this year so that you can easily update to Drupal 9.2 and later.
Important update information
If you are updating from 9.0.x or earlier, also read:
Updating from Drupal 8
For information on updating from Drupal 8 to Drupal 9, see Upgrading a Drupal 8 site to Drupal 9.
Sites on 8.7 or earlier must update to either 8.8 or 8.9 before updating to Drupal 9 as all Drupal 8 update functions from before Drupal 8.8.0-rc1 were removed from Drupal 9. We recommend updating to 8.9.x, as well as updating all contributed modules, before updating to any Drupal 9 release.
Note: The migration paths from Drupal 6 and Drupal 7 to Drupal 9 will remain supported throughout Drupal 9's release cycle.
Note for users of the Experimental Workspaces module
Existing Drupal 8 sites using the experimental Workspaces module must update to at least Drupal 8.8.2 before updating to Drupal 9. (This is due to a required data integrity fix.) Remember that Workspaces is currently in beta status and is not intended for production.
Upgrading from Drupal 7
Drupal 7 users can continue to migrate to Drupal 8.9, or migrate to 9.0 or 9.1 directly. The upgrade path for multilingual sites is stable in Drupal 8.9, 9.0 and 9.1!
PHP 8 compatibility changes and dependency updates since 9.1.0-rc1
Drupal 9.1.0 is fully compatible with PHP 8.0! Report any issues related to PHP 8 in the Drupal core issue queue.
The following laminas components are updated for PHP 8 compatibility:
- laminas-diactoros to 2.5.0
- laminas-escaper to 2.7.0
- laminas-feed to 2.13.0
While these are minor updates from Laminas, they are not known to contain any disruptive changes. \Laminas\Diactoros\Stream will now throw a \Laminas\Diactoros\Exception\RuntimeException instead of an \Laminas\Diactoros\Exception\InvalidArgumentException when used with a non-resource stream, but this is not likely to affect Drupal sites or custom code.
Known issues
- The PECL uploadprogress library is not yet compatible with PHP 8. If you are relying on this in PHP 7.4, you may want to wait for uploadprogress to release a PHP 8 compatible version first. Support for PHP's built-in upload progress is being worked on in #1561866: Add support for built-in PHP session upload progress.
Search the issue queue for known issues.
All changes since 9.1.0-rc1
- #3180207 by andypost, alexpott, Gábor Hojtsy, Mixologic, xjm, catch: Update laminas-diactoros, laminas-escaper and laminas-feed for PHP 8 compatibility
- #3177231 by mherchel, ayushmishra206, kostyashupenko, nitesh624, markdorison, lauriii: Olivero homepage has an empty title block div with an empty H1
- #3176913 by sarvjeetsingh, mherchel: [Olivero Code Review] Missing @file documentation in block--system-powered-by-block.html.twig
- #3179150 by komalk, hansa11, Santosh_Verma, Abhijith S, mherchel: H1 tags within Olivero's .text-content CSS class should use sans-serif font
- #3128815 by mondrake, jungle, sja112, Spokje, shobhit_juyal, jameszhang023, nikitagupta, mrinalini9, xjm, longwave, dww: Replace assert*() involving greater/less comparison operators with assert(Greater|Less)Than(OrEqual)
- #3184324 by mondrake, longwave: Convert calls to drupalPostForm() that assign return value to a variable
- #3176200 by msuthars, adityasingh, Pooja Ganjage, ravi.shankar, mondrake, longwave: Remove more uses of t() in assertNoText()
- #3136406 by Spokje, codersukanta, IJsbrandy, atul4drupal, MahtabAlam, BalajiDS: Argument 1 passed to Drupal\Core\Form\SubformState::createForSubform() must be of the type array, null given
- #3183712 by idebr, B2F: hook_entity_access $operation description is listed under $account
- #3168375 by mondrake, manishsaharan29497, longwave: Convert calls to drupalPostForm(NULL, ...) to submitForm
- #3098281 by greg.1.anderson, alexpott, heddn, Mile23, xjm, jungle, longwave: Ensure that 'composer update' evaluates dependencies using the correct PHP version
- #3183825 by effulgentsia, alexpott: Use absolute instead of relative paths within the packages.json created in ComposerProjectTemplatesTest
- #3183420 by alexpott, catch: Override \Behat\Mink\Driver\Selenium2Driver::uploadFile() in DrupalSelenium2Driver