For notes on 1.33.x and older releases, see HISTORY.
=== Configuration changes for system administrators in 1.34 ===
+
==== New configuration ====
-* …
+* $wgAllowExternalReqID (T201409) - This configuration setting controls whether
+ Mediawiki accepts the request ID set by the incoming request via the
+ `X-Request-Id` header. If set to `true`, that value will be used throughout
+ the code as the request identificator. Otherwise, the sent header will be
+ ignored and the request ID will either be taken from Apache's mod_unique
+ module or will be generated by Mediawiki itself (depending on the set-up).
==== Changed configuration ====
* …
* …
=== New developer features in 1.34 ===
-* …
+* Language::formatTimePeriod now supports the new 'avoidhours' option to output
+ strings like "5 days ago" instead of "5 days 13 hours ago".
=== External library changes in 1.34 ===
+
==== New external libraries ====
* …
==== Changed external libraries ====
* Updated Mustache from 1.0.0 to v3.0.1.
* Updated OOUI from v0.31.3 to v0.31.5.
+* Updated composer/semver from 1.4.2 to 1.5.0.
+* Updated composer/spdx-licenses from 1.4.0 to 1.5.1 (dev-only).
+* Updated mediawiki/codesniffer from 25.0.0 to 26.0.0 (dev-only).
+* Updated cssjanus/cssjanus from 1.2.1 to 1.3.0.
+* Updated wikimedia/at-ease from 1.2.0 to 2.0.0.
* …
==== Removed external libraries ====
+* The jquery.async module, deprecated in 1.33, was removed.
* …
=== Bug fixes in 1.34 ===
-* …
+* (T222529) If a log entry or page revision is recorded in the database with an
+ empty username, attempting to display it will log an error and return a "no
+ username available" to the user instead of silently displaying nothing or
+ invalid links.
=== Action API changes in 1.34 ===
* The 'recenteditcount' response property from action=query list=allusers,
* (T152908) Added language support for N'Ko (nqo).
=== Breaking changes in 1.34 ===
+* The global functions wfSuppressWarnings and wfRestoreWarnings, deprecated in
+ 1.26, have been removed. Use Wikimedia\AtEase\AtEase::suppressWarnings() and
+ Wikimedia\AtEase\AtEase::restoreWarnings() directly.
* Preferences class, deprecated in 1.31, has been removed.
* The following parts of code, deprecated in 1.32, were removed in favor of
built-in PHP functions:
* User::randomPassword() method, deprecated in 1.27, have been removed.
* MWNamespace::canTalk(), deprecated in 1.30, have been removed.
* Parser class property $mUniqPrefix, deprecated in 1.26, has been removed.
+* wfArrayFilter() and wfArrayFilterByKey(), deprecated in 1.32, have been
+ removed.
+* wfMakeUrlIndexes() function, deprecated in 1.33, have been removed.
+* Method signatures in WatchedItemQueryServiceExtension have changed from taking
+ User objects to taking UserIdentity objects. Extensions implementing this
+ interface need to be changed accordingly.
+* User::getGroupPage() and ::makeGroupLinkHTML(), deprecated in 1.29, have been
+ removed. Use UserGroupMembership::getGroupPage and ::getLink instead.
+* User::makeGroupLinkWiki(), deprecated in 1.29, has been removed. Use
+ UserGroupMembership::getLink() instead.
+* SavepointPostgres, deprecated in 1.31, has been removed.
+* Output::sectionEditLinksEnabled(), ParserOutput::getEditSectionTokens,
+ ::getTOCEnabled, ::setEditSectionTokens, ::setTOCEnabled, deprecated in 1.31,
+ have been removed.
+* EditPage::safeUnicodeInput() and ::safeUnicodeOutput(), deprecated in 1.30,
+ have been removed.
+* Four methods in OutputPage, deprecated in 1.32, have been removed. You should
+ use OutputPage::showFatalError or throw a FatalError instead. The methods are
+ ::showFileCopyError(), ::showFileRenameError(), ::showFileDeleteError(), and
+ ::showFileNotFoundError().
+* ApiBase::truncateArray(), deprecated in 1.32, has been removed.
+* IcuCollation::getICUVersion(), deprecated in 1.32, has been removed. Use PHP's
+ INTL_ICU_VERSION constant directly.
+* HTMLForm::setSubmitProgressive(), deprecated in 1.32, has been removed.
+* ResourceLoaderStartUpModules::getStartupModules() and ::getLegacyModules(),
+ both deprecated in 1.32, have been removed.
+* BaseTemplate::msgHtml() and QuickTemplate::msgHtml(), deprecated in 1.32, have
+ been removed. Use ->msg() or ->getMsg() instead.
+* WatchAction::getUnwatchToken(), deprecated in 1.32, has been removed. Instead,
+ use WatchAction::getWatchToken() with action 'unwatch' directly.
+* Language::initEncoding(), ::recodeForEdit(), and recodeInput(), deprecated in
+ 1.28, have been removed.
+* PageArchive::getTextFromRow(), ::listAllPages(), and ::getLastRevisionText(),
+ deprecated in 1.32, have been removed.
+* OutputPage::getModuleScripts(), ParserOutput::getModuleScripts(), deprecated
+ in 1.33, have been removed.
+* User::getPasswordValidity(), deprecated in 1.33, has been removed.
+* ApiQueryBase::prepareUrlQuerySearchString(), deprecated in 1.33, has been
+ removed.
+* ChangeTags::purgeTagUsageCache(), deprecated in 1.33, has been removed.
+* JobQueueGroup::pushLazyJobs(), deprecated in 1.33, has been removed.
+* MediaWikiTestCase::stashMwGlobals(), deprecated in 1.32, has been removed.
+* SearchEngine::transformSearchTerm(), deprecated in 1.32, has been removed.
+* The Block typehint only refers to blocks stored in the database. It should be
+ updated to AbstractBlock in cases where any type of block could be expected.
+* FileRepoStatus, deprecated in 1.25, has been removed.
+* The LegacyHookPreAuthenticationProvider class, deprecated since its creation
+ in 1.27, has been removed.
+* IP::isValidBlock(), deprecated in 1.30, has been removed.
* …
=== Deprecations in 1.34 ===
-* The MWNamespace class is deprecated. Use MediaWikiServices::getNamespaceInfo.
+* The MWNamespace class is deprecated. Use NamespaceInfo.
* ExtensionRegistry->load() is deprecated, as it breaks dependency checking.
Instead, use ->queue().
-* …
+* User::isBlocked() is deprecated since it does not tell you if the user is
+ blocked from editing a particular page. Use User::getBlock() or
+ PermissionManager::isBlockedFrom() or PermissionManager::userCan() instead.
+* User::isLocallyBlockedProxy and User::inDnsBlacklist are deprecated and moved
+ to the BlockManager as private helper methods.
+* User::isDnsBlacklisted is deprecated. Use BlockManager::isDnsBlacklisted
+ instead.
+* The Config argument to ChangesListSpecialPage::checkStructuredFilterUiEnabled
+ is deprecated. Pass only the User argument.
+* WatchedItem::getUser is deprecated. Use getUserIdentity.
+* Passing a Title as the first parameter to the getTimestampById method of
+ RevisionStore is deprecated. Omit it, passing only the remaining parameters.
+* Title::getPreviousRevisionId and Title::getNextRevisionId are deprecated. Use
+ RevisionLookup::getPreviousRevision and RevisionLookup::getNextRevision.
+* The Title parameter to RevisionLookup::getPreviousRevision and
+ RevisionLookup::getNextRevision is deprecated and should be omitted.
+* MWHttpRequest::factory is deprecated. Use HttpRequestFactory.
+* The Http class is deprecated. For the request, get, and post methods, use
+ HttpRequestFactory. For isValidURI, use MWHttpRequest::isValidURI. For
+ getProxy, use (string)$wgHTTPProxy. For createMultiClient, construct a
+ MultiHttpClient directly.
+* Http::$httpEngine is deprecated and has no replacement. The default 'guzzle'
+ engine will eventually be made the only engine for HTTP requests.
+* RepoGroup::singleton(), RepoGroup::destroySingleton(),
+ RepoGroup::setSingleton(), wfFindFile(), and wfLocalFile() are all
+ deprecated. Use MediaWikiServices instead.
+* The getSubjectPage, getTalkPage, and getOtherPage of Title are deprecated.
+ Use NamespaceInfo's getSubjectPage, getTalkPage, and getAssociatedPage.
+* MWMessagePack class, no longer used, has been deprecated in 1.34.
+* The Block class is separated into Block (for blocks stored in the database),
+ and SystemBlock (for temporary blocks created by the system). SystemBlock
+ should be used when creating any temporary blocks.
=== Other changes in 1.34 ===
* …