Install
To start a new Drupal project with version 8.4.0-rc2@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, 8.4.0-beta1, and 8.4.0-rc1 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.
Changes since 8.4.0-rc1:
- #2835767 by Wim Leers, vaplas, xjm, dawehner, Gábor Hojtsy, Berdir, seanB, larowlan: Media + REST: comprehensive test coverage for Media + MediaType entity types
- #2908605 by jibran, jhedstrom, xjm, amateescu: Pass field storage to Tables::addNextBaseField()
- #2909743 by jibran, mpdonadio, Mile23: Again update non-Symfony dependencies in lock file before 8.4.0
- Revert "Issue #2859246 by Jo Fitzgerald, phenaproxima: Allow MigrateExecutable to be constructed without a message object"
- #2859246 by Jo Fitzgerald, phenaproxima: Allow MigrateExecutable to be constructed without a message object
- #2791269 by amateescu, Peacog, drumm, Berdir: Allow saving pre-existing references to inaccessible items
- #2705925 by heddn, Adita, jibran, Berdir, joelpittet, jazzdrive3: ImageItem presave() fails when pointing to a non-existing file entity
- #2886567 by timmillwood, Sam152, Manuel Garcia, Vj, xjm, tstoeckler: Adding a workflow state or transition with an integer ID results in unrecoverable fatal errors
- #2900112 by jibran, mpdonadio, Mile23, xjm, Issue #2900112 by jibran, mpdonadio, Mile23, xjm: Update non-Symfony dependencies in lock file before 8.4.0: Update non-Symfony dependencies in lock file before 8.4.0
- #2902191 by tedbow, vaplas, xjm, droplet, drpal: Determine cause and fix random fail in \Drupal\Tests\settings_tray\FunctionalJavascript\SettingsTrayBlockFormTest::testBlocks
- #2759789 by mfernea, Mile23, andriyun, dawehner, klausi: Fix 'Drupal.Semantics.FunctionAlias' coding standard
- #2901785 by mfernea, xjm, andriyun: Fix 'Generic.Formatting.SpaceAfterCast' coding standard
- #2908557 by neerajsingh: Optional migration dependency specified twice for d7_field_instance
- Revert "Issue #2715485 by harsha012, malavya, himanshu-dixit, mfernea, vprocessor, tameeshb, Mile23, Jo Fitzgerald, klausi, xjm: Fix 'Drupal.Commenting.InlineComment.NoSpaceBefore' coding standard"
- #2715485 by harsha012, malavya, himanshu-dixit, mfernea, vprocessor, tameeshb, Mile23, Jo Fitzgerald, klausi, xjm: Fix 'Drupal.Commenting.InlineComment.NoSpaceBefore' coding standard
- #2829845 by mpdonadio, Jo Fitzgerald, xjm, jhedstrom: Record timezone in DateTime test assertions and verbose output
- #2863750 by adriancid, tstoeckler: Add inheritdoc function doc comment to schema classes
- #2901739 by andriyun, Jo Fitzgerald, mfernea, xjm: Fix 'Squiz.Arrays.ArrayDeclaration' coding standard
- #2843776 by Wim Leers, vaplas: EntityResource: Provide comprehensive test coverage for EntityTestBundle entity
- #2905738 by vaplas, Wim Leers: Media::setOwnerId() doesn't return the Media entity
- #2391829 by amateescu, cilefen, Berdir, yched, fago: ContentUninstallValidator relies on the not required ContentEntityStorage::hasData() method
- #2902728 by mfernea: Fix 'Drupal.Semantics.FunctionT.BackslashSingleQuote' coding standard
- #2901718 by mfernea: Fix 'Squiz.ControlStructures.ForEachLoopDeclaration' coding standard
- #2864088 by jonathan1055, GoZ, naveenvalecha: Convert web tests to browser tests for shortcut module
- #2905720 by vaplas: Media specifies a add-page link relation, but core.link_relation_types does not have this
- #2905222 by heddn, edysmp, Jo Fitzgerald, quietone, yoroy, jjpoole: Migrate UI: Initial Screen UX improvements
- #2843778 by Wim Leers: EntityResource: Provide comprehensive test coverage for ContactForm entity
- #2907485 by Lendude, jonathan1055: Add getAllOptions() to AssertLegacyTrait
- #2887259 by Tessa Bakker, Sutharsan: Code style issues of require_once in ImportForm::submitForm
- #2906203 by maxocub: Widgets/formatters: D7 Plain text fields incorrectly migrated to D8 as Text (formatted)
- #2722699 by anoopjohn, mfernea, Mile23, martin107: Fix Drupal.Commenting.FunctionComment.InvalidReturnNotVoid
- #1381140 by Lendude, himanshu-dixit, tameeshb, babruix, IRuslan, sun, blazey, esoteric1, mkalkbrenner, ceardach, dcam, bapi_22, dan2k3k4, tim.plunkett, Pavan B S, tanmayk, lomasr, xjm, andypost: A #default_value = 0 for #type radios checks all radios
- #2900292 by vaplas, Manuel Garcia, Meenakshi Gupta, shashikant_chauhan, Lendude, dawehner: For BC purposes \Drupal\Tests\BrowserTestBase::drupalPostForm should return the HTML of the rendered page
- #2890380 by timmillwood, amateescu, acrosman: Remove descriptions of permissions in Content Moderation
- #2878673 by Berdir, amateescu, larowlan: Cache loadEntityByUuid() calls for block_content
- #2526150 by catch, Wim Leers, Denchev, hussainweb, dawehner, mpdonadio, borisson_, fgm, olli, alexpott, vaplas, flocondetoile, Berdir, Fabianx, cilefen: Database cache bins allow unlimited growth: cache DB tables of gigabytes!
- #2863607 by Lendude, naveenvalecha, Wim Leers, Jo Fitzgerald: Convert WebTestBaseTests of BigPipe to BrowserTestBase
- #2905748 by vaplas: MediaAccessControlHandler does not provide a helpful reason for when access is denied for the view operation
- #2905722 by vaplas: Media specifies an admin-form link relation, but should not
- #2904142 by Wim Leers: Update CKEditor library to 4.7.2
- #2901574 by Wim Leers: Requests to log in (cookie auth) via /user/login?_format=json result in 403 without helpful message
- #2904798 by dawehner, ahebrank: 8.3.7 Views SA patch should use ajaxEnabled() and not check option 'use_ajax' directly
- #2905641 by klabowterman: Wrong unit given in documentation for parameter delay in LockBackendInterface::wait
- #2853359 by vaplas, Lendude, tinny: Runtime debug statement in Views now prints out object
- #2572631 by ZeiP, Mile23, mfernea, pk188, dimaro, kporras07, attiks, klausi, dawehner: Fix 'Drupal.Classes.InterfaceName' coding standard
- #2756519 by ZeiP, timmillwood, xjm, mradcliffe, dawehner, joelpittet, Antti J. Salminen: Convert assertIdentical() to assertSame() for some uses in kernel tests that already have assertSame()'s parameter order
- #2903297 by drpal, droplet, tedbow: [Performance] Remove unused event triggers and listeners
- #2852067 by Sam152, seanB, amateescu, jibran, dawehner, larowlan, tstoeckler, tim.plunkett: Add support for rendering computed fields to the "field" views field handler
- #2905181 by tedbow: Remove useless if statement in ResourceTestBase::assertResourceResponse()
- #2901998 by vaplas, damiankloip, kim.pepper: File size of 0 is not set when file entities are saved
- #2905627 by Lendude, dawehner: Part-2: Convert UpdatePathTestBase to BrowserTestBase
- #2907316 by timmillwood: The entity type dialog title is a little odd
- #2842222 by maxocub, heddn, vasi, Jo Fitzgerald, masipila, jeffwpetersen, catch, phenaproxima, markabur, quietone, mikeryan: D7 Plain text fields incorrectly migrated to D8 as Text (formatted)
- #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()