KOKINIO - MANAGER
Edit File: changelog.txt
== MediaWiki 1.45.0 == === Changes since MediaWiki 1.45.0-rc.0 === * Localisation updates. * (T410913) SpecialVersion: Fix "Cannot use bool as array" warning. * (T410928) resourceloader: Fix null offset in ClientHtml module sorting. * (T401987, T401995) SECURITY: Disable xslt option by default. * (T410934) Remove noop xml_parser_free() calls. * (T405450) session: Use fresh MW services container in CLI mode. * (T410912) MessageCache: Fix PHP 8.5 warning from ord(). * (T410912, T410920) Language: Fix PHP 8.5 warning from ord(). * (T410963) Upgrade wikimedia/xmp-reader from 0.10.1 to 0.10.2. * (T411016) Upgrading wikimedia/cldr-plural-rule-parser (v2.0.0 => v3.0.0). * (T295568) mediawiki.jqueryMsg: Support self-closing HTML tags. * (T295568) RELEASE-NOTES-1.45: Add entry for jqueryMsg self-closing tag support. * Api: Avoid re-stashing on publish with warnings via action=upload * (T411075) Api: Initialise reference variable. * (T409718) Remove SpecialUserRightsChangeableGroups hook. * (T411018) IndexPager: Set '' as default value for 'order'. * (T410914) Language: Fix PHP 8.5 warnings for NAN/INF string coercion in formatNumInternal and parseFormattedNumber. * (T358666) Drop PHP 8.1 support. * (T338103, T411214) ApiResult: Fix PHP 8.5 warning from ord(). * (T286291, T296188) MessagesZh*.php: Restore missing special page aliases. * (T391882) HTMLFormFieldCloner: Fix multiple bugs related to conditional states. * (T406374) htmlform: Load ooui before infusing field cloner buttons. * (T411199) initEditCount: Fix count for users with no edits. * (T351953) findBadBlobs: Fix the --scan-to option. == MediaWiki 1.45.0-rc.0 == == Upgrading notes for 1.45 == Don't forget to always back up your database before upgrading! See the file UPGRADE for more detailed per-version upgrade instructions from the oldest supported upgrading version, MediaWiki 1.35. For notes on 1.44.x and older releases, see HISTORY. === Configuration changes for system administrators in 1.45 === * $wgPHPSessionHandling is now deprecated, and the default value has been changed to 'warn'. Any extension that uses PHP session handling ($_SESSION, session_start(), etc.) will cause warnings to be emitted. Migration instructions: https://www.mediawiki.org/wiki/Manual:SessionManager_and_AuthManager/Updating_tips#SessionManager Known affected extensions: https://codesearch.wmcloud.org/things/?q=\%24_SESSION|\ssession_\w%2B\s*\(&files=\.php%24 Integration with PHP session handling will be removed in the future, making PHP session handling and MediaWiki session handling independent. Using PHP session handling may cause conflicts with the cookies used by MediaWiki. To silence the warnings and restore previous behavior, use `$wgPHPSessionHandling = 'enable';`. This configuration setting will be removed in a future release. To silence the warnings and disable integration with PHP session handling, use `define( 'MW_NO_SESSION_HANDLER', 1 );`. This constant will always be defined in a future release. * $wgSitemapNamespacesPriorities is deprecated and ignored. * $wgCSPUploadEntryPoint to control if img_auth.php & thumb.php send CSP headers * $wgEnableProtectionIndicators is now enabled by default. If your community already uses protection indicators you might want to disable this setting, or customize them with site CSS. ==== New configuration ==== * (T389281) $wgUseLeximorph - Defaults to false. When enabled, core parser functions for grammar, plural, gender, formality, and bidi use the Leximorph library’s modular handlers instead of the legacy Language methods. When disabled, the legacy methods are used. ==== Changed configuration ==== * (T402094) $wgReauthenticateTime now defaults to 3600 seconds instead of 60 seconds (1 minute to 1 hour) to improve the user experience ==== Removed configuration ==== * (T13555, T371756) $wgParserEnableLegacyHeadingDOM was removed. The skin option 'supportsMwHeading' was likewise removed. New heading markup is now always enabled, on all skins. More information: https://www.mediawiki.org/wiki/Heading_HTML_changes * (T387856) $wgEnotifImpersonal and $wgEnotifMaxRecips, deprecated in 1.44, are no longer honoured. * (T394054) $wgParserEnableLegacyMediaDOM and $wgUseContentMediaStyles were removed. New media markup is now always enabled. More information: https://www.mediawiki.org/wiki/Parsoid/Parser_Unification/Media_structure/FAQ * (T299947) $wgPageLinksSchemaMigrationStage has been removed. * (T405087) $wgDBDefaultGroup has been removed without deprecation. Use ILBFactory::setDefaultGroupName() instead. * (T306325) $wgEnableSearchContributorsByIP has been removed. * (T389893) 'multiPrimaryMode' has been removed from SqlBagOStuff config. * (T299951) $wgCategoryLinksSchemaMigrationStage, a temporary setting which controls the database schema migration for the categorylinks table, has been removed. === New user-facing features in 1.45 === * (T219543) [[Special:SpecialPages]], the index of special pages, now has a search box that filters the list. * (T118132) After using [[Special:MergeHistory]] to merge page histories, [[Special:Log]] will show entries for both the source and the destination page. Previously, the merge was only logged for the source page. * (T384578) Attempting to create a redirect to an invalid target, such as Special:UserLogout, will now result in a warning. * (T280531) Partial action blocks is now enabled by default. This feature allows administrators to block users from performing certain actions (such as moving pages) without blocking them from editing pages. * (T328254) A new parser function has been added, {{#contentmodel}}, which returns the localized name of the contentmodel of the current page. This is primarily meant for use in system messages. * (T382958) [[Special:MergeHistory]] is now significantly more flexible about what it can merge. It can now merge sections taken from the middle of the history of the source (rather than only the start) and insert revisions anywhere in the history of the destination page (rather than only the start) === New developer features in 1.45 === * The new built-in notifications framework is now stable for use by extensions. https://www.mediawiki.org/wiki/Manual:Notifications * The Status and StatusValue classes can now be documented as generic classes with a type parameter for their value. These annotations allow IDEs and static analysis tools to better understand the types in code such as: /** @return StatusValue<Foo> */ function doStuff(): StatusValue { ... } doStuff()->getValue()->bar(); * The UserLinkRendererUserPostRenderLink hook was added. * The LocalUserOptionsStoreSave hook was added. * The User::getConfirmationToken(), User::getConfirmationTokenUrl() and User::getInvalidationTokenUrl() methods were added. * The User::getTokenUrl() method was made public. * The SpecialLogResolveLogType hook was added. * Domain events modeling changes to pages are now stable for use by extensions. See https://www.mediawiki.org/wiki/Manual:Domain_events/Hierarchy#Page_Events * CentralIdLookup::getScope() has been added, for easier namespacing of central IDs. * SessionManager::getJwtData() has been added, to standardize JWT format for session providers which use a JWT. * The JwtCodec service has been added, for encoding/decoding JWTs. * The LeximorphFactory service was added. * (T402154) MessagePostProcessText and MessagePostProcessHtml hooks were added. * (T396889) In the past, messages that have to exist for technical reason but shouldn't be translated, were added to the usual en.json and qqq.json files, and then configured as 'ignored' in translatewiki. From now on, such messages should be added to the en.json and qqq.json file under nontranslatable/. * (T315128) The UserCanChangeEmail hook was added. * (T295568) The jqueryMsg parser now supports self-closing HTML tags (<br>, <wbr> and <hr>). === External library changes in 1.45 === ==== New external libraries ==== * Added lcobucci/jwt 4.1.5. * Added symfony/polyfill-php8.5 v1.33.0. * Added wikimedia/codex ("Codex-PHP") v0.7.1. ==== Changed external libraries ==== * Updated codex, codex-design-tokens and codex-icons from v1.23.0 to v2.3.2. * Updated composer/semver from 3.4.3 to 3.4.4. * Renamed cssjanus/cssjanus to wikimedia/cssjanus. * Updated guzzlehttp/guzzle from 7.9.3 to 7.10.0. * Updated mck89/peast from v1.17.0 to 1.17.2. * Updated oojs/oojs-ui from v0.51.7 to v0.53.0. * Updated psr/container from 1.1.2 to 2.0.2. * Updated symfony/polyfill-php82 from 1.32.0 to 1.33.0. * Updated symfony/polyfill-php83 from 1.32.0 to 1.33.0. * Updated symfony/polyfill-php84 from 1.32.0 to 1.33.0. * Updated symfony/yaml from 5.4.45 to 6.4.25. * Updated wikimedia/cldr-plural-rule-parser from 2.0.0 to 3.0.0. * Updated wikimedia/css-sanitizer from 5.5.0 to 6.1.0 * Updated wikimedia/json-codec from 3.0.3 to 4.0.0. * Updated wikimedia/less.php from 5.2.1 to 5.2.2. * Updated wikimedia/parsoid from 0.21.1 to 0.22.0. * Updated wikimedia/php-session-serializer from 3.0.1 to 3.0.2. * Updated wikimedia/remex-html from 4.1.2 to 5.1.0. * Updated wikimedia/request-timeout from 2.0.2 to 3.0.0. * Updated wikimedia/shellbox from 4.2.0 to 4.3.0. * Updated wikimedia/timestamp from 4.2.0 to 5.0.0. * Updated wikimedia/xmp-reader from 0.9.4 to 0.10.2. ===== Changed development-only external libraries ===== * Updated composer/spdx-licenses from 1.5.8 to 1.5.9. * Updated doctrine/dbal from 3.9.4 to 3.10.0. * Updated doctrine/sql-formatter from 1.3.0 to 1.5.2. * Updated eslint-config-wikimedia from 0.29.1 to 0.31.0. * Updated mediawiki/mediawiki-codesniffer from 46.0.0 to 48.0.0. * Updated mediawiki/mediawiki-phan-config from 0.15.0 to 0.17.0. === Action API changes in 1.45 === * (T396049) The list of domains supported by the upload-by-URL feature is now exposed via meta=siteinfo. * (T399897) The `parsoid` parameter to `action=parse` has been deprecated. Use `parser=parsoid` instead. === Languages updated in 1.45 === MediaWiki supports over 350 languages. Many localisations are updated regularly. Below only new and removed languages are listed, as well as changes to languages because of Phabricator reports. * (T314476) Make Perso-Arabic the primary writing system for Kashmiri, under the language code "ks". "ks-arab" and "ks-deva" are preserved for backwards compatibility. "ks-deva" may be removed in a future release. * Update language fallback chains for Minnan (nan/nan-*) by changing to only fallback to Mindong - Traditional Han script (cdo-hant). * (T296188) Sites using "zh" as site language now using English special page name in URL. * (T384155) Updated plural rules for Maltese (mt) language. * (T395223) Added language support for Yucatec Maya (yua). * (T397435) Added language support for Dolgan (dlg). * (T398790) Added language support for Antigua and Barbuda Creole English (aig). * (T402159) Added language support for Sasak (sas). * (T406198) Added language support for Bono (abr). * (T408150) Added language support for Jju (kaj). === Breaking changes in 1.45 === * PermissionStatus::toLegacyErrorArray() has been removed. * Methods that returned errors in the legacy array format have been removed: - ContentModelChange::checkPermissions - DifferenceEngine::getPermissionErrors - RecentChange::doMarkPatrolled - UploadBase::verifyPermissions - UploadBase::verifyTitlePermissions * The PermissionsError::$errors public property has been removed. * The PermissionErrorAudit hook has been removed. * OutputPage::showFatalError() has been removed. * OutputPage::showPermissionsErrorPage() has been removed. * OutputPage::$mImageTimeKeys has been removed. * PSR-4 namespace loading via Autoloader requires trailing slash at the path, an extra slash is no longer added unconditionally. * SessionProvider::setLogger(), setConfig(), setManager(), setHookContainer() methods deprecated in 1.37, have been removed. * SqlBagOStuff::expireAll() and ::deleteAll(), deprecated in 1.41 have been removed. * JobQueueGroup::deduplicateRootJob(), deprecated in 1.40, has been removed. * JobQueueGroup::waitForBackups(), deprecated in 1.41, has been removed. You can use JobQueue::waitForBackups() instead. * JobSpecification::toSerializableArray, deprecated in 1.41, has been removed. * (T376295) The ability to use raw HTML messages for the copyright footer has been removed. The messages 'copyright' and 'history_copyright', the hook 'SkinCopyrightFooter', and the config option $wgAllowRawHtmlCopyrightMessages have all been removed. Instead use the messages 'copyright-footer' and 'copyright-footer-history', and the hook 'SkinCopyrightFooterMessage'. * (T343849) Subclasses that override SpecialPage::getDescription() or Action::getPageTitle() must return a Message object rather than a string. * (T343994) OutputPage::setPageTitle() no longer accepts Message objects. Use OutputPage::setPageTitleMsg() to set the title from a message. * OutputPage::prepareErrorPage() no longer accepts parameters. Use setPageTitle()/setPageTitleMsg() or setHTMLTitle() directly. * The SiteConfiguration::extractGlobalSetting method, not used outside of SiteConfiguration class, is now private. * RL\Module::getDeprecationInformation() deprecated in 1.41, now unused, has been removed. * AuthManager::forcePrimaryAuthenticationProviders(), deprecated in 1.43 has been removed. * BotPassword::generatePassword() no longer takes a $config parameter. * User::whoIs() and ::whoIsReal(), deprecated since 1.43, have been removed. * Abstract function AuthenticationRequestTestCase::provideLoadFromSubmission is now static and has to be declared as static function when implemented. * Abstract function HookRunnerTestBase::provideHookRunners is now static and has to be declared as static function when implemented. * ExtensionJsonTestBase::$extensionJsonPath and ::provideHookHandlerNames() now static and have to be declared as static property or function when used. * The following LogPager methods are deprecated without replacement: getType, getPage, getPattern, getYear, getMonth, getDay, getTagFilter, getTagInvert, getAction. * ContentRenderer::getParserOutput() with an integer revision ID, deprecated since 1.42, is no longer supported. * The LogEventsListShowLogExtract $page parameter is now an array. * ReverseArrayIterator, deprecated in MediaWiki 1.44, has been removed. * Command::whitelistPaths, deprecated in 1.36, has been removed. * BagOStuff::WRITE_PRUNE_SEGMENTS, deprecated in 1.43, has been removed. * ::setIndexAliases() method in the following classes and interfaces have been removed without deprecation as it was completely unused: - Database - ILBFactory and LBFactory - ILoadBalancerForOwner - LoadBalancer - ISQLPlatform * Some undocumented behaviors of ParserOptions::setInterfaceMessage() have been moved to a new method ParserOptions::setIsMessage(). (T393601, T395589) * Old hook handler styles, deprecated in 1.41, have been removed. See `HookContainer::register` for the accepted formats. (T401532) * The ParserOutput constructor now enforces strict type hints on its arguments. Passing null as the $languageLinks parameter was deprecated in 1.43. * ParserOutput::addTemplate() now throws an InvalidArgumentException if an interwiki link is provided; this was deprecated in 1.42. * ParserOutput::setPageProperty() now enforces a strict type hint of 'string' on its $value parameter; non-string values were deprecated in 1.42. * The following methods in ParserOutput have been removed: - ::getTimeSinceStart(), deprecated in 1.42 - ::__get()/::__set(), deprecated in 1.38 Dynamic properties continue to emit warnings in PHP >= 8.2. * The ParamType and ListType classes have been converted to enumerations. Any calls to ParamType::cases() or ListType::cases() should be converted to ::values() if you wish to still obtain a list of strings. * The ParserOutputFlags class has been converted to an enumeration. Any calls to ParserOutputFlags::cases() should be converted to ParserOutputFlags::values() if you wish to still obtain a list of strings. * The ParserOutputStringSets class has been converted to an enumeration. Any calls to ParserOutputStringSets::cases() should be converted to ParserOutputStringSets::values() if you wish to still obtain a list of strings. * The ParserOutputLinkTypes class has been converted to an enumeration. Any calls to ParserOutputLinkTypes::cases() should be converted to ParserOutputLinkTypes::values() if you wish to still obtain a list of strings. * The parameter $default of WebRequest::getRawVal(), deprecated since 1.43, is now removed. * The ActorMigration::MIGRATION_STAGE_SCHEMA_COMPAT constant, deprecated since 1.39, has been removed. * RecentChange::SRC_EXTERNAL has been removed. Extensions should define their own source constants. * The following methods in RecentChange have been removed without deprecation: - isEnotifEnabled() - notifyLog() - newForCategorization() - getNotifyUrl() * The UserNamePrefixSearch class, deprecated in 1.41 has been removed, the MediaWiki\User\UserNamePrefixSearch service should be used instead. * UserMailer::sanitizeHeaderValue, deprecated in 1.44 is now removed. * Subclasses of UploadBase must call the parent constructor if they override it * User::isBlockedGlobally and User::getGlobalBlock, both deprecated in 1.40, have been removed. Use User::getBlock instead. * Title::getTitleProtection() and ::deleteTitleProtection() methods, deprecated in 1.37, have been removed. * SearchEngine::getTextFromContent(), deprecated in 1.34 is now removed * SearchEngine::replacePrefixes(), deprecated in 1.32 is now removed. * The FetchChangesList hook is now called with an object as its fourth parameter, instead of an array. The object is iterable. * ParserOutput::SUPPORTS_STATELESS_TRANSFORMS and ParserOutput::SUPPORTS_UNWRAP_TRANSFORM, constants which were added as feature flags in MW 1.31, have been removed. * The following ContentHandler methods, previously deprecated, are now removed: - ContentHandler::getContentText(), deprecated in 1.37 - ContentHandler::getDefaultModelFor(), deprecated since 1.33 - ContentHandler::getForModelID(), deprecated since 1.35 - ContentHandler::getForContent(), deprecated since 1.35 - ContentHandler::getContentModels(), deprecated since 1.35 - ContentHandler::getAllContentFormats(), deprecated since 1.35 * LoadBalancer::getConnectionRef(), deprecated since 1.39, has now been removed. Use ::getConnection() instead. * PasswordFactory::init(), deprecated since 1.32, has been removed. Instead, you should initialise settings using the constructor. * CentralIdLookup::factory(), deprecated since 1.37, has now been removed. Use MediaWikiServices to obtain an instance instead. * The Less mixins .horizontal-gradient() and .vertical-gradient() in mediawiki.mixins.less, deprecated in 1.43 have been removed. * The SearchResult class, deprecated since 1.34, is now abstract. * Title::loadRestrictions() and flushRestrictions(), both deprecated in 1.37, have now been dropped. * MediaWikiIntegrationTestCase::removeTemporaryHook(), deprecated since 1.36, is now removed. * Various deprecated static methods of Xml for creating Html, deprecated in earlier versions, have now been removed: - Xml::monthSelector(), since 1.42 - Xml::dateMenu(), since 1.42 - Xml::languageSelector(), since 1.42 - Xml::span(), since 1.42 - Xml::wrapClass(), since 1.42 - Xml::input(), since 1.42 - Xml::password(), since 1.42 - Xml::check(), since 1.42 - Xml::radio(), since 1.42 - Xml::inputLabel(), since 1.42 - Xml::inputLabelSep(), since 1.42 - Xml::checkLabel(), since 1.42 - Xml::radioLabel(), since 1.42 - Xml::submitButton(), since 1.42 - Xml::textarea(), since 1.42 - Xml::encodeJsVar(), since 1.41 - Xml::encodeJsCall(), since 1.41 - Xml::buildTable(), since 1.42 - Xml::buildTableRow(), since 1.42 * SkinFactory::getSkinNames(), deprecated since 1.37, has been removed. Instead, use SkinFactory::getInstalledSkins(). * Skin::makeSpecialUrl and Skin::makeSpecialUrlSubpage, deprecated in 1.39 has been removed. Instead, use the replacements in SkinComponentUtils. * wfExpandIRI() and wfGetServerUrl(), deprecated since 1.39, has been removed. Instead, use UrlUtils::expandIRI() and UrlUtils::getServer(). === Deprecations in 1.45 === * (T166010) All PHP code in MediaWiki is slowly being moved to be in a class namespace as appropriate, so that we can use PSR-4 auto-loading, which will speed up general code loading of MediaWiki. The old global namespace class names are being left behind as deprecated aliases. In this release of MediaWiki, 2662 classes now have a namespace and 329 do not yet (89% done, up from 88% in MediaWiki 1.44.0). The following have newly been moved: - MediaWiki\Mail: - MailAddress - UserMailer - EmaillingJob - MediaWiki\Languages => MediaWiki\Language - LanguageConverterFactory - LanguageEventIngress - LanguageFactory - LanguageFallback - LanguageNameUtils - MediaWiki\Languages\Hook => MediaWiki\Language\Hook - Language__getMessagesFileNameHook - LanguageGetTranslatedLanguageNamesHook - Language related hooks: MediaWiki\Hook => MediaWiki\Language\Hook - GetHumanTimestampHook - GetLangPreferredVariantHook - LanguageGetNamespacesHook - LocalisationCacheRecacheFallbackHook - LocalisationCacheRecacheHook - MediaWiki\Cache => MediaWiki\Page - CacheKeyHelper - LinkBatch - LinkBatchFactory - LinkCache - Page related jobs: MediaWiki\JobQueue\Jobs => MediaWiki\Page - DeletePageJob - Wikimedia: - ReplacementArray (was MediaWiki\Language\ReplacementArray) - Emptiable (was Wikimedia\Libs\Emptiable) - UnpackFailedException (was Wikimedia\Libs\UnpackFailedException) * UserNameUtils::getTempPlaceholder() has been deprecated and now emits deprecation warnings. Use TempUserConfig::getPlaceholderName() instead. * MediaWikiServices::disableStorageBackend(), deprecated in 1.40 now emits deprecation warnings. Use ::disableStorage() instead. * MediaWikiServices::getConfiguredReadOnlyMode(), deprecated in 1.41 now emits deprecation warnings. Use ::getReadOnlyMode() service together with ::getConfiguredReason() and ::isConfiguredReadOnly() to check when a site is set to read-only mode. * JsonCodec::unserialize() and ::unserializeArray(), deprecated in 1.43, now emits deprecation warnings. Use ::deserialize/::deserializeArray() instead. * JsonDeserializable and JsonDeserializableTrait have been deprecated; use JsonCodecable and JsonCodecableTrait from the wikimedia/json-codec library in new code. * The JsonSerializer and JsonDeserializer interfaces have been deprecated, use JsonCodecInterface from the wikimedia/json-codec library in new code. * Parser::guessLegacySectionNameFromWikiText() has been deprecated. * OutputPage::wrapWikiTextAsInterface() has been deprecated. * Passing a string or UserIdentity object to DatabaseBlock::setTarget() or the 'address' parameter to DatabaseBlock::__construct() is now deprecated and will emit deprecation warnings. Use BlockTargetFactory to obtain a BlockTarget to pass to the 'target' parameter of these functions, or use DatabaseBlockStore::newUnsaved() or ::insertBlockWithParams(). (T385966) * Calling ApiOptions::__construct() without $userOptionsManager and $preferencesFactory has been deprecated and emits deprecation warnings. Code that extends ApiOptions should instead extend ApiOptionsBase. * Autoloader::setPsr4Namespaces(), deprecated in 1.40, now emits deprecation warnings. * ParserOutput::getWarnings() has been deprecated. Use ::getWarningMsgs() instead. * ParserOutput::setLanguageLinks(), ::getTimestamp(), ::setText() and ::setTimestamp, deprecated in 1.42, now emit deprecation warnings. * ParserOutput::getInterwikiLinks(), ::getLinksSpecial(), ::getTemplates(), ::getTemplateIds(), and ::getFileSearchOptions(), deprecated in 1.43, now emit deprecation warnings. * OutputPage::setLanguageLinks(), deprecated in 1.43, now emits deprecation warnings. * wfExpandUrl() and wfParseUrl(), both deprecated in 1.39, now emit warnings. * Calling RevisionStore methods with a LinkTarget emits deprecation warnings now. It was already documented as deprecated since 1.36. - RevisionStore::getFirstRevision - RevisionStore::getRevisionByTimestamp - RevisionStore::getRevisionByTitle * The MagicWordwgVariableIDsHook, deprecated in 1.35, now emits warnings in the hook runner. Migrate to the GetMagicVariableIDsHook instead. * SessionManager::singleton() is deprecated, use MediaWikiServices::getSessionManager() instead. * SessionManager::getGlobalSession() is deprecated, use WebRequest::getSession() instead. * PageConfigFactory::create() is now deprecated and emits warnings; use ::createFromParserOptions() instead. * ParserOutput::setOutputFlag() emits deprecation warnings if the flag name is not present in the ParserOutputFlags enumeration. * Calling MessageCache::get with a Language object is now deprecated and emits a deprecation warning. * MetricInterface::copyToStatsdAt() and StatsFactory::withStatsdDataFactory() are now deprecated. For StatsD support going forward, see: https://www.mediawiki.org/wiki/Manual:Stats. * FileBackendStore::memCache is now deprecated. FileBackendStore::wanStatCache should be used instead. * EnotifNotifyJob renamed to MediaWiki\RecentChanges\RecentChangeNotifyJob. * EmailNotification renamed to MediaWiki\RecentChanges\RecentChangeNotifier. * The RecentChangeNotifier::getPageStatus() method has been deprecated. * The SendWatchlistEmailNotification and UpdateUserMailerFormattedPageStatus hooks have been deprecated, use the Notification Middleware instead. * The AbortEmailNotification hook has been deprecated, use the Notification Middleware instead. * UploadBase::verifyExtension, UploadBase::detectScript, UploadBase::detectVirus have been deprecated. In most cases callers should use the verifyFile method of UploadVerification service. * The following methods from RecentChange have been deprecated: - newFromRow() - newFromId() - newFromConds() - notifyEdit() - notifyNewPage() - newLogEntry() - notifyRCFeeds() - save() - markPatrolled() - reallyMarkPatrolled() * The 'vform' HTMLForm display format has been deprecated. Use the 'codex' display format introduced in 1.41, or the 'ooui' format if you need form fields that are not supported by Codex yet. * The VFormHTMLForm class and the HTMLFormField::getVForm() method have been deprecated. * XmlSelect::setTagName() is deprecated, use the Html class instead. * CategoryViewer::getSubcategorySortChar() is deprecated, treat sortkey for sub-category the same as for others instead. * The SpecialWatchlistGetNonRevisionTypes hook has been deprecated and is no longer called. Instead, extensions should ensure that rc_this_oldid is set to zero on recent changes entries that do not relate to any particular revision. * Asking for a replica from groups except dump/vslow is now deprecated and emits deprecation warnings. * The UserIsBlockedGlobally hook has been hard deprecated and now emits deprecation warnings. The hook has been deprecated since 1.40. * SpecialUserRights::canProcessExpiries() has been deprecated and now emits deprecation warnings. It will no longer be possible to prevent the special page from allowing to set group expiration times. * SpecialUserRights::doSaveUserGroups() has been deprecated and now emits deprecation warnings. Instead, use UserGroupAssignmentService::saveChangesToUserGroups(). * SpecialUserRights::userCanChangeRights() has been deprecated and now emits deprecation warnings. Use UserGroupAssignmentService::canChangeUserGroups() instead. * SpecialUserRights::fetchUser() has been deprecated and now emits deprecation warnings. Use MultiFormatUserIdentityLookup::getUserIdentity() instead. * Using localized synonyms for double-underscore magic words that do not both start and end with a double underscore has been deprecated. In this release pages which use these synonyms are added to a tracking category; in a future release these synonyms will be disabled. (T407289) * WatchedItemQueryService::getWatchedItemsWithRecentChangeInfo() has been deprecated. Instead, use ChangesListQuery. * Classes supporting the legacy StatsD service have been deprecated. Usage of StatsLib (https://www.mediawiki.org/wiki/Manual:Stats) is recommended going forward. The deprecated classes are: - Wikimedia\Stats\BufferingStatsdDataFactory - Wikimedia\Stats\IBufferingStatsdDataFactory - Wikimedia\Stats\NullStatsdDataFactory - Wikimedia\Stats\StatsdAwareInterface * Passing a null ParserOptions to OutputTransformPipeline::run() has been deprecated and emits warnings. All callers which passed `null` should have been removed with the deprecation (in MW 1.44) and removal (in this release) of ParserOutput::getText(). === Other changes in 1.45 === * Reading parser cache content using native PHP serialization has been removed in this release. JSON serialization was been the default since 1.36, and the option to use native serialization was removed in 1.39. Upgrades from revision 1.38 and earlier with $wgParserCacheUseJson=false should either clear the parser cache, or upgrade to revision 1.36-1.44 with $wgParserCacheUseJson=true and wait until the parser cache expiration time ($wgParserCacheExpireTime) elapses before upgrading to this release. <https://www.mediawiki.org/wiki/Manual:Parser_cache/Serialization_compatibility>