Bug: T245940 Depends-On: Ib7fe7318100c0aadc3aa759416bf787913a9b788 Change-Id: I75c3b6715abd5eaf3619337cab8b1844e9a8349a
644 lines
32 KiB
Text
644 lines
32 KiB
Text
= MediaWiki 1.36 =
|
||
|
||
== MediaWiki 1.36.0-PRERELEASE ==
|
||
|
||
THIS IS NOT A RELEASE YET
|
||
|
||
MediaWiki 1.36 is an alpha-quality development branch, and is not recommended
|
||
for use in production.
|
||
|
||
== Upgrading notes for 1.36 ==
|
||
Don't forget to always back up your database before upgrading!
|
||
|
||
See the file UPGRADE for more detailed upgrade instructions, including
|
||
important information when upgrading from versions prior to 1.11.
|
||
|
||
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 and php-intl).
|
||
* MediaWiki refuses to run on PHP 7.4.0–7.4.8, which have a PHP bug (T270228).
|
||
* …
|
||
|
||
For notes on 1.35.x and older releases, see HISTORY.
|
||
|
||
=== Configuration changes for system administrators in 1.36 ===
|
||
MediaWiki update script, maintenance/update.php, used to accept `--nopurge`
|
||
option to prevent clearing caches stored in the database during upgrade,
|
||
this is no longer recommended and the option has been removed.
|
||
…
|
||
|
||
==== New configuration ====
|
||
* (T256001) $wgManualRevertSearchRadius – This setting introduces a 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 revisions.
|
||
* (T157145) $wgSkinMetaTags allows configuration of skins to support meta
|
||
tags that enable sharing of mediawiki pages on a variety of social platforms.
|
||
* …
|
||
|
||
==== Changed configuration ====
|
||
* (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 was deprecated. Use thumbProxyUrl in
|
||
$wgLocalFileRepo 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.
|
||
* …
|
||
|
||
=== New user-facing features in 1.36 ===
|
||
* All HTML5 named entities are now accepted in wikitext.
|
||
* …
|
||
|
||
=== 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 first parameter
|
||
* MediaHandlers can now customize the formatting of the metadata they emit
|
||
by overriding 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.
|
||
* A new abstraction for running shell commands has been introduced, called
|
||
BoxedCommand. A BoxedCommand object can be obtained with
|
||
MediaWikiServices::getInstance()->getCommandFactory()->createBoxed().
|
||
(T260330)
|
||
* 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.1.0.
|
||
* Added wikimedia/request-timeout 1.0.0.
|
||
* Added wikimedia/shellbox 1.0.4.
|
||
* Added WVUI 0.1.0.
|
||
* …
|
||
|
||
===== New development-only external libraries =====
|
||
* …
|
||
|
||
==== 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.client from 2.0.2 to 3.0.0.
|
||
* Updated OOUI from 0.39.3 to 0.41.1.
|
||
* 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/cldr-plural-rule-parser from 1.0.0 to 2.0.0.
|
||
* Updated wikimedia/composer-merge-plugin from 1.4.1 to 2.0.1.
|
||
* Updated wikimedia/html-formatter from 1.0.2 to 2.0.1.
|
||
* Updated wikimedia/ip-utils from 1.0.0 to 3.0.1.
|
||
* 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/remex-html from 2.2.0 to 2.2.2.
|
||
* Updated wikimedia/xmp-reader from 0.7.0 to 0.8.0.
|
||
* Updated wikimedia/utfnormal from 2.0.0 to 3.0.1.
|
||
* Updated wikimedia/wait-condition-loop from 1.0.1 to 2.0.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.
|
||
* …
|
||
|
||
=== 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.
|
||
* ...
|
||
|
||
=== Action API internal changes in 1.36 ===
|
||
* …
|
||
|
||
=== 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).
|
||
* (T259330) Added language support for Mara (mrh).
|
||
* (T263968) Added language support for Nias (nia).
|
||
* (T264582) Added language support for Madurese (mad).
|
||
* (T270365) Added language support for Tyap (kcg).
|
||
|
||
=== Breaking changes in 1.36 ===
|
||
* (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
|
||
- All methods of the old SpecialPageFactory; the entire class was removed
|
||
* 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
|
||
* The global function `wfWaitForSlaves`, deprecated in 1.27 and hard-deprecated
|
||
in 1.35, has been removed. Use LBFactory::waitForReplication() instead.
|
||
* 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.
|
||
* Parser::setFunctionTagHook(), deprecated in 1.35, has been removed.
|
||
* 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 either @internal or deprecated in 1.35.
|
||
* The support for IE8 has been dropped.
|
||
* (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).
|
||
* The LinkBegin and LinkEnd hooks, deprecated in 1.28, have been removed. You
|
||
can instead use the HtmlPageLinkRendererBegin and HtmlPageLinkRendererEnd
|
||
hooks, respectively.
|
||
* 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() has a different return
|
||
value (previously, array of messages or a boolean value, now,
|
||
a Status object). 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.
|
||
* 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.
|
||
* AbstractBlock::prevents, deprecated in 1.33, has been removed.
|
||
* AbstractBlock::shouldTrackWithCookie, deprecated in 1.34, has been removed.
|
||
* AbstractBlock::getBlocker, ::setBlocker, and ::getBlockErrorParams,
|
||
deprecated in 1.35, have been removed.
|
||
* 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.
|
||
* Special pages provided by core now using service injection via constructor.
|
||
When extending a special page the call to grandparent constructor
|
||
("SpecialPage::__construct()") in the sub class breaks the extension special
|
||
page, because 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. The extending of core special pages is not part of the
|
||
stable interface and should 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.
|
||
* 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 were 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(), doEditContent().
|
||
* ParserTestRunner no longer invokes the ParserTestTables hook, instead
|
||
cloning all database tables before running tests as MediaWikiIntegrationTest
|
||
does. If an extension was misusing the hook to *exclude* tables from the
|
||
clone, that will no longer occur and tests may fail.
|
||
* The UserWrapper class, which was only loaded for tests and had no uses found
|
||
in public MediaWiki-related git, was removed.
|
||
* Passing Title as a second parameter to RevisionStore::getPreviousRevision and
|
||
getNextRevision, hard deprecated since 1.31, was prohibited.
|
||
* 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.
|
||
* ObjectCache::detectLocalServerCache(), deprecated in 1.35, was removed.
|
||
* The $wgContLang variable, deprecated in 1.32, was removed. You can instead use
|
||
MediaWikiServices::getInstance()->getContentLanguage().
|
||
* …
|
||
|
||
=== Deprecations in 1.36 ===
|
||
* (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.
|
||
* 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.
|
||
* The PageProps class was converted to a service. PageProps::overrideInstance
|
||
was deprecated, and MediaWikiServices::redefineService should be used
|
||
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 is deprecated. Call AbstractBlock::parseTarget
|
||
directly 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 Title class have been removed:
|
||
- countRevisionsBetween
|
||
- getAuthorsBetween
|
||
* The mw.language.commafy client-side method has been deprecated, to match
|
||
the deprecation of Language::commafy. Use mw.language.convertNumber
|
||
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.
|
||
* 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 beed hard deprecated. Instead,
|
||
MutableRevisionRecord should be constructed directly via constructor.
|
||
* 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.
|
||
* WatchedItem::getUser hard-deprecated in favor of ::getUserIdentity since 1.36
|
||
* LogEntry::getPerformer and its implementations have been hard-deprecated in
|
||
favor of ::getPerformerIdentity
|
||
* …
|
||
|
||
=== 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.
|
||
* A new hook was added, BeforeParserFetchTemplateRevisionRecord, which
|
||
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 override getParserOutputForIndexing().)
|
||
* Article::fetchContentObject, ::mContentObject, ::mContentLoaded,
|
||
::mRevIdFetched, deprecated since 1.32, were removed.
|
||
* Article::mParserOptions and ::setParserOptions were removed.
|
||
* Article and ImagePage::getEmptyPageParserOutput, unused, were removed.
|
||
* ParserCache 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.
|
||
|
||
== Compatibility ==
|
||
MediaWiki 1.36 requires PHP 7.2.22 or later, avoiding PHP 7.4.0–7.4.8, 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.freenode.net.
|