Install
To start a new Drupal project with version 8.4.0-rc1@RC: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 a release candidate for the next feature release of Drupal 8. Release candidates are not supported for production sites, but they are intended for widespread testing in preparation for the upcoming stable release. More information on release candidates.
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.
For a full list of other API and feature additions included in the 8.4.0 release candidate compared to 8.3.x, see the 8.4.0-alpha1 and 8.4.0-beta1 release notes.
Drush users: Update to Drush 8.1.12
Versions of Drush earlier than 8.1.12 will not work with Drupal 8.4.x. Update Drush to 8.1.12 before using it to update to Drupal core 8.4.x or you will encounter fatal errors.
Known issues
Major version updates for dependencies
Drupal 8.4.0-alpha1 includes major version updates for two dependencies: Symfony 3.2 and jQuery 3. Both updates may introduce backwards compatibility issues for some sites or modules, so test carefully.
File usage tracking
Drupal 8 has several longstanding file usage tracking bugs. To prevent further data loss, Drupal 8.4 has disabled the automatic deletion of files with no known remaining usages. This will result of the accumulation of unused files on sites, but ensures that files erroneously reporting 0 usages are not deleted while in use. The change record explains how sites can opt back into marking files temporary. If you choose to enable the setting, you can also set "Delete orphaned files" to "Never" on /admin/config/media/file-system
to avoid permanent deletion of the affected files.
While the files will no longer be deleted by default, file usage is still not tracked correctly in several scenarios, regardless of the setting. Discussion on how to evolve the file usage tracking system is underway.
Revision data integrity hotfixes
Drupal 8.4 includes numerous hotfixes for data integrity issues related to revisions, including #2766957: Forward revisions + translation UI can result in forked draft revisions. This issue prevents data loss with multiple draft translations by restricting Drupal to only have one draft translation at a time (so multiple translators cannot have draft translations of the same content in parallel). #2860097: Only having one default revision per entity forces translations to be kept in sync is the issue to allow multiple draft translations again without data loss.
Important fixes in this release
- #2350797: Orphaned menu links when nodes are deleted if menu_link_ui is not enabled
- #2884202: Non-persistent fields become unpurgeable zombies without their target entity type
- #2889600: [regression] Restore \LocaleJavascriptTranslationTest test coverage and keep testing processed JS file
- #2803621: Break BrowserTestBase & children dependency on Simpletest, deprecate stub BC traits
- #2849674: Complex job in ViewExecutable::unserialize() causes data corruption
- #1862892: When a theme has a managed_file field and a submit callback, call to undefined function error is thrown
- #2865579: Rewrite the 'Latest revision' views filter and remove the revision_tracker table
- #2898808: [regression] With jQuery3, modal tour tips lose their grey background and centering
- #2896507: Update FieldPluginBase with a default processFieldValues() and getFieldFormatterMap()
Status of the Workflows and Content Moderation modules
The Workflows module is now stable! By itself, Workflows does not provide new functionality for the site builder, but stabilizing Workflows is an important step toward providing content moderation as a part of Drupal core.
The Content Moderation module is still considered experimental and its status for 8.4.0 is still being reviewed.
Settings Tray module renamed and now in beta
The experimental Settings Tray module's machine name has been changed from outside_in to settings_tray to match user-facing labels. If you have Settings Tray installed on your site, you must uninstall it before upgrading to 8.4.0-rc1 to avoid fatal errors. You can simply re-enable it afterward; since the Settings Tray module does not store any data or configuration, this should not affect your site.) Following this rename, Settings Tray is now considered beta stability.
All changes since 8.4.0-beta1
- #2897130 followup by timmillwood, Wim Leers: Fix @internal documentation.
- #2897130 by timmillwood, amateescu, Sam152, xjm: Mark workflows module as stable
- #2901727 by iainp999, mfernea: Fix 'Drupal.Methods.MethodDeclaration' coding standard
- #2901791 by mfernea: Fix 'Squiz.ControlStructures.ForLoopDeclaration' coding standard
- #2901779 by mfernea, ccjjmartin: Fix 'Generic.PHP.LowerCaseKeyword' coding standard
- #2863644 by Lendude, zviryatko, Manuel Garcia, Jo Fitzgerald: Convert web tests of block
- #2903908 by mfernea, martin107: Fix 'Drupal.Commenting.FunctionComment.ParamCommentIndentation' coding standard
- #2887099 by naveenvalecha, Lendude, Manuel Garcia: Menu: convert system functional tests to PHPUnit
- #2614504 by blackra, jibran, mohit_aghera, Yogesh Pawar, larowlan, lokapujya, Munavijayalakshmi, thpoul, andypost, xjm: Values of 'name' & 'email' fields should be NULL when comment has author (uid > 0)
- #2711855 by Meenakshi Gupta, toomanypets, derheap: Add binary font file types to .gitattributes
- #2722609 by anoopjohn, mfernea, Jo Fitzgerald, chishah92, druprad, martin107, Mile23: Fix Drupal.Commenting.FunctionComment.ParamNameNoMatch
- #2902396 by mfernea: Add sniffs already passing
- #2322421 by amateescu, alex.ksis, caspervoogt: Recoverable fatal error: Object of class Drupal\Core\Field\FieldItemList
- #2809471 by vaplas, michielnugter, dawehner, Lendude: Convert AJAX part of \Drupal\config\Tests\ConfigEntityTest::testCRUDUI to JavascriptTestBase
- #2687773 by mikeker, sukanya.ramakrishnan, dawehner, amateescu, mroycroft, Lukas von Blarer, Lendude: Using checkboxes with an is
- #2887052 by xjm, sugaroverflow, jibran: Ignore Diff component files in phpcs coding standards
- Revert "Issue #2824851 by Wim Leers, arshadcn, amateescu, tedbow, timmillwood, Berdir, tstoeckler: EntityResource::patch() makes an incorrect assumption about entity keys, hence results in incorrect behavior"
- #2899553 by timmillwood, Sam152, Wim Leers: Architectural review of the Workflows module
- #2905818 by Wim Leers, Lendude: Make sure \Drupal\Tests\BrowserTestBase::checkForMetaRefresh is case insensitive
- #2803621 by Mile23: Break BrowserTestBase & children dependency on Simpletest, deprecate stub BC traits
- #2893061 by maxocub, Jo Fitzgerald, heddn, phenaproxima: Create a ProcessField plugin to process the field types
- #2867154 by Manuel Garcia, vaplas, naveenvalecha, Lendude, phenaproxima, dawehner: Form: Convert system functional tests to phpunit
- #2868019 by michielnugter, Lendude, jonathan1055, dawehner, alexpott: AssertLegacyTrait field assertions not compatible with Simpletest assertions
- #2904834 by Lendude: Move BROWSERTEST_OUTPUT_FILE logic in BrowserTestBase::setUp to a method and make BrowserTestBase and and \Drupal\FunctionalTests\Update\UpdatePathTestBase use it
- #2897009 follow-up by Lendude: Remove stray code accidentally included in patch.
- #2350797 by pwolanin, amateescu, dawehner, dagmar: Orphaned menu links when nodes are deleted if menu_link_ui is not enabled
- #2861383 by quietone, Jo Fitzgerald, heddn: Rename i18n migrations to _translation
- #2803375 by cilefen, tedbow, saurabh-chugh, Wim Leers: Rename Outside-in module to "Settings Tray" for real
- #2884202 by Berdir, amateescu, phenaproxima: Non-persistent fields become unpurgeable zombies without their target entity type
- #2903524 by timmillwood, Sam152, amateescu, yoroy: Don't add quickedit to displays where entities have a forward revision
- #2889600 by droplet, drpal, G√°bor Hojtsy, effulgentsia, Wim Leers: [regression] Restore \LocaleJavascriptTranslationTest test coverage and keep testing processed JS file
- Revert "Issue #2868019 by michielnugter, jonathan1055, Lendude, dawehner, alexpott: AssertLegacyTrait field assertions not compatible with Simpletest assertions"
- #2897009 by vaplas, seanB, phenaproxima, harsha012, Wim Leers, cburschka, bojanz: MediaInterface is missing setName() and getName()
- #2902429 by drpal, droplet, tedbow: Remove previous event handlers when opening new off-canvas block edit form in the off-canvas dialog
- #2903843 by joseph.olstad, joelpittet: views get_option() micro optimization
- #2904748 by volkswagenchick, loopduplicate, cilefen: Typo in Views UI
- #2870009 by Lendude, dawehner: Update: Convert system functional tests to phpunit
- #1862892 by oriol_e9g, joseph.olstad, vaplas, G.I.Joe, leopathu, peterpoe, cilefen, xjm, larowlan: When a theme has a managed_file field and a submit callback, call to undefined function error is thrown
- #2904134 by Wim Leers, tedbow: Settings Tray uses the off-canvas dialog type, but "off_canvas" is not an accurate form plugin name, "settings_tray" is
- Revert "Issue #2526150 by catch, Wim Leers, Denchev, hussainweb, dawehner, mpdonadio, borisson_, fgm, olli, alexpott, flocondetoile, Berdir, Fabianx: Database cache bins allow unlimited growth: cache DB tables of gigabytes!"
- #2868019 by michielnugter, jonathan1055, Lendude, dawehner, alexpott: AssertLegacyTrait field assertions not compatible with Simpletest assertions
- #2897133 by Sam152, larowlan: Address performance issues in \Drupal\workflows\Plugin\WorkflowTypeBase::deleteState
- #2827014 by michielnugter, Lendude, marcoscano, dawehner, cilefen, larowlan, xjm, droplet, alexpott, Wim Leers: Throw an exception when testing status code or response headers in functional JavaScript tests
- #2865579 by amateescu, Sam152: Rewrite the 'Latest revision' views filter and remove the revision_tracker table
- #2526150 by catch, Wim Leers, Denchev, hussainweb, dawehner, mpdonadio, borisson_, fgm, olli, alexpott, flocondetoile, Berdir, Fabianx: Database cache bins allow unlimited growth: cache DB tables of gigabytes!
- #2899306 by Neograph734: Group content moderation permissions per workflow type
- #2899942 by tedbow: Correct data types in outside_in.links.contextual.yml
- #2902304 by droplet, tedbow: Remove `scroll.off-canvas` event
- #2900421 by timmillwood, tim.plunkett, catch, Sam152: Architectural review of the Content Moderation module
- Revert "Issue #2900421 by timmillwood, tim.plunkett, Sam152: Architectural review of the Content Moderation module"
- #2868880 by Lendude, michielnugter, vaplas: Random fails in ContextualFilterTest::testAddContextualFilterUI
- #2803893 by mfernea: Fix 'Drupal.Commenting.FunctionComment.ParamTypeSpaces' coding standard
- #2900421 by timmillwood, tim.plunkett, Sam152: Architectural review of the Content Moderation module
- #2900911 by scott_euser, Sam152, Lendude: \Drupal\workflows\Form\WorkflowTransitionAddForm::form sets a default value for radios as an empty array
- #2824851 by Wim Leers, arshadcn, amateescu, tedbow, timmillwood, Berdir, tstoeckler: EntityResource::patch() makes an incorrect assumption about entity keys, hence results in incorrect behavior
- #2849674 by Lendude, mxh, tacituseu, podarok, andypost, pingwin4eg, axel.rutz, catch: Complex job in ViewExecutable::unserialize() causes data corruption
- #2803891 by Jo Fitzgerald, pfrenssen, mfernea, gaurav.kapoor: Fix 'Drupal.Commenting.FunctionComment.ReturnTypeSpaces' coding standard
- #2903183 by amateescu, jkovell, dawehner: Don't run cron after updating cron settings
- #2902726 by mfernea, martin107: Fix 'Drupal.Commenting.FunctionComment.ParamCommentNotCapital' coding standard
- Revert "Issue #2902896 by quocnht, joachim: Replace REQUEST_TIME with time service in ChangedItem"
- #2143089 by imadalin, yched, dawehner, harsha012, Wim Leers, c.nish2k3, bradjones1, damiankloip, xjm: Clean up normalizer parameter and variable names to use 'field_items' consistently etc
- #2897204 by cburschka: Contact message missing 'bundle_label' string
- #2903332 by amateescu: Regression: lost test coverage for handling default images in the Image field
- #2902529 by mfernea: Fix 'Drupal.WhiteSpace.EmptyLines' coding standard
- #2902717 by mfernea: Fix 'Drupal.Formatting.MultiLineAssignment' coding standard
- #2902406 by mfernea: Fix 'Drupal.Classes.UseLeadingBackslash' coding standard
- #2901787 by mfernea: Fix 'Generic.NamingConventions.ConstructorName' coding standard
- #2903331 by mfernea: Fix 'Drupal.NamingConventions.ValidVariableName.LowerStart' coding standard
- #2902896 by quocnht, joachim: Replace REQUEST_TIME with time service in ChangedItem
- #2901665 by mfernea: Fix 'Drupal.Commenting.FunctionComment.ParamCommentNewLine' coding standard
- #2902723 by mfernea, ccjjmartin: Fix 'Drupal.Commenting.FunctionComment.ReturnCommentIndentation' coding standard
- #2833206 by quietone, heddn, maxocub, Jo Fitzgerald, joelpittet, phenaproxima, jibran: Convert Migrate's cckfield plugins to use the new field plugins
- #2901851 by maxocub: Replace the static map in the d7_field migration by field plugins
- #2782891 by tedbow, Wim Leers, pk188, tim.plunkett, Adita, RajeevK, xjm, webchick: The Page Title block's title behaves in a confusing way with Settings Tray and the Help block incorrectly has Settings Tray styling
- #2881645 by jhedstrom, tstoeckler, Sam152, timmillwood, plach: ContentModerationState 'workflow' column empty for all non-default translations
- #2902287 by pektinasen: Doccomment in EmbeddedDataSource.php not formatted correctly
- #2889443 by quietone: Some migrations missing a label
- #2899014 by drunken monkey, Dinesh18, tstoeckler: Config entity query IS NOT NULL conditions trigger warnings for non-scalar values
- #2864563 by Jo Fitzgerald, NickWilde, larowlan, gaurav.kapoor, heddn: Migration lookup process plugin doesn't call setMessage on the migration idMap
- #2669030 by maxocub, sbogner: D6 Forum vocabulary is migrated to the wrong D8 field name
- #2896507 by heddn, maxocub: Update FieldPluginBase with a default processFieldValues() and getFieldFormatterMap()