Install
To start a new Drupal project with version 8.7.0-alpha1@alpha: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 an alpha release for the next feature release of Drupal 8. Alpha releases are good testing targets for developers and site builders who are comfortable reporting (and where possible, fixing) their own bugs. Alpha releases are not recommended for non-technical users, nor for production websites. More information on alpha releases.
This minor release provides new improvements and functionality without breaking backward compatibility (BC) for public APIs. 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.
Minor releases may include string changes and additions. Translators can review the latest translation status on localize.drupal.org.
Important update information
Site update and module owners planning to update to this release should take note of the following important changes:
Support for PHP 5, automatic entity updates, and Internet Explorer 9 workarounds removed
-
Starting with 8.7.0, Drupal core no longer provides support for automatic entity updates as these have resulted in conflicts with regular database updates and data integrity issues. Whenever an entity type or field storage definition needs to be created, changed or deleted, it has to be done with an explicit update function as provided by the Update API, and using the API provided by the entity definition update manager. (Note that using the API has always been the recommended way for developers to trigger entity updates.)
drush entup
is also no longer supported by Drupal core. These three change records provide further details: -
PHP 5.5 and 5.6 will no longer be supported as of Drupal 8.7.0. Drupal 8.7.0-alpha1 has not yet dropped PHP 5 support, but Drupal 8.7.0-beta1 will in #3039287: Implement changes required to remove support for PHP 5.5 and 5.6.
PHP 5.6 stopped receiving active support from PHP maintainers in January 2017 and reached end-of-life in December 2018. Users who are running Drupal 8 on PHP 5.5 or 5.6 should upgrade their PHP version to 7.1 or higher.
-
In Internet Explorer 9 and earlier, there was a limit of 31 style sheets per page. Drupal dropped support for Internet Explorer 9 and 10 in 8.4.0, but Drupal 8.5 and 8.6 retained a workaround to allow 32 or more stylesheets to be included. This workaround has been removed in 8.7. Sites requiring Internet Explorer 9 support should enable CSS aggregation (preferred) or install the IE9 Compatibility contributed module.
Entity and field system changes
-
Custom menu links and taxonomy terms are now revisionable, which allows them to be used in editorial workflows (similarly to nodes, media, and custom blocks). These changes involve an upgrade path and updates to the respective entity storages. Custom code updating these entities programmatically may need to update to take account revision creation. This may also impact API-first clients, exported default content, and custom database queries. See the change records for details:
-
Serialized properties of base fields are now automatically unserialized to be consistent with configurable fields. Existing workarounds for this bug might need to be adjusted if they relied on the old behavior of passing a string to those fields. Read the change record about loading serialized field properties.
Changes for Symfony 4 and 5 compatibility
-
Drupal\Component\DependencyInjection\Container
no longer implementsSymfony\Component\DependencyInjection\ResettableContainerInterface
for future compatibility with Symfony 5. If you are type-hinting on this interface, update your type-hint to instead useDrupal\Component\DependencyInjection\Container
Read the change record about the Container Symfony component. -
In the interest of supporting deprecations in Symfony 4 leading up to Symfony 5,
\Drupal\Core\Validation\TranslatorInterface
no longer extends\Symfony\Component\Translation\TranslatorInterface
.
Read the change record about the TranslatorInterface Symfony component. -
Additionally, numerous critical Symfony 4 and 5 compatibility issues are resolved in this release.
Plugin system changes
-
ConfigurablePluginInterface
, which is used by many, many plugins, is deprecated in favour of a combination of two interfaces:ConfigurableInterface
andDependentPluginInterface
. If the plugin does not have external module dependencies, then developers may opt to just implementConfigurableInterface
by itself and not implementDependentPluginInterface
.
Read the change record on deprecation of ConfigurablePluginInterface. -
For context-aware plugins defined by annotation the
context
key is deprecated. To define context definitions, use thecontext_definitions
key. Interacting with the context definitions of a plugin is unchanged, see\Drupal\Component\Plugin\ContextAwarePluginInterface
.
Read the change record on context definitions for plugins.
Changes to base themes (Stable, Classy)
This release includes some small changes to core's base themes (Stable, Classy). Themes that extend one of these base themes should review the following changes.
Changes to the experimental Layout Builder module
-
The Layout Builder module is designed to support extensible storage for layouts, so that layouts can be created and saved for various use cases. (For example, the core module has two storages, one for default content layouts and another for individual entity layouts.) However, a serious bug with the the beta API prevented other storages from being used. API changes were required to resolve this issue. Layout Builder section storage plugins must adapt to changes to their interface and rely on the context system instead of external setter calls. Additionally, those interacting with the Layout Builder API must use the new methods for loading SectionStorage plugins.
-
CSS classes used in Layout Builder's user interface have been renamed in accordance with BEM standards. For example, classes like
.layout-section
are now.layout-builder__section
.
Read the change record on BEM standards for Layout Builder's user interface classes.
Third-party library updates
The following third-party libraries are updated in this release. (Additional library updates may be made prior to Drupal 8.7.0-beta1.)
-
Guzzle has been updated from 6.3.0 to 6.3.3. With this update, the http_client service also now supports empty headers.
Other important update information
-
datetime
fields that store both date and time now specify a timezone when normalized,datetime
fields that store only a date no longer expose a (meaningless) time when normalized.daterange
fields behave the same way asdatetime
fields, because both field types use the same "data type" under the hood, and hence get the same normalization. Finally, there is now automatic timezone conversion whenPOST
ing orPATCH
ingdatetime
ordaterange
fields: the client can specify any timezone, and the necessary transformations to match the site's timezone are applied.
Read the change record about normalization of the Date and Date range fields. -
The
session_handler.write_check
service has been removed fromcore.services.yml
. In the unlikely event that this service is being swapped out, the functionality has been moved to\Drupal\Core\Session\WriteSafeSessionHandler
- thesession_handler.write_safe
service.
Read the change record on removal of the session handler proxy. -
In order to resolve a critical issue affecting the PostgreSQL database, The naming scheme for PostgreSQL sequence generators has been changed.
-
For all changes that may affect contributed or custom code, search the Drupal 8.7.x change records.
Important bug fixes
The following critical issues are fixed in Drupal 8.7.0-alpha1 in addition to those listed above:
- The Entity system now provides an API for retrieving an entity variant that is safe for for editing and previewing in editorial workflows, depending on the specified context, by default the current context.
- #2942675: Layout builder should use the active variant of an entity to avoid orphaned revisions
- #2990517: Adding a display mode to a content type using layout, and disabling layout on that new display mode removes the layout_builder__layout field and breaks layout in already configured display modes.
- #3033686: Saving Layout override will revert other field values to their values when the Layout was started.
- #3037823: The system.theme.data key remains corrupted in state causing performance issues and is not used in >= 8.7
Known issues
- #3026560: After upgrade to 7.63, 8.5.10, 8.6.7, 9.4.0 get TYPO3 phar error for drush
- #3026443: \Drupal\Core\Security\PharExtensionInterceptor is incompatible with GeoIP and other libraries that use phar aliases or Phar::mapPhar()
- #3031128: Update from 8.6.7 to 8.6.8 warnings - Drupal\Core\Extension\Extension has no unserializer
- #2554235: Make the content entity storage and entity query use the last installed definitions instead of the ones living in code
There are no known regressions from 8.6.x in this release.
Search the issue queue for all known issues.