aboutsummaryrefslogtreecommitdiffstats
path: root/HISTORY
diff options
context:
space:
mode:
authorJames D. Forrester <jforrester@wikimedia.org>2021-05-24 17:27:34 -0700
committerReedy <reedy@wikimedia.org>2021-05-28 00:25:13 +0000
commit358340e7a6b8a8a7f75a9b717be8d9d015152f9d (patch)
treef0415de55cb6d7f2733fca0184ea8f4366e3cf36 /HISTORY
parent1ee6279cf7f4ceb63353da18e04ad16436a7d7f7 (diff)
downloadmediawikicore-358340e7a6b8a8a7f75a9b717be8d9d015152f9d.tar.gz
mediawikicore-358340e7a6b8a8a7f75a9b717be8d9d015152f9d.zip
Archive RELEASE-NOTES-1.36, now that 1.36.0 is out
Bug: T279455 Depends-On: I2de76c799f199ba9e65b443e7fdeb0e57e501556 Change-Id: Ia0796b50ceb88a3b378722310e1acb7dff13d8ab
Diffstat (limited to 'HISTORY')
-rw-r--r--HISTORY866
1 files changed, 866 insertions, 0 deletions
diff --git a/HISTORY b/HISTORY
index 1e535fd86797..5cacd1e00256 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,5 +1,871 @@
Change notes from older releases. For current info, see RELEASE-NOTES-1.37.
+= MediaWiki 1.36 =
+
+== MediaWiki 1.36.0 ==
+
+=== Changes since MediaWiki 1.36.0-rc.0 ===
+* (T248481) rdbms: Use server time in
+ DatabaseMysqlBase::getLagFromPtHeartbeat().
+* (T281549) WebInstaller: Don't show the announce-l subscribe checkbox for now.
+* (T264214) Follow-ups for UserGroupManager.
+* (T282280) resourceloader: Fix path-only URLs in wiki modules when script path
+ is docroot.
+* (T281972) UserIdentityValue: Introduce convenience static factory methods.
+* (T230428) Make page_is_redirect and page_is_new unsigned.
+* (T280292) Legacy feature should not load thumbnail style rules (only layout).
+* (T283247) Freenode -> Libera per wikimedia moving from freenode to libera.
+* (T280270) composer: Lock Parsoid version to specific 0.13.0 release.
+* (T142663) Add extension.json merge strategy "provide_default".
+* (T283540) HookContainer: Fix normalization of callback for static handler.
+* (T283464) registration: Fix array order for array_replace_recursive merge
+ strategy.
+* (T283539) Interwiki: Fix calling "onInterwikiLoadPrefix" hook.
+* (T282594) Timeless: Re-branch to 40eb3dad1for REL1_36.
+
+== MediaWiki 1.36.0-rc.0 ==
+
+== Upgrading notes for 1.36 ==
+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.27.
+
+Some specific notes for MediaWiki 1.36 upgrades are below:
+* MediaWiki 1.36 now requires the PHP internationalization extension (commonly
+ referred to as Intl, ext-intl, or php-intl).
+* The MediaWiki:Autoblock_whitelist block exemption control has been moved to
+ MediaWiki:Block-autoblock-exemptionlist. If you use this feature, please move
+ the MediaWiki:Autoblock_whitelist page.
+* (T275334) $wgExtensionFunctions is sometimes used to change configuration
+ settings. This is not safe; extension functions are run relatively late, some
+ services are already initialized by that point and so they use the old
+ configuration. Changes in 1.36 make this kind of breakage even more common.
+ You can use the MediaWikiServices hook instead. (In the future there might be
+ a dedicated hook for configuration changes.)
+
+For notes on 1.35.x and older releases, see HISTORY.
+
+=== Configuration changes for system administrators in 1.36 ===
+The MediaWiki update script, maintenance/update.php, used to accept `--nopurge`
+as an option to prevent clearing caches stored in the database during upgrade.
+This is no longer encouraged, and the option has been removed.
+
+==== New configuration ====
+* (T256001) $wgManualRevertSearchRadius – This setting controls a new feature
+ that marks edits as reverts if they restore the page to an exact previous
+ state. This configuration variable sets the maximum number of revisions of a
+ page that will be checked against every new edit. Set this to 0 to disable the
+ feature entirely.
+* (T244058) $wgOldRevisionParserCacheExpireTime — This setting was added to
+ control caching of ParserOutput for old (non-current) revisions.
+* (T265263) $wgRememberMe - This setting configures the "remember me" checkbox
+ on account log-in systems via RememberMeAuthenticationRequest.
+* (T157145) $wgSkinMetaTags – This setting lets sysadmins configure skins that
+ support meta tags. These tags make sharing of MediaWiki pages on a variety of
+ social platforms more contentful and thus useful.
+* (T280944) $wgIncludejQueryMigrate - This setting lets sysadmins disable the
+ jQuery Migrate plugin. It has been enabled by default since MediaWiki 1.27.
+ In future releases it will be disabled by default.
+
+==== Changed configuration ====
+* $wgLogos – This setting selects the logo shown on the site. The default value
+ for the site logo, which is shown in an install if you have not set one, will
+ now be the new logo of MediaWiki.
+* (T274695) $wgAjaxEditStash — This setting, to disable the edit stashing
+ feature when users start writing an edit summary, has been deprecated. In
+ future releases, this feature will always be enabled.
+* $wgUploadStashScalerBaseUrl – This setting, to enable remote on-demand media
+ scaling, was deprecated. Use the `thumbProxyUrl` setting in $wgLocalFileRepo
+ instead.
+* $wgSlaveLagWarning and $wgSlaveLagCritical – These settings have been renamed,
+ to $wgDatabaseReplicaLagWarning & $wgDatabaseReplicaLagCritical respectively.
+ The former configuration variable names are deprecated, but will be used as
+ the fall back if they are still set, and remain temporarily available for
+ extensions which try to read them.
+* $wgWANObjectCaches - The "coalesceKeys" option was removed without deprecation
+ and replaced by a new "coalesceScheme" option, set to "hash_stop" by default.
+ If you use Dynomite, then set the new "coalesceKeys" option to "hash_tag". The
+ "cluster" and "mcrouterAware" options were also removed without deprecation.
+ Use "broadcastRoutingPrefix" instead.
+
+==== Removed configuration ====
+* $wgUseTwoButtonsSearchForm — This setting, deprecated in 1.35, has been
+ removed.
+* $wgAllowImageMoving — This setting, deprecated in 1.35, has been removed. Use
+ group permission settings instead. For example, to prevent sysops from
+ moving files, set `$wgGroupPermissions['sysop']['movefile'] = false;`
+* $wgExtNewTables, $wgExtNewFields, $wgExtNewIndexes, $wgExtPGNewFields,
+ $wgExtPGAlteredFields, $wgExtModifiedFields — These settings were removed.
+ They became obsolete after 1.17 overhauled the database updater, but were kept
+ for backwards compatibility. The LoadExtensionSchemaUpdates hook should be
+ used instead.
+* $wgParserConf - This setting, deprecated in 1.35, has been removed. The last
+ use of this setting was for pre-processor configuration, which was deprecated
+ in 1.34 and removed in 1.35.
+* $wgEnableRestAPI - This setting, ignored since 1.35, has been removed.
+* $wgPagePropsHaveSortkey – This temporary setting has been removed, along with
+ the schema change upgrade path it controlled. If your site is still using it,
+ meaning you have not yet applied the `pp_sortkey` schema change from 1.24, you
+ must now apply it before upgrading.
+* The deprecated password policies PasswordCannotMatchBlacklist and
+ PasswordNotInLargeBlacklist were removed. Please use
+ PasswordCannotMatchDefaults and PasswordNotInCommonList respectively instead.
+
+=== New user-facing features in 1.36 ===
+* The logo of MediaWiki has changed. This means that the "Powered By MediaWiki"
+ button shown in the skin footer will be different.
+* All HTML5 named entities are now accepted in wikitext.
+* (T106263) The file description page's alternate sizes now include 2048px.
+
+=== New developer features in 1.36 ===
+* Parser test files can now declare a dependency on a specific extension being
+ loaded, not just on the presence of a certain extension tag hook. This is a
+ better fit for extensions like TimedMediaHandler, which affect the output but
+ don't register parser hooks. Use `extension:Foo` in the `!! hooks` section of
+ your parser test file to declare a dependency on the `Foo` extension being
+ loaded.
+* To expose code previously present in SpecialBlock/SpecialUnblock to other
+ parts of the code, or to extensions, the new BlockUser and UnblockUser command
+ objects were added. Use the BlockUserFactory and UnblockUserFactory services
+ to create them.
+* The hook UsersPagerDoBatchLookupsHook takes now a \Wikimedia\Rdbms\IDatabase,
+ instead of \Wikimedia\Rdbms\DBConnRef, as the first parameter.
+* MediaHandlers can now customize the formatting of the metadata they emit by
+ over-riding MediaHandler::formatTag( $key, $value ). The default for unknown
+ tags is numeric formatting; non-EXIF tags which are non-numeric should always
+ use this method to specify the desired formatting.
+* The new 'title' type can be used to validate action API and REST API inputs.
+* The new ArticleParserOptions hook allows customizing the parser options used
+ to parse wikitext for an article, based on user preferences, title, etc.
+* The new 'raw' type can be used to validate action API inputs. It bypasses the
+ Unicode NFC normalization done on inputs of type 'string', so it more suitable
+ when the input is binary or may contain deprecated Unicode sequences or
+ characters (such as U+2001) that should be passed unmodified.
+* (T260330) A new abstraction for running shell commands has been introduced,
+ called BoxedCommand. A BoxedCommand object can be obtained with
+ MediaWikiServices::getInstance()->getCommandFactory()->createBoxed().
+* ResourceLoader modules can now mark themselves as ES6-only by setting
+ `'es6' => true` in their module definition. ES6-only modules will not be
+ executed in browsers that don't support ES6, such as IE11.
+
+=== External library changes in 1.36 ===
+
+==== New external libraries ====
+* Added wikimedia/minify 2.2.2.
+* Added wikimedia/request-timeout 1.1.0.
+* Added wikimedia/shellbox 1.0.4.
+* Added WVUI 0.1.0.
+
+==== Changed external libraries ====
+* Updated composer/semver from 1.5.1 to 3.2.4.
+* Updated guzzlehttp/guzzle from 6.5.4 to 7.2.0.
+* Updated jQuery from v3.4.1 to v3.6.0.
+* Updated jQuery Migrate from v3.1.0 to v3.3.2.
+* Updated jquery.client from 2.0.2 to 3.0.0.
+* Updated OOUI from 0.39.3 to 0.41.3.
+* Updated pear/mail_mime from 1.10.8 to 1.10.9.
+* Updated pear/net_smtp from 1.9.1 to 1.9.2.
+* Updated pimple/pimple from 3.3.0 to 3.3.1.
+* Updated wikimedia/at-ease from 2.0.0 to 2.1.0.
+* Updated wikimedia/cldr-plural-rule-parser from 1.0.0 to 2.0.0.
+* Updated wikimedia/common-passwords from 0.2.0 to 0.3.0.
+* Updated wikimedia/composer-merge-plugin from 1.4.1 to 2.0.1.
+* Updated wikimedia/html-formatter from 1.0.2 to 3.0.1.
+* Updated wikimedia/ip-set from 2.1.0 to 3.0.0.
+* Updated wikimedia/ip-utils from 1.0.0 to 3.0.2.
+* Updated wikimedia/less.php from 3.0.0 to 3.1.0.
+* Updated wikimedia/object-factory from 2.1.0 to 3.0.0.
+* Updated wikimedia/php-session-serializer from 1.0.7 to 2.0.0.
+* Updated wikimedia/remex-html from 2.2.0 to 2.2.2.
+* Updated wikimedia/utfnormal from 2.0.0 to 3.0.2.
+* Updated wikimedia/wait-condition-loop from 1.0.1 to 2.0.1.
+* Updated wikimedia/xmp-reader from 0.7.0 to 0.8.1.
+
+===== Changed development-only external libraries =====
+* Updated composer/spdx-licenses from 1.5.3 to 1.5.4.
+* Updated doctrine/dbal from 2.10.2 to 3.0.0.
+* Updated doctrine/sql-formatter from 1.1.0 to 1.1.1.
+* Updated mediawiki/mediawiki-phan-config from 0.10.2 to 0.10.6.
+* Updated monolog/monolog from 1.25.3 to 2.2.0.
+* Updated nikic/php-parser from 4.4.0 to 4.10.2.
+* Updated psy/psysh from 0.10.4 to 0.10.5.
+* Updated seld/jsonlint from 1.7.1 to 1.8.3.
+* Updated symfony/yaml from ~3.4|~4.3|~5.0.5 to ~3.4|~5.1.
+* Updated wikimedia/testing-access-wrapper from 1.0.0 to 2.0.0.
+
+==== Removed external libraries ====
+* The html5shiv library has been removed, as support for Internet Explorer 8 has
+ been dropped.
+* The wikimedia/avro suggested development-only library has been removed, as the
+ support for logging in Avro format has been dropped.
+
+=== Bug fixes in 1.36 ===
+* (T190285) ApiEditPage module used to switch 'undo' and 'undoafter' parameters,
+ if it founds you reversed them (based on assumption that higher revision ID
+ indicates a later revision). The assumption is not always true, and is
+ hindering proper edit undoing in some cases, hence the logic has been removed.
+ Reversing the parameters will now lead to edit conflict or undefined behavior.
+* (T263340) In history merging, pages with a content model that does not support
+ redirects will now be recorded as deleted if no revision is being left in the
+ source page (that's if all revisions of the page have been merged to another).
+
+=== Action API changes in 1.36 ===
+* (T269636) `Access-Control-Max-Age` was added to the default list of headers
+ allowed for cross-origin API requests ($wgAllowedCorsHeaders).
+* (T258108) Accounts with the 'bot' right no longer have pages automatically
+ added to the watchlist when making API edits, regardless of their preferences.
+ This is to reduce the size of the watchlist data in the database. To add API
+ bot edits to the watchlist, explicitly set the 'watch' option.
+
+=== Languages updated in 1.36 ===
+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.
+
+* (T258975) Added a Latin/Cyrillic script converter for the Talysh language.
+* (T245359) Split Bali script locale from "ban" (Balinese) (ban-bali).
+* (T264582) Added language support for Madurese (mad).
+* (T259330) Added language support for Mara (mrh).
+* (T263968) Added language support for Nias (nia).
+* (T270365) Added language support for Tyap (kcg).
+* (T276745) Added language support for Wayuu (guc).
+
+=== Breaking changes in 1.36 ===
+* Grade C (non-JavaScript) support for Internet Explorer 8 has been dropped.
+* (T249459) wfIsBadImage(), deprecated in 1.34, has been removed.
+* (T176526) EditPage::getContextTitle() will now throw an exception if a context
+ title was not set using setContextTitle(). Previously, this mis-use would only
+ cause a deprecation warning to be emitted.
+* The DeferredStringifier class, deprecated since 1.31, was removed.
+* Multiple methods that fell back to the $wgUser global variable were
+ individually hard deprecated previously. The following have now been removed:
+ - ApiTestCase::doLogin
+ - Article::doDeleteArticle
+ - Article::doDeleteArticleReal
+ - Article::getComment
+ - Article::getCreator
+ - Article::getUser
+ - Article::getUserText
+ - Article::insertProtectNullRevision
+ - File::delete
+ - File::recordUpload
+ - ForeignDBFile::delete
+ - ForeignDBFile::recordUpload
+ - LocalFile::delete
+ - LocalFile::deleteOld
+ - LocalFile::recordUpload
+ - PageArchive::undelete
+ - RecentChange::markPatrolled
+ - Title::getUserPermissionsErrors
+ - Title::quickUserCan
+ - Title::userCan
+ - WebRequest::getLimitOffset
+ - WikiPage::doDeleteArticle
+ - WikiPage::insertProtectNullRevision
+* The SpecialPageFactory class, deprecated in 1.32, has been removed. Use the
+ SpecialPageFactory service instead.
+* Multiple methods previously had optional User parameters, with fallbacks
+ to the $wgUser global variable. Not passing a User to those methods was
+ previously hard deprecated, and support for not passing a User has now
+ been removed:
+ - ArchivedFile::userCan
+ - File::userCan
+ - FileDeleteForm::__construct
+ - FileDeleteForm::doDelete
+ - LocalFileDeleteBatch::__construct
+ - LogEventsList::getExcludeClause (only needed for the 'user' audience)
+ - LogEventsList::userCan
+ - LogEventsList::userCanBitfield
+ - LogEventsList::userCanViewLogType
+ - LogPage::addEntry (also accepts user id instead)
+ - OldLocalFile::userCan
+ - PatrolLog::record
+ - Title::getNotificationTimestamp (though the entire method is deprecated)
+ - WikiPage::getComment (only needed for the FOR_THIS_USER audience)
+ - WikiPage::getCreator (only needed for the FOR_THIS_USER audience)
+ - WikiPage::getUser (only needed for the FOR_THIS_USER audience)
+ - WikiPage::getUserText (only needed for the FOR_THIS_USER audience)
+* The following hooks have been removed:
+ - APIQueryInfoTokens
+ - APIQueryRecentChangesTokens
+ - APIQueryRevisionsTokens
+ - APIQueryUsersTokens
+ - ApiTokensGetTokenTypes
+* LogEventsList::typeAction previously accepted an optional right parameter, and
+ checked if the context user ($wgUser) had that right. Passing a right was hard
+ deprecated in 1.35, and support for passing a right has now been removed.
+* WikiPage::doDeleteArticleReal previously accepted an optional user as its
+ fifth parameter, and fell back to $wgUser if not user was provided. The
+ signature changed to have the user as the second parameter, and the old
+ signature was hard deprecated in 1.35. Support for the old signature has now
+ been removed.
+* User::addNewUserLogEntry, deprecated since 1.27, was removed.
+* As part of refactoring the EditPage class, EditPage::setPreloadedContent,
+ which had no known callers was removed entirely. Additionally, the following
+ public methods were made private:
+ - ::extractSectionTitle
+ - ::getSummaryInputWidget
+ - ::noSuchSectionPage
+ - ::initialiseForm
+* EditPage::matchSpamRegex and ::matchSummarySpamRegex, deprecated in 1.35,
+ were removed. Use the SpamChecker service instead.
+* The global function `wfWaitForSlaves`, deprecated in 1.27 and hard-deprecated
+ in 1.35, has been removed. Use LBFactory::waitForReplication() instead.
+* Calling Action::factory() with null as the first parameter, rather than a
+ string, was deprecated in 1.35 and support was now removed.
+* Calling Action::factory() with an object that wasn't an Article as the second
+ parameter was deprecated in 1.35 and support was now removed.
+* The global variable $wgMemc, deprecated since 1.35, has been removed. Usage
+ should generally be migrated to WANObjectCache, or if you really need the
+ internal object, use ObjectCache::getLocalClusterInstance instead.
+* The preprocessDump.php maintenance script was removed.
+* CategoryFinder, which was deprecated in 1.31 and hard-deprecated in 1.35,
+ has been removed.
+* GenderCache::singleton(), which was deprecated in 1.28 and hard-deprecated
+ in 1.35, has been removed.
+* Sanitizer::escapeId(), deprecated in 1.30, has been removed.
+* Direct invocation of Parser::__construct() (instead of via a ParserFactory)
+ now throws an exception; support has also been removed for several
+ deprecated variants on the arguments passed to Parser::__construct.
+ Direct invocation of Parser::__construct was deprecated in 1.34.
+* Parser::setFunctionTagHook(), deprecated in 1.35, has been removed.
+* The following properties of Parser, deprecated in 1.35, have been made
+ private:
+ - $mTagHooks - use Parser::getTags()
+ - $mFunctionHooks - use Parser::getFunctionHooks()
+ - $mOutput - use Parser::getOutput()
+ - $mPreprocessor - use Parser::getPreprocessor()
+* The ParserBeforeTidy hook, deprecated in 1.35, has been removed.
+* The ParserBeforeTidy, ParserBeforeStrip, and ParserAfterStrip hooks,
+ deprecated in 1.35, have been removed.
+* All methods of MWTidy except for MW::tidy() have been removed. These were each
+ either marked as @internal or deprecated in 1.35.
+* (T248062) Mixins `.background-image-svg()` and `.background-image-svg-quick()`
+ (provided by mediawiki.mixins.less), which have been deprecated since 1.35,
+ have now been removed. MediaWiki no longer supports any browser which would
+ require this SVG-fallback PNG support, so you can simply use the regular CSS
+ `background-image:` declaration instead.
+* The ResourceLoader module `mediawiki.legacy.oldshared` and its file
+ 'oldshared.css', deprecated since 1.35 has been removed (T248357).
+* `ResourceLoader::__construct` now requires a Config parameter. The optional
+ nature of this parameter was deprecated in 1.34.
+* The LinkBegin and LinkEnd hooks, deprecated in 1.28, have been removed. You
+ can instead use the HtmlPageLinkRendererBegin and HtmlPageLinkRendererEnd
+ hooks, respectively.
+* The EmailUser hook passes its fifth param, $error, by reference, to allow
+ hook handlers to add error messages, indicate that they have sent the email
+ instead of core, etc. Setting the parameter to something other than a
+ Status object, true, false, an empty string, an array, or a MessageSpecifier,
+ object, which had been deprecated in 1.29, is no longer supported, and now
+ results in an MWException being thrown.
+* Skin::getDynamicStylesheetQuery(), deprecated in 1.32, has been removed. You
+ should use action=raw&ctype=text/css directly.
+* Skin::makeI18nUrl(), deprecated in 1.35, has been removed.
+* The following User methods, deprecated and moved to BlockManager in 1.34, were
+ removed:
+ - ::isDnsBlacklisted
+ - ::inDnsBlacklist
+ - ::isLocallyBlockedProxy
+ - ::trackBlockWithCookie
+* Support for v1 of the parser tests file format has been removed; it was
+ deprecated in 1.35. (T174199)
+* SpecialUnblockUser::processUIUnblock() now returns a Status object instead of
+ an array of messages or a boolean value. This function was also marked as
+ @internal and is no longer safe to call it publicly.
+* mw.Title.getDotExtension() from the 'mediawiki.Title' module was removed
+ without deprecation. You should use mw.Title.getExtension() and prepend the
+ dot if need be.
+* Profiler::getTemplated and Profiler::setTemplated, deprecated in 1.34, have
+ been removed.
+* DatabaseMysqlBase now requires MySQL version 5.6.4+ when "lagDetectionMethod"
+ is set to "pt-heartbeat".
+* Removed HookContainer::getOriginalHooksForTest() without deprecation. This
+ method was introduced in 1.35 for internal use, and appears unused outside of
+ MediaWiki core.
+* ParserCache::__construct() now requires three parameters.
+* Message->getFormat(), deprecated in 1.29, has been removed.
+* Support for passing Article to ParserCache::get, deprecated in 1.35, has been
+ removed.
+* ParserCache::singleton(), deprecated in 1.30, has been removed.
+* DatabaseBlock::deleteIfExpired and ::fromMaster, deprecated in 1.35, have been
+ removed.
+* Some deprecated AbstractBlock methods have been removed:
+ - ::prevents, deprecated in 1.33
+ - ::shouldTrackWithCookie, deprecated in 1.34
+ - ::getBlocker, deprecated in 1.35
+ - ::setBlocker, deprecated in 1.35
+ - ::getBlockErrorParams, deprecated in 1.35
+* Multiple DatabaseBlock methods dealing with cookies, deprecated in 1.34,
+ have been removed:
+ - ::setCookie
+ - ::clearCookie
+ - ::getCookieValue
+ - ::getIdFromCookieValue
+ - ::shouldTrackWithCookie
+* The public static callback function SpecialUnblock::processUIUnblock has been
+ removed. This method was for internal use only, and appears unused outside of
+ MediaWiki core.
+* ChangeTags::truncateTagDescription, deprecated in 1.35, has been removed.
+* Deprecated null fallbacks in PasswordReset constructor have been removed.
+* User::isEveryoneAllowed and User::getAllRights, deprecated in 1.34, has been
+ removed.
+* The following methods of the UserGroupMembership class, deprecated in 1.35,
+ has been removed:
+ - ::initFromRow
+ - ::newFromRow - use UserGroupManager::newGroupMembershipFromRow
+ - ::selectFields - use UserGroupManager::getQueryInfo
+ - ::delete - use UserGroupManager::removeUserFromGroup
+ - ::insert - use UserGroupManager::addUserToGroup
+ - ::purgeExpired - use UserGroupManager::purgeExpired
+ - ::getMembershipsForUser - use UserGroupManager::getUserGroupMemberships
+ - ::getMembership - use UserGroupManager::getUserGroupMemberships
+* The public static callback function SpecialBlock::validateTargetField has been
+ removed. This method was for internal use only, and appears unused outside of
+ MediaWiki core.
+* The public static callback function SpecialUploadStash::tryClearStashedUploads
+ has been removed. This method was for internal use only, and appears unused
+ outside of MediaWiki core.
+* SpecialComparePages::showDiff() ::revOrTitle(), ::checkExistingTitle(), and
+ ::checkExistingRevision() were marked as @internal to allow for breaking
+ changes. They are no longer safe to call. The methods were unused outside of
+ MediaWiki core.
+* Each special page within core now uses service injection via it constructor.
+ When extending these special pages, a call to the grandparent constructor
+ (`SpecialPage::__construct()`) in the sub-class would now break the derived
+ special page, as the fallback code in the parent constructor cannot set the
+ services as needed. Be sure to call the parent constructor when extending
+ core special pages. Extending core's special pages is not part of the stable
+ interface, and should generally be avoided.
+* Language::getExtraUserToggles and ::viewPrevNext, deprecated in 1.34, have
+ been removed.
+* StreamFile::send404Message and ::parseRange, deprecated in 1.34, have been
+ removed.
+* SVGMetadataExtractor class, deprecated in 1.34, has been removed.
+* ProcessCacheLRU class, deprecated in 1.32, has been removed.
+* wfForeignMemcKey(), deprecated in 1.35, has been removed.
+* LoadBalancer::safeWaitForMasterPos(), deprecated in 1.34, has been removed.
+* JobQueue::factory() now requires its `idGenerator` option. The optional
+ nature of this option was deprecated in 1.35.
+* ApiFeedRecentChanges::getFeedObject has been changed to private, and appears
+ unused outside of MediaWiki core.
+* Skin::subPageSubtitle() has been changed to private method. Callers should
+ use Skin::prepareSubtitle().
+* RevisionDeleter::checkRevisionExistence was removed without deprecation.
+ It had no known callers.
+* wfForeignMemcKey() and wfMemcKey(), deprecated in 1.35, have been removed.
+* MediaWiki now also requires the php-intl extension.
+* BotPassword::save() now returns a Status object for the result rather than
+ a bool.
+* The methods in CoreTagHooks have been marked @internal and type hints have
+ been added. The methods appeared to be unused outside of MediaWiki core.
+* SquidPurgeClient and SquidPurgeClientPool, deprecated since 1.35, have been
+ removed.
+* Several methods on WikiPage will now throw an exception when called on a
+ WikiPage instance that where constructed on a title that does not refer to a
+ proper page (but rather a special page or interwiki link). The behavior was
+ previously undefined and could in some cases lead to data corruption. Affected
+ methods are: getId(), insertOn(), newPageUpdater(), doUpdateRestrictions(),
+ doDeleteArticleReal(), doRollback(), and doEditContent().
+* The ParserTestRunner no longer invokes the ParserTestTables hook. Instead, it
+ clones all database tables before running tests, like MediaWikiIntegrationTest
+ does. If an extension was mis-using the hook to *exclude* tables from the
+ clone, that will no longer occur, and tests may fail.
+* The following classes, which were only loaded for tests and had no uses found
+ in public MediaWiki-related git, were removed:
+ - MockWebRequest
+ - UserWrapper
+* Passing Title as a second parameter to RevisionStore::getPreviousRevision and
+ getNextRevision, hard deprecated since 1.31, was prohibited.
+* (T275619) Maintenance::hasOption and Maintenance::getOption now behave as
+ documented and are not altered by previous calls to these methods.
+* The internal class FirejailCommand was removed.
+* Command::execute() now returns a Shellbox\Command\UnboxedResult instead of a
+ MediaWiki\Shell\Result. Any type hints should be updated.
+* WikiPage::$mIsRedirect was removed.
+* ObjectCache::detectLocalServerCache(), deprecated in 1.35, was removed.
+* The following functions from the Title class have been removed:
+ - countRevisionsBetween
+ - getAuthorsBetween
+* The PageProps class was converted to a service. PageProps::overrideInstance
+ was removed, and MediaWikiServices::redefineService should be used
+ instead.
+* Support for creating a MediaWikiTitleCodec object without the InterwikiLookup
+ and NamespaceInfo services, deprecated in 1.34, was removed. Note that the
+ MediaWikiTitleCodec class is not @newable or @stable to create, and should
+ be retrieved from MediaWikiServices instead.
+* The $wgContLang variable, deprecated in 1.32, was removed. You can instead use
+ MediaWikiServices::getInstance()->getContentLanguage().
+* User::clearAllNotifications(), hard deprecated in 1.35, was removed. Use
+ WatchlistManager::clearAllUserNotifications() instead.
+* DatabaseBlock::getBlocker can return any UserIdentity instance, not just User.
+* MediaWiki::triggerJobs(), deprecated in 1.34, was removed.
+* The following Article methods, deprecated in 1.35, were removed:
+ - checkFlags
+ - checkTouched
+ - clearPreparedEdit
+ - doDeleteUpdates
+ - doEditUpdates
+ - doPurge
+ - doViewUpdates
+ - exists
+ - followRedirect
+ - getAutoDeleteReason
+ - getCategories
+ - getContentHandler
+ - getContentModel
+ - getContributors
+ - getDeletionUpdates
+ - getHiddenCategories
+ - getId
+ - getLatest
+ - getLinksTimestamp
+ - getMinorEdit
+ - getOldestRevision
+ - getRedirectTarget
+ - getRedirectURL
+ - getRevision
+ - getTouched
+ - getUndoContent
+ - hasViewableContent
+ - insertOn
+ - insertRedirect
+ - insertRedirectEntry
+ - isCountable
+ - isRedirect
+ - loadFromRow
+ - loadPageData
+ - lockAndGetLatest
+ - makeParserOptions
+ - pageDataFromId
+ - pageDataFromTitle
+ - prepareContentForEdit
+ - protectDescription
+ - protectDescriptionLog
+ - replaceSectionAtRev
+ - replaceSectionContent
+ - setTimestamp
+ - shouldCheckParserCache
+ - supportsSections
+ - triggerOpportunisticLinksUpdate
+ - updateCategoryCounts
+ - updateIfNewerOn
+ - updateRedirectOn
+ - updateRevisionOn
+ - doUpdateRestrictions
+ - updateRestrictions
+ - doRollback
+ - commitRollback
+ - generateReason
+* The monolog-based logging system has dropped the Avro format. Because of this,
+ the AvroFormatter class and the AvroValidator utility class have been removed
+ without deprecation.
+* AbstractBlock::$mReason, deprecated in 1.34, was removed.
+ Use AbstractBlock::getReasonComment and AbstractBlock::setReason instead.
+
+=== Deprecations in 1.36 ===
+* (T278026) The DB_MASTER constant has been deprecated in favour of DB_PRIMARY.
+* (T245963) User::getGrantName() is now hard deprecated and will be removed in
+ a subsequent release. Use MWGrants::grantName() instead.
+* wfIncrStats() is now deprecated. Use MediaWikiServices::getInstance()
+ ->getStatsdDataFactory()->updateCount() instead.
+* WikiPage::doEditContent() is now deprecated. Use
+ WikiPage::doUserEditContent() instead. Note that doEditContent() was also
+ deprecated in 1.32 for unrelated reasons and doUserEditContent() is
+ deprecated for other reasons, however, using doUserEditContent() is
+ recommended over using doEditContent().
+* WikiPage::doUserEditContent() is now deprecated. Use
+ PageUpdater::saveRevision instead. Note that the new method expects callers
+ to take care of checking EDIT_MINOR against the minoredit right, and to apply
+ the autopatrol right as appropriate.
+* LocalFile::recordUpload2, soft deprecated in 1.35, now emits deprecation
+ warnings. Use ::recordUpload3 instead.
+* Constructing a new instance of the ParserOptions class without providing
+ a User object, which falls back to the global $wgUser, is now deprecated.
+* The User class, which was marked as @newable in 1.35, is no longer newable,
+ meaning that it is no longer safe to manually call the constructor via
+ `new User`. Instead, use the UserFactory service. Additionally, the
+ following static constructor methods were deprecated in favor of using the
+ UserFactory service:
+ - User::newFromName
+ - User::newFromId
+ - User::newFromActorId
+ - User::newFromIdentity
+ - User::newFromAnyId
+ - User::newFromConfirmationCode
+* The following User methods have been hard deprecated in favor of the new
+ UserEditTracker service:
+ - User::getFirstEditTimestamp
+ - User::getLatestEditTimestamp
+* The confusingly-named User->isLoggedIn() method has been deprecated in favour
+ of the method it wraps, User->isRegistered().
+* Use of the `preprocessor=Preprocessor_DOM` option in parser test files has
+ been deprecated. Preprocessor_DOM was removed in 1.35.
+* ParserOptions::setTidy() has been deprecated. It has had no effect since
+ 1.35.
+* Sanitizer::escapeIdReferenceList() has been deprecated; it will eventually
+ be made private to the class, as it appears to have no uses outside the
+ Sanitizer class.
+* Sanitizer::hackDocType() is deprecated; it will eventually be made private.
+* Skin::getIndicatorsHTML() is deprecated. The functionality can be retained
+ by reimplementing the method using the raw indicators data from
+ OutputPage::getIndicators.
+* Skin::makeVariablesScript() has been deprecated. Use
+ ResourceLoader::makeInlineScript() instead.
+* SpecialPageFactory::getRestrictedPages() has been deprecated.
+ Use SpecialPageFactory::getUsablePages() instead.
+* Title::nameOf() is deprecated; use Title::newFromID()->getPrefixedDBkey()
+ instead.
+* DatabaseBlock::insert, DatabaseBlock::update, DatabaseBlock::purgeExpired and
+ DatabaseBlock::delete are deprecated. Use DatabaseBlockStore::insertBlock,
+ DatabaseBlockStore::updateBlock, DatabaseBlockStore::purgeExpiredBlocks and
+ DatabaseBlockStore::deleteBlock instead.
+* SpecialBlock::getTargetAndType and AbstractBlock::parseTarget are deprecated.
+ Call BlockUtils::parseBlockTarget instead.
+* SpecialUnblock::processUnblock was deprecated - use UnblockUserFactory
+ service instead.
+* Deprecated MediaWikiIntegrationtestCase::removeTemporaryHook() in favor of
+ MediaWikiIntegrationtestCase::clearHook().
+* Skin::getSearchLink(), also exposed as 'searchaction' option in SkinTemplate,
+ has been deprecated. Use Title or SpecialPage methods directly.
+* Skin::getAllowedSkins and ::getSkinNames have been deprecated. Use their
+ respective equivalents in SkinFactory instead.
+* The RollbackComplete hook has been deprecated, use the PageSaveComplete hook
+ instead.
+* Skin::makeUrl() has been deprecated. Title methods should be used instead.
+* Skin::privacyLink(), Skin::disclaimerLink() and Skin::aboutLink() have been
+ deprecated. Please use Skin::footerLink() instead.
+* Skin::getLogo() has been deprecated. Use ResourceLoaderSkinModule instead.
+* The module `mediawiki.toc.styles` has been replaced by
+ ResourceLoaderSkinModule. If you are having problems styling table of contents
+ ensure you have an updated skin.
+* Skin::mainPageLink() has been deprecated. Use LinkRenderer service instead.
+* BaseTemplate::getToolbox() method has been hard deprecated. The toolbox data
+ is now available in a sidebar data array which you can get from any class
+ that's extending QuickTemplate class.
+* Constructing a DefaultPreferencesFactory, LinkHolderArray or PasswordReset
+ without a $hookContainer parameter is deprecated.
+* Autopromote class, soft deprecated since 1.35, now emits deprecation warnings.
+ Use UserGroupManager instead.
+* SpecialBlock::canBlockEmail has been deprecated. Please use
+ BlockPermissionChecker::checkEmailPermissions instead.
+* SpecialBlock::checkUnblockSelf has been deprecated. Please use
+ BlockPermissionChecker::checkBlockPermissions instead.
+* SpecialBlock::parseExpiryInput was deprecated - use
+ BlockUser::parseExpiryInput instead.
+* SpecialBlock::validateTarget has been deprecated, use BlockUtils instead.
+* SpecialBlock::validateTargetField has been deprecated for external use,
+ use BlockUtils instead.
+* SpecialPage::getLanguageConverter has been deprecated, use
+ LanguageConverterFactory::getLanguageConverter() directly.
+* ParserCache::getKey has been deprecated. Use ParserCache::getMetadata and
+ ParserCache::makeParserOutputKey instead.
+* The PHPUnit4And6Compat class, used to provide compatibility with PHPUnit 4,
+ was removed. MediaWiki support for PHPUnit 4 ended with the removal of HHVM
+ support.
+* The PHPUnit6And8Compat class, used to provide compatibility with PHPUnit 6,
+ was removed without deprecation. This class was introduced during the
+ upgrade to PHPUnit 8, but never used.
+* MediaWikiIntegrationTestCase::assertType, hard-deprecated in 1.35 due to
+ incompatibility with PHPUnit 8, was removed.
+* ParserCache::getETag has been deprecated, instead build suitable etag
+ explicitly.
+* The following functions from the Language class have been hard deprecated
+ and will be removed in a subsequent release:
+ - findVariantLink
+ - convertTitle
+ - updateConversionTable
+ - commafy
+* The following functions from the Title class have been hard deprecated:
+ - getPreviousRevisionID
+ - getNextRevisionID
+ - getEarliestRevTime
+* The following functions from the User class have been hard deprecated:
+ - getDefaultOptions
+ - getDefaultOption
+* The mw.language.commafy client-side method has been deprecated, to match
+ the deprecation of Language::commafy. Use mw.language.convertNumber
+ instead.
+* The "es6-promise" module has been deprecated. Use "es6-polyfills" instead.
+* Title::isDeleted() and Title::isDeletedQuick() have been deprecated. Please
+ use Title::getDeletedEditsCount() and Title::hasDeletedEdits() instead.
+* Article::getContentObject, soft-deprecated since 1.32, was hard-deprecated.
+* WikiRevision::importUpload, soft-deprecated since 1.31, was hard-deprecated.
+* Html::infoBox() has been deprecated. There's no replacement.
+* Message::toString() without a $format parameter, soft-deprecated since 1.28,
+ was hard-deprecated. Use explicit formatting methods instead, such as
+ Message::text() and Message::escaped().
+* BagOStuff::makeKeyInternal() usage outside of BagOStuff has been deprecated.
+* BagOStuff::setDebug() is deprecated and calls to it are ignored. Debug logs
+ are now unconditionally enabled.
+* The following global functions have been hard deprecated:
+ - wfAppendToArrayIfNotDefault
+ - wfAcceptToPrefs
+ - wfClearOutputBuffers
+ - wfConfiguredReadOnlyReason
+ - wfDebugMem
+ - wfGetPrecompiledData
+ - wfNegotiateType
+* BeforeParserFetchTemplateAndtitleHook has been deprecated; replace
+ with the new BeforeParserFetchTemplateRevisionRecord hook. (The
+ similar ParserFetchTemplateHook was deprecated in 1.35; the new hook
+ replaces both.)
+* The InterwikiLoadPrefix hook has been deprecated; it is not compatible
+ with future wikitext parsers (which need to enumerate all interwiki
+ prefixes). In test cases please use $wgInterwikiCache instead.
+* WikiPage instances should no longer be constructed for titles that do not
+ represent editable pages (e.g. special pages). WikiPages were always
+ documented to represent "MediaWiki article and history".
+* Skin::getSkinStylePath() has been deprecated. Please replace usages with
+ the direct path to the resources.
+* The second argument of EnhancedChangesList::getDiffHistLinks, $query, has
+ been deprecated.
+* The ParserTestTables hook has been deprecated; it is no longer necessary
+ after a ParserTestRunner refactoring.
+* The following classes have been hard deprecated: CachedAction,
+ SpecialCachedPage, CacheHelper, ICacheHelper. They were unused in MediaWiki
+ ecosystem, so no replacement was provided.
+* The ProtectionForm::buildForm hook has been deprecated. Please use the
+ ProtectionFormAddFormFields hook instead.
+* RevisionStore::newMutableRevisionFromArray has been hard deprecated. Instead,
+ MutableRevisionRecord should be constructed directly via constructor.
+* UserIdentity::getActorId() is deprecated. The actor ID should not be exposed
+ to application logic. Storage layer code should use the ActorNormalization
+ service for normalizing and denormalizing user names.
+* Constructing a UserIdentityValue with an actor ID as the third parameter is
+ deprecated. The parameter should be omitted. Storage layer code should use
+ the ActorNormalization service for normalizing and denormalizing user names.
+* Command::cgroup() is deprecated and no longer functional. $wgShellCgroup is
+ now implemented as an Executor option.
+* Command::restrict() is deprecated. Instead use the new separate accessors.
+* MWTidy::tidy() is deprecated. Use MediaWikiServices::getTidy()-tidy() instead.
+* TidyDriverBase::supportsValidate() is deprecated; it has always returned
+ false since 1.33.
+* WatchedItem::getUser hard-deprecated in favor of ::getUserIdentity.
+* WatchedItemStoreInterface::enqueueWatchlistExpiryJob was hard deprecated in
+ favor of the new method maybeEnqueueWatchlistExpiryJob that takes care of
+ relevant configuration checks.
+* LogEntry::getPerformer() and its implementations have been hard-deprecated, in
+ favor of ::getPerformerIdentity().
+* AuthManager::singleton(), deprecated in 1.35, is hard deprecated. Use
+ MediaWikiServices::getAuthManager() instead.
+* User::clearNotification(), deprecated in 1.35, is hard deprecated. Use
+ WatchlistManager::clearTitleUserNotification() instead.
+* Passing string to DatabaseBlock::setBlocker was deprecated. Only UserIdentity
+ is now allowed.
+* DatabaseBlock constructor 'byText' option was deprecated in favour of 'by'
+ option, which now accepts UserIdentity. Passing user ID is deprecated.
+* Parser::getUser was deprecated. Use Parser::getUserIdentity instead.
+* DatabaseBlock::isWhitelistedFromAutoblocks was deprecated. Use
+ DatabaseBlock::isExemptedFromAutoblocks instead.
+* User::isIPRange(), deprecated in 1.35, is hard deprecated.
+ Use the UserNameUtils service or IPUtils directly.
+* BaseTemplate::getFooterIcons(), deprecated in 1.35, is hard deprecated. Read
+ footer icons from template data requested via $this->get('footericons').
+* `box-shadow()` LESS mixin from mediawiki.mixins is deprecated due to updated
+ basic browser support. Use unprefixed property `box-shadow:` instead.
+* MergeHistory::checkPermissions was deprecated. Use ::probablyCanMerge or
+ ::authorizeMerge instead.
+* User::isValidUserName(), deprecated in 1.35, is hard deprecated.
+ Use the UserNameUtils service instead.
+* The TitleArrayFromResult hook has been deprecated.
+* The EditPageBeforeEditToolbar hook has been deprecated; it has become
+ defunct after the classic edit toolbar was removed. Use one of the many
+ other EditPage hooks instead.
+* Deprecated the class name MediaWiki\User\WatchlistNotificationManager; use
+ MediaWiki\Watchlist\WatchlistManager instead. Deprecated the method
+ MediaWikiServices->getWatchlistNotificationManager(); use
+ MediaWikiServices->getWatchlistManager() instead.
+* The "ArticleEditUpdatesDeleteFromRecentchanges" hook, deprecated in 1.35, has
+ been removed. Other hooks like "RecentChange_save" can be used instead.
+
+=== Other changes in 1.36 ===
+* The 'tidy' key in ParserOptions (used in the parser cache) has been removed.
+ It has had no effect since 1.35.
+* A future release of MediaWiki will make `{{=}}` a built-in parser function,
+ for use when automatically escaping the `=` character in template arguments.
+ A tracking category and parser warning have been added to this release when
+ `{{=}}` is used and it expands to something other than `=`.
+* The implementation of TestFileReader::read has been changed to use Parsoid's
+ parser test file parser. This should be compatible with existing code, but it
+ only supports version 2 of the test file specification and may be more strict
+ when parsing invalid input, including duplicate tests.
+* BeforeParserFetchTemplateRevisionRecord, a new hook, unifies and replaces the
+ old BeforeParserFetchTemplateAndtitleHook and ParserFetchTemplateHook.
+* The SkinLessImportPaths attribute was added, allowing skins to add a directory
+ to the import path for LESS stylesheets. Skins can use this to provide a
+ custom version of mediawiki.skin.variables.less, setting skin-specific values
+ for certain LESS variables.
+* The interaction between ContentHandler::getParserOutputForIndexing() and
+ ContentHandler::getDataForSearchIndex() has been clarified (the latter should
+ only be called with the result of the former). Extensions may override
+ getParserOutputForIndexing() to skip generating HTML, which may improve
+ indexing performance. (The default implementation still generates HTML, and
+ getDataForSearchIndex() implementations can still rely on it if they do not
+ over-ride getParserOutputForIndexing().)
+* Article::fetchContentObject, ::mContentObject, ::mContentLoaded,
+ ::mRevIdFetched, all deprecated since 1.32, were removed.
+* Article::mParserOptions and ::setParserOptions were removed.
+* Article and ImagePage::getEmptyPageParserOutput, unused, were removed.
+* ParserCache's default serialization format was changed from PHP serialization
+ to JSON serialization. In case some installed extension do not support JSON
+ yet, $wgParserCacheUseJson can be used to revert back to PHP serialization.
+* PermissionManager::groupHasPermission, ::getGroupPermissions and
+ ::getGroupsWithPermission were deprecated, use GroupPermissionsLookup
+ service instead.
+* WatchedItemStoreInterface now accepts PageIdentity where it accepted
+ LinkTarget, calling with LinkTarget was deprecated.
+* 'movable' attribute has been added to the 'namespaces' property of
+ extension.json schema. Extensions that define namespaces can set it to
+ `false` to disallow moving pages in the specified namespace. Extensions
+ should either use this or NamespaceIsMovableHook, but not both. The hook
+ overrides the attribute.
+
+== Compatibility ==
+
+MediaWiki 1.36 requires PHP 7.3.19 or later and the following PHP extensions:
+
+* ctype
+* dom
+* fileinfo
+* iconv
+* intl
+* json
+* mbstring
+* xml
+
+MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
+but support for them is somewhat less mature.
+
+The supported versions are:
+
+* MySQL 5.5.8 or later
+* PostgreSQL 9.4 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.35 =
== MediaWiki 1.35.2 ==