wp/wp-admin/includes/update-core.php
changeset 21 48c4eec2b7e6
parent 19 3d72ae0968f4
child 22 8c2e4d02f4ef
--- a/wp/wp-admin/includes/update-core.php	Thu Sep 29 08:06:27 2022 +0200
+++ b/wp/wp-admin/includes/update-core.php	Fri Sep 05 18:40:08 2025 +0200
@@ -10,6 +10,8 @@
 /**
  * Stores files to be deleted.
  *
+ * Bundled theme files should not be included in this list.
+ *
  * @since 2.7.0
  *
  * @global array $_old_files
@@ -35,8 +37,6 @@
 	'wp-images/wp-small.png',
 	'wp-images/wpminilogo.png',
 	'wp.php',
-	// 2.0.8
-	'wp-includes/js/tinymce/plugins/inlinepopups/readme.txt',
 	// 2.1
 	'wp-admin/edit-form-ajax-cat.php',
 	'wp-admin/execute-pings.php',
@@ -50,8 +50,6 @@
 	'wp-includes/functions-formatting.php',
 	'wp-includes/functions-post.php',
 	'wp-includes/js/dbx-key.js',
-	'wp-includes/js/tinymce/plugins/autosave/langs/cs.js',
-	'wp-includes/js/tinymce/plugins/autosave/langs/sv.js',
 	'wp-includes/links.php',
 	'wp-includes/pluggable-functions.php',
 	'wp-includes/template-functions-author.php',
@@ -62,7 +60,6 @@
 	'wp-includes/wp-l10n.php',
 	// 2.2
 	'wp-admin/cat-js.php',
-	'wp-admin/import/b2.php',
 	'wp-includes/js/autosave-js.php',
 	'wp-includes/js/list-manipulation-js.php',
 	'wp-includes/js/wp-ajax-js.php',
@@ -106,39 +103,19 @@
 	'wp-admin/js/link-cat.js',
 	'wp-admin/profile-update.php',
 	'wp-admin/templates.php',
-	'wp-includes/images/wlw/WpComments.png',
-	'wp-includes/images/wlw/WpIcon.png',
-	'wp-includes/images/wlw/WpWatermark.png',
 	'wp-includes/js/dbx.js',
 	'wp-includes/js/fat.js',
 	'wp-includes/js/list-manipulation.js',
 	'wp-includes/js/tinymce/langs/en.js',
-	'wp-includes/js/tinymce/plugins/autosave/editor_plugin_src.js',
-	'wp-includes/js/tinymce/plugins/autosave/langs',
 	'wp-includes/js/tinymce/plugins/directionality/images',
 	'wp-includes/js/tinymce/plugins/directionality/langs',
-	'wp-includes/js/tinymce/plugins/inlinepopups/css',
-	'wp-includes/js/tinymce/plugins/inlinepopups/images',
-	'wp-includes/js/tinymce/plugins/inlinepopups/jscripts',
 	'wp-includes/js/tinymce/plugins/paste/images',
 	'wp-includes/js/tinymce/plugins/paste/jscripts',
 	'wp-includes/js/tinymce/plugins/paste/langs',
-	'wp-includes/js/tinymce/plugins/spellchecker/classes/HttpClient.class.php',
-	'wp-includes/js/tinymce/plugins/spellchecker/classes/TinyGoogleSpell.class.php',
-	'wp-includes/js/tinymce/plugins/spellchecker/classes/TinyPspell.class.php',
-	'wp-includes/js/tinymce/plugins/spellchecker/classes/TinyPspellShell.class.php',
-	'wp-includes/js/tinymce/plugins/spellchecker/css/spellchecker.css',
-	'wp-includes/js/tinymce/plugins/spellchecker/images',
-	'wp-includes/js/tinymce/plugins/spellchecker/langs',
-	'wp-includes/js/tinymce/plugins/spellchecker/tinyspell.php',
 	'wp-includes/js/tinymce/plugins/wordpress/images',
 	'wp-includes/js/tinymce/plugins/wordpress/langs',
 	'wp-includes/js/tinymce/plugins/wordpress/wordpress.css',
 	'wp-includes/js/tinymce/plugins/wphelp',
-	'wp-includes/js/tinymce/themes/advanced/css',
-	'wp-includes/js/tinymce/themes/advanced/images',
-	'wp-includes/js/tinymce/themes/advanced/jscripts',
-	'wp-includes/js/tinymce/themes/advanced/langs',
 	// 2.5.1
 	'wp-includes/js/tinymce/tiny_mce_gzip.php',
 	// 2.6
@@ -182,16 +159,11 @@
 	'wp-includes/js/tinymce/tiny_mce_ext.js',
 	// 2.8
 	'wp-admin/js/users.js',
-	'wp-includes/js/swfupload/plugins/swfupload.documentready.js',
-	'wp-includes/js/swfupload/plugins/swfupload.graceful_degradation.js',
 	'wp-includes/js/swfupload/swfupload_f9.swf',
 	'wp-includes/js/tinymce/plugins/autosave',
 	'wp-includes/js/tinymce/plugins/paste/css',
 	'wp-includes/js/tinymce/utils/mclayer.js',
 	'wp-includes/js/tinymce/wordpress.css',
-	// 2.8.5
-	'wp-admin/import/btt.php',
-	'wp-admin/import/jkw.php',
 	// 2.9
 	'wp-admin/js/page.dev.js',
 	'wp-admin/js/page.js',
@@ -248,12 +220,9 @@
 	'wp-admin/wp-admin.css',
 	'wp-admin/wp-admin.dev.css',
 	'wp-includes/js/codepress',
-	'wp-includes/js/codepress/engines/khtml.js',
-	'wp-includes/js/codepress/engines/older.js',
 	'wp-includes/js/jquery/autocomplete.dev.js',
 	'wp-includes/js/jquery/autocomplete.js',
 	'wp-includes/js/jquery/interface.js',
-	'wp-includes/js/scriptaculous/prototype.js',
 	// Following file added back in 5.1, see #45645.
 	//'wp-includes/js/tinymce/wp-tinymce.js',
 	// 3.1
@@ -275,7 +244,6 @@
 	'wp-admin/sidebar.php',
 	'wp-includes/classes.php',
 	'wp-includes/js/tinymce/blank.htm',
-	'wp-includes/js/tinymce/plugins/media/css/content.css',
 	'wp-includes/js/tinymce/plugins/media/img',
 	'wp-includes/js/tinymce/plugins/safari',
 	// 3.2
@@ -284,11 +252,6 @@
 	'wp-admin/js/list-table.dev.js',
 	'wp-admin/js/list-table.js',
 	'wp-includes/default-embeds.php',
-	'wp-includes/js/tinymce/plugins/wordpress/img/help.gif',
-	'wp-includes/js/tinymce/plugins/wordpress/img/more.gif',
-	'wp-includes/js/tinymce/plugins/wordpress/img/toolbars.gif',
-	'wp-includes/js/tinymce/themes/advanced/img/fm.gif',
-	'wp-includes/js/tinymce/themes/advanced/img/sflogo.png',
 	// 3.3
 	'wp-admin/css/colors-classic-rtl.css',
 	'wp-admin/css/colors-classic-rtl.dev.css',
@@ -344,12 +307,6 @@
 	'wp-includes/js/tinymce/plugins/wplink/css',
 	'wp-includes/js/tinymce/plugins/wplink/img',
 	'wp-includes/js/tinymce/plugins/wplink/js',
-	'wp-includes/js/tinymce/themes/advanced/img/wpicons.png',
-	'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/butt2.png',
-	'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/button_bg.png',
-	'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/down_arrow.gif',
-	'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/fade-butt.png',
-	'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/separator.gif',
 	// Don't delete, yet: 'wp-rss.php',
 	// Don't delete, yet: 'wp-rdf.php',
 	// Don't delete, yet: 'wp-rss2.php',
@@ -363,27 +320,14 @@
 	'wp-admin/index-extra.php',
 	'wp-admin/network/index-extra.php',
 	'wp-admin/user/index-extra.php',
-	'wp-admin/images/screenshots/admin-flyouts.png',
-	'wp-admin/images/screenshots/coediting.png',
-	'wp-admin/images/screenshots/drag-and-drop.png',
-	'wp-admin/images/screenshots/help-screen.png',
-	'wp-admin/images/screenshots/media-icon.png',
-	'wp-admin/images/screenshots/new-feature-pointer.png',
-	'wp-admin/images/screenshots/welcome-screen.png',
 	'wp-includes/css/editor-buttons.css',
 	'wp-includes/css/editor-buttons.dev.css',
 	'wp-includes/js/tinymce/plugins/paste/blank.htm',
 	'wp-includes/js/tinymce/plugins/wordpress/css',
 	'wp-includes/js/tinymce/plugins/wordpress/editor_plugin.dev.js',
-	'wp-includes/js/tinymce/plugins/wordpress/img/embedded.png',
-	'wp-includes/js/tinymce/plugins/wordpress/img/more_bug.gif',
-	'wp-includes/js/tinymce/plugins/wordpress/img/page_bug.gif',
 	'wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin.dev.js',
-	'wp-includes/js/tinymce/plugins/wpeditimage/css/editimage-rtl.css',
 	'wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.dev.js',
-	'wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin.dev.js',
 	'wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.dev.js',
-	'wp-includes/js/tinymce/plugins/wpgallery/img/gallery.png',
 	'wp-includes/js/tinymce/plugins/wplink/editor_plugin.dev.js',
 	// Don't delete, yet: 'wp-pass.php',
 	// Don't delete, yet: 'wp-register.php',
@@ -498,9 +442,6 @@
 	'wp-admin/js/inline-edit-post.dev.js',
 	'wp-admin/js/categories.dev.js',
 	'wp-admin/js/editor.dev.js',
-	'wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.dev.js',
-	'wp-includes/js/tinymce/plugins/wpdialogs/js/popup.dev.js',
-	'wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog.dev.js',
 	'wp-includes/js/plupload/handlers.dev.js',
 	'wp-includes/js/plupload/wp-plupload.dev.js',
 	'wp-includes/js/swfupload/handlers.dev.js',
@@ -527,21 +468,11 @@
 	'wp-includes/js/jquery/ui/jquery.effects.pulsate.min.js',
 	'wp-includes/js/jquery/ui/jquery.effects.transfer.min.js',
 	'wp-includes/js/jquery/ui/jquery.effects.fold.min.js',
-	'wp-admin/images/screenshots/captions-1.png',
-	'wp-admin/images/screenshots/captions-2.png',
-	'wp-admin/images/screenshots/flex-header-1.png',
-	'wp-admin/images/screenshots/flex-header-2.png',
-	'wp-admin/images/screenshots/flex-header-3.png',
-	'wp-admin/images/screenshots/flex-header-media-library.png',
-	'wp-admin/images/screenshots/theme-customizer.png',
-	'wp-admin/images/screenshots/twitter-embed-1.png',
-	'wp-admin/images/screenshots/twitter-embed-2.png',
 	'wp-admin/js/utils.js',
 	// Added back in 5.3 [45448], see #43895.
 	// 'wp-admin/options-privacy.php',
 	'wp-app.php',
 	'wp-includes/class-wp-atom-server.php',
-	'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css',
 	// 3.5.2
 	'wp-includes/js/swfupload/swfupload-all.js',
 	// 3.6
@@ -554,10 +485,7 @@
 	// 3.7
 	'wp-admin/js/cat.js',
 	'wp-admin/js/cat.min.js',
-	'wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.min.js',
 	// 3.8
-	'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/page_bug.gif',
-	'wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/more_bug.gif',
 	'wp-includes/js/thickbox/tb-close-2x.png',
 	'wp-includes/js/thickbox/tb-close.png',
 	'wp-includes/images/wpmini-blue-2x.png',
@@ -628,7 +556,6 @@
 	'wp-includes/js/tinymce/plugins/wpeditimage/js',
 	'wp-includes/js/tinymce/plugins/wpeditimage/css',
 	'wp-includes/js/tinymce/plugins/wpgallery/img',
-	'wp-includes/js/tinymce/plugins/wpfullscreen/css',
 	'wp-includes/js/tinymce/plugins/paste/js',
 	'wp-includes/js/tinymce/themes/advanced',
 	'wp-includes/js/tinymce/tiny_mce.js',
@@ -657,8 +584,6 @@
 	'wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js',
 	'wp-includes/js/tinymce/plugins/tabfocus/editor_plugin.js',
 	'wp-includes/js/tinymce/plugins/tabfocus/editor_plugin_src.js',
-	'wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin.js',
-	'wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin_src.js',
 	'wp-includes/js/tinymce/plugins/paste/editor_plugin.js',
 	'wp-includes/js/tinymce/plugins/paste/pasteword.htm',
 	'wp-includes/js/tinymce/plugins/paste/editor_plugin_src.js',
@@ -748,27 +673,6 @@
 	'wp-includes/js/swfupload/swfupload.swf',
 	// 4.9.2
 	'wp-includes/js/mediaelement/lang',
-	'wp-includes/js/mediaelement/lang/ca.js',
-	'wp-includes/js/mediaelement/lang/cs.js',
-	'wp-includes/js/mediaelement/lang/de.js',
-	'wp-includes/js/mediaelement/lang/es.js',
-	'wp-includes/js/mediaelement/lang/fa.js',
-	'wp-includes/js/mediaelement/lang/fr.js',
-	'wp-includes/js/mediaelement/lang/hr.js',
-	'wp-includes/js/mediaelement/lang/hu.js',
-	'wp-includes/js/mediaelement/lang/it.js',
-	'wp-includes/js/mediaelement/lang/ja.js',
-	'wp-includes/js/mediaelement/lang/ko.js',
-	'wp-includes/js/mediaelement/lang/nl.js',
-	'wp-includes/js/mediaelement/lang/pl.js',
-	'wp-includes/js/mediaelement/lang/pt.js',
-	'wp-includes/js/mediaelement/lang/ro.js',
-	'wp-includes/js/mediaelement/lang/ru.js',
-	'wp-includes/js/mediaelement/lang/sk.js',
-	'wp-includes/js/mediaelement/lang/sv.js',
-	'wp-includes/js/mediaelement/lang/uk.js',
-	'wp-includes/js/mediaelement/lang/zh-cn.js',
-	'wp-includes/js/mediaelement/lang/zh.js',
 	'wp-includes/js/mediaelement/mediaelement-flash-audio-ogg.swf',
 	'wp-includes/js/mediaelement/mediaelement-flash-audio.swf',
 	'wp-includes/js/mediaelement/mediaelement-flash-video-hls.swf',
@@ -785,7 +689,6 @@
 	// 5.0
 	'wp-includes/js/codemirror/jshint.js',
 	// 5.1
-	'wp-includes/random_compat/random_bytes_openssl.php',
 	'wp-includes/js/tinymce/wp-tinymce.js.gz',
 	// 5.3
 	'wp-includes/js/wp-a11y.js',     // Moved to: wp-includes/js/dist/a11y.js
@@ -820,7 +723,6 @@
 	'wp-includes/block-patterns/text-two-columns-with-images.php',
 	'wp-includes/block-patterns/text-two-columns.php',
 	'wp-includes/block-patterns/large-header-button.php',
-	'wp-includes/blocks/subhead/block.json',
 	'wp-includes/blocks/subhead',
 	'wp-includes/css/dist/editor/editor-styles.css',
 	'wp-includes/css/dist/editor/editor-styles.min.css',
@@ -831,10 +733,6 @@
 	'wp-includes/blocks/heading/editor.min.css',
 	'wp-includes/blocks/heading/editor-rtl.css',
 	'wp-includes/blocks/heading/editor-rtl.min.css',
-	'wp-includes/blocks/post-content/editor.css',
-	'wp-includes/blocks/post-content/editor.min.css',
-	'wp-includes/blocks/post-content/editor-rtl.css',
-	'wp-includes/blocks/post-content/editor-rtl.min.css',
 	'wp-includes/blocks/query-title/editor.css',
 	'wp-includes/blocks/query-title/editor.min.css',
 	'wp-includes/blocks/query-title/editor-rtl.css',
@@ -843,8 +741,125 @@
 	'wp-includes/blocks/tag-cloud/editor.min.css',
 	'wp-includes/blocks/tag-cloud/editor-rtl.css',
 	'wp-includes/blocks/tag-cloud/editor-rtl.min.css',
-	// 6.0
-	'wp-content/themes/twentytwentytwo/assets/fonts/LICENSE.md',
+	// 6.1
+	'wp-includes/blocks/post-comments.php',
+	'wp-includes/blocks/post-comments',
+	'wp-includes/blocks/comments-query-loop',
+	// 6.3
+	'wp-includes/images/wlw',
+	'wp-includes/wlwmanifest.xml',
+	'wp-includes/random_compat',
+	// 6.4
+	'wp-includes/navigation-fallback.php',
+	'wp-includes/blocks/navigation/view-modal.min.js',
+	'wp-includes/blocks/navigation/view-modal.js',
+	// 6.5
+	'wp-includes/ID3/license.commercial.txt',
+	'wp-includes/blocks/query/style-rtl.min.css',
+	'wp-includes/blocks/query/style.min.css',
+	'wp-includes/blocks/query/style-rtl.css',
+	'wp-includes/blocks/query/style.css',
+	'wp-admin/images/about-header-privacy.svg',
+	'wp-admin/images/about-header-about.svg',
+	'wp-admin/images/about-header-credits.svg',
+	'wp-admin/images/about-header-freedoms.svg',
+	'wp-admin/images/about-header-contribute.svg',
+	'wp-admin/images/about-header-background.svg',
+	// 6.6
+	'wp-includes/blocks/block/editor.css',
+	'wp-includes/blocks/block/editor.min.css',
+	'wp-includes/blocks/block/editor-rtl.css',
+	'wp-includes/blocks/block/editor-rtl.min.css',
+);
+
+/**
+ * Stores Requests files to be preloaded and deleted.
+ *
+ * For classes/interfaces, use the class/interface name
+ * as the array key.
+ *
+ * All other files/directories should not have a key.
+ *
+ * @since 6.2.0
+ *
+ * @global array $_old_requests_files
+ * @var array
+ * @name $_old_requests_files
+ */
+global $_old_requests_files;
+
+$_old_requests_files = array(
+	// Interfaces.
+	'Requests_Auth'                              => 'wp-includes/Requests/Auth.php',
+	'Requests_Hooker'                            => 'wp-includes/Requests/Hooker.php',
+	'Requests_Proxy'                             => 'wp-includes/Requests/Proxy.php',
+	'Requests_Transport'                         => 'wp-includes/Requests/Transport.php',
+
+	// Classes.
+	'Requests_Auth_Basic'                        => 'wp-includes/Requests/Auth/Basic.php',
+	'Requests_Cookie_Jar'                        => 'wp-includes/Requests/Cookie/Jar.php',
+	'Requests_Exception_HTTP'                    => 'wp-includes/Requests/Exception/HTTP.php',
+	'Requests_Exception_Transport'               => 'wp-includes/Requests/Exception/Transport.php',
+	'Requests_Exception_HTTP_304'                => 'wp-includes/Requests/Exception/HTTP/304.php',
+	'Requests_Exception_HTTP_305'                => 'wp-includes/Requests/Exception/HTTP/305.php',
+	'Requests_Exception_HTTP_306'                => 'wp-includes/Requests/Exception/HTTP/306.php',
+	'Requests_Exception_HTTP_400'                => 'wp-includes/Requests/Exception/HTTP/400.php',
+	'Requests_Exception_HTTP_401'                => 'wp-includes/Requests/Exception/HTTP/401.php',
+	'Requests_Exception_HTTP_402'                => 'wp-includes/Requests/Exception/HTTP/402.php',
+	'Requests_Exception_HTTP_403'                => 'wp-includes/Requests/Exception/HTTP/403.php',
+	'Requests_Exception_HTTP_404'                => 'wp-includes/Requests/Exception/HTTP/404.php',
+	'Requests_Exception_HTTP_405'                => 'wp-includes/Requests/Exception/HTTP/405.php',
+	'Requests_Exception_HTTP_406'                => 'wp-includes/Requests/Exception/HTTP/406.php',
+	'Requests_Exception_HTTP_407'                => 'wp-includes/Requests/Exception/HTTP/407.php',
+	'Requests_Exception_HTTP_408'                => 'wp-includes/Requests/Exception/HTTP/408.php',
+	'Requests_Exception_HTTP_409'                => 'wp-includes/Requests/Exception/HTTP/409.php',
+	'Requests_Exception_HTTP_410'                => 'wp-includes/Requests/Exception/HTTP/410.php',
+	'Requests_Exception_HTTP_411'                => 'wp-includes/Requests/Exception/HTTP/411.php',
+	'Requests_Exception_HTTP_412'                => 'wp-includes/Requests/Exception/HTTP/412.php',
+	'Requests_Exception_HTTP_413'                => 'wp-includes/Requests/Exception/HTTP/413.php',
+	'Requests_Exception_HTTP_414'                => 'wp-includes/Requests/Exception/HTTP/414.php',
+	'Requests_Exception_HTTP_415'                => 'wp-includes/Requests/Exception/HTTP/415.php',
+	'Requests_Exception_HTTP_416'                => 'wp-includes/Requests/Exception/HTTP/416.php',
+	'Requests_Exception_HTTP_417'                => 'wp-includes/Requests/Exception/HTTP/417.php',
+	'Requests_Exception_HTTP_418'                => 'wp-includes/Requests/Exception/HTTP/418.php',
+	'Requests_Exception_HTTP_428'                => 'wp-includes/Requests/Exception/HTTP/428.php',
+	'Requests_Exception_HTTP_429'                => 'wp-includes/Requests/Exception/HTTP/429.php',
+	'Requests_Exception_HTTP_431'                => 'wp-includes/Requests/Exception/HTTP/431.php',
+	'Requests_Exception_HTTP_500'                => 'wp-includes/Requests/Exception/HTTP/500.php',
+	'Requests_Exception_HTTP_501'                => 'wp-includes/Requests/Exception/HTTP/501.php',
+	'Requests_Exception_HTTP_502'                => 'wp-includes/Requests/Exception/HTTP/502.php',
+	'Requests_Exception_HTTP_503'                => 'wp-includes/Requests/Exception/HTTP/503.php',
+	'Requests_Exception_HTTP_504'                => 'wp-includes/Requests/Exception/HTTP/504.php',
+	'Requests_Exception_HTTP_505'                => 'wp-includes/Requests/Exception/HTTP/505.php',
+	'Requests_Exception_HTTP_511'                => 'wp-includes/Requests/Exception/HTTP/511.php',
+	'Requests_Exception_HTTP_Unknown'            => 'wp-includes/Requests/Exception/HTTP/Unknown.php',
+	'Requests_Exception_Transport_cURL'          => 'wp-includes/Requests/Exception/Transport/cURL.php',
+	'Requests_Proxy_HTTP'                        => 'wp-includes/Requests/Proxy/HTTP.php',
+	'Requests_Response_Headers'                  => 'wp-includes/Requests/Response/Headers.php',
+	'Requests_Transport_cURL'                    => 'wp-includes/Requests/Transport/cURL.php',
+	'Requests_Transport_fsockopen'               => 'wp-includes/Requests/Transport/fsockopen.php',
+	'Requests_Utility_CaseInsensitiveDictionary' => 'wp-includes/Requests/Utility/CaseInsensitiveDictionary.php',
+	'Requests_Utility_FilteredIterator'          => 'wp-includes/Requests/Utility/FilteredIterator.php',
+	'Requests_Cookie'                            => 'wp-includes/Requests/Cookie.php',
+	'Requests_Exception'                         => 'wp-includes/Requests/Exception.php',
+	'Requests_Hooks'                             => 'wp-includes/Requests/Hooks.php',
+	'Requests_IDNAEncoder'                       => 'wp-includes/Requests/IDNAEncoder.php',
+	'Requests_IPv6'                              => 'wp-includes/Requests/IPv6.php',
+	'Requests_IRI'                               => 'wp-includes/Requests/IRI.php',
+	'Requests_Response'                          => 'wp-includes/Requests/Response.php',
+	'Requests_SSL'                               => 'wp-includes/Requests/SSL.php',
+	'Requests_Session'                           => 'wp-includes/Requests/Session.php',
+
+	// Directories.
+	'wp-includes/Requests/Auth/',
+	'wp-includes/Requests/Cookie/',
+	'wp-includes/Requests/Exception/HTTP/',
+	'wp-includes/Requests/Exception/Transport/',
+	'wp-includes/Requests/Exception/',
+	'wp-includes/Requests/Proxy/',
+	'wp-includes/Requests/Response/',
+	'wp-includes/Requests/Transport/',
+	'wp-includes/Requests/Utility/',
 );
 
 /**
@@ -852,7 +867,7 @@
  *
  * The contents of this array indicate any new bundled plugins/themes which
  * should be installed with the WordPress Upgrade. These items will not be
- * re-installed in future upgrades, this behaviour is controlled by the
+ * re-installed in future upgrades, this behavior is controlled by the
  * introduced version present here being older than the current installed version.
  *
  * The content of this array should follow the following format:
@@ -871,26 +886,28 @@
 global $_new_bundled_files;
 
 $_new_bundled_files = array(
-	'plugins/akismet/'        => '2.0',
-	'themes/twentyten/'       => '3.0',
-	'themes/twentyeleven/'    => '3.2',
-	'themes/twentytwelve/'    => '3.5',
-	'themes/twentythirteen/'  => '3.6',
-	'themes/twentyfourteen/'  => '3.8',
-	'themes/twentyfifteen/'   => '4.1',
-	'themes/twentysixteen/'   => '4.4',
-	'themes/twentyseventeen/' => '4.7',
-	'themes/twentynineteen/'  => '5.0',
-	'themes/twentytwenty/'    => '5.3',
-	'themes/twentytwentyone/' => '5.6',
-	'themes/twentytwentytwo/' => '5.9',
+	'plugins/akismet/'          => '2.0',
+	'themes/twentyten/'         => '3.0',
+	'themes/twentyeleven/'      => '3.2',
+	'themes/twentytwelve/'      => '3.5',
+	'themes/twentythirteen/'    => '3.6',
+	'themes/twentyfourteen/'    => '3.8',
+	'themes/twentyfifteen/'     => '4.1',
+	'themes/twentysixteen/'     => '4.4',
+	'themes/twentyseventeen/'   => '4.7',
+	'themes/twentynineteen/'    => '5.0',
+	'themes/twentytwenty/'      => '5.3',
+	'themes/twentytwentyone/'   => '5.6',
+	'themes/twentytwentytwo/'   => '5.9',
+	'themes/twentytwentythree/' => '6.1',
+	'themes/twentytwentyfour/'  => '6.4',
 );
 
 /**
  * Upgrades the core of WordPress.
  *
  * This will create a .maintenance file at the base of the WordPress directory
- * to ensure that people can not access the web site, when the files are being
+ * to ensure that people can not access the website, when the files are being
  * copied to their locations.
  *
  * The files in the `$_old_files` list will be removed and the new files
@@ -930,6 +947,7 @@
  *
  * @global WP_Filesystem_Base $wp_filesystem          WordPress filesystem subclass.
  * @global array              $_old_files
+ * @global array              $_old_requests_files
  * @global array              $_new_bundled_files
  * @global wpdb               $wpdb                   WordPress database abstraction object.
  * @global string             $wp_version
@@ -941,9 +959,19 @@
  * @return string|WP_Error New WordPress version on success, WP_Error on failure.
  */
 function update_core( $from, $to ) {
-	global $wp_filesystem, $_old_files, $_new_bundled_files, $wpdb;
+	global $wp_filesystem, $_old_files, $_old_requests_files, $_new_bundled_files, $wpdb;
+
+	if ( function_exists( 'set_time_limit' ) ) {
+		set_time_limit( 300 );
+	}
 
-	set_time_limit( 300 );
+	/*
+	 * Merge the old Requests files and directories into the `$_old_files`.
+	 * Then preload these Requests files first, before the files are deleted
+	 * and replaced to ensure the code is in memory if needed.
+	 */
+	$_old_files = array_merge( $_old_files, array_values( $_old_requests_files ) );
+	_preload_old_requests_classes_and_interfaces( $to );
 
 	/**
 	 * Filters feedback messages displayed during the core update process.
@@ -964,7 +992,7 @@
 	 */
 	apply_filters( 'update_feedback', __( 'Verifying the unpacked files…' ) );
 
-	// Sanity check the unzipped distribution.
+	// Confidence check the unzipped distribution.
 	$distro = '';
 	$roots  = array( '/wordpress/', '/wordpress-mu/' );
 
@@ -1014,9 +1042,14 @@
 	require WP_CONTENT_DIR . '/upgrade/version-current.php';
 	$wp_filesystem->delete( $versions_file );
 
-	$php_version       = phpversion();
-	$mysql_version     = $wpdb->db_version();
-	$old_wp_version    = $GLOBALS['wp_version']; // The version of WordPress we're updating from.
+	$php_version    = PHP_VERSION;
+	$mysql_version  = $wpdb->db_version();
+	$old_wp_version = $GLOBALS['wp_version']; // The version of WordPress we're updating from.
+	/*
+	 * Note: str_contains() is not used here, as this file is included
+	 * when updating from older WordPress versions, in which case
+	 * the polyfills from wp-includes/compat.php may not be available.
+	 */
 	$development_build = ( false !== strpos( $old_wp_version . $wp_version, '-' ) ); // A dash in the version indicates a development release.
 	$php_compat        = version_compare( $php_version, $required_php_version, '>=' );
 
@@ -1101,8 +1134,10 @@
 	/** This filter is documented in wp-admin/includes/update-core.php */
 	apply_filters( 'update_feedback', __( 'Preparing to install the latest version…' ) );
 
-	// Don't copy wp-content, we'll deal with that below.
-	// We also copy version.php last so failed updates report their old version.
+	/*
+	 * Don't copy wp-content, we'll deal with that below.
+	 * We also copy version.php last so failed updates report their old version.
+	 */
 	$skip              = array( 'wp-content', 'wp-includes/version.php' );
 	$check_is_writable = array();
 
@@ -1119,6 +1154,11 @@
 
 		if ( is_array( $checksums ) ) {
 			foreach ( $checksums as $file => $checksum ) {
+				/*
+				 * Note: str_starts_with() is not used here, as this file is included
+				 * when updating from older WordPress versions, in which case
+				 * the polyfills from wp-includes/compat.php may not be available.
+				 */
 				if ( 'wp-content' === substr( $file, 0, 10 ) ) {
 					continue;
 				}
@@ -1168,7 +1208,7 @@
 			if ( $files_not_writable ) {
 				return new WP_Error(
 					'files_not_writable',
-					__( 'The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.' ),
+					__( 'The update cannot be installed because your site is unable to copy some files. This is usually due to inconsistent file permissions.' ),
 					implode( ', ', $error_data )
 				);
 			}
@@ -1188,7 +1228,7 @@
 	apply_filters( 'update_feedback', __( 'Copying the required files…' ) );
 
 	// Copy new versions of WP files into place.
-	$result = _copy_dir( $from . $distro, $to, $skip );
+	$result = copy_dir( $from . $distro, $to, $skip );
 
 	if ( is_wp_error( $result ) ) {
 		$result = new WP_Error(
@@ -1204,7 +1244,7 @@
 			$wp_filesystem->delete( $from, true );
 			$result = new WP_Error(
 				'copy_failed_for_version_file',
-				__( 'The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.' ),
+				__( 'The update cannot be installed because your site is unable to copy some files. This is usually due to inconsistent file permissions.' ),
 				'wp-includes/version.php'
 			);
 		}
@@ -1226,6 +1266,11 @@
 
 	if ( isset( $checksums ) && is_array( $checksums ) ) {
 		foreach ( $checksums as $file => $checksum ) {
+			/*
+			 * Note: str_starts_with() is not used here, as this file is included
+			 * when updating from older WordPress versions, in which case
+			 * the polyfills from wp-includes/compat.php may not be available.
+			 */
 			if ( 'wp-content' === substr( $file, 0, 10 ) ) {
 				continue;
 			}
@@ -1259,14 +1304,16 @@
 			}
 		}
 
-		// If we don't have enough free space, it isn't worth trying again.
-		// Unlikely to be hit due to the check in unzip_file().
+		/*
+		 * If we don't have enough free space, it isn't worth trying again.
+		 * Unlikely to be hit due to the check in unzip_file().
+		 */
 		$available_space = function_exists( 'disk_free_space' ) ? @disk_free_space( ABSPATH ) : false;
 
 		if ( $available_space && $total_size >= $available_space ) {
 			$result = new WP_Error( 'disk_full', __( 'There is not enough free disk space to complete the update.' ) );
 		} else {
-			$result = _copy_dir( $from . $distro, $to, $skip );
+			$result = copy_dir( $from . $distro, $to, $skip );
 
 			if ( is_wp_error( $result ) ) {
 				$result = new WP_Error(
@@ -1278,15 +1325,21 @@
 		}
 	}
 
-	// Custom content directory needs updating now.
-	// Copy languages.
+	/*
+	 * Custom content directory needs updating now.
+	 * Copy languages.
+	 */
 	if ( ! is_wp_error( $result ) && $wp_filesystem->is_dir( $from . $distro . 'wp-content/languages' ) ) {
 		if ( WP_LANG_DIR !== ABSPATH . WPINC . '/languages' || @is_dir( WP_LANG_DIR ) ) {
 			$lang_dir = WP_LANG_DIR;
 		} else {
 			$lang_dir = WP_CONTENT_DIR . '/languages';
 		}
-
+		/*
+		 * Note: str_starts_with() is not used here, as this file is included
+		 * when updating from older WordPress versions, in which case
+		 * the polyfills from wp-includes/compat.php may not be available.
+		 */
 		// Check if the language directory exists first.
 		if ( ! @is_dir( $lang_dir ) && 0 === strpos( $lang_dir, ABSPATH ) ) {
 			// If it's within the ABSPATH we can handle it here, otherwise they're out of luck.
@@ -1317,8 +1370,10 @@
 	// Remove maintenance file, we're done with potential site-breaking changes.
 	$wp_filesystem->delete( $maintenance_file );
 
-	// 3.5 -> 3.5+ - an empty twentytwelve directory was created upon upgrade to 3.5 for some users,
-	// preventing installation of Twenty Twelve.
+	/*
+	 * 3.5 -> 3.5+ - an empty twentytwelve directory was created upon upgrade to 3.5 for some users,
+	 * preventing installation of Twenty Twelve.
+	 */
 	if ( '3.5' === $old_wp_version ) {
 		if ( is_dir( WP_CONTENT_DIR . '/themes/twentytwelve' )
 			&& ! file_exists( WP_CONTENT_DIR . '/themes/twentytwelve/style.css' )
@@ -1373,10 +1428,13 @@
 					$wp_filesystem->mkdir( $dest . $filename, FS_CHMOD_DIR );
 					$_result = copy_dir( $from . $distro . 'wp-content/' . $file, $dest . $filename );
 
-					// If a error occurs partway through this final step, keep the error flowing through, but keep process going.
+					/*
+					 * If an error occurs partway through this final step,
+					 * keep the error flowing through, but keep the process going.
+					 */
 					if ( is_wp_error( $_result ) ) {
 						if ( ! is_wp_error( $result ) ) {
-							$result = new WP_Error;
+							$result = new WP_Error();
 						}
 
 						$result->add(
@@ -1417,8 +1475,8 @@
 	// Deactivate the REST API plugin if its version is 2.0 Beta 4 or lower.
 	_upgrade_440_force_deactivate_incompatible_plugins();
 
-	// Deactivate the Gutenberg plugin if its version is 11.8 or lower.
-	_upgrade_590_force_deactivate_incompatible_plugins();
+	// Deactivate incompatible plugins.
+	_upgrade_core_deactivate_incompatible_plugins();
 
 	// Upgrade DB with separate request.
 	/** This filter is documented in wp-admin/includes/update-core.php */
@@ -1460,92 +1518,60 @@
 }
 
 /**
- * Copies a directory from one location to another via the WordPress Filesystem Abstraction.
- *
- * Assumes that WP_Filesystem() has already been called and setup.
+ * Preloads old Requests classes and interfaces.
  *
- * This is a standalone copy of the `copy_dir()` function that is used to
- * upgrade the core files. It is placed here so that the version of this
- * function from the *new* WordPress version will be called.
+ * This function preloads the old Requests code into memory before the
+ * upgrade process deletes the files. Why? Requests code is loaded into
+ * memory via an autoloader, meaning when a class or interface is needed
+ * If a request is in process, Requests could attempt to access code. If
+ * the file is not there, a fatal error could occur. If the file was
+ * replaced, the new code is not compatible with the old, resulting in
+ * a fatal error. Preloading ensures the code is in memory before the
+ * code is updated.
  *
- * It was initially added for the 3.1 -> 3.2 upgrade.
- *
- * @ignore
- * @since 3.2.0
- * @since 3.7.0 Updated not to use a regular expression for the skip list.
+ * @since 6.2.0
  *
- * @see copy_dir()
- * @link https://core.trac.wordpress.org/ticket/17173
- *
- * @global WP_Filesystem_Base $wp_filesystem
+ * @global array              $_old_requests_files Requests files to be preloaded.
+ * @global WP_Filesystem_Base $wp_filesystem       WordPress filesystem subclass.
+ * @global string             $wp_version          The WordPress version string.
  *
- * @param string   $from      Source directory.
- * @param string   $to        Destination directory.
- * @param string[] $skip_list Array of files/folders to skip copying.
- * @return true|WP_Error True on success, WP_Error on failure.
+ * @param string $to Path to old WordPress installation.
  */
-function _copy_dir( $from, $to, $skip_list = array() ) {
-	global $wp_filesystem;
+function _preload_old_requests_classes_and_interfaces( $to ) {
+	global $_old_requests_files, $wp_filesystem, $wp_version;
 
-	$dirlist = $wp_filesystem->dirlist( $from );
-
-	if ( false === $dirlist ) {
-		return new WP_Error( 'dirlist_failed__copy_dir', __( 'Directory listing failed.' ), basename( $to ) );
+	/*
+	 * Requests was introduced in WordPress 4.6.
+	 *
+	 * Skip preloading if the website was previously using
+	 * an earlier version of WordPress.
+	 */
+	if ( version_compare( $wp_version, '4.6', '<' ) ) {
+		return;
 	}
 
-	$from = trailingslashit( $from );
-	$to   = trailingslashit( $to );
+	if ( ! defined( 'REQUESTS_SILENCE_PSR0_DEPRECATIONS' ) ) {
+		define( 'REQUESTS_SILENCE_PSR0_DEPRECATIONS', true );
+	}
 
-	foreach ( (array) $dirlist as $filename => $fileinfo ) {
-		if ( in_array( $filename, $skip_list, true ) ) {
+	foreach ( $_old_requests_files as $name => $file ) {
+		// Skip files that aren't interfaces or classes.
+		if ( is_int( $name ) ) {
 			continue;
 		}
 
-		if ( 'f' === $fileinfo['type'] ) {
-			if ( ! $wp_filesystem->copy( $from . $filename, $to . $filename, true, FS_CHMOD_FILE ) ) {
-				// If copy failed, chmod file to 0644 and try again.
-				$wp_filesystem->chmod( $to . $filename, FS_CHMOD_FILE );
-
-				if ( ! $wp_filesystem->copy( $from . $filename, $to . $filename, true, FS_CHMOD_FILE ) ) {
-					return new WP_Error( 'copy_failed__copy_dir', __( 'Could not copy file.' ), $to . $filename );
-				}
-			}
+		// Skip if it's already loaded.
+		if ( class_exists( $name ) || interface_exists( $name ) ) {
+			continue;
+		}
 
-			/*
-			 * `wp_opcache_invalidate()` only exists in WordPress 5.5 or later,
-			 * so don't run it when upgrading from older versions.
-			 */
-			if ( function_exists( 'wp_opcache_invalidate' ) ) {
-				wp_opcache_invalidate( $to . $filename );
-			}
-		} elseif ( 'd' === $fileinfo['type'] ) {
-			if ( ! $wp_filesystem->is_dir( $to . $filename ) ) {
-				if ( ! $wp_filesystem->mkdir( $to . $filename, FS_CHMOD_DIR ) ) {
-					return new WP_Error( 'mkdir_failed__copy_dir', __( 'Could not create directory.' ), $to . $filename );
-				}
-			}
+		// Skip if the file is missing.
+		if ( ! $wp_filesystem->is_file( $to . $file ) ) {
+			continue;
+		}
 
-			/*
-			 * Generate the $sub_skip_list for the subdirectory as a sub-set
-			 * of the existing $skip_list.
-			 */
-			$sub_skip_list = array();
-
-			foreach ( $skip_list as $skip_item ) {
-				if ( 0 === strpos( $skip_item, $filename . '/' ) ) {
-					$sub_skip_list[] = preg_replace( '!^' . preg_quote( $filename, '!' ) . '/!i', '', $skip_item );
-				}
-			}
-
-			$result = _copy_dir( $from . $filename, $to . $filename, $sub_skip_list );
-
-			if ( is_wp_error( $result ) ) {
-				return $result;
-			}
-		}
+		require_once $to . $file;
 	}
-
-	return true;
 }
 
 /**
@@ -1670,6 +1696,11 @@
 	$files     = array();
 
 	if ( file_exists( "{$directory}example.html" )
+		/*
+		 * Note: str_contains() is not used here, as this file is included
+		 * when updating from older WordPress versions, in which case
+		 * the polyfills from wp-includes/compat.php may not be available.
+		 */
 		&& false !== strpos( file_get_contents( "{$directory}example.html" ), '<title>Genericons</title>' )
 	) {
 		$files[] = "{$directory}example.html";
@@ -1678,8 +1709,14 @@
 	$dirs = glob( $directory . '*', GLOB_ONLYDIR );
 	$dirs = array_filter(
 		$dirs,
-		static function( $dir ) {
-			// Skip any node_modules directories.
+		static function ( $dir ) {
+			/*
+			 * Skip any node_modules directories.
+			 *
+			 * Note: str_contains() is not used here, as this file is included
+			 * when updating from older WordPress versions, in which case
+			 * the polyfills from wp-includes/compat.php may not be available.
+			 */
 			return false === strpos( $dir, 'node_modules' );
 		}
 	);
@@ -1706,14 +1743,18 @@
 /**
  * @access private
  * @ignore
- * @since 5.9.0
+ * @since 5.8.0
+ * @since 5.9.0 The minimum compatible version of Gutenberg is 11.9.
+ * @since 6.1.1 The minimum compatible version of Gutenberg is 14.1.
+ * @since 6.4.0 The minimum compatible version of Gutenberg is 16.5.
+ * @since 6.5.0 The minimum compatible version of Gutenberg is 17.6.
  */
-function _upgrade_590_force_deactivate_incompatible_plugins() {
-	if ( defined( 'GUTENBERG_VERSION' ) && version_compare( GUTENBERG_VERSION, '11.9', '<' ) ) {
+function _upgrade_core_deactivate_incompatible_plugins() {
+	if ( defined( 'GUTENBERG_VERSION' ) && version_compare( GUTENBERG_VERSION, '17.6', '<' ) ) {
 		$deactivated_gutenberg['gutenberg'] = array(
 			'plugin_name'         => 'Gutenberg',
 			'version_deactivated' => GUTENBERG_VERSION,
-			'version_compatible'  => '11.9',
+			'version_compatible'  => '17.6',
 		);
 		if ( is_plugin_active_for_network( 'gutenberg/gutenberg.php' ) ) {
 			$deactivated_plugins = get_site_option( 'wp_force_deactivated_plugins', array() );