Release notes: https://phabricator.wikimedia.org/diffusion/GOJU/browse/master/History.md;v0.33.2 Bug: T158708 Bug: T226780 Bug: T227040 Bug: T227275 Depends-on: I3d7a990d0f32734a9048ec55d22035150a562f04 Change-Id: I4287a6f2e950a8ad0511b24f4a1c8074e4f427b3
386 lines
20 KiB
Text
386 lines
20 KiB
Text
= MediaWiki 1.34 =
|
||
|
||
== MediaWiki 1.34.0-PRERELEASE ==
|
||
|
||
THIS IS NOT A RELEASE YET
|
||
|
||
MediaWiki 1.34 is an alpha-quality development branch, and is not recommended
|
||
for use in production.
|
||
|
||
== Upgrading notes for 1.34 ==
|
||
1.34 has several database changes since 1.33, and will not work without schema
|
||
updates. Note that due to changes to some very large tables like the revision
|
||
table, the schema update may take quite long (minutes on a medium sized site,
|
||
many hours on a large site).
|
||
|
||
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.34 upgrades are below:
|
||
|
||
* …
|
||
|
||
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).
|
||
* $wgEnableSpecialMute (T218265) - This configuration controls whether
|
||
Special:Mute is available and whether to include a link to it on emails
|
||
originating from Special:Email.
|
||
|
||
==== Changed configuration ====
|
||
* $wgUseCdn, $wgCdnServers, $wgCdnServersNoPurge, and $wgCdnMaxAge – These four
|
||
CDN-related config variables have been renamed from being specific to Squid –
|
||
they were previously $wgUseSquid, $wgSquidServers, $wgSquidServersNoPurge, and
|
||
$wgSquidMaxage respectively. This aligns them with the related existing
|
||
variable $wgCdnMaxageLagged. The previous configuration variable names are
|
||
deprecated, but will be used as the fall back if they are still set.
|
||
Note that wgSquidPurgeUseHostHeader has not been renamed, as it is deprecated.
|
||
* (T27707) File type checks for image uploads have been relaxed to allow files
|
||
containing some HTML markup in metadata. As a result, the $wgAllowTitlesInSVG
|
||
setting is no longer applied and is now always true. Note that MSIE 7 may
|
||
still be able to misinterpret certain malformed PNG files as HTML.
|
||
* Introduced $wgVerifyMimeTypeIE to allow disabling the MSIE 6/7 file type
|
||
detection heuristic on upload, which is more conservative than the checks
|
||
that were changed above.
|
||
* …
|
||
|
||
==== Removed configuration ====
|
||
* $wgWikiDiff2MovedParagraphDetectionCutoff — If you still want a custom change
|
||
size threshold, please specify in php.ini, using the configuration variable
|
||
wikidiff2.moved_paragraph_detection_cutoff.
|
||
|
||
=== New user-facing features in 1.34 ===
|
||
* Special:Mute has been added as a quick way for users to block unwanted emails
|
||
from other users originating from Special:EmailUser.
|
||
|
||
=== 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.33.2.
|
||
* 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.
|
||
* Updated wikimedia/remex-html from 2.0.1 to 2.0.3.
|
||
* Updated monolog/monolog from 1.22.1 to 1.24.0 (dev-only).
|
||
* Updated wikimedia/object-factory from 1.0.0 to 2.0.0.
|
||
* Updated wikimedia/timestamp from 2.2.0 to 3.0.0.
|
||
* Updated wikimedia/xmp-reader from 0.6.2 to 0.6.3.
|
||
* …
|
||
|
||
==== 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,
|
||
deprecated in 1.25, has been removed.
|
||
|
||
=== Action API internal changes in 1.34 ===
|
||
* …
|
||
|
||
=== Languages updated in 1.34 ===
|
||
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.
|
||
|
||
* (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:
|
||
* CryptRand class
|
||
* CryptRand service
|
||
* Functions of the MWCryptRand class: singleton(), wasStrong() and generate().
|
||
* Language::setCode, deprecated in 1.32, was removed. Use Language::factory to
|
||
create a new Language object with a different language code.
|
||
* MWNamespace::clearCaches() has been removed. So has the $rebuild parameter
|
||
to MWNamespace::getCanonicalNamespaces(), which was deprecated since 1.31.
|
||
Instead, reset services, such as by calling $this->overrideMwServices() (if
|
||
your test extends MediaWikiTestCase). Services will generally not pick up
|
||
configuration changes from after they were created, so you must reset
|
||
services after any configuration change. Even if your code works now, it is
|
||
likely to break in future versions as more code is moved to services.
|
||
* The ill-defined "DatabaseOraclePostInit" hook has been removed.
|
||
* PreferencesFormLegacy and PreferencesForm classes, deprecated in 1.32, have
|
||
been removed.
|
||
* ObjectFactory class, deprecated in 1.31, has been removed.
|
||
* HWLDFWordAccumudlator class, deprecated in 1.28, has been removed.
|
||
* XMPInfo, XMPReader and XMPValidate, deprecated in 1.32, have been removed.
|
||
* The RedirectSpecialPage::execute method could sometimes return a Title object.
|
||
This behavior was removed, and the method now matches the parent signature
|
||
(SpecialPage::execute) which is to return HTML string or void.
|
||
To obtain the destination title, use RedirectSpecialPage::getRedirect.
|
||
* The 'recenteditcount' response property from action API action=query
|
||
list=allusers, deprecated in 1.25, has been removed.
|
||
* SearchEngine::userNamespaces(), SearchEngine::namespacesAsText(),
|
||
SearchEngine::create(), SearchEngine::getSearchTypes() and
|
||
SearchEngine::getNearMatch(), methods deprecated in 1.27, have been removed.
|
||
* FileRepo::streamFile(), deprecated in 1.26, has been removed.
|
||
* 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.
|
||
* OutputPage::enableSectionEditLinks(), OutputPage::sectionEditLinksEnabled(),
|
||
ParserOptions::getEditSection(), ParserOptions::setEditSection(), and
|
||
ParserOutput::getEditSectionTokens, ::getTOCEnabled, ::setEditSectionTokens,
|
||
and ::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.
|
||
* WikiPage::prepareContentForEdit now doesn't accept an integer for $revision,
|
||
was deprecated in 1.25.
|
||
* The jquery.byteLength module, deprecated in 1.31, was removed.
|
||
Use the mediawiki.String module instead.
|
||
* mw.language.specialCharacters, deprecated in 1.33, has been removed.
|
||
Use require( 'mediawiki.language.specialCharacters' ) instead.
|
||
* EditPage::submit(), deprecated in 1.29, has been removed. Use $this->edit()
|
||
directly.
|
||
* HTMLForm::getErrors(), deprecated in 1.28, has been removed. Use
|
||
getErrorsOrWarnings() instead.
|
||
* SpecialPage::getTitle(), deprecated in 1.23, has been removed. Use
|
||
SpecialPage::getPageTitle() instead.
|
||
* jquery.ui.effect-bounce, jquery.ui.effect-explode, jquery.ui.effect-fold
|
||
jquery.ui.effect-pulsate, jquery.ui.effect-slide, jquery.ui.effect-transfer,
|
||
which are no longer used, have now been removed.
|
||
* SpecialEmailUser::validateTarget(), ::getTarget() without a sender/user
|
||
specified, deprecated in 1.30, have been removed.
|
||
* BufferingStatsdDataFactory::getBuffer(), deprecated in 1.30, has been removed.
|
||
* The constant DB_SLAVE, deprecated in 1.28, has been removed. Use DB_REPLICA.
|
||
* Replacer, DoubleReplacer, HashtableReplacer and RegexlikeReplacer
|
||
(deprecated in 1.32) have been removed. Closures should be used instead.
|
||
* OutputPage::addWikiText(), ::addWikiTextWithTitle(), ::addWikiTextTitleTidy(),
|
||
::addWikiTextTidy(), ::addWikiTextTitle(), deprecated in 1.32, have been
|
||
removed.
|
||
* The $wgUseKeyHeader configuration option and the OutputPage::getKeyHeader()
|
||
method, deprecated in 1.32, have been removed.
|
||
* WebInstallerOutput::addWikiText(), deprecated in 1.32, has been removed.
|
||
* Parser::fetchFile(), deprecated in 1.32, has been removed. Use the method
|
||
Parser::fetchFileAndTitle() instead.
|
||
* The global function wfBCP47, deprecated in 1.31, has been removed.
|
||
* wfCountDown() function, deprecated in 1.31, has been removed. Use
|
||
\Maintenance::countDown() method instead.
|
||
* OutputPage::wrapWikiMsg() no longer accepts an options parameter. This was
|
||
deprecated since 1.20.
|
||
* Skin::outputPage() no longer accepts a context. This was deprecated in 1.20.
|
||
* Linker::link() no longer accepts a string for the query array, as was
|
||
deprecated in 1.20.
|
||
* PrefixSearch::titleSearch(), deprecated in 1.23, has been removed. Use the
|
||
SearchEngine::defaultPrefixSearch or ::completionSearch() methods instead.
|
||
* The UserRights hook, deprecated in 1.26, has been removed. Instead, use the
|
||
UserGroupsChanged hook.
|
||
* Skin::getDefaultInstance(), deprecated in 1.27, has been removed. Get the
|
||
instance from MediaWikiServices instead.
|
||
* The UserLoadFromSession hook, deprecated in 1.27, has been removed.
|
||
* The wfResetSessionID global function, deprecated in 1.27, has been removed.
|
||
Use MediaWiki\Session\SessionManager instead.
|
||
* The wfGetLBFactory global function, deprecated in 1.27, has been removed.
|
||
Use MediaWikiServices::getInstance()->getDBLoadBalancerFactory().
|
||
* The internal method OutputPage->addScriptFile() will no longer silently drop
|
||
calls that use an invalid path (i.e., something other than an absolute path,
|
||
protocol-relative URL, or full scheme URL), and will instead pass them to the
|
||
client where they will likely 404. This usage was deprecated in 1.24.
|
||
* Database::reportConnectionError, deprecated in 1.32, has been removed.
|
||
* APIEditBeforeSave hook, deprecated in 1.28, has been removed. Please see
|
||
EditFilterMergedContent hook for an alternative way to use this feature.
|
||
* API module methods getDescription(), getParamDescription(), & getExamples(),
|
||
all deprecated in 1.25 and ignored, have been removed.
|
||
* The API module method getDescriptionMessage(), deprecated in 1.30, has been
|
||
removed.
|
||
* The JavaScript global variable wgLoadScript has been removed. Use
|
||
mw.util.wikiScript( 'load' ) instead.
|
||
* ResourceLoader no longer creates the 'mw.legacy' placeholder object. It has
|
||
been unused since 1.16 and was deprecated in 1.22. To deprecate a property
|
||
in JavaScript, use mw.log.deprecate() instead.
|
||
* The 'user.groups' module, deprecated in 1.28, was removed.
|
||
Use the 'user' module instead.
|
||
* …
|
||
|
||
=== Deprecations in 1.34 ===
|
||
* 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 DatabaseBlock (for blocks stored in the
|
||
database), and SystemBlock (for temporary blocks created by the system).
|
||
SystemBlock should be used when creating any temporary blocks. Block is
|
||
a deprecated alias for DatabaseBlock.
|
||
* Parser::$mConf is deprecated. It will be removed entirely in a later version.
|
||
Some context can be found at T224165.
|
||
* Constructing Parser directly is deprecated. Obtain one from ParserFactory.
|
||
* Title::moveSubpages is deprecated. Use MovePage::moveSubpages or
|
||
MovePage::moveSubpagesIfAllowed.
|
||
* The MWNamespace class is deprecated. Use MediaWikiServices::getNamespaceInfo.
|
||
* (T62260) Hard deprecate Language::getExtraUserToggles() method.
|
||
* Language::viewPrevNext function is deprecated, use
|
||
PrevNextNavigationRenderer::buildPrevNextNavigation instead
|
||
* User::trackBlockWithCookie and DatabaseBlock::clearCookie are deprecated. Use
|
||
BlockManager::trackBlockWithCookie and BlockManager::clearCookie instead.
|
||
* DatabaseBlock::setCookie, DatabaseBlock::getCookieValue,
|
||
DatabaseBlock::getIdFromCookieValue and AbstractBlock::shouldTrackWithCookie
|
||
are moved to internal helper methods for BlockManager::trackBlockWithCookie.
|
||
* ResourceLoaderContext::getConfig and ResourceLoaderContext::getLogger have
|
||
been deprecated. Inside ResourceLoaderModule subclasses, use the local methods
|
||
instead. Elsewhere, use the methods from the ResourceLoader class.
|
||
* The Preprocessor_DOM implementation has been deprecated. It will be
|
||
removed in a future release. Use the Preprocessor_Hash implementation
|
||
instead.
|
||
* Sanitizer::attributeWhitelist() and Sanitizer::setupAttributeWhitelist()
|
||
have been deprecated; they will be made private in the future.
|
||
* SearchResult::termMatches() method is deprecated. It was unreliable because
|
||
only populated by few search engine implementations. Use
|
||
SqlSearchResult::getTermMatches() if really needed.
|
||
* SearchResult::getTextSnippet( $terms ) the $terms param is being deprecated
|
||
and should no longer be passed. Search engine implemenations should be
|
||
responsible for carrying relevant information needed for highlighting with
|
||
their own SearchResultSet/SearchResult sub-classes.
|
||
* SearchEngine::$searchTerms protected field is deprecated. Moved to
|
||
SearchDatabase.
|
||
* The use of the $terms param in the ShowSearchHit and ShowSearchHitTitle
|
||
hooks is highly discouraged as it's only populated by SearchDatabase search
|
||
engines.
|
||
* Skin::escapeSearchLink() is deprecated. Use Skin::getSearchLink() or the skin
|
||
template option 'searchaction' instead.
|
||
* LoadBalancer::haveIndex() and LoadBalancer::isNonZeroLoad() have
|
||
been deprecated.
|
||
|
||
=== Other changes in 1.34 ===
|
||
* …
|
||
|
||
== Compatibility ==
|
||
MediaWiki 1.34 requires PHP 7.0.13 or later. Although HHVM 3.18.5 or later is
|
||
supported, it is generally advised to use PHP 7.0.13 or later for long term
|
||
support.
|
||
|
||
MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
|
||
but support for them is somewhat less mature. There is experimental support for
|
||
Oracle and Microsoft SQL Server.
|
||
|
||
The supported versions are:
|
||
|
||
* MySQL 5.5.8 or later
|
||
* PostgreSQL 9.2 or later
|
||
* SQLite 3.8.0 or later
|
||
* Oracle 9.0.1 or later
|
||
* Microsoft SQL Server 2005 (9.00.1399)
|
||
|
||
== 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.
|