Home

>

Tools

>

Drupal

>

Releases

>

9.5.0-rc1

Drupal Release: 9.5.0-rc1

Pre Release

Tag Name: 9.5.0-rc1

Release Date: 11/16/2022

Drupal LogoDrupal

Highly flexible, open-source content management system known for complex, scalable web applications. Preferred by government, educational, and large enterprise websites requiring advanced customization and security features. Robust module ecosystem.

TL;DR

Drupal 9.5.0-rc1 marks a significant step towards the final 9.5.0 release, bringing numerous bug fixes, performance improvements, and developer experience enhancements. This release candidate focuses on stabilizing test infrastructure, improving CKEditor 5 integration, enhancing database handling, and refining the migration system. Key improvements include better error handling, updated JavaScript dependencies, and various documentation updates. This release is primarily aimed at developers and site builders who want to test their sites against the upcoming stable release.

Highlight of the Release

    • Fixed SQLite database locking errors that previously caused fatal errors
    • Enhanced CKEditor 5 integration with improved media handling and plugin architecture
    • Added hook_requirements_alter() for modifying system requirements checks
    • Improved Layout Builder with new template variables and getter methods
    • Enhanced migration tools with better error messages and configuration options
    • Fixed issues with date fields showing incorrect default values across time zones
    • Improved test infrastructure with stabilized JavaScript testing

Migration Guide

CKEditor 5 Updates

  • CKEditor 5 has been updated to version 35.3.1. If you've created custom CKEditor 5 plugins, ensure they're compatible with this version.
  • The CKEditor 5 plugin architecture has been enhanced to make plugin definitions derivable. If you've created custom plugins, review the updated architecture (#3313473).
  • The "Insert Drupal Media" button tooltip has been renamed to "Insert Media" (#3319735).

Database API Changes

  • The temporary tables functionality has been restored with Connection::queryTemporary(). If you were using workarounds for this functionality, you can now use the official API again (#3312641).
  • If you were experiencing SQLite database locking errors, these should now be fixed. Review your error handling code if it was specifically dealing with these errors (#1120020).

Layout Builder Changes

  • A new getter for layout object has been added to Layout Builder's ConfigureSectionForm. Update your custom code if you were accessing this data through other means (#3044117).
  • The "discard changes" button in Layout Builder now ignores any input and skips validation. Review your custom validation code if it relied on this button triggering validation (#3165010).

Form API Changes

  • TableSelect element options can now be disabled. If you're using tableselect elements, you can now take advantage of this feature (#2895352).
  • Required file fields validation has been fixed. If you had custom workarounds for this issue, they may no longer be necessary (#59750).

Migration System Updates

  • The migrate_drupal_ui source database can now be set in settings.php. Update your deployment processes to take advantage of this if needed (#3096101).
  • Several improvements have been made to migration error messages. Review your custom migration error handling if it relied on specific error formats.

JavaScript Updates

  • Multiple JavaScript dependencies have been updated. Test your custom JavaScript thoroughly with this release.
  • PostCSS processing has been updated. If you have custom CSS that relies on specific PostCSS behavior, verify it still works as expected.

Other Changes

  • A new hook_requirements_alter() has been added. If you need to modify system requirements checks, you can now use this hook (#309040).
  • The 'user/edit' route has been added. If you had custom routes or links for user editing, consider using this standard route (#3168624).

Upgrade Recommendations

Who should upgrade?

  • Developers and site builders who want to test their sites against the upcoming Drupal 9.5.0 stable release
  • Module maintainers who need to ensure their modules are compatible with Drupal 9.5.0
  • Early adopters who want to take advantage of the latest features and improvements

When to upgrade?

This is a release candidate (RC1), which means it's intended for testing purposes before the final stable release. We recommend:

  • Production sites: Wait for the stable 9.5.0 release unless you have a specific need for features in this RC
  • Development and staging environments: Upgrade now to test compatibility with your custom code and contributed modules
  • Local development environments: Upgrade to help test and identify any issues before the stable release

How to prepare?

  1. Create a complete backup of your site before upgrading
  2. Update custom code to ensure compatibility with the changes in this release
  3. Test thoroughly in a non-production environment before considering deployment
  4. Review the full release notes to understand all changes that might affect your site
  5. Check your contributed modules for compatibility with Drupal 9.5.0-rc1

Upgrade path:

The recommended upgrade path is from Drupal 9.4.x directly to 9.5.0-rc1. If you're on an earlier version, consider upgrading to the latest 9.4.x release first, then to 9.5.0-rc1.

Bug Fixes

Database and Performance

  • Fixed SQLite database locking errors that previously caused fatal errors (#1120020)
  • Restored temporary tables functionality with Connection::queryTemporary() (#3312641)
  • Fixed syntax error when using COUNT aggregation of node IDs (#3247121)
  • Fixed regression concerning the cache of private files (#3312198)

Fields and Forms

  • Fixed required flag on file forms breaking on validation (#59750)
  • Fixed date fields showing incorrect default values when UTC date differs from user's date (#2993165)
  • Fixed undefined index: terms error (#3117069)
  • Fixed formatter 'URL to image' showing PHP warning due to loading attribute (#3291622)

CKEditor and Media

  • Fixed CKEditor 5 media handling when captions contain markup (#3276213)
  • Fixed extraneous border on the "cancel" button in MediaImageTextAlternativeUi (#3276469)
  • Fixed OEmbed thumbnail fetching logic to handle special characters in errors (#3310510)

Layout and Display

  • Fixed page variant plugin not being correctly instantiated (#3294833)
  • Fixed HTMLRestrictions allowing <tag attr="*"> which is equivalent to <tag attr> (#3284254)
  • Fixed different colors for visited links bleeding into the toolbar (#3195033)

Migration

  • Fixed "A(n) object was thrown while attempting to stub" hard-to-debug migration message (#3202665)
  • Fixed ContextDefinition::isSatisfiedBy not taking into account cardinality (#3314469)
  • Fixed issues with TestSiteApplicationTest when other tests create database tables (#3211992)

JavaScript and UI

  • Fixed ModulesListForm.php assigning string value to ['attributes']['class'] (#3307972)
  • Fixed "Spinner" loading icon not being vertically aligned properly in Claro theme (#3308733)
  • Fixed broken issue links in @todos (#3310760)

Other

  • Fixed no redirection to term view display page from term edit page (#2826592)
  • Fixed LogMessageParser::parseMessagePlaceholders() to switch bang placeholder to colon placeholder (#2617330)
  • Fixed UniqueFieldValueValidator lowercasing Label of field on violation message (#3029782)
  • Fixed exceptions in post updates being very broken (#3319839)

New Features

and Enhancements

System and Core

  • Added hook_requirements_alter() to allow modules to modify system requirements checks (#309040)
  • Added a new 'user/edit' route for better user management (#3168624)
  • Added ability to set migrate_drupal_ui source database in settings.php (#3096101)
  • Added 'in_preview' variable to block and layout templates for better theming (#3273317)

Layout Builder

  • Added getter for layout object in Layout Builder's ConfigureSectionForm (#3044117)
  • Improved Layout Builder with better theme context for entity rendering (#3111192)
  • Enhanced Layout Builder's "discard changes" button to skip validation (#3165010)

Forms and UI

  • Added ability to disable tableselect element options (#2895352)
  • Improved password recovery form with clearer messaging about email requirements (#3110761)
  • Simplified wording of "create a css class" label in Views (#2864115)
  • Moved Relationships above Contextual Filters in Views Advanced Settings for better usability (#2975616)

Documentation

  • Added security advisories Help Topic (#3204175)
  • Improved Batch API $context['sandbox'] documentation (#3307468)
  • Updated breadcrumbs in multiple help topics to use help_route_link function (#3307697, #3307691, #3307700, #3307694, #3307696)

Developer Tools

  • Added support for uppercase service IDs/names for autowiring support (#3320315)
  • Enhanced error handling in JSON:API for field property name typos (#3127883)

Security Updates

  • Added security advisories Help Topic to improve security documentation and awareness (#3204175)
  • Updated robots.txt file to disallow Oembed media links for better Drupal SEO and security (#3271222)
  • Updated various JavaScript dependencies to address potential security vulnerabilities:
    • Updated jsdom, terser, minimist and underscore (#3317885)
    • Updated webpack and related dependencies (#3320518)
    • Updated Babel to 7.20.2 (#3321002)
    • Updated CKEditor 5 to 35.3.1 (#3321191)

Note: This release does not contain fixes for any specific security vulnerabilities. The changes are preventative measures and dependency updates to maintain security best practices.

Performance Improvements

Database and Caching

  • Improved database handling with fixes for SQLite locking errors (#1120020)
  • Enhanced static cache management in ExtensionDiscovery during KernelTests (#3293446)
  • Restored temporary tables functionality with Connection::queryTemporary() for better query performance (#3312641)

JavaScript and Frontend

  • Updated PostCSS, postcss-header, and postcss-preset-env for better CSS processing performance (#3317887)
  • Updated webpack and related dependencies for improved build performance (#3320518)
  • Removed unnecessary dependencies like raw-loader and Chromedriver (#3319917, #3317879)

Translations and Localization

  • Performance improvement for importing of project translations (#3074765)
  • Enhanced handling of translation files and processes

Testing

  • Improved test performance for CommentPreviewTest (#2254175)
  • Fixed test performance of WorkspacesUninstallTest (#3308915)
  • Enhanced run-tests.sh to better select required tests with multiple testgroups (#3251817)
  • Made it easier to run only tests for one specific core module (#3313833)

Other

  • Fixed rewrite rules for gzipped CSS and JavaScript aggregates that caused excessive lstats for non-existent files (#1040534)
  • Improved plugin manager performance with better sorting of categorized plugins (#3308449)

Impact Summary

Drupal 9.5.0-rc1 represents a significant step towards the stable 9.5.0 release, focusing on bug fixes, performance improvements, and developer experience enhancements. This release candidate addresses several long-standing issues, including SQLite database locking errors that previously caused fatal errors, and improves the stability of the test infrastructure.

For developers, this release brings numerous improvements to the development experience, including better error messages for forms and migrations, enhanced database handling, and updated JavaScript dependencies. The CKEditor 5 integration has been strengthened with improved media handling and a more flexible plugin architecture.

Site builders will benefit from enhancements to Layout Builder, including new template variables and getter methods, as well as improvements to Views UI with simplified wording and better field ordering. The migration system has been enhanced with better error messages and configuration options.

Content editors will appreciate fixes for date fields showing incorrect default values across time zones, improved CKEditor 5 media handling, and better form validation and error messages.

Administrators gain access to a new hook_requirements_alter() for better system status reporting, improved SEO with updated robots.txt configuration, and enhanced security documentation.

While this is a release candidate intended primarily for testing, it includes numerous fixes and improvements that make it a worthwhile update for development and staging environments. Production sites should generally wait for the stable 9.5.0 release unless they have specific needs for features in this RC.

Statistics:

File Changed300
Line Additions372
Line Deletions303
Line Changes675
Total Commits148

User Affected:

  • Improved error messages and debugging capabilities for forms, migrations, and JSON:API
  • Enhanced database handling with fixes for SQLite locking errors and temporary tables
  • Better test infrastructure with stabilized JavaScript testing and improved test selection
  • Updated JavaScript dependencies including CKEditor 5, PostCSS, webpack, and other tools

Contributors:

alexpottcatch56lauriiieffulgentsiabbenjaminlongwavelarowlan