Drupal Release: 8.0.0-beta11
Pre Release
Tag Name: 8.0.0-beta11
Release Date: 5/27/2015
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.0.0-beta11 brings significant performance improvements, enhanced multilingual capabilities, and better caching mechanisms. This release focuses on optimizing entity rendering, improving configuration management, and refining the user interface. Key highlights include faster theme registry building (85% improvement), optimized config entity lookups, and better handling of translatable content. The release also includes numerous bug fixes, documentation improvements, and code standardization efforts to ensure a more stable and developer-friendly platform as Drupal 8 moves closer to a stable release.
Highlight of the Release
- 85% improvement in theme registry build performance
- Optimized entity rendering with fast field rendering
- New key value store to optimize config entity lookups
- Fixed critical bug where deleting an entity translation would delete the whole entity
- Improved multilingual support with better handling of translatable content
- Enhanced caching mechanisms for menu trees and views
- Better handling of required multiple fields in forms
- Renamed default 'Messages' region to 'Highlighted' for all themes
- Updated jQuery to version 2.1.4
Migration Guide
for Drupal 8.0.0-beta11
Theme Changes
- Region Renaming: The default "Messages" region has been renamed to "Highlighted" for all themes. If your theme extends a core theme or uses this region, update your theme's .info.yml file and any templates referencing this region.
# Before
regions:
messages: Messages
# After
regions:
highlighted: Highlighted
- CSS Classes Prefixing: Several CSS classes have been prefixed with
js-to separate styling from JavaScript behavior. Update your CSS selectors if you're targeting these classes:text-*classes are now prefixed withjs-field-parentclasses are now prefixed withjs-form-type-*classes are now prefixed withjs-form-submitclasses are now prefixed withjs-
API Changes
-
getFormID to getFormId: Rename any remaining
{Form}::getFormIDmethods to{Form}::getFormIdto follow naming conventions. -
Deprecated Functions: The following functions have been deprecated for Drupal 9:
drupal_pre_render_link()- Use appropriate render arrays insteadformat_xml_elements()- Removed, use alternative XML handling methodsupdate_get_projects()- Removed, use the update module's services instead
-
Interface Changes:
MenuLinkInterface::isCacheable()has been removed in favor of implementingCacheableDependencyInterfacegetConfigPrefix()moved toConfigEntityTypeInterface
JavaScript Updates
- jQuery updated to 2.1.4
- jquery.once updated to 2.0.1
- picturefill updated to 2.3.1
- domready updated to 1.0.8
If your code depends on specific versions of these libraries, test thoroughly after upgrading.
Database Schema Changes
- Alphanumeric fields now use ASCII character set to allow indexing all 255 characters. If you have custom modules with alphanumeric fields, consider updating their schema definitions.
Configuration Management
- A new key value store has been implemented to optimize config entity lookups. If you have custom config entity types, ensure they properly implement all required interfaces.
Multilingual Changes
- Fixed critical issues with entity translations. If you're working with multilingual sites, test your translation workflows thoroughly after upgrading.
Upgrade Recommendations
Who Should Upgrade
- Development Sites: All Drupal 8 development sites should upgrade to beta11 to benefit from the significant performance improvements and bug fixes.
- Multilingual Sites: Sites using multilingual features should definitely upgrade to fix critical issues with entity translations.
- High-Traffic Sites: The performance improvements in this release make it particularly valuable for high-traffic sites.
Upgrade Priority
Medium-High Priority
This release contains significant performance improvements and fixes critical bugs, particularly for multilingual sites. While it's still a beta release, the improvements justify the upgrade for most development sites.
Upgrade Considerations
-
Theme Changes: The renaming of the "Messages" region to "Highlighted" may require updates to custom themes.
-
JavaScript Dependencies: Updates to jQuery (2.1.4) and other JavaScript libraries may affect custom code that depends on specific versions.
-
CSS Classes: Several CSS classes have been prefixed with
js-. Review your CSS selectors if you're targeting these classes. -
Testing Focus Areas:
- Multilingual functionality, especially entity translations
- Views with filters and pagers
- Custom blocks and their management
- Form handling, particularly for required multiple fields
- Performance under load to verify improvements
-
Database Updates: Run database updates immediately after code deployment:
drush updatedb -
Cache Clearing: Clear all caches after upgrading:
drush cache-rebuild
Compatibility Notes
This is a beta release and is not recommended for production sites. It's intended for developers and site builders who are preparing for Drupal 8's stable release. Some APIs may still change before the final release.
Bug Fixes
Critical Bug Fixes
- Entity Translation: Fixed a critical bug where deleting an entity translation from the UI would delete the whole entity (Issue #2486177).
- Translatable Timestamps: Fixed issues with translatable entity 'changed' timestamps not working at all (Issue #2428795).
- PostgreSQL Compatibility: Fixed multiple PostgreSQL-specific issues in tests and core functionality.
- SQLite Compatibility: Addressed several SQLite-specific issues in tests and core functionality.
Security and Access Control
- Private Files: Fixed an issue where private files no longer attached to an entity could become accessible to unauthorized users (Issue #2461845).
- Entity Autocomplete: Fixed a security issue in EntityAutocomplete element settings that allowed SQL injection (Issue #2490420).
UI and Form Issues
- Required Multiple Fields: Fixed issues with "required, multiple" fields in forms (Issue #980144).
- Views Filters: Fixed double-escape on Views filters (Issue #2469563).
- Shortcuts: Fixed an issue where shortcuts to pages generated by views were not recognized as added to the shortcut set (Issue #2478151).
- Password Reset: Fixed misleading message for blocked users who request password reset (Issue #753898).
- Machine Name Validation: Fixed HTML5 validation failure when machine name field is hidden (Issue #2488884).
Multilingual Issues
- Entity Translation: Fixed issues with entity translation and language handling.
- Non-English Languages: Fixed PDOException when saving a node on non-English languages (Issue #1328014).
- Language Installation: Fixed issues with installing in a non-English language for command-line installations (Issue #2474537).
Other Fixes
- Progress Bar: Fixed issue where progress bar starts at 100% (Issue #2486431).
- Module Installation: Fixed issue with modules getting installed in the theme directory if they don't have a *.module file (Issue #2413695).
- Timezone Settings: Fixed installer warning about relying on system's timezone settings (Issue #2446859).
- UTF-8 BOM: Fixed issue where CSS files encoded in UTF-8 with BOM break the design when enabling CSS aggregation (Issue #1833356).
New Features
Enhanced Entity Rendering and Caching
- Fast Field Rendering: Leveraged entityDisplay to provide fast rendering for fields, significantly improving performance.
- Optimized Config Entity Lookups: Implemented a key value store to optimize config entity lookups.
- Improved Caching Mechanisms: Added cache contexts for views using pagers, exposed sorts, and items per page.
- Menu Tree Caching: Implemented caching for localized, access filtered, URL resolved, and rendered menu trees.
Multilingual Improvements
- Better Translation Handling: Fixed critical issues with entity translations and improved the UI for working with multilingual content.
- Translatable Timestamps: Fixed issues with translatable entity 'changed' timestamps.
- Language Detection: Improved URL language detection with better handling of path prefixes.
UI and Theming Enhancements
- Region Renaming: Renamed the default "Messages" region to "Highlighted" for all themes for better semantic clarity.
- Custom Block Library: Converted custom block library page to use Views for better management.
- Confirmation Forms: Improved styling of cancel links as buttons on confirmation forms.
- Focus State Styling: Enhanced accessibility with underline as the focused state.
- Seven Theme Improvements: Various UI improvements to the Seven administrative theme.
JavaScript Updates
- jQuery Update: Updated jQuery to version 2.1.4.
- jQuery Once: Updated jquery.once to version 2.0.1.
- Picturefill: Updated picturefill library to version 2.3.1.
- Domready: Updated domready library to version 1.0.8.
- AJAX Improvements: Simplified and optimized Drupal.ajax() instantiation and implementation.
Security Updates
Security Improvements
-
Entity Autocomplete Security: Fixed a security issue in EntityAutocomplete element settings that allowed SQL injection and for arbitrary user-supplied data to be passed into unserialize() (Issue #2490420).
-
Private Files Access Control: Fixed an issue where private files that are no longer attached to an entity could suddenly become accessible to people who couldn't see them before (Issue #2461845).
-
Machine Name Validation: Prevented empty requests on machine name transliterate to improve security (Issue #2490146).
-
Form Input Handling: Added autocorrect="off" and autocapitalize="off" attributes to login form for better security (Issue #2487808).
-
Password Reset Security: Fixed an issue where following a password reset link while logged in would leave users unable to change their password (Issue #889772).
-
Configuration Import Validation: Improved validation of configuration dependencies before importing configuration to prevent potential security issues (Issue #2416109).
Performance Improvements
Theme Registry Performance
- 85% Faster Theme Registry Building: Implemented significant optimizations to theme registry building, resulting in an 85% performance improvement (Issue #2339447).
Entity and Field Handling
- Fast Field Rendering: Leveraged entityDisplay to provide fast rendering for fields, significantly improving performance (Issue #1867518).
- Config Entity Lookups: Implemented a key value store to optimize config entity lookups (Issue #2430219).
- Field Map Rebuilding: Improved performance when rebuilding field maps with many bundles/fields (Issue #2482295).
Caching Improvements
- Menu Active Trail Caching: Cached MenuActiveTrail::getActiveIds() for all menus per route match, replacing N database queries with a single cache get, saving approximately 1ms per response (Issue #2479363).
- Views Row Output Caching: Implemented caching for Field views row output (Issue #2450897).
- Menu Tree Caching: Added caching for localized, access filtered, URL resolved, and rendered menu trees (Issue #1805054).
Module System Optimization
- Module Directory Scanning: Avoided re-scanning module directory when a filename or a module is missing (Issue #1081266).
- Module Handler: Used ModuleHander::getName() instead of rebuilding module data on permissions page (Issue #2488610).
Database and Query Optimization
- Config Entity Query: Optimized config entity query conditions on ID (Issue #2247379).
- Views Performance: Added various performance improvements to Views handling and rendering.
Memory Usage Improvements
- Memory Limits: Made Drupal install and run within reasonable PHP memory limits (Issue #2289201).
- Timer Removal: Removed Timer from DrupalKernel to reduce overhead (Issue #2474047).
JavaScript Optimization
- AJAX Implementation: Simplified and optimized Drupal.ajax() instantiation and implementation (Issue #1533366).
Impact Summary
Drupal 8.0.0-beta11 represents a significant step forward in performance optimization and stability as the project moves closer to a stable release. The most notable improvements are in rendering speed and caching mechanisms, with an impressive 85% improvement in theme registry build performance and optimized entity rendering.
For developers, this release brings substantial performance enhancements through improved caching strategies, optimized config entity lookups, and faster field rendering. The introduction of a key value store for config entity lookups and better handling of entity queries will result in more efficient database operations.
Multilingual sites receive critical fixes, particularly addressing a serious bug where deleting an entity translation would delete the entire entity. Improvements to translatable timestamps and language detection make this release essential for sites supporting multiple languages.
Theme developers will appreciate the standardization of CSS across core modules, better handling of Twig templates, and the renaming of the default "Messages" region to "Highlighted" for better semantic clarity. The prefixing of various CSS classes with js- helps separate styling from JavaScript behavior.
Site builders benefit from an improved custom block library page using Views, better handling of required multiple fields in forms, and enhanced UI elements like confirmation forms with cancel links styled as buttons.
The release also includes important security fixes, particularly addressing issues with private file access control and preventing SQL injection in entity autocomplete fields.
Overall, Drupal 8.0.0-beta11 delivers substantial improvements in performance, multilingual support, and developer experience, making it a recommended upgrade for all Drupal 8 development sites.
Statistics:
User Affected:
- Improved performance with optimized entity rendering and caching mechanisms
- Enhanced theme registry build performance (85% improvement)
- Better configuration management with optimized config entity lookups
- New key value store for config entity lookups
- Improved multilingual support with better handling of translatable content
- More consistent code standards and documentation
