diff options
author | Reedy <reedy@wikimedia.org> | 2023-06-30 18:19:06 +0100 |
---|---|---|
committer | Reedy <reedy@wikimedia.org> | 2023-06-30 18:11:42 +0000 |
commit | 8956a84e174315423803e6287bf638a93e2732b9 (patch) | |
tree | f287b2e1564acb98070aee97aa410974c9476514 /HISTORY | |
parent | 5a65632a137d61f000d90a3bbc93fd3cc8070f74 (diff) | |
download | mediawikicore-8956a84e174315423803e6287bf638a93e2732b9.tar.gz mediawikicore-8956a84e174315423803e6287bf638a93e2732b9.zip |
HISTORY: Integrate RELEASE-NOTES-1.41
Change-Id: Id4dc28e255cf141f3912afbda8ab07b045f23385
Diffstat (limited to 'HISTORY')
-rw-r--r-- | HISTORY | 647 |
1 files changed, 647 insertions, 0 deletions
@@ -1,5 +1,652 @@ Change notes from older releases. For current info, see RELEASE-NOTES-1.41. += MediaWiki 1.40 = + +== MediaWiki 1.40.0 == + +=== Changes since MediaWiki 1.40.0-rc.0 === +* Localisation updates. +* (T330464) Work around argument corruption bug in XMLReader::open. +* build: Updating mediawiki/mediawiki-phan-config to 0.12.1. +* Fix frame and frameless rdfa depending on file existing. +* (T329214) Pass whether current rev of file exists to + Linker::makeBrokenImageLinkObj. +* (T334659) Handle thumb errors when !$enableLegacyMediaDOM. +* A manualthumb that doesn't exist should be considered a thumb error. +* (T313157) IndexPager: Also protect against $offset being 0. +* (T335612, CVE-2023-36674) SECURITY: Move badFile lookup to Linker. + +== MediaWiki 1.40.0-rc.0 == + +== Upgrading notes for 1.40 == +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. + +Some specific notes for MediaWiki 1.40 upgrades are below: +* Maintenance scripts should now be executed using maintenance/run.php, e.g. + maintenance/run.php update not maintenance/update.php as before. +* Four extensions have now been bundled with MediaWiki: + * The Echo extension, which provides a system of user notifications. + * The Linter extension, which warns about use of deprecated wikitext. + * The LoginNotify extension, which warns users about failed attempted logins. + * The Thanks extension, which lets users thank editors for edits. +* The Renameuser extension has been moved to MediaWiki core. It is now possible + to rename users without installing an extension. The extension had already + been bundled with MediaWiki since 1.18. + +For notes on 1.39.x and older releases, see HISTORY. + +=== Configuration changes for system administrators in 1.40 === +* When computing PBKDF2 password hashes, MediaWiki now detects and uses OpenSSL + support if available, unless $wgPasswordConfig['pbkdf2']['class'] is set in + LocalSettings.php. OpenSSL is more efficient, so if that setting is present, + you should remove it (or set it to 'Pbkdf2PasswordUsingOpenSSL' if possible). + If users get an internal error when trying to log in, you can try setting it + to 'Pbkdf2PasswordUsingHashExtension'. In particular, this would be necessary + if existing PBKDF2 password hashes were computed using a hash algorithm other + than "sha512" or "sha256" (the current and prior defaults). +* You should configure your webserver to return the http header + 'X-Content-Type-Options: nosniff' for the /images directory. This will + instruct browsers to not apply content sniffing when accessing the files. + MediaWiki before 1.40 shipped with a content sniffer which disallowed + potentially dangerous files at upload time, but this protection has now been + removed in favor of this 'X-Content-Type-Options: nosniff' header and the + installer will return a warning when it is not in place. +* Support for MW_USE_LEGACY_DEFAULT_SETTINGS has been removed, setting this + constant will not have any effect. Use of MW_USE_LEGACY_DEFAULT_SETTINGS + had been deprecated since 1.39. + +==== New configuration ==== +* $wgThumbnailNamespaces - This setting lets you define the namespaces for which + image thumbnails (or a placeholder in the absence of a thumbnail) will be + displayed on Special:Search. +* $wgResourceLoaderClientPreferences – This experimental flag lets you enable + client-side preferences for logged-out users. +* $wgExternalLinksSchemaMigrationStage – This temporary flag lets you control + the migration stage for the new schema for the external links database table. + Ignore it unless you have a large wiki farm with complex migration needs. +* $wgCommentTempTableSchemaMigrationStage – This temporary flag lets you control + the migration stage for the temporary comment database table, from revision. + Ignore it unless you have a large wiki farm with complex migration needs. +* $wgSpecialContributeSkinsEnabled – This setting lets you list skins on which + Special:Contribute is available, for where others don't work for the feature. + +==== Changed configuration ==== +* $wgPasswordPolicies – This setting, which controls what makes for a valid + password for wiki accounts, has been adjusted to raise the minimal password + length from 1 to 8 characters. The initial limit of 1 has been in place since + MediaWiki 1.26. If you wish to allow shorter passwords, you can over-ride it + in your LocalSettings following the guidance on MediaWiki.org. +* (T254045) New accounts can no longer use an equals sign (=) in their + usernames because of issues it causes in wikitext syntax. This can be + adjusted by changing the value of $wgInvalidUsernameCharacters. +* (T314318) $wgParserEnableLegacyMediaDOM – This setting has been changed, so + the alternative modern HTML structure for media is now the default. You can + disable it for now by over-riding this back to `true` in LocalSettings, but + this configuration will be removed in future versions of MediaWiki. For more + details, see the documentation at: + https://www.mediawiki.org/wiki/Parsoid/Parser_Unification/Media_structure/FAQ +* $wgWatchlistExpiryMaxDuration – This setting, which controls the maximum + allowed duration for users to set their temporary watchlist entries for expiry + if that feature is enabled, has been increased from 6 months to 1 year. + +==== Removed configuration ==== +* $wgShellboxUrl – This setting, deprecated in 1.37, has now been removed; use + $wgShellboxUrls instead. +* $wgMainWANCache and $wgWANObjectCaches – These never-used settings have been + removed. To inject WANObjectCache parameters, use $wgWANObjectCache instead. + These variables were introduced for multi-DC wiki farms to add a separate + memcached proxy for cross-DC relaying of purges but never used because + WANObjectCache works based on route prefixes, which can be transparently + handled by the main memcached proxy. +* $wgParserTestFiles – This setting, deprecated in 1.30, has now been removed; + extensions can place their parser test files in `tests/parser` instead. +* (T231412) $wgAutoloadAttemptLowercase – This setting, deprecated in 1.35, no + longer has any effect. If you run into difficulties, fix the names of miscased + local files. +* (T309787) $wgVerifyMimeTypeIE – This setting, to provide extra security checks + for very old versions of Internet Explorer clients, was removed. These user + agents aren't used in practice, and haven't been served JavaScript content for + years. + +=== New user-facing features in 1.40 === +* Special:Search can now show thumbnails for results for titles outside NS_FILE. + This is controlled via the new onSearchResultProvideThumbnail hook. +* A new preference ('search-thumbnail-extra-namespaces') to allow users to + control whether to show more thumbnails (per $wgThumbnailNamespaces) +* (T324910) On pages using multi-content revisions, the raw content of a + specific slot can be retrieved using the action=raw&slot=<role-name> query + parameters. +* (T313804) The preferences page now provides a search bar to find preferences, + regardless of the tab on which they appear. + +=== New developer features in 1.40 === +* The MediaWiki-Docker development environment is now configured to + run on PHP 8.1 by default, up from PHP 7.4 now that that's EOL. +* Vue development mode is enabled by default in DevelopmentSettings.php +* (T277618) The @noVarDump annotation from the DebugInfoTrait tool can now be + added to references to stop them from being expanded when their object is + passed to var_dump(), to make its use for debugging more feasible. +* The ApiSandbox will now by default request responses in the latest API format, + rather than the original format. Users can set `formatversion` to a different + value if needed. +* A new hook, GetBlockErrorMessageKeyHook, allows extensions' block error + messages to be received and displayed by BlockErrorFormatter. +* A new hook, SpecialCreateAccountBenefits, lets extensions and local code set + custom content on the signup page about the benefits of using an account. +* (T321412) A new 'PageUndeleteComplete' hook has been added for more thorough + information about a page post restoration than the 'PageUndelete' hook passes. + This provides similar functionality to the 'PageDeleteComplete' hook. +* The Linker::specialLink() method can now link to a Special page's with a sub- + page or action parameter set, e.g. [[Special:Contributions/JohnDoe]]. +* The PHPUnit entrypoints (tests/phpunit/phpunit.php and vendor/bin/phpunit) + now check if composer dependencies are up-to-date, like update.php, using + CheckComposerLockUpToDate. To disable this check, use + MW_SKIP_EXTERNAL_DEPENDENCIES=1 environment flag when running PHPUnit. +* ManualLogEntry::setForceBotFlag() has been added to allow the forcing of the + bot flag for log entries which are inserted to the recent changes. + +=== External library changes in 1.40 === + +==== New external libraries ==== +* Added codex-design-tokens at v0.6.2. +* Added symfony/polyfill-php81 at v1.27.0. +* Added wikimedia/bcp-47-code at v1.0.0. + +===== New development-only external libraries ===== +* Added wikimedia/langconv at v0.4.2. + +==== Changed external libraries ==== +* Updated OOUI from v0.44.3 to v0.46.3. +* Updated codex, codex-search, and codex-icons from v0.2.2 to v0.6.2. +* Updated cssjanus/cssjanus from 2.1.0 to 2.1.1. +* Updated guzzlehttp/guzzle 7.4.5 to 7.5.0. +* Updated justinrainbow/json-schema from 5.2.11 to 5.2.12. +* Updated pear/mail from 1.4.1 to 1.5.0. +* Updated pear/net_smtp from 0.10.0 to 0.10.1. +* Updated psr/container from 1.1.1 to 1.1.2. +* Updated symfony/polyfill-php80 from 1.26.0 to 1.27.0. +* Updated symfony/yaml from 5.4.10 to 5.4.17. +* Updated wikimedia/less.php from 3.1.0 to 4.0.0. +* Updated wikimedia/object-factory from 4.0.0 to 5.0.1. +* Updated wikimedia/parsoid from 0.16.0 to 0.17.0. +* Updated wikimedia/remex-html from 3.0.2 to 3.0.3. +* Updated wikimedia/shellbox from 3.0.0 to 4.0.0. +* Updated wikimedia/timestamp from 4.0.0 to 4.1.0. +* Updated wikimedia/xmp-reader from 0.8.4 to 0.9.1. + +===== Changed development-only external libraries ===== +* Updated QUnit from 2.18.2 to 2.19.4. +* Updated api-testing from 1.5.0 to 1.5.1. +* Updated composer/spdx-licenses from 1.5.6 to 1.5.7. +* Updated eslint-config-wikimedia from 0.22.1 to 0.24.0. +* Updated giorgiosironi/eris from ^0.10.0 to ^0.13.0. +* Updated grunt from 1.5.2 to 1.6.1. +* Updated grunt-banana-checker from 0.9.0 to 0.10.0. +* Updated grunt-eslint from 24.0.0 to 24.0.1. +* Updated karma from 6.3.15 to 6.4.1. +* Updated mediawiki/mediawiki-codesniffer from 38.0.0 to 41.0.0. +* Updated mediawiki/mediawiki-phan-config from 0.11.1 to 0.12.1. +* Updated php-parallel-lint/php-console-highlighter from 0.5 to 1.0.0. +* Updated php-parallel-lint/php-parallel-lint from 1.3.1 to 1.3.2. +* Updated phpunit/phpunit from 8.5.28 to 9.5.28. +* Updated stylelint-config-wikimedia from 0.13.0 to 0.13.1. +* Updated wikimedia/alea from 0.9.3 to 1.0.0. + +==== Removed external libraries ==== +* jquery.throttle-debounce, deprecated since MediaWiki 1.33. +* WVUI, deprecated since MediaWiki 1.39. + +=== Action API changes in 1.40 === +* New `cancreateaccount` parameter on action=query&meta=userinfo that allows + you to check if the user can create an account. Some of the errors that have + previously been returned by action=query&list=users&usprop=cancreate are now + returned here. + +=== Languages updated in 1.40 === +MediaWiki supports over 400 languages. Many localisations are updated regularly. +Below only new and removed languages are listed, as well as changes to languages +because of Phabricator reports. + +* (T300378) Added language support for Toki Pona (tok). +* (T320465) Added language support for Magahi (mag). +* (T320912) Added language support for Arakanese (rki). +* (T323971) Added language support for Khakas (kjh). +* (T326526) Added language support for Igala (igl). +* (T329476) Added language support for Kusaal (kus). +* (T330266) Added language support for Southern Dagaare (dga). +* (T331596) Added language support for Obolo (ann). +* (T331597) Added language support for Nogai (nog). +* (T331599) Added language support for Wolaytta (wal). +* (T295637) Add no to fallback chain of nb and nn. + +=== Breaking changes in 1.40 === +* OutputPage::enableClientCache no longer accepts a parameter, nor does it + return the current value. It simply sets the OutputPage::mEnableClientCache + to true. Use OutputPage::disableClientCache to disable client side caching + instead. +* ResourceLoader::makeMessageSetScript, unused since 1.26, has been removed + without deprecation. +* Changes to skins: + - The internal protected method Skin::getFooterLinks() was removed. + It had no known usages. Different from SkinTemplate::getFooterLinks. + - The internal public method Skin::getSiteFooterLinks() was removed. + It had no known usages. +* The 'oojs-router' module has been removed without deprecation in favour + of the 'mediawiki.router' wrapper module. +* BagOStuff::makeKeyInternal(), deprecated for public use in 1.36, is now a + protected method of MediumSpecificBagOStuff. +* WANObjectCache::reap() and WANObjectCache::reapCheckKey(), deprecated since + 1.39, have been removed. +* The EnqueueJob class, unused since 1.31, has been removed without + deprecation. +* JobQueueGroup::singleton() and ::destroySingletons(), deprecated since 1.37, + have been removed. +* JobRunner no longer supports manually calling the constructor, + use MediaWikiServices::getInstance()->getJobRunner() instead. +* JobRunner::setLogger, deprecated since 1.35, has been removed. +* ContextSource::getStats, deprecated since 1.27, has been removed. +* The following public properties of Parser, deprecated in 1.35, + have been made private: Parser::$mLinkId, Parser::$mIncludeSizes, + Parser::$mDoubleUnderscore, Parser::$mShowToc, Parser::$mRevisionId, + Parser::$mRevisionTimestamp, Parser::$mRevisionUser, Parser::$mRevisionSize, + Parser::$mInputSize, Parser::$mInParse, Parser::$mFirstCall, + Parser::$mGeneratedPPNodeCount +* The MWGrants class, deprecated since 1.38, has been removed. +* PageProps::getInstance(), deprecated since 1.38, has been removed. +* Global functions wfReadOnly and wfReadOnlyReason, deprecated since 1.38, have + been removed. +* Global function wfQueriesMustScale, deprecated since 1.39, has been removed. +* Global function wfLogProfilingData, deprecated since 1.38, has been removed. +* The HTMLCacheUpdate class, deprecated since 1.34, has been removed. +* Linker::normaliseSpecialPage(), deprecated since 1.35, has been removed. +* MWTimestamp::getHumanTimestamp(), deprecated since 1.26, has been removed. +* Collation::singleton() and ::factory(), deprecated since 1.37, have been + removed. +* SpecialVersion::listToText() and SpecialVersion::arrayToString() + have become private or internal without deprecation. +* The 'ParserTestFiles' key in the schema for extension.json has been removed. + This was deprecated in 1.30 and the corresponding $wgParserTestFiles + configuration variable has also been removed in this release. Extensions + can put parser test files in their `tests/parser` directory to have them + automatically run. +* DBLockManager, MySqlLockManager, and PostgreSqlLockManager have been + removed without deprecation. +* MediaWikiTestCaseTrait::checkPHPExtension() has been removed without + deprecation. Use PHPUnit @requires annotations instead. +* EditPage::getCopywarn(), deprecated since 1.38, has been removed. +* EditPage::getCopyrightWarning() now requires a MessageLocalizer parameter. + Use of other parameter types or omitting it was deprecated since 1.38. +* Action constructor now requires Article and IContextSource parameters. + Use of other parameter types or omitting them was deprecated since 1.35. +* Article::viewRedirect(), deprecated since 1.30, has been removed. +* Title::getNotificationTimestamp(), deprecated since 1.35, has been removed. +* WikiRevision::$fileIsTemp property, deprecated since 1.29, has been removed. +* Use of CommentStore::insertWithTempTable() with 'img_description' is no + longer supported, it was deprecated since 1.32. Use CommentStore::insert() + instead. +* Return values in the parameter $pageLang of the PageContentLanguage hook with + other types than a Language object, deprecated since 1.33 & emitting warnings + since 1.38, now throws an exception. +* FormatMetadata::flattenArrayContentLang(), deprecated since 1.36, has been + removed. +* WikiRevision::downloadSource() and ::importUpload(), deprecated since 1.31, + have been removed. +* DataUpdate::runUpdates(), deprecated since 1.28, has been removed. +* CdnCacheUpdate::newFromTitles(), deprecated since 1.35, has been removed. +* HtmlFileCacheUpdate::newFromTitles(), deprecated since 1.37, has been + removed. +* BaseTemplate::renderAfterPortlet() and ::getAfterPortlet(), has been removed. + Use the corresponding methods in Skin class. +* DifferenceEngine::textDiff(), deprecated since 1.32, has been removed. +* Skin::getSearchPageTitle() and Skin::setSearchPageTitle(), deprecated since + 1.38, have been removed. +* DifferenceEngine::getDiffBodyCacheKey(), deprecated since 1.31, has been + removed. +* ForeignDBViaLBRepo::getMasterDB(), LocalRepo::getMasterDB(), and + JobQueueDB::getMasterDB(), deprecated since 1.37, have been removed. +* Clarified that the InitializeArticleMaybeRedirect hook should not change + its $article parameter; the behavior when doing so was previously + undocumented. +* IDatabase::ping()'s $rtt parameter was removed without deprecation. +* IDatabase::setBigSelects(), unused, was removed without deprecation. +* IDatabase::attributesFromType(), unused, was removed without deprecation. +* IMaintainableDatabase::deadlockLoop() was removed without deprecation. +* DatabasePostgres::remappedTableName(), deprecated since 1.37, has been + removed. +* ILBFactory::getChronologyProtectorClientId and ::commitAll, unused, were + removed without deprecation. +* LoadBalancer::haveIndex() and ::isNonZeroLoad(), deprecated in 1.34, + have been removed. +* LoadBalancer::getLazyConnectionRef(), deprecated in 1.38, has been removed. +* ILBFactory::forEachLB(), deprecated in 1.39, has been removed. +* LoadBalancer::getTransactionRoundStage and ::commitAll, unused, were + removed without deprecation. +* ILoadBalancer::getLaggedReplicaMode, unused, was removed without + deprecation. Use ILBFactory::laggedReplicaUsed() instead. +* Optional parameters of ILoadBalancer::waitForPrimaryPos(), $pos and $timeout + have been removed without deprecation as they are unused. +* LoadMonitorMysql was removed without deprecation. Use LoadMonitor instead. +* IDatabase::selectDB(), deprecated since 1.32, has been removed. + Use IDatabase::selectDomain() instead. +* The following deprecated hooks have been removed: + - BaseTemplateAfterPortlet, deprecated in 1.35 + - BeforeParserFetchTemplateAndtitle, deprecated in 1.36 + - BeforeParserrenderImageGallery, deprecated in 1.35 + - InternalParseBeforeSanitize, deprecated in 1.35 + - LinksUpdateConstructed, deprecated in 1.38 + - LinksUpdateAfterInsert, deprecated in 1.38 + - ParserSectionCreate, deprecated in 1.35 + - ResourceLoaderTestModules, deprecated in 1.33 + - SpecialMuteSubmit, deprecated in 1.35 + - UserLoadFromDatabase, deprecated in 1.37 + - UserSetCookies, deprecated in 1.27 +* RemexDriver::__construct() now only accepts a ServiceOptions instance as + the only argument. Passing an array was deprecated since 1.36. +* TidyDriverBase::supportsValidate(), deprecated since 1.36, has been removed. +* RevDelList::reloadFromMaster(), deprecated since 1.37, has been removed. +* ExternalStoreDB::getMaster(), deprecated since 1.37, has been removed. +* DeletePage::deletionWasScheduled(), deprecated since 1.38, has been removed. +* The SearchResultProvideThumbnailHook (which was unstable) and now no longer + used, has been removed. Use SearchResultProvideThumbnailHook in the search + namespace: MediaWiki\Search\Hook\SearchResultProvideThumbnailHook. +* Command::cgroup(), deprecated since 1.36, has been removed. +* When running tests, the serialize_precision INI setting is now set to -1 + (current PHP default) instead of 17. Extension tests may need to be adjusted + accordingly; string representations of floating-point numbers in serialized + or JSON-encoded data may change. +* WikiRevision::$sha1base36 is now private. +* IcuCollation::getUnicodeVersionForICU() was removed without deprecation. +* LinkFilter::supportsIDN() was removed without deprecation. +* The ability to pass null for the errorData parameter of HttpException and + LocalizedHttpException was removed without deprecation. +* ApiQueryExtLinksUsage::getProtocolPrefix() and ::prepareProtocols() have + been moved to LinkFilter with the same name. +* .box-sizing() Less mixin, deprecated since 1.37, has been removed. + Use CSS box-sizing now. +* MimeAnalyzer::getIEMimeTypes() and IEContentAnalyzer were removed. +* Language::commafy and mw.language.commafy, deprecated since 1.36, has been + removed. +* BagOStuff::decr(), deprecated since 1.28, has been removed. +* BagOStuff::incr(), deprecated since 1.28, has been removed. + +=== Deprecations in 1.40 === +* Changes to skins: + - The public Skin::footerLink is deprecated. + Use SkinComponentMenuLink::getTemplateData instead. + It now emits deprecation warnings. + - The protected Skin::lastModified is deprecated, and marked for @internal use + and now emits deprecation warnings. +* Manipulating $wgHooks after initialization is deprecated. + HookContainer::register() or HookContainer::scopedRegister() should be + used instead. During initialization, SettingsBuilder::registerHookHandlers + can be used. For backwards compatibility, $wgHooks is replaced by a fake + array that calls methods on HookContainer. $wgHooks can still be used as a + configuration variable, only dynamic manipulation is deprecated. +* ParserOptions::{get,set}ExternalLinkTarget() and + ParserOptions::{get,set}MaxTemplateDepth() have been deprecated and marked + for @internal use only. +* ParserOutput::getCategories() has been deprecated; use ::getCategoryNames() + and ::getCategorySortKey() instead. +* ParserOutput::{get,set}TOCHTML() has been deprecated; use + ::{get,set}TOCData() instead. +* TransactionProfiler::setSilenced() is deprecated. + Use TransactionProfiler::silenceForScope() instead. +* The following methods in the Title class, deprecated since 1.37, emits + deprecations warnings: + - ::areCascadeProtectionSourcesLoaded() + - ::areRestrictionsCascading() + - ::areRestrictionsLoaded() + - ::getAllRestrictions() + - ::getCascadeProtectionSources() + - ::getFilteredRestrictionTypes() + - ::getRestrictionExpiry() + - ::getRestrictionTypes() + - ::getRestrictions() + - ::isCascadeProtected() + - ::isProtected() + - ::isSemiProtected() + - ::loadRestrictionsFromRows() +* The class Pbkdf2Password was renamed to Pbkdf2PasswordUsingHashExtension, + and the old name is now deprecated. +* WikiPage::factory(), ::newFromID() and ::newFromRow, deprecated in 1.36, now + emit deprecation warnings. +* Manually constructing a LinkBatch object, deprecated in 1.35, now emits + deprecation warnings. Use LinkBatchFactory instead. +* Calling MediaWikiSite::getFileUrl() without a $path argument is deprecated. + If you need the "generic" full file path, with $1 not replaced by anything, + call $site->getPath( MediaWikiSite::PATH_FILE ) directly. +* In SessionConsistentConnectionManager, the methods + getReadConnectionRef() and getWriteConnectionRef() are deprecated; + the ConnectionManager methods they override had been deprecated already. +* Database::wasErrorReissuable() is deprecated. +* MimeAnalyzer::isPHPImageType was not used and will now emit deprecation + warnings. +* GenericArrayObject, originally developed for Wikibase and SiteList, has been + deprecated. Use built-in ArrayObject directly instead. +* Parser::getFunctionLang() has been deprecated; use + Parser::getTargetLanguage() instead. +* MagicWordArray::getVariableRegex(), deprecated in 1.36, now emits deprecation + warnings. +* AbstractBlock::getId() now emits deprecation warnings in case of cross-wiki + access. This use was deprecated in 1.38. +* CommentStore::getStore, deprecated in 1.31, now emits deprecation warnings. +* BacklinkCache::get(), ::getLinks() and ::getCascadeProtectedLinks(), + deprecated in 1.37, now emit deprecation warnings. +* LanguageConverterFactory::isTitleConversionDisabled(), deprecated in 1.36, + now emits deprecation warnings. +* Language::getFileName(), ::getMessagesFileName() and + ::getJsonMessagesFileName(), deprecated in 1.34, + now emit deprecation warnings. +* Language::getLocalisationCache(), deprecated in 1.34, also + Language::getMessagesFor(), ::getMessageFor() and ::getMessageKeysFor(), + deprecated in 1.35, now emit deprecation warnings. +* User::incEditCount(), deprecated in 1.37, now emits deprecation warnings. +* User::idFromName(), deprecated in 1.37, now emits deprecation warnings. +* The ability to override and use User::$mRights, deprecated in 1.34, now emits + deprecation warnings. +* IndexPager::getHookContainer is deprecated and emits deprecation warnings. + Inject a HookContainer instead. +* User::getGroupPermissions(), ::getGroupsWithPermission() and + ::groupHasPermission(), deprecated in 1.34, now emit deprecation warnings. +* PermissionManager::getGroupPermissions(), ::getGroupsWithPermission() and + ::groupHasPermission(), deprecated in 1.36, now emit deprecation warnings. +* Global function wfShowingResults is deprecated and emits deprecation warnings. +* UserGroupMembership::getGroupMemberName is deprecated, the deprecation of + UserGroupMembership::getGroupName in 1.38 missed a release note. + Use Language::getGroupMemberName or ::getGroupName instead. +* AbstractBlock::getPermissionsError(), deprecated in 1.35, now emits + deprecation warnings. +* SearchEngine::getNearMatcher() and ::getDefaultMatcher() have been deprecated + in favor of MediaWikiServices::getInstance()->getTitleMatcher(). +* SearchNearMatcher class has been deprecated in 1.40 in favor of TitleMatcher. +* The following functions are deprecated: User::isBlockedGlobally and + User::getGlobalBlock. Use User::getBlock instead. +* The UserIsBlockedGlobally hook is deprecated. + Use GetUserBlock hook instead. +* The SystemBlock type global-block is deprecated. + GlobalBlocks are now added into CompositeBlocks via the GetUserBlock hook. +* Language::isWellFormedLanguageTag(), deprecated in 1.39, now emits deprecation + notices. Please use LanguageCode::isWellFormedLanguageTag() instead. +* Language::fetchLanguageNames() and ::fetchLanguageName(), deprecated in 1.34, + now emit deprecation warnings. +* Language::getFallbackFor(), ::getFallbacksIncludingSiteLanguage() and + ::getFallbacksFor(), deprecated in 1.35, now emit deprecation warnings. +* Language::isSupportedLanguage(), ::isValidCode(), ::isValidBuiltInCode() and + ::isKnownLanguageTag(), deprecated in 1.34, now emit deprecation warnings. +* Language::getConverter(), ::autoConvert(), ::autoConvertToAllVariants(), + ::convert(), ::convertNamespace(), ::convertHtml(), ::convertCategoryKey(), + ::getVariants(), ::hasVariants(), ::hasVariant(), ::getDefaultVariant(), + ::getURLVariant(), ::getExtraHashOptions(), ::getConvRuleTitle(), + deprecated in 1.35, now emit deprecation warnings. +* Language::factory() and ::getParentLanguage(), deprecated in 1.35, now emit + deprecation warnings. +* Executing maintenance scripts directly is deprecated. The maintenance/run.php + entry point should be used instead. +* MWHttpRequest::factory, deprecated in 1.34, now emits deprecation warnings. +* Job::factory is deprecated, use JobFactory::newJob instead. +* Http::request(), ::get(), ::post(), ::userAgent() and ::isValidURI(), + deprecated in 1.34, now emit deprecation warnings. +* Title.js's confusingly-named getName() and getNameText() methods, for using + media files' pages, have been renamed to getFileNameWithoutExtension() and + getFileNameTextWithoutExtension() respectively. The old names are deprecated. +* Command::whitelistPaths() should now emit deprecation warnings. Make use of + Command::allowPaths/disallowPaths() instead. +* When manually creating an HTMLFormField (i.e. not via HTMLForm::factory), + it is deprecated to not include the "parent" field as one of the parameters. +* The MWException class is deprecated. Use native exceptions, either directly + or as base classes. +* SelectQueryBuilder::lockForUpdate() is deprecated. Use ::forUpdate() with + ::fetchRowCount() or ::acquireRowLocks() instead. +* ArticleUndelete hook is deprecated. Use PageUndeleteComplete hook instead. +* The global function wfReportTime() is now deprecated. +* PrevNextNavigationRenderer, deprecated in 1.39, now emits deprecation + warnings. +* PagerNavigationBuilder::setMakeLinkCallback(), deprecated in 1.39, now emits + deprecation warnings. +* IndexPager::getPagingLinks(), IndexPager::getLimitLinks() and + IndexPager::buildPrevNextNavigation(), deprecated in 1.39, now emit + deprecation warnings. +* Overriding the method IndexPager::makeLink(), deprecated in 1.39, now emits + deprecation warnings. +* The following class names were namespaced (and, for the special pages, + also renamed), and the old class names are now deprecated: + - MostimagesPage -> MediaWiki\Specials\SpecialMostImages + - MovePageForm -> MediaWiki\Specials\SpecialMovePage + - UserrightsPage -> MediaWiki\Specials\SpecialUserRights + - WantedFilesPage -> MediaWiki\Specials\SpecialWantedFiles + - WantedPagesPage -> MediaWiki\Specials\SpecialWantedPages + - DerivativeRequest -> MediaWiki\Request\DerivativeRequest + - FauxRequest -> MediaWiki\Request\FauxRequest + - FauxRequestUpload -> MediaWiki\Request\FauxRequestUpload + - PathRouter -> MediaWiki\Request\PathRouter + - WebRequestUpload -> MediaWiki\Request\WebRequestUpload + - HeaderCallback -> MediaWiki\Request\HeaderCallback + - FauxResponse -> MediaWiki\Request\FauxResponse + - WebResponse -> MediaWiki\Request\WebResponse + - ForeignResourceManager -> + MediaWiki\ResourceLoader\ForeignResourceManager + - DummyLinker -> MediaWiki\Linker\DummyLinker + - Linker -> MediaWiki\Linker\Linker + - PageProps -> MediaWiki\Page\PageProps + - MagicWord -> MediaWiki\Parser\MagicWord + - MagicWordArray -> MediaWiki\Parser\MagicWordArray + - MagicWordFactory -> MediaWiki\Parser\MagicWordFactory + - RawMessage -> MediaWiki\Language\RawMessage + - ActorMigration -> MediaWiki\User\ActorMigration + - ActorMigrationBase -> MediaWiki\User\ActorMigrationBase + - CategoriesRdf -> MediaWiki\Category\CategoriesRdf + - Category -> MediaWiki\Category\Category + - CategoryViewer -> MediaWiki\Category\CategoryViewer + - TrackingCategories -> MediaWiki\Category\TrackingCategories + - EditPage -> MediaWiki\EditPage\EditPage + - TemplatesOnThisPageFormatter -> + MediaWiki\EditPage\TemplatesOnThisPageFormatter + - ContentSecurityPolicy -> MediaWiki\Request\ContentSecurityPolicy + - FormOptions -> MediaWiki\Html\FormOptions + - Html -> MediaWiki\Html\Html + - HtmlHelper -> MediaWiki\Html\HtmlHelper + - TemplateParser -> MediaWiki\Html\TemplateParser + - FormOptions -> MediaWiki\Html\FormOptions + - WikiMap -> MediaWiki\WikiMap\WikiMap + - WikiReference -> MediaWiki\WikiMap\WikiReference + - MediaWiki\BadFileLookup -> MediaWiki\Page\File\BadFileLookup + - FileDeleteForm -> MediaWiki\Page\File\FileDeleteForm + - MergeHistory -> MediaWiki\Page\MergeHistory + - MovePage -> MediaWiki\Page\MovePage + - ProtectionForm -> MediaWiki\Page\ProtectionForm + - LinkFilter -> MediaWiki\ExternalLinks\LinkFilter + - TitleArray -> MediaWiki\Title\TitleArray + - TitleArrayFromResult -> MediaWiki\Title\TitleArrayFromResult + - TitleFactory -> MediaWiki\Title\TitleFactory + - Title -> MediaWiki\Title\Title + - ForkController -> MediaWiki\Maintenance\ForkController + - OrderedStreamingForkController -> + MediaWiki\Maintenance\OrderedStreamingForkController + - AtomFeed -> MediaWiki\Feed\AtomFeed + - ChannelFeed -> MediaWiki\Feed\ChannelFeed + - FeedItem -> MediaWiki\Feed\FeedItem + - FeedUtils -> MediaWiki\Feed\FeedUtils + - RSSFeed -> MediaWiki\Feed\RSSFeed + - DeprecatedGlobal -> MediaWiki\StubObject\DeprecatedGlobal + - StubGlobalUser -> MediaWiki\StubObject\StubGlobalUser + - StubObject -> MediaWiki\StubObject\StubObject + - StubUserLang -> MediaWiki\StubObject\StubUserLang +* ContentHandler::getParserOutputForIndexing() and ::getDataForSearchIndex() + now take an optional RevisionRecord parameter. +* The SearchDataForIndex hook is deprecated in favor of SearchDataForIndex2 +* IDatabase::lastQuery and IReadableDatabase::lastQuery are deprecated without + without replacement. + +=== Other changes in 1.40 === +* Calling RecentChange::doMarkPatrolled() with $auto = true has no effect and + logs a warning. Since 1.31, it would mark the change as manually patrolled, + but would not log it as such in patrol log and would still require + 'autopatrol' right (not 'patrol'). Generally, whether a change should become + autopatrolled, is usually determined before it's inserted in the database. +* In versions of MediaWiki before 1.39, the table of contents location + was marked internally with <mw:toc>...</mw:toc>; in version 1.39 + this was changed to an empty tag <mw:tocplace />. In 1.40 this has + been changed a final time to use an empty <meta> tag for future + Parsoid compatibility (see Parser::TOC_PLACEHOLDER). This may + affect you if stale content is left in the ParserCache or if your + skin did manual ToC replacement without using the recommended + Parser::replaceTableOfContentsMarker() function. +* Skins can now choose which Codex theme should be loaded by setting the + SkinCodexThemes attribute in their skin.json file. +* The parser test framework has been updated, and the 'pst', 'ill', 'cat' + and 'showflags' options have slight differences in their output. These + options are not much used outside core, but third parties may need to + update parser tests. +* (T332889, CVE-2023-36675) SECURITY: Fix escaping in BlockLogFormatter. + +== Compatibility == + +MediaWiki 1.40 requires PHP 7.4.3 or later and the following PHP extensions: + +* ctype +* dom +* fileinfo +* iconv +* intl +* json +* mbstring +* xml + +MariaDB is the recommended database software. MySQL, PostgreSQL, or SQLite can +be used instead, but support for them is somewhat less mature. + +The supported versions are: + +* MariaDB 10.3 or higher +* MySQL 5.7.0 or higher +* PostgreSQL 10 or later +* SQLite 3.8.0 or later + +== Online documentation == +Documentation for both end-users and site administrators is available on +MediaWiki.org, and is covered under the GNU Free Documentation License (except +for pages that explicitly state that their contents are in the public domain): + + https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation + +== Mailing list == +A mailing list is available for MediaWiki user support and discussion: + + https://lists.wikimedia.org/mailman/listinfo/mediawiki-l + +A low-traffic announcements-only list is also available: + + https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce + +It's highly recommended that you sign up for one of these lists if you're +going to run a public MediaWiki, so you can be notified of security fixes. + +== IRC help == +There's usually someone online in #mediawiki on irc.libera.chat. + = MediaWiki 1.39 = == MediaWiki 1.39.4 == |