Drupal Release: 8.5.0
Tag Name: 8.5.0
Release Date: 3/7/2018
DrupalHighly 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.5.0 introduces several major features including stable Content Moderation and Settings Tray modules, experimental Layout Builder, improved Media functionality, and a new experimental demo profile called Umami. This release also includes significant improvements to multilingual content handling with content translations that can be moderated independently, better migration tools including incremental migrations through the UI, and numerous bug fixes and performance improvements. PHP 5 support is now deprecated, with PHP 7.2 recommended for optimal performance.
Highlight of the Release
- Content Moderation module is now stable, allowing for more flexible workflows
- Settings Tray module is now stable, providing in-context editing of blocks
- New experimental Layout Builder for creating layouts
- Media module is now available in the UI (previously hidden)
- New experimental Umami demo profile showcasing Drupal's capabilities
- Improved multilingual support with independent moderation of translations
- Incremental migrations now available through the UI
- PHP 5 support is now deprecated, with PHP 7.2 recommended
Migration Guide
PHP Version Requirements
PHP 5 support is now deprecated. Sites should update to PHP 7.1+ with PHP 7.2 recommended for optimal performance and security. A warning will be displayed on the status page for sites running on PHP versions that will soon be unsupported.
Content Moderation
If you were using the experimental Content Moderation module, review your workflows after upgrading as the stable version includes API changes that might affect custom code interacting with workflows.
Entity Revision Handling
Several changes have been made to how entity revisions and translations are handled. If you have custom code that interacts with entity revisions, especially for translated content, you should test thoroughly after upgrading.
Layout Builder
If you choose to use the experimental Layout Builder module, be aware that its API may change in future releases as it's still under development.
Media Module
The Media module is now available in the UI. If you were using a contributed Media module, you should plan to migrate to the core implementation.
Symfony Components
Symfony components have been updated to 3.4. If you have custom code that interacts directly with Symfony components, review for compatibility.
Field Widget Form Alters
hook_field_widget_form_alter() can no longer affect the whole widget for multi-value fields. Use the new hook_field_widget_multivalue_form_alter() and hook_field_widget_multivalue_WIDGET_TYPE_form_alter() hooks instead.
REST API Changes
If you're using the REST API, note that the revision_default field is now marked as internal for REST consumers.
Upgrade Recommendations
Priority: Medium to High
Who should upgrade:
- Sites that need the new stable Content Moderation and Settings Tray features
- Sites that want to use the improved Media functionality
- Sites with multilingual content that will benefit from independent translation moderation
- Sites running on PHP 5.x, as support is now deprecated
Upgrade path:
- Back up your site's code, files, and database
- Update to Drupal 8.5.0 using Composer (recommended) or by downloading the core package
- Run the database updates by visiting
/update.phpor using Drush:drush updatedb - Clear caches:
drush cache-rebuildor via the admin UI - Test thoroughly, especially if you use multilingual features or content moderation
Special considerations:
- If upgrading from 8.4.x, the upgrade should be straightforward
- If upgrading from earlier versions, upgrade to 8.4.x first
- Sites using PHP 5.x should plan to upgrade to PHP 7.1+ soon
- Review any custom code that interacts with entity revisions or translations
- If you use the experimental Layout Builder, be aware its API may change in future releases
Bug Fixes
Multilingual and Translation Fixes
- Fixed issues where changes to untranslatable fields would affect all translations in pending revisions
- Fixed a bug where removed revision translations could reappear when creating a new revision
- Fixed an issue where pending revisions could become unavailable when untranslatable fields affect all translations
- Fixed a bug where flagging translations as outdated in a pending revision caused multiple translations to be marked as affected
- Resolved an issue where multilingual logic was not applied when a new revision translation was being added
- Fixed a bug where node links always loaded the default revision during rendering
Entity and Field Handling
- Fixed
EntityReferenceItem::generateSampleValue()to create a sample entity if a referenceable entity is not found - Fixed a regression where
LinkWidgetno longer supported base fields with optional title - Fixed an issue where
field_purge_batchexpected an array of objects but instead got an array of arrays - Fixed a bug where
ModerationStateFieldItemListfails after an entity has been serialized/unserialized - Fixed an issue where widget validation crashed on
ItemListviolations for widgets with a customerrorElement()implementation
Media and File Handling
- Fixed an issue where for multi-language private files,
FileDownloadControllerwas used for theImageStyleinstead ofImageStyleDownloadController - Fixed a PHP warning in
ImageWidget::validateRequiredFields()when the triggering element is a non-button - Updated image fields to use any extensions the current image toolkit supports (instead of hard-coding jpg, png, and gif only)
Views and UI
- Fixed an issue where Views Table style plugin breaks dynamic cache
- Fixed a bug where duplicating a Page to Block after changing the display ID and then saving the view destroys the Page
- Fixed a regression where it was impossible to add effects to image style via the UI
Performance and Caching
- Fixed an issue where
user_hook_toolbar()made all pages uncacheable - Fixed a browser parsing race condition where
JSON.parsewas sometimes called on partially streamed BigPipe placeholder replacements, causing fatal JS errors
Other Fixes
- Fixed a bug where
menu_link_content_entity_predeletedeleted "collection", "add-form", etc. links - Fixed an issue where the installer did not fix the database connection after creating the database on MySQL
- Fixed a bug where
truncate_utf8()cut on the first newline character when$wordsafe == TRUE - Fixed an issue where the
.ht.router.phpdid not support update.php - Fixed a bug where stubbing content entities with required fields with a default value was broken
New Features
Content Moderation Now Stable
Content Moderation module has graduated from experimental to stable status. This module provides flexible workflows for managing content states (like Draft, Published, and Archived) and allows different user roles to have different permissions in the workflow.
Settings Tray Now Stable
The Settings Tray module has also graduated to stable status. This module provides a sidebar for editing block configuration directly from the frontend of your site, improving the content editing experience.
Experimental Layout Builder
A new experimental Layout Builder module has been introduced, allowing site builders to create layouts for content types, customize layouts for individual content items, and create custom landing pages with a drag-and-drop interface.
Media Module Unhidden
The Media module is now available in the UI (previously hidden). This provides improved media management capabilities including reusable media entities, remote media (like YouTube videos), and a media library.
Experimental Umami Demo Profile
A new experimental demo profile called "Umami" has been added to showcase Drupal's capabilities. This food magazine themed demo includes sample content, a custom theme, and custom modules to demonstrate Drupal's features.
Improved Multilingual Support
Content translations can now be moderated independently, allowing different language versions to have different workflow states. This is a significant improvement for multilingual sites.
Incremental Migrations Through UI
Incremental migrations are now available through the UI, allowing site administrators to update content from previous Drupal versions without having to start the migration process from scratch each time.
New Timestamp Scalar Data Type
A new timestamp scalar data type has been added to the system, improving date and time handling.
Security Updates
- SA-CORE-2018-001 security fix has been included in this release
- Fixed potential security issues in file handling
- Improved validation in various form elements
- Enhanced security of private file handling for multilingual sites
Performance Improvements
Caching Improvements
- Fixed an issue where
user_hook_toolbar()made all pages uncacheable, improving cache effectiveness - Improved HTML caching for various components
JavaScript Performance
- Fixed a browser parsing race condition with BigPipe that could cause JavaScript errors and performance issues
- Updated JS build script packages for better performance
Database Optimizations
- Improved handling of database connections during installation
- Optimized entity loading and revision handling
Entity and Field Handling
- More efficient handling of entity revisions and translations
- Improved field synchronization logic to run only when necessary
Migration Performance
- Added ability to perform incremental migrations, significantly improving performance for large migration tasks
- Optimized migration processes by categorizing migrations according to their type
Impact Summary
Drupal 8.5.0 represents a significant step forward with two experimental modules (Content Moderation and Settings Tray) now stable and ready for production use. The addition of the experimental Layout Builder provides powerful new capabilities for site builders, while the unhiding of the Media module improves media management capabilities.
For multilingual sites, the ability to moderate content translations independently is a major improvement that offers more flexible content workflows. The addition of incremental migrations through the UI makes it easier to migrate content from older Drupal versions.
Developers should note that PHP 5 support is now deprecated, with PHP 7.2 recommended for optimal performance. The update to Symfony 3.4 components provides improved performance and security.
This release includes numerous bug fixes, particularly around entity revisions, translations, and field handling. Performance improvements in caching and JavaScript handling will benefit all sites.
The new experimental Umami demo profile provides a showcase of Drupal's capabilities, which is valuable for demonstrations and evaluations.
Overall, this is a feature-rich release that improves stability, adds new capabilities, and sets the stage for future development while maintaining backward compatibility for most use cases.
Statistics:
User Affected:
- Can now use Content Moderation and Settings Tray modules which are now stable
- Can experiment with the new Layout Builder for creating layouts
- Can use Media module which is now unhidden from the UI
- Can try the new experimental Umami demo profile for showcasing Drupal's capabilities
- Can perform incremental migrations through the UI
