Home

>

Tools

>

Drupal

>

Releases

>

8.9.0-beta1

Drupal Release: 8.9.0-beta1

Pre Release

Tag Name: 8.9.0-beta1

Release Date: 3/26/2020

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 8.9.0-beta1 marks the first beta release of the upcoming Drupal 8.9.0, which will be the final minor release of Drupal 8 and will become the long-term support (LTS) version. This release includes numerous bug fixes, performance improvements, and enhancements to migration tools, media handling, and theme management. Key improvements include better compatibility with PHP 7.4, enhanced update status reporting with clearer security coverage information, decoupling of themes from Classy, and various accessibility improvements. This release sets the foundation for a stable and well-supported final version of Drupal 8.

Highlight of the Release

    • PHP 7.4 compatibility improvements
    • Enhanced Update Status reporting with clearer security coverage information
    • Ability for themes to declare dependencies on modules
    • Decoupling of core themes from Classy templates
    • Improved migration tools for Drupal 7 content
    • Better support for third-party libraries in site-specific and install profile folders
    • Updated JavaScript libraries including CKEditor 4.13.1

Migration Guide

Updating to Drupal 8.9.0-beta1

PHP 7.4 Compatibility

If you're using PHP 7.4, this release includes numerous fixes to ensure compatibility. No special migration steps are needed, but testing your custom code with PHP 7.4 is recommended.

Theme Dependencies on Modules

If you're a theme developer, you can now declare module dependencies in your theme's info.yml file:

name: My Theme
type: theme
dependencies:
  - drupal:module_name

Classy Template Decoupling

Core themes now include copies of necessary Classy templates rather than depending directly on Classy. If your custom theme extends a core theme, no changes are needed. However, if you're developing a new theme, be aware of this architectural change.

ZendFramework to Laminas

ZendFramework dependencies have been replaced with their Laminas equivalents. If your code directly references ZendFramework classes, you'll need to update these references to use the Laminas namespace instead.

jQuery.cookie to JS-cookie

jQuery.cookie has been replaced with JS-cookie. A backwards compatibility layer is in place, but for best practices, update your custom JavaScript to use the new library:

Old:

jQuery.cookie('name', 'value');

New:

Drupal.cookie('name', 'value');

Deprecated Code

Several functions and constants have been properly deprecated in this release and will be removed in Drupal 10:

  • DRUPAL_USER_TIMEZONE_* constants
  • MENU_MAX_MENU_NAME_LENGTH_UI constant
  • drupal_installation_attempted() function
  • The stylesheets-remove key in theme info.yml files
  • AccessResult::cacheUntilEntityChanges()
  • EntityTypeInterface::isSubclassOf()

Review your code for usage of these deprecated items and update accordingly.

Upgrade Recommendations

As this is a beta release (8.9.0-beta1), it is not recommended for production sites. This release is intended for testing and development purposes to help identify and fix issues before the stable 8.9.0 release.

For development and testing environments:

  • Upgrading to this beta release is recommended to help test the upcoming features and fixes that will be part of the final 8.9.0 release.
  • Report any bugs or issues you encounter to help improve the final release.

For production sites:

  • Continue using Drupal 8.8.x until the stable 8.9.0 release is available.
  • Use this beta release in a staging environment to test your site's compatibility with the upcoming 8.9.0 release.

When the stable 8.9.0 is released, upgrading will be highly recommended as it will become the long-term support (LTS) version of Drupal 8. This means it will receive security updates even after Drupal 9 becomes the primary supported version.

Bug Fixes

Migration Fixes

Multiple migration-related bugs have been fixed:

  • Fixed issues with Drupal 7 date fields that were configured to not collect hour/minute/second granularities
  • Fixed migration of node revision translations from Drupal 6 and 7
  • Corrected issues with the Variable source plugin in migrate_drupal
  • Fixed incorrect generation of base_field_override for node types that don't have an overridden title label
  • Improved handling of missing migration filters
  • Fixed unexpected behavior when updating list fields from D7 to D8
  • Fixed migration of menu language content settings
  • Improved handling of empty comment language columns after migrating from D6

Layout Builder and Form Handling

  • Fixed issues with form blocks rendered inside Layout Builder breaking save functionality
  • Fixed problems with entity reference field blocks not bubbling cache metadata when view access to referenced entity is not allowed

Views Fixes

  • Fixed missing Views attachments for some display machine names
  • Fixed Views inline field separator rendering HTML as plain text
  • Corrected issues with Views UI module dependencies

Theme and UI Fixes

  • Fixed default link button styles
  • Removed transition from CKEditor border-color
  • Fixed hard-coded URI string in WorkflowListBuilder that broke when Drupal was installed in a subfolder
  • Fixed issues with the media library widget when clicking links that open in new windows
  • Fixed undefined index notice for data-view-mode in EditorMediaDialog

PHP 7.4 Compatibility Fixes

  • Fixed deprecated reverse order of glue and pieces in implode
  • Fixed deprecated curly brace syntax for accessing array elements
  • Updated code to be compatible with PHP 7.4's stricter type checking

Database and Entity Handling

  • Fixed incorrect data type when using preg_match as the result of another function
  • Fixed "Cannot load a NULL ID" assertion in EntityStorageBase to include entity type information
  • Fixed issues with system.schema missing schema information for some modules
  • Fixed issues with updating entity types from non-revisionable to revisionable

New Features

Themes Can Now Declare Module Dependencies

A long-awaited feature has finally arrived: themes can now declare dependencies on modules in their info.yml files. This allows theme developers to ensure that modules required for their themes to function properly are enabled when the theme is installed.

Enhanced Update Status Reporting

The Update module now provides clearer information about security coverage for installed minor versions, including:

  • Better display of core compatibility ranges for available module updates
  • Improved error handling for extensions with missing or invalid version information
  • Clearer identification of incompatible updates
  • Simplified wording of messages about security coverage

Better Support for Third-Party Libraries

This release adds support for third-party libraries in site-specific and install profile-specific libraries folders, giving developers more flexibility in managing external dependencies.

Protocol Version Cache Context

A new "protocol_version" cache context has been added to allow optimizing responses for HTTP/1 vs HTTP/2, enabling more efficient delivery of assets based on the client's capabilities.

Bundle-Specific Routes

Defining bundle-specific routes is now easier, allowing developers to create more targeted routing for specific entity bundles.

Improved Workspaces Toolbar UI

The Workspaces toolbar UI has been improved for both desktop and mobile devices, providing a better user experience for content editors working with workspaces.

Security Updates

This beta release includes security fixes from SA-CORE-2020-001, which was previously released for Drupal 8.8.x. As with all security updates, it's recommended to apply these fixes to maintain the security of your Drupal site.

Additionally, several code improvements have been made to enhance security:

  • The user_password() function has been updated for PHP 7 compatibility, ensuring secure password generation
  • Improved handling of file uploads and validation
  • Better type checking and validation throughout the codebase
  • Enhanced session handling with the introduction of a container tag to register session bags

Performance Improvements

Cache Tag Improvements

A new ENTITY_TYPE_list:BUNDLE cache tag has been introduced and added to single bundle listings. This allows for more granular cache invalidation, improving performance by reducing unnecessary cache invalidations.

Shortcut Toolbar Performance

The shortcut module's hook_toolbar implementation has been fixed to prevent it from making all pages uncacheable, which significantly improves caching for sites using the shortcut module.

Book Module Performance

BookManager::buildItems() has been optimized to be less resource-intensive by avoiding unnecessary node loading, which improves performance when displaying book navigation.

Database Query Optimization

Several database query optimizations have been implemented, including making the Condition class driver overridable, which allows for better performance with custom database drivers.

JavaScript Performance

The jQuery.cookie library has been replaced with the more modern and efficient JS-cookie library, with a backwards compatibility layer to ensure existing code continues to work.

Impact Summary

Drupal 8.9.0-beta1 represents a significant step toward the final minor release of Drupal 8, which will become the long-term support (LTS) version. This release focuses on stability, compatibility, and refinement rather than introducing major new features.

The most impactful changes include:

  1. PHP 7.4 Compatibility: Comprehensive updates to ensure Drupal 8.9 works properly with PHP 7.4, future-proofing sites as PHP versions continue to evolve.

  2. Theme System Improvements: The ability for themes to declare module dependencies solves a long-standing issue in Drupal's theme system. Additionally, the decoupling of core themes from Classy improves the architecture and maintainability of Drupal's theme layer.

  3. Enhanced Update Status: The improved update status reporting provides clearer information about security coverage and compatibility, helping site administrators make better decisions about updates.

  4. Migration Enhancements: Numerous fixes to migration tools make upgrading from Drupal 6 or 7 more reliable, especially for multilingual sites and complex content types.

  5. Performance Optimizations: Various performance improvements, particularly around caching and database queries, will result in better site performance.

  6. Modernized Dependencies: Updating to newer libraries like JS-cookie and replacing ZendFramework with Laminas keeps Drupal current with modern development practices.

As the final minor release of Drupal 8, version 8.9.0 will be supported with security updates until November 2021, even after Drupal 9 becomes the primary supported version. This makes it a crucial release for sites that need more time to prepare for the upgrade to Drupal 9.

Statistics:

File Changed300
Line Additions4,534
Line Deletions2,155
Line Changes6,689
Total Commits250

User Affected:

  • Improved Update Status reporting with clearer information about security coverage and compatibility
  • Enhanced Workspaces toolbar UI for both desktop and mobile
  • Better handling of module installation from ZIP URLs
  • Clearer messaging about security coverage for installed minor versions

Contributors:

webchicklauriiixjmalexpottgoba