Release notes/1.42
This page contains release notes for a stable version of MediaWiki. |
MediaWiki 1.42
editPHP 8.1 workboard: https://phabricator.wikimedia.org/tag/php_8.1_support/
PHP 8.2 workboard: https://phabricator.wikimedia.org/tag/php_8.2_support/
PHP 8.3 workboard: https://phabricator.wikimedia.org/tag/php_8.3_support/
MediaWiki 1.42.3
editThis is a maintenance release of the MediaWiki 1.42 branch.
Changes since MediaWiki 1.42.2
edit- Fix issue related to backport of AbuseFilter patch for T372998.
MediaWiki 1.42.2
editThis is a security and maintenance release of the MediaWiki 1.42 branch.
Changes since MediaWiki 1.42.1
edit- Localisation updates.
- Parser: Deprecate use of mOutput before initialization.
- (T365565) PrefixSearch: Make sure $prefix is a string.
- Clarify that $wgAllowCrossOrigin only applies to REST.
- composer.json: Add 5 more ext- to suggests.
- resources: Fix 404 Not Found for foreign Financial-Times/polyfill-library.
- ResourceLoader: Upgrade wikimedia/less.php to 4.4.1.
- SpecialExport: Prevent passing null to strtolower.
Additionally, some language support improvements which went out in 1.42.0 were not noted; they are included here for completeness:
- (T343865) Added language support for Pu–Xian Min (Simplified Han script) (cpx-hans).
- (T343865) Added language support for Pu–Xian Min (Traditional Han script) (cpx-hant).
- (T284043) Added language support for Manchu (mnc).
- (T284043) Added language support for Manchu (Mongolian script) (mnc-mong).
- Added language converter for Central Moroccan Tamazigh (zgh).
MediaWiki 1.42.1
editThis is a maintenance release of the MediaWiki 1.42 branch.
Changes since MediaWiki 1.42.0
edit- Localisation updates.
- Name the PagerTools array entries to allow hooks to unset them.
MediaWiki 1.42.0
editChanges since MediaWiki 1.42.0-rc.0
edit- Localisation updates.
- wrapOldPasswords: Improve progress output and decrease batch size.
- (T365060) Serialization test cases: fix filename after ParserOutput namespacing.
- Use virtual domain when running update maintenance scripts.
- (T361367) ApiFeedWatchlist: Fix handling of array parameters.
- (T366130) EncryptedPassword: Store default parameters as strings.
MediaWiki 1.42.0-rc.0
editUpgrading notes for 1.42
editDon't forget to always back up your database before upgrading!
See the file UPGRADE for more detailed per-version upgrade instructions from the oldest supported upgrading version, MediaWiki 1.35.
Some specific notes for MediaWiki 1.42 upgrades are below:
- MediaWiki now requires Composer 2.x, and any related (vendor) files generated by Composer must be generated by Composer 2.x. Composer 1.x is mostly end-of-life upstream, and using it will result in slower actions when downloading and installing packages. See the upstream blog post at https://blog.packagist.com/deprecating-composer-1-support/ for further information.
For notes on 1.41.x and older releases, see HISTORY.
Configuration changes for system administrators in 1.42
edit- Composer 1.x is no longer supported and cannot be used with MediaWiki.
New configuration
edit- $wgMicroStashType: The object cache backend for the MicroStash service.
- $wgEditRecoveryExpiry: Number of seconds to keep edit recovery data after the edit is stored.
- $wgDjvuUseBoxedCommand and $wgDjvuShell: A temporary flag to control whether or not to use BoxedCommand when wrapping DejaVu rendering and the command to call if so.
- $wgConditionalUserOptions: It allows defining user properties with defaults varying by user without growing the
user_properties
table. A typical use case is to enable a feature only for users created after a certain date. - $wgGrantRiskGroups: Grant risk levels indicate on various UIs which grants should be considered risky. (phab:T290790)
- $wgTempAccountCreationThrottle: Like AccountCreationThrottle, but for managing temporary account creations.
Changed configuration
edit- $wgAutoCreateTempUser: 'matchPattern' now supports multiple match patterns.
- $wgLogActionsHandlers is now ObjectFactory compatible.
- $wgBotPasswordsCluster and $wgBotPasswordsDatabase have been deprecated; use
$wgVirtualDomainsMapping['virtual-botpasswords']
instead. - The $wgMainPageIsDomainRoot setting is no longer considered experimental.
- $wgAutoCreateTempUser is updated to use a different format for temporary accounts. This configuration value is marked as unstable, so breaking changes were expected. If your wiki used temporary accounts before 1.42, you must override the configuration value to match the old format of *$1.
Removed configuration
edit- $wgDisableCookieCheck has been removed.
- $wgStatsCacheType has been removed. Set $wgMicroStashType instead.
- $wgJobSerialCommitThreshold has been removed without deprecation. According to a code search, it wasn't used anywhere, and any setups using this configuration will perform fine but might be less performant.
- $wgLogoHD, deprecated since 1.35, has been removed. Use $wgLogo instead.
- $wgContentHandlerTextFallback, deprecated since 1.37, has been removed. It is no longer customizable.
- $wgSquidPurgeUseHostHeader, deprecated since 1.33, has been removed. It is no longer customizable and always true.
- $wgAllowImageTag, deprecated since 1.35, has been removed. Register an extension tag named
<img>
instead. - $wgMinimalPasswordLength and $wgMaximalPasswordLength, deprecated since 1.26, have been dropped. Use $wgPasswordPolicy instead.
- $wgUseMediaWikiUIEverywhere has been removed.
- $wgHTMLFormAllowTableFormat has been removed.
- $wgOpenSearchTemplate, deprecated since 1.25, has been removed. Use
$wgOpenSearchTemplates['application/x-suggestions+json']
instead. - $wgUseSameSiteLegacyCookies has been removed.
New user-facing features in 1.42
edit- (phab:T308160)
filter:
is now allowed in inline CSS in wikitext
New developer features in 1.42
edit- (phab:T326466) MediaWikiIntegrationTestCase's database and set-up code now avoids using dynamic properties, which was causing deprecation warnings in PHP 8.2.
- (phab:T13555) MediaWiki now includes styles that allow more accessible markup for section headings. MediaWiki's own HTML output will be changed in the future. More information: https://www.mediawiki.org/wiki/Heading_HTML_changes
- (phab:T193472) PHP Notice and Warning errors that are silenced (e.g., by the "@" operator, error_reporting directive, or Wikimedia\AtEase) are now logged to a new "silenced-error" channel.
- (phab:T347347) The CLI installer accepts a "--with-developmentsettings" argument to require the
DevelopmentSettings.php
file at install time. - (phab:T350054) MediaWiki's ResourceLoader has been updated to add basic support for code-splitting (aka "tree-shaking") when using the Codex component library. A ResourceLoader module can now specify a list of "codexComponents" in its module definition and ensure that only the code for those components gets sent to the client. More information: https://www.mediawiki.org/wiki/Codex#Subset_of_components
- (phab:T345185) The
SessionProviderInterface
now allows defining providers that are exempt from rights checks when auto-creating users.
External library changes in 1.42
editNew external libraries
edit- Added mediawiki/json-codec at v2.2.1.
- Added mck89/peast at v1.16.2.
Changed external libraries
edit- Updated OOUI from v0.48.1 to v0.49.1.
- Updated OOjs Router from 0.3.0 to 0.5.0.
- Updated codex, codex-design-tokens and codex-icons from v1.0.0 to v1.3.6.
- Updated Vue from v3.2.37-compat to v3.3.9.
- Updated composer/semver from 3.3.2 to 3.4.0.
- Updated guzzlehttp/guzzle from 7.5.3 to 7.7.1.
- Updated monolog/monolog from 2.2.0 to 2.9.2.
- Updated pear/mail from 1.5.1 to 1.6.0.
- Updated pear/mail_mime from 1.10.11 to 1.10.12.
- Updated pear/net_smtp from 1.10.1 to 1.11.1.
- Updated psr/http-message from 1.0.1 to 1.1.
- Updated symfony/polyfill-php80 from 1.28.0 to 1.29.0.
- Updated symfony/polyfill-php81 from 1.28.0 to 1.29.0.
- Updated symfony/polyfill-php82 from 1.28.0 to 1.29.0.
- Updated symfony/polyfill-php83 from 1.28.0 to 1.29.0.
- Updated symfony/yaml from 5.4.23 to 5.4.35.
- Updated wikimedia/less.php from 4.1.1 to 4.2.1.
- Updated wikimedia/remex-html from 4.0.1 to 4.1.0.
- Updated wikimedia/minify from 2.5.1 to 2.7.0.
- Updated wikimedia/relpath from 3.0.0 to 4.0.0.
- Updated wikimedia/shellbox from 4.0.0 to 4.0.1.
Changed development-only external libraries
edit- Updated QUnit from v2.19.4 to v2.20.0.
- Updated composer/spdx-licenses from 1.5.7 to 1.5.8.
- Updated doctrine/dbal from 3.4.2 to 3.7.2.
- Updated doctrine/sql-formatter from 1.1.1 to 1.1.3.
- Updated grunt-banana-checker from 0.11.0 to 0.11.1.
- Updated mediawiki/mediawiki-codesniffer from 42.0.0 to 43.0.0.
- Updated mediawiki/mediawiki-phan-config from 0.13.0 to 0.14.0.
- Updated php-parallel-lint/php-parallel-lint from 1.3.2 to 1.4.0.
- Updated phpunit/phpunit from 9.5.28 to 9.6.16.
- Updated psy/psysh from ^0.11.1 to ^0.12.3.
- Updated seld/jsonlint from 1.8.3 to 1.10.1.
- Updated wikimedia/testing-access-wrapper from 2.0.0 to 3.0.0.
Action API changes in 1.42
edit- APIQueryTags now includes "software" in the "source" array for software-generated tags. Reliance on this array's "extension" entries is now deprecated, but they will remain for backward compatibility.
Languages updated in 1.42
editMediaWiki 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.
- (phab:T268143) Language variant conversion has been removed for Kazakh.
- (phab:T352776) Updated autonym spelling for the Mon language (mnw).
- (phab:T351874) Added language support for Komering (kge).
- (phab:T351992) Added language support for Efik (efi).
- (phab:T352954) Added language support for Rutul (rut).
- (phab:T353058) Added language support for Arbëresh (aae).
- (phab:T353307) Added language support for Guadeloupean Creole (gcf).
- (phab:T353500) Added language support for Southeastern Kolami (nit).
- (phab:T354519) Added language support for Tooro (ttj).
- (phab:T354926) Added language support for Nyoro (nyo).
- (phab:T356616) Added language support for Chinook Jargon (chn).
- (phab:T357879) Added language support for Ibibio (ibb).
Breaking changes in 1.42
edit- (phab:T340802) ResourceLoader: The target system is no longer active; all modules will load on all platforms even if they are marked as desktop- or mobile-only in the 'targets' field, which is no longer read. As part of this, the internal methods
RL\Module::setTarget()
&::getTargets()
, andOutputPage::setTarget()
have been removed. - TitleArray, deprecated since 1.41, has been removed.
- UserRightsProxy, deprecated since 1.38, has been removed.
SiteConfiguration::getConfig()
, deprecated in 1.41, has been removed.- UserLoginCompleteHook is always called with its
$direct
parameter set to booleantrue
. Thefalse
case has been removed. MagicWord::load()
has been marked @internal and may change without further notice.- All classes that implemented the IDBAccessObject interface and all interfaces that extended it no longer do that. See https://w.wiki/9DAX for more info.
- BagOStuff::setNewPreparedValues() now emits deprecation warnings.
- The type of the last parameter of
BeforeInitializeHook::onBeforeInitialize
andMediaWikiPerformActionHook::onMediaWikiPerformAction
changed fromMediaWiki
toActionEntryPoint
. Relevant methods are still available on the object. - Classes overruling
Maintenance::finalSetup()
must now declare the$settings
parameter and pass it on when calling the parent implementation. MaintenanceRunner will always provide this parameter when callingfinalSetup()
. WebResponse::disableForPostSend()
is no longer static.- MediaWiki's virtual REST internal library has been removed in favor of an HTTP library like Guzzle, MultiHttpClient, or MwHttpRequest.
- Several deprecated methods have been removed from the Content interface in favor of the respective methods in ContentHandlers. Callers should use a more narrow interface like ContentRenderer or ContentTransformer when possible. The following methods have been removed from the Content class:
getParserOutput()
preSaveTransform()
preloadTransform()
prepareSave()
User::blockedFor()
andAbstractBlock::getReason()
, deprecated in 1.35, have been removed. UseAbstractBlock::getReasonComment()
instead.SerializedValueContainer::newUnified()
, deprecated in 1.41, has been removed.- Use of ActorMigration for any of the following tables, deprecated since 1.34, is no longer supported:
ParserOutput::setFlag()
and::getFlag()
, deprecated in 1.38, were removed. You should use::setOutputFlag()
and::getOutputFlag()
instead.ParserOutput::getCategories()
, deprecated in 1.40, has been removed. You should use::getCategoryNames()
and::getCategorySortKey()
instead.ParserOutput::getTOCHTML()
, deprecated in 1.40, has been removed. You should use::getTOCData()
instead.- The parser does not substitute the default category sort key at parse time; this is substituted when the category links table is updated instead. As a result {{DEFAULTSORT}} will affect all the contents of the page (not just categories added after the location of {{DEFAULTSORT}} in the article) and
ParserOutput::getCategorySortKey()
will return the empty string (still meaning "use the default sort key") instead of the immediate value of {{DEFAULTSORT}}. ParserOutput::getCategorySortKey() will directly reflect the category link contents, instead of having postprocessing done to it (character references decoded, newlines replaced, language conversion). That postprocessing is now done when the category links table is updated, and so it consistently applies even when categories are added directly via API. PostgresUpdater::addPgEnumValue()
, unused everywhere, has been removed without deprecation. Use of ENUM is highly discouraged.ILoadBalancer::getAnyOpenConnection()
has been removed without deprecation, use::getConnection()
instead.- The unused method
CommentStore::getFields()
has been removed without depreaction. - LanguageConverter's internal properties, all deprecated in 1.35 or 1.36, have now had their deprecated property accessors dropped:
- mConvRuleTitle
- mUserVariant
- mHeaderVariant
- mMaxDepth
- mVarSeparatorPattern
- mLangObj
- mTablesLoaded
- mTables
- mVariants
- mMainLanguageCode
- mVariantFallbacks
- mFlags
- mVariantNames
- mDescCodeSep
- mDescVarSep
OutputPage::addParserOutputText
has been marked@internal
since there are no known users of it. Its old behavior has been deprecated and will change in the future without further notice.- Some methods of ConnectionManager and SessionConsistentConnectionManager, previously deprecated, have been removed:
::releaseConnection()
, deprecated in 1.38; do not use::getWriteConnectionRef()
, deprecated in 1.39; usegetWriteConnection()
::getReadConnectionRef()
, deprecated in 1.38; usegetReadConnection()
::getLazyWriteConnectionRef()
, deprecated in 1.39; usegetWriteConnection()
::getLazyReadConnectionRef()
, deprecated in 1.38; usegetReadConnection()
CoreParserFunctions::mwnamespace()
, deprecated in 1.39, has been removed. UseCoreParserFunctions::namespace()
instead.Processor::
andExtensionProcessor::getExtraAutoloaderPaths()
, deprecated in 1.39, have been removed; use::getExtractedAutoloadInfo()
instead.MWExceptionHandler::rollbackMasterChangesAndLog()
, deprecated in 1.37, has been removed. Use::rollbackPrimaryChangesAndLog()
instead.- Passing a custom database connection to
DatabaseBlockStore::insertBlock()
, deprecated since 1.41, is no longer supported. LanguageConverterFactory::isTitleConversionDisabled()
, deprecated in 1.36, has been removed. Use::isLinkConversionDisabled()
instead.MediaWikiIntegrationTestCase::$tablesUsed
has been deprecated. The framework now detects these automatically.- Passing an actor ID to the constructor of UserIdentityValue, deprecated since 1.36, is no longer being supported.
- Support for setting dynamic property on StatusValue object has been removed. To pass your arbitrary data along the object, use
StatusValue::statusData
property (which is always declared). - The global function
wfReportTime()
, deprecated since 1.40, has been removed. - The skin template parameter
'reporttime'
, deprecated since 1.41, has been removed. WikiPage::getPageIsRedirectField()
, deprecated since 1.41, has been removed.WikiPage::insertRedirect()
, deprecated since 1.41, has been removed.- Several methods in PageArchive, all deprecated in 1.38, have been removed:
::listRevisions()
::getRevisionRecordByTimestamp()
::getArchivedRevisionRecord()
::getPreviousRevisionRecord()
::getLastRevisionId()
::isDeleted()
::getFileStatus()
::getRevisionStatus()
Database
,DatabaseInstaller
,DatabaseUpdater
,DBPrimaryPos
,ResultWrapper
andSQLPlatform
are no longer stable to extend. It is not possible to define database types in an extension.UserDef::PARAM_ALLOWED_USER_TYPES
now differentiates between temporary account usernames and user accounts. Any endpoints that want temp users to be valid but were passing a name through will break. Temp users must now be explicitly allowed.- The
Hooks
class, a legacy wrapper forHooksContainer
, has been removed. All of its contents have been previously deprecated in 1.35 (or 1.41 for::runner()
):::register()
::clear(),
::isRegistered()
::getHandlers()
::run()
::runWithoutAbort()
::runner()
Article::__get()
,::__set()
, deprecated since 1.35, have been removed.- Several API calls have been updated to return a
'temp'
user flag:- ApiQueryImageInfo
- ApiQueryLogEvents
- ApiQueryRecentChanges
- APIs extended from ApiQueryRevisionsBase
Parser::getCustomDefaultSort()
and::setDefaultSort()
, deprecated since 1.38, have been removed.UserOptionsLookup::getDefaultOptions()
andUserOptionsLookup::getDefaultOption()
now accept an UserIdentity, to take conditional defaults for user properties into account. When conditional defaults are used, calling those methods without the UserIdentity might produce unexpected results.- Installer related classes have been namespaced without having aliases added. The following have been moved to
MediaWiki\Installer
:- CliInstaller
- DatabaseInstaller
- InstallDocFormatter
- Installer
- InstallerOverrides
- InstallerSessionProvider
- LocalSettingsGenerator
- MysqlInstaller
- PostgresInstaller
- PostgresUpdater
- SqliteInstaller
- SqliteUpdater
- WebInstaller
- WebInstallerComplete
- WebInstallerCopying
- WebInstallerDBConnect
- WebInstallerDBSettings
- WebInstallerDocument
- WebInstallerExistingWikis
- WebInstallerInstall
- WebInstallerLanguage
- WebInstallerName
- WebInstallerOptions
- WebInstallerOutput
- WebInstallerPage
- WebInstallerReleaseNotes
- WebInstallerRestart
- WebInstallerUpgrade
- WebInstallerUpgradeDoc
- WebInstallerWelcome
mediawiki.ui/variables.less
, deprecated since 1.41, has been removed in favor ofmediawiki.skin.variables.less
.- The module
jquery.cookie
(deprecated as of 1.41) has been removed. Please usemediawiki.cookie
instead - The no-op module
es6-polyfills
(deprecated as of 1.41) has been removed. - Log formatters (as defined in $wgLogActionsHandlers) are now created by
ObjectFactory
, which means their constructors must be public. Legacy log formatters using callbacks instead of class names are no longer supported. - The old aliases for the namespaced ResourceLoader classes, deprecated since they were moved in MediaWiki 1.39, have now been dropped:
- ResourceLoader – use MediaWiki\ResourceLoader\ResourceLoader
- ResourceLoaderCircularDependencyError – use MediaWiki\ResourceLoader\CircularDependencyError
- ResourceLoaderClientHtml – use MediaWiki\ResourceLoader\ClientHtml
- ResourceLoaderCodexModule – use MediaWiki\ResourceLoader\CodexModule
- ResourceLoaderContext – use MediaWiki\ResourceLoader\Context
- ResourceLoaderFileModule – use MediaWiki\ResourceLoader\FileModule
- ResourceLoaderFilePath – use MediaWiki\ResourceLoader\FilePath
- ResourceLoaderForeignApiModule – use MediaWiki\ResourceLoader\ForeignApiModule
- ResourceLoaderImage – use MediaWiki\ResourceLoader\Image
- ResourceLoaderImageModule – use MediaWiki\ResourceLoader\ImageModule
- ResourceLoaderLessVarFileModule – use MediaWiki\ResourceLoader\LessVarFileModule
- ResourceLoaderModule – use MediaWiki\ResourceLoader\Module
- ResourceLoaderMwUrlModule – use MediaWiki\ResourceLoader\MwUrlModule
- ResourceLoaderOOUIFileModule – use MediaWiki\ResourceLoader\OOUIFileModule
- ResourceLoaderOOUIIconPackModule – use MediaWiki\ResourceLoader\OOUIIconPackModule
- ResourceLoaderOOUIImageModule – use MediaWiki\ResourceLoader\OOUIImageModule
- ResourceLoaderOOUIModule – use MediaWiki\ResourceLoader\OOUIModule
- ResourceLoaderSiteModule – use MediaWiki\ResourceLoader\SiteModule
- ResourceLoaderSiteStylesModule – use MediaWiki\ResourceLoader\SiteStylesModule
- ResourceLoaderSkinModule – use MediaWiki\ResourceLoader\SkinModule
- ResourceLoaderStartUpModule – use MediaWiki\ResourceLoader\StartUpModule
- ResourceLoaderUserModule – use MediaWiki\ResourceLoader\UserModule
- ResourceLoaderUserOptionsModule – use MediaWiki\ResourceLoader\UserOptionsModule
- ResourceLoaderUserStylesModule – use MediaWiki\ResourceLoader\UserStylesModule
- ResourceLoaderWikiModule – use MediaWiki\ResourceLoader\WikiModule
- DerivativeResourceLoaderContext – use MediaWiki\ResourceLoader\DerivativeContext
- MessageBlobStore – use MediaWiki\ResourceLoader\MessageBlobStore
- VueComponentParser – use MediaWiki\ResourceLoader\VueComponentParser
- (phab:T318989)
Skin::lastModified
, deprecated since 1.40, has been removed. - Composer 1.x is no longer supported, and can no longer be used with MediaWiki.
Title::GAID_FOR_UPDATE
, deprecated in 1.34, has been removed. Instead, your code should useIDBAccessObject::READ_LATEST
.- Six private Title class members, deprecated in 1.37, are now fully private; use their corresponding accessor methods:
- $mTextform -> getText()
- $mUrlform -> getPartialURL()
- $mDbkeyform -> getDBkey()
- $mNamespace -> getNamespace()
- $mInterwiki -> getInterwiki()
- $mFragment -> getFragment()
Skin::bottomScripts
, deprecated since 1.37, has been removed.- Fallback index and options have been removed from
DBAccessObjectUtils::getDBOptions()
without deprecation. - The deprecated class aliases for now-namespaced or renamed PHP classes that were added in or before 1.39 LTS have now been removed:
- Blob -> Wikimedia\Rdbms\Blob
- Block -> MediaWiki\Block\DatabaseBlock
- DBAccessError -> Wikimedia\Rdbms\DBAccessError
- DBConnectionError -> Wikimedia\Rdbms\DBConnectionError
- DBError -> Wikimedia\Rdbms\DBError
- DBExpectedError -> Wikimedia\Rdbms\DBExpectedError
- DBQueryError -> Wikimedia\Rdbms\DBQueryError
- DBReadOnlyError -> Wikimedia\Rdbms\DBReadOnlyError
- DBReplicationWaitError -> Wikimedia\Rdbms\DBReplicationWaitError
- DBTransactionError -> Wikimedia\Rdbms\DBTransactionError
- DBTransactionSizeError -> Wikimedia\Rdbms\DBTransactionSizeError
- DBUnexpectedError -> Wikimedia\Rdbms\DBUnexpectedError
- DatabaseMysqlBase -> Wikimedia\Rdbms\DatabaseMySQL
- DatabaseMysqli -> Wikimedia\Rdbms\DatabaseMySQL
- EasyDeflate -> Deflate
- Field -> Wikimedia\Rdbms\Field
- IMaintainableDatabase -> Wikimedia\Rdbms\IMaintainableDatabase
- LinksDeletionUpdate -> MediaWiki\Deferred\LinksUpdate\LinksDeletionUpdate
- LinksUpdate -> MediaWiki\Deferred\LinksUpdate\LinksUpdate
- LoadBalancer -> Wikimedia\Rdbms\LoadBalancer
- LoadBalancerSingle -> Wikimedia\Rdbms\LoadBalancerSingle
- RCFeedEngine -> FormattedRCFeed
- RandomPage -> MediaWiki\Specials\SpecialRandomPage
- The return value of
IDatabase::upsert()
, deprecated since 1.33, has been removed. - Instancing
MediaWiki\Specials\SpecialRandomPage
without injected services has been removed. mediawiki.ui/utilities.less
with its three layout CSS classes has been removedSpecialPage::listed()
and::setListed()
, deprecated since 1.35, have both been removed. Use::isListed()
to read, and over-ride by implementingisListed()
or by sub-classingUnlistedSpecialPage
.BlockListPager::getTotalAutoblocks()
was removed.
Deprecations in 1.42
edit- (phab:T273239)
wfGetDB()
, deprecated in 1.39, now emits deprecation warnings. Most code can migrate toMediaWikiServices::getInstance()->getConnectionProvider()->getReplicaDatabase()
or…->getPrimaryDatabase()
as appropriate. - (phab:T166010) All PHP code in MediaWiki is slowly being moved to be in a class namespace as appropriate, so that we can use PSR-4 auto-loading, which will speed up general code loading of MediaWiki. The old global namespace class names are being left behind as deprecated aliases.
In this release of MediaWiki, XYZ classes now have a namespace and XYZ do not yet (XYZ% done, up from 63% in MediaWiki 1.41.0). The following have newly been moved:
- MediaWiki\Cache:
- BacklinkCache
- FileCacheBase
- GenderCache
- HTMLCacheUpdater (and fix case for consistency with HTMLFileCache)
- LinkBatch
- LinkCache
- UserCache
- MediaWiki\Context:
- ContextSource
- DerivativeContextSource
- IContextSource
- MutableContext
- RequestContext
- MediaWiki\Deferred:
- AtomicSectionUpdate
- AutoCommitUpdate
- CdnCacheUpdate
- DataUpdate
- DeferrableCallback
- DeferrableUpdate
- DeferredUpdates
- DeferredUpdatesScope
- DeferredUpdatesScopeMediaWikiStack
- DeferredUpdatesScopeStack
- EnqueueableDataUpdate
- HtmlFileCacheUpdate
- JobQueueEnqueueUpdate
- MWCallableUpdate
- MergeableUpdate
- MessageCacheUpdate
- SearchUpdate
- SendPasswordResetEmailUpdate
- SiteStatsUpdate
- TransactionRoundAwareUpdate
- TransactionRoundDefiningUpdate
- UserEditCountInfo
- UserEditCountUpdate
- MediaWiki\HTMLForm:
- CodexHTMLForm
- CollapsibleFieldsetLayout
- HTMLForm
- HTMLFormActionFieldLayout
- HTMLFormElement
- HTMLFormField
- HTMLFormFieldLayout
- HTMLFormFieldRequiredOptionsException
- HTMLNestedFilterable
- OOUIHTMLForm
- VFormHTMLForm
- MediaWiki\HTMLForm\Field:
- HTMLApiField
- HTMLAutoCompleteSelectField
- HTMLButtonField
- HTMLCheckField
- HTMLCheckMatrix
- HTMLComboboxField
- HTMLDateTimeField
- HTMLEditTools
- HTMLExpiryField
- HTMLFileField
- HTMLFloatField
- HTMLFormFieldCloner
- HTMLFormFieldWithButton
- HTMLHiddenField
- HTMLInfoField
- HTMLIntField
- HTMLMultiSelectField
- HTMLNamespacesMultiselectField
- HTMLRadioField
- HTMLRestrictionsField
- HTMLSelectAndOtherField
- HTMLSelectField
- HTMLSelectLanguageField
- HTMLSelectLimitField
- HTMLSelectNamespace
- HTMLSelectNamespaceWithButton
- HTMLSelectOrOtherField
- HTMLSizeFilterField
- HTMLSubmitField
- HTMLTagFilter
- HTMLTagMultiselectField
- HTMLTextAreaField
- HTMLTextField
- HTMLTextFieldWithButton
- HTMLTimezoneField
- HTMLTitleTextField
- HTMLTitlesMultiselectField
- HTMLToggleSwitchField
- HTMLUserTextField
- HTMLUsersMultiselectField
- MediaWiki\HTMLForm\Field:
- MediaWiki\Installer:
- DatabaseUpdater
- MysqlUpdater
- MediaWiki\LinkedData:
- PageDataRequestHandler
- MediaWiki\Maintenance:
- Version
- MediaWiki\Message:
- Message
- MediaWiki\Parser:
- Parser
- ParserOutput
- MediaWiki\PoolCounter:
- PoolCounter
- PoolCounterNull
- PoolCounterRedis
- PoolCounterWork
- PoolCounterWorkViaCallback
- PoolWorkArticleView
- PoolWorkArticleViewCurrent
- PoolWorkArticleViewOld
- MediaWiki\Site:
- CachingSiteStore
- DBSiteStore
- HashSiteStore
- MediaWikiSite
- Site
- SiteExporter
- SiteImporter
- SiteList
- SiteLookup
- SiteStore
- (phab:T352284) MediaWiki\User\Options:
- DefaultOptionsLookup
- UserOptionsLookup
- UserOptionsManager
- StaticUserOptionsLookup
- Some hook classes have been moved from the generic MediaWiki\Hooks namespace to live closer to the code which uses them:
- MediaWiki\Output\Hook:
- AfterBuildFeedLinksHook
- AfterFinalPageOutputHook
- BeforePageDisplayHook
- BeforePageRedirectHook
- GetCacheVaryCookiesHook
- LanguageLinksHook
- MakeGlobalVariablesScriptHook
- OutputPageAfterGetHeadLinksArrayHook
- OutputPageBeforeHTMLHook
- OutputPageBodyAttributesHook
- OutputPageCheckLastModifiedHook
- OutputPageMakeCategoryLinksHook
- OutputPageParserOutputHook
- MediaWiki\Output\Hook:
- API modules using
ApiBase::requirePostedParameters()
must also overridemustBePosted()
to return true. - Overriding
MWException::getHTML()
,::getText()
,::getPageTitle()
, and::reportHTML()
in order to display custom exception messages is now deprecated. Provide the error message when constructing the Exception, or if you need a whole custom error page, useErrorPageError
instead. - Using
new ImportReporter( … )
ornew ApiImportReporter( … )
without the$context
parameter is now deprecated. - Using
WikiImporterFactory::getWikiImporter()
without the$performer
parameter is now deprecated. BlockManager::getUserBlock()
was deprecated. Instead useBlockManager::getBlock()
, which expects the caller to do ipblock-exempt checking.- The
composer phpunit:entrypoint
entrypoint has been deprecated, along with bootstrap.integration.php and suite.xml. Run tests withcomposer phpunit
instead, or simplyvendor/bin/phpunit
, which usebootstrap.php
andphpunit.xml.dist
. - The global variable $wgCommandLineMode is deprecated. In most cases checks for
$wgCommandLineMode
can be replaced withMW_ENTRY_POINT === 'cli'
. - The global function
wfUnpack
is deprecated and emits deprecation warnings. UseStringUtils::unpack
instead. SpecialEmailUser::getTarget()
has been deprecated.User::isBlocked()
,::isBlockedFromCreateAccount()
and::isBlockedFrom()
now emit deprecation warnings. They were deprecated since 1.34, 1.37 and 1.33 respectively.DatabaseBlock::newFromID()
was deprecated and will emit deprecation warnings. Instead useDatabaseBlockStore::newFromID()
.DatabaseBlock::getAutoblockExpiry()
was deprecated without replacement.MagicWord::getId()
has been deprecated.MagicWordFactory::getSubstIDs()
has been deprecated.Status::setMessageLocalizer
is deprecated. Callers that want to control the localization of the Status object should obtain a StatusFormatter from the StatusFormatterFactory.Html::buttonAttributes()
andHtml::getTextInputAttributes()
methods no longer do anything and have been deprecated.DatabaseBlock::doAutoblock
and::updateTimestamp
are now deprecated, useDatabaseBlockStore::doAutoblock
and::updateTimestamp
instead.- The
MediaWiki
class has been deprecated. Type hints in hooks should be changed to refer toMediaWikiEntryPoint
instead. Note that extensions should not define their own entry points and should not interfere with the state ofMediaWikiEntryPoint
instances. - Various methods in
ObjectCache
have been deprecated and their equivalent made available inObjectCacheFactory
, use them instead:- ::getInstance() -> ObjectCacheFactory::getInstance()
- ::newFromParams() -> ObjectCacheFactory::newFromParams()
- ::newAnything() -> ObjectCacheFactory::newInstance( ObjectCache::getAnythingId() )
- ::getLocalServerInstance() -> ObjectCacheFactory::getLocalServerInstance()
- ::clear() -> ObjectCacheFactory::clear()
- In addition, the
ObjectCache::$instances
member has been deprecated as well.
- Vuex has been deprecated in favor of its successor, Pinia. Though deprecated, Vuex 4 will remain accessible for the foreseeable future. Pinia should be used for new projects.
Linker::makeHeadline()
has been deprecated.SerializedValueContainer::isUnified()
has been deprecated and now emits deprecation warnings since 1.42.Linker::generateTOC()
,Linker::tocIndent()
,Linker::tocUnindent()
,Linker::tocLine()
,Linker::tocLineEnd()
,Linker::tocList()
are deprecated.Title::getBrokenLinksFrom()
has been deprecated.LogFormatter
subclasses now emit deprecation warnings unless they are constructed usingLogFormatterFactory
.ReplicatedBagOStuff
has been deprecated since 1.42.- The third argument to
ContentRenderer::getParserOutput()
now accepts aRevisionRecord
orWikiRevision
; passing an integer revision ID has been deprecated and emits a warning. - Passing a
null
value toParserOutput::setPageProperty()
has been deprecated and emits a warning; pass an empty string or use::unsetPageProperty()
instead. - Passing a non-string value to
ParserOutput::setPageProperty()
has been deprecated; use::setNumericPageProperty()
instead. - Passing a non-scalar value to
ParserOutput::setPageProperty()
will emit a warning (it has never worked). ParserOutput::setLanguageLinks()
has been deprecated.ParserOutput::getTimestamp()
and::setTimestamp()
have been deprecated; use::getRevisionTimestamp()
and::setRevisionTimestamp()
instead.ParserOutput::setText()
has been deprecated; use::setRawText()
instead which matches the name of the corresponding getter,ParserOutput::getRawText()
.ParserOutput::addTemplate()
will emit a deprecation warning if it is called with a non-local title, such as an interwiki link. In a future release it will throwInvalidArgumentException
.- The use of dynamic properties of Parser has been deprecated and will emit deprecation warnings.
- The following deprecated public properties of Parser will emit deprecation warnings:
Parser::$ot
, deprecated since 1.35Parser::$mTitle
, deprecated since 1.35Parser::$mOptions
, deprecated since 1.35
- The following deprecated public properties of Parser are now marked for internal use only:
Parser::$mPPNodeCount
, deprecated since 1.35Parser::$mHighestExpansionDepth
, deprecated since 1.35
ApiQueryBlockInfoTrait::addBlockInfoToQuery()
will emit deprecation warnings and will soon stop working due to schema changes. Instead useaddDeletedUserFilter()
orgetBlockDetailsForRows()
.UploadBase::getImageInfo
was deprecated, subclasses ofApiUpload
can useApiUpload::getUploadImageInfo()
instead.DatabaseBlockStore::updateTimestamp()
is now internal and should not be called.- The LocalisationCache helper class GlobalDependency has been deprecated, use MainConfigDependency instead.
- The module
mediawiki.icon
has been deprecated. Use the Codex mixin instead (T351681). ConfigRepository::class
andMediaWikiServices::getConfigRepository()
have been deprecated, they are unused.- Passing a WikiPage to
PageEditStash::parseAndCache()
has been deprecated. Use PageUpdater instance. SpecialBlock::getSuggestedDurations()
has been deprecated, useLanguage::getBlockDurations()
instead.MediaWikiServices::getBlockErrorFormatter()
has been deprecated, useMediaWikiServices::getFormatterFactory()->getBlockErrorFormatter()
instead.DummyLinker
has been deprecated. The DummyLinker parameter to theImageBeforeProduceHTML
hook will becomenull
in the future.Database::listViews()
has been deprecated. This was previously used to filter views out of the return value ofDatabase::listTables()
. NowlistTables()
will not include views. MediaWiki does not use views.- (T207621)
UserMailer::rfc822Phrase()
has been hard deprecated. TempUserConfig::getMatchPattern
has been deprecated, useTempUserConfig::getMatchPatterns
instead.- (T230025)
Title::purgeSquid()
, deprecated in 1.35, now emits warnings. Title::getCdnUrls()
, deprecated in 1.35, now emits warnings.- The rarely-used convenience method
Xml::wrapClass()
is now deprecated. Instead you can useXml::tags( 'span', [ 'class' => 'foo' ], 'bar' )
. WebRequest::getCrossSiteCookie()
has been deprecated due to the removal of$wgUseSameSiteLegacyCookies
. It will emit deprecation warnings.Use WebRequest::getCookie()
.- Using the
array_merge_recursive
merge strategy inextension.json
andskin.json
has been hard deprecated. DBAccessObjectUtils::getDBFromIndex()
is now deprecated, use::getDBFromRecency()
instead.- Many
Xml
methods that are specific to HTML but not XML are deprecated:- Xml::buildForm
- Xml::buildTable
- Xml::buildTableRow
- Xml::check
- Xml::checkLabel
- Xml::dateMenu
- Xml::fieldset
- Xml::input
- Xml::inputLabel
- Xml::inputLabelSep
- Xml::label
- Xml::languageSelector
- Xml::listDropdown
- Xml::listDropdownOptions
- Xml::listDropdownOptionsOoui
- Xml::monthSelector
- Xml::option
- Xml::password
- Xml::radio
- Xml::radioLabel
- Xml::span
- Xml::submitButton
- Xml::textarea
- Xml::attrib (only for use in HTML, not XML contexts)
IMaintainableDatabase::truncate()
has been deprecated. UsetruncateTable()
instead.TextConflictHelper->incrementStatsByUserEdits()
is now deprecated. The action this function previously handled should be moved into incrementConflictStats() andincrementResolvedStats()
.SQLPlatform::getQueryVerb()
is now deprecated.
Other changes in 1.42
edit- Gallery: Image captions are no longer wrapped in
<p>
tags. Skins that customize rendering for galleries may need to tweak their CSS. - Scripts under
maintenance/dev/
, for quickly setup a local MediaWiki for development purposes, have been removed, seeDEVELOPERS.md
for alternatives.