Voting starts in March for the Drupal Association Board election.
Update: Drupal 8.2.1 is now available.
This is a minor version (feature release) of Drupal 8 and is ready for use on production sites. See the CHANGELOG.txt for a summary of changes and improvements since the last minor release. Learn more about Drupal 8 and the Drupal 8 release cycle.
This minor release provides new improvements and functionality without breaking backward compatibility (BC) for public APIs. Note that 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.
Critical bug fixes
- #2807705: FormattableMarkup::placeholderFormat() can result in unsafe replacements
- #2783079: DRUPAL-SA-CORE-2016-003 Completely broke IIS drupal deployments
- #2773333: Form validation errors, status messages on form submission are shown after page refresh when form is rendered in block
- #2776235: Cached autoloader misses cause failures when missed class becomes available
- #2567715: #markup generated by #pre_render callbacks do not get processed by ensureMarkupIsSafe()
- #2782009: Create a field with the same name as one being purged results in data destruction of the new field
- #2776357: Upgrade path for Config translation synchronization failure
- #2702227: Image styles for private files are serving the original instead of derivative
- #2804675: Tests using TestDatabase class are stuck in an infinite loop in Windows (8.2.0-rc2 only)
Improved authoring features
- #88183: Relative URLs are automatically converted to absolute ones when content is output to an RSS feed.
- #2490136: Enabled revisions by default on new node types.
- #306662: Added a redirect option to site-wide contact forms.
- #2513402: Whenever a new entity is created, a link to it is now provided in a status message, for easy access to it regardless of the form workflow.
- #2090937: Styled CKEditor dialogs to match Drupal dialogs.
Improved site building and administrative features
- #2688945: Added the ability to remove a module's content entities prior to uninstallation.
- #2627678: Made it possible to select the comment view mode in the formatter form.
- Made numerous improvements to user interface text.
Improved web services features
- #2724823: Added support for reading (GET) configuration entities as REST resources
- #2403307: Added dedicated resources for user login, logout and registration
- #2228141: Added support for selecting an authentication mechanism as part of the configuration of a REST Export Views Display
- #1869548: Added a cors.config service parameter for enabling and configuring Cross-origin resource sharing (CORS)
- #2721595: Simplified REST configuration via per-resource configuration entities and an optional less verbose configuration structure for common cases
- #2659070: Improved the response messages and status codes for requests with missing or incorrect headers
- #2662284: Improved responses to PATCH requests to entity resources to contain the updated entity in the response body
Improved performance and scalability
- #2699613: In the internal page cache, 404 responses are now cached for a shorter time (1 hour by default), to consume less space.
- #2699627: Breadcrumbs are now cached by the parent of the path rather than the full path, for fewer cache entries and higher cache hit rates.
- #2735045: Increased feature parity of BrowserTestBase with WebTestBase, including a deprecated AssertLegacyTrait for easier conversions.
- #2456477: Converted all kernel tests to the PHPUnit-based kernel test API.
The modules listed in this section are considered experimental for this release. Experimental modules are provided with Drupal core for testing purposes, but are not yet fully supported.
Increased stability in 8.2.0
- BigPipe (beta stability)
- Provides an advanced implementation of Facebook's BigPipe page rendering strategy, leading to greatly improved perceived performance for pages with dynamic, personalized, or uncacheable content. (See the BigPipe handbook page.) BigPipe is now considered beta stability, which means it is ready for use and testing by early adopters, and the API is stable enough for developers to begin using and extending it. One additional key feature is planned for the 8.3.x branch, and other changes may happen as needed to fix bugs.
- Place Block (alpha stability)
This new 8.2.x feature allows the user to place a block on any page and see the region where it will be displayed, without having to navigate to a backend administration form.
- Settings Tray (machine name: outside_in, alpha stability)
This is a prototype of Dries's proposed Outside-In usability enhancements, which allow configuring page elements such as blocks from the front-end of your site. See the roadmap of outstanding issues, which includes both planned improvements and known accessibility and interaction bugs.
- Content Moderation (alpha stability)
This new experimental feature allows defining content workflow states such as Draft, Archived, and Published as well as which roles have the ability to move content between one state and another. See the Content Moderation roadmap for the next steps for this module.
- Datetime Range (alpha stability)
The experimental DateTime Range module provides a new field type that allows end dates. This is important for helping contributed modules like the Calendar module to work with Drupal 8 core. There are some small presentational, usability, accessibility, and translatability issues with the field, and its API may be refactored somewhat as we improve both it and the stable DateTime module. However, the data model for the field has consensus, so contrib and site authors can begin working with the module so long as they are willing to manage the risks of using an alpha experimental module. You can read the DateTime Range module plan for the next steps to make this useful field a part of the Standard installation.
- Migrate, Migrate Drupal, and Migrate Upgrade UI (alpha stability)
Use these modules to migrate Drupal 6 or 7 sites onto Drupal 8. See the user guide on upgrading from Drupal 6 or 7 to Drupal 8 for more information. Always back up your data before performing a migration.
- Issues tagged Migrate critical are blockers for these modules being considered stable.
- Drush support is currently only available in the Drupal Upgrade contributed module.
- This release includes an important developer experience improvement for modules providing migrations: #2560795: Fixed the Migrate module to skip over migration sources that require code from uninstalled modules.
- Core now provides migrations for most Drupal 6 data and can be used for migrating Drupal 6 sites to Drupal 8 (now including migrations for core node translations!), but the migration of multilingual functionality is still not complete.
- The Drupal 7 to Drupal 8 migration is incomplete, but is suitable for developers who would like to help improve the migration, and can be used to test upgrades especially for simple Drupal 7 sites. (Outstanding issues for the Drupal 7 to Drupal 8 migration)
- Inline Form Errors (alpha stability)
This provides a proof-of-concept for showing form errors inline for improved accessibility. This module has outstanding issues, some of which are significant. This module may be removed from core in 8.3.x if the issues are not resolved within the next six months.
- #1869548: Added Stack/Cors 1.0.0.
- #2700741: Updated to jQuery 2.2.3
- #2721351: Updated to Twig 1.24
- #2797427: Updated to CKEditor 4.5.11
- #2712633: Updated to Symfony Routing 1.4.0
- #2712637: Updated to Stack/Builder 1.0.4
- SA-CORE-2016-003: Updated to Guzzle 6.2.1
- #2648050: Local variables and parameters can now use camelCase
- #2248463: A blank line is now required after the <?php opening tag
- #2333243: Relax .gitattributes global rule
- #2801777: Give users the option to prevent Drupal from automatically marking unused files as temporary
- #2708411: File usage not incremented when adding new translation
- #1239558: Deleting a node with revisions does not release file usage
- #2666700: User profile images unexpectedly deleted
- Windows/IIS environments may encounter site errors due to #2606772: Long Twig cache directories can cause failures on Windows
- Particular Apache configurations may have issues with serving public file assets. Issue: #2619250: Disabling -MultiViews in .htaccess can cause 500 errors
- #2811357 by alexpott, mattlt, jibran: Fix CHANGELOG.txt for 8.2.0 to remove paragonie/random_compat update
- #2795845 by effulgentsia, xjm, dawehner, cilefen, alexpott, timmillwood, Gábor Hojtsy, Wim Leers, chx, Cottser, catch, vaplas: Add changelog for Drupal 8.2.0
- #2807705 by alexpott, dawehner, aburke626: FormattableMarkup::placeholderFormat() can result in unsafe replacements
- #2809853 by joelpittet: Xss::filterAdmin() typo
- #2782309 by samuel.mortenson, martin107: Refactor File and Image related image field creation logic into a new trait
- #2734663 by klausi, jibran, dawehner, naveenvalecha: Update deprecation message for old KernelTestBase in simpletest
- #2801851 by shashikant_chauhan, Yogesh Pawar, phenaproxima, mikeryan: Remove system-of-record APIs from migrate
- #2783079 by david_garcia, alexpott: DRUPAL-SA-CORE-2016-003 Completely broke IIS drupal deployments
- Revert "Issue #2662844 by penyaskito, dawehner, catch: cache.backend.chainedfast misbehaves in some situations"
- #2806827 by shashikant_chauhan, joachim: incorrect sample code in hook_node_links_alter()
- #2808497 by klausi, alexpott: Prophecy mocking broken on PHP 7 because of old phpunit version
- #2485385 by phenaproxima, quietone, alexpott, mikeryan, Berdir, blazey, xjm, hussainweb, catch, heddn, benjy: Move highwater field support to the source plugin, and do not expose its internals on MigrationInterface
- #2805213 by agoradesign: Incorrect documentation for EntityAccessControlHandler::checkFieldAccess()
- #2804525 by shashikant_chauhan, joachim: EntityTypeManager should mention hook_entity_type_build()
- #2807689 by cilefen: Add cilefen as a provisional maintainer to MAINTAINERS.txt
- #2706405 by heddn, edysmp, davidparedes21, mikeryan, phenaproxima: File migrations *always* copy in files, even if the files were off-line copied to destination
- #2807271 by Mile23: run-tests.sh needs to output an exception to stderr for the testbot
- #2807171 by alexpott: Use the correct testing table prefix in simpletest_clean_database()
- #2776235 by mikeryan, alexpott: Cached autoloader misses cause failures when missed class becomes available
- #2674152 by Jo Fitzgerald, hussainweb: D7 User fields content not migrating first time
- #2791119 by phenaproxima, quietone, chx, mikeryan, benjy: Write meaningful Migrate source tests
- #2804675 by alexpott, hideaway: Tests using TestDatabase class are stuck in an infinite loop in Windows (8.2.0-rc2 only)
- #2567715 by marthinal, hgoto, jpd4nt, mr.baileys, Wim Leers, alexpott: #markup generated by #pre_render callbacks do not get processed by ensureMarkupIsSafe()
- #2738567 by jmuzz, mtift, claudiu.cristea, dawehner, samuel.mortenson: Add test trait for drupalGetTestFiles and drupalCompareFile
- #2681869 by mikeryan, benjy: Provide clean way to merge configuration into migration plugins
- #2684567 by gnuget, chx, heddn, vasi, mikeryan: Requiring a migration w/ a source plugin using a generator fatals
- #2773733 by claudiu.cristea, klausi, dawehner: Fix AssertLegacyTrait::assert(No)Text to handle html encoded strings (part 3)
- #2500533 by quietone, phenaproxima: Upgrade path for System 7.x
- #2798097 by klausi, claudiu.cristea: Move all kernel tests to their correct phpunit location
- #2802719 by maxocub: Publishing status option migrate to empty checkbox
- #2753939 by phenaproxima, alexpott: BlockRegion process plugin should be source theme-aware
- #2785589 by tedbow, nod_, droplet, drpal, alexpott, Wim Leers, xjm: Fix js and jsdoc of outside-in module
- #2798609 by hardik.p, shashikant_chauhan, naveenvalecha, joachim, daffie: field.purge.inc points to php.net delete function
- #2801551 by gianani: getBundleEntityType() can return NULL
- Revert "Issue #2763787 by nerdstein, rlhawk, slasher13, therealssj, TravisCarden: Upgrade random_compat to latest version"
- #2800703 by Shashwat Purav: syntax error in deprecation notice's sample code
- #2773185 by Wim Leers, effulgentsia, dawehner: Fix nits in \Drupal\rest\Entity\ConfigDependencies
- #2798523 by naveenvalecha: missing @param in ContactFormEditForm constructor
- #2797721 by jp.stacey: Custom form handler's submitForm not called when using example in documentation
- #2802301 by tstoeckler: Use route providers for ModerationState(|Transition)
- #2801855 by dbt102: Add_content_moderation_help
- #2795579 by martin107, klausi, dawehner: Adapt assertCacheContexts to not rely on the return value of assertIdentical
- #2690389 by reszli, mikeryan, Gábor Hojtsy, juancasantito, zsofi.major, edgewl2, alexpott, jlbellido, penyaskito: Fix string translation in MigrateUpgradeRunBatch
- #2794735 by harings_rob: Wrong documentation on Drupal\rest\Plugin\rest\resource\EntityResource
New in 8.2.0
Still under development
Third-party library updates
Changed coding standards
Drupal 8.2.0 has adopted the following coding standards changes:
Drupal 8.2.0 introduces a critical regression for sites using the Rules module that causes blocks to not appear after being placed. Other modules may be affected as well. We are working on a fix for this bug, but in the interim, workarounds are to remain on 8.1.10 until a complete fix is available, or to temporarily disable Rules. Follow #2811519: Blocks do not appear after being placed for more information.
Drupal 8 currently has a number of known issues related to incorrect tracking of file usage, which can result in files being unexpectedly deleted from a site. (These issues also existed in 8.0.x and 8.1.x but have been recently discovered.) Site owners experiencing unexplained file loss should consider setting "Delete orphaned files" to "Never" on
/admin/config/media/file-system until these issues are resolved, and note the following issues:
The following issues may affect people running Drupal 8.2.0 on specific hosting environments: