3 == MediaWiki 1.43.0-PRERELEASE ==
5 THIS IS NOT A RELEASE YET
7 MediaWiki 1.43 is an alpha-quality development branch, and is not recommended
10 == Upgrading notes for 1.43 ==
11 Don't forget to always back up your database before upgrading!
13 See the file UPGRADE for more detailed per-version upgrade instructions from the
14 oldest supported upgrading version, MediaWiki 1.35.
16 Some specific notes for MediaWiki 1.43 upgrades are below:
18 * It is now necessary that the OpenSSL PHP extension is installed.
21 For notes on 1.42.x and older releases, see HISTORY.
23 === Configuration changes for system administrators in 1.43 ===
25 * $wgBlockTargetMigrationStage, which was introduced in 1.42, is now deprecated
29 ==== New configuration ====
31 * (T13555) $wgParserEnableLegacyHeadingDOM - Defaults to `true`, can be set to
32 `false` to enable new, more accessible HTML markup for wikitext headings.
33 Note that each skin must also use the 'supportsMwHeading' option to allow it.
34 More information: https://www.mediawiki.org/wiki/Heading_HTML_changes
35 In a future release the new markup will become the default,
36 and later this option will be removed.
37 * (T12347) $wgEnableProtectionIndicators - Defaults to false, setting it to true
38 shows a lock icon indicator on protected pages.
39 * (T373480) $wgSortedCategories - Defaults to false, setting it to true will
40 sort the categories shown on article pages. This is an experimental setting;
41 its future will depend on community adoption and feedback on the phab task
45 ==== Changed configuration ====
47 * wgPageLinksSchemaMigrationStage – (T299947) This temporary setting, which
48 controls the database schema migration for the page links table, is now set
49 by default to write to both old and new data and read from the new data.
50 * wgFooterIcons – (T256190) The default "Powered by MediaWiki" button icon has
51 been updated to an SVG icon, and the footer icons are now wrapped as buttons
52 in HTML, rather than faking it within the icons themselves. You should adjust
53 any footer icons you provide or over-ride to match.
54 * The "error-json" channel, configurable via $wgDebugLogGroups, has been
55 removed. For structured logging, use the "error" channel directly instead.
56 Since MediaWiki 1.25, structured logging is supported via Monolog for all
57 channels, including the "error" channel. For silenced errors, you use the
58 "silenced-error" channel added in MediaWiki 1.42. (T193472)
59 * wgResourceLoaderUseObjectCacheForDeps - (T343492) This is now enabled by
60 default. This means ResourceLoader writes information to the MainStash
61 instead of a core database table, which can be set to a separate database
62 via wgMainStash. If you find issues, please drop a comment on T343492.
63 It is now deprecated and will be removed in MediaWiki 1.44.
66 ==== Removed configuration ====
68 * wgSessionInsecureSecrets has been removed since OpenSSL is now a required
70 * $wgTemplateLinksSchemaMigrationStage has been removed.
71 * $wgSamplingStatsdClient has been removed. It was introduced in MW 1.28 for
72 use in the Wikibase extension, but never used. The new StatsFactory service
73 should be used for new instrumentations, which already supports sampling.
74 Beware that sampling is generally not needed even at scale, and that sampling
75 does not significantly reduce runtime overhead, thus making it slow to
76 instrument very hot code even with built-in sampling.
77 * (T294397) The 'writeapi' userright, which controlled access to some API
78 modules, has been removed.
81 === New user-facing features in 1.43 ===
83 * (T338341) Support reading XMP and EXIF from WebP files
84 * (T365636) Wiki's with wgAllowExternalImages enabled now detect urls
85 with AVIF, SVG and WebP images.
86 * (T242346) Special:TalkPage is a new special page that will redirect to the
87 associated talk namespace page, e.g. [[Special:TalkPage/Foo]] redirects to
88 [[Talk:Foo]]; [[Special:TalkPage/Project:Foo]] goes to [[Project talk:Foo]].
89 This allows for links by templates and tools without having to parse what
90 namespaces are valid and have associated talk pages.
91 * New preference: "Send password reset emails only when both email address
92 and username are provided."
93 * (T4085) Added new magic word {{USERLANGUAGE}} which returns the language code
94 of the interface set by the user.
97 === New features for sysadmins in 1.43 ===
101 === New developer features in 1.43 ===
103 * StatusValue class gained new method getMessages(): MessageSpecifier[],
104 allowing the errors to be inspected and displayed more easily, for example:
105 foreach ( $status->getMessages() as $msg ) {
106 if ( $msg->getKey() !== 'ignored-message' ) {
107 $this->getOutput()->addWikiMsg( $msg );
110 * The REST API framework now supports defining redirects in route definition
111 files. See MediaWiki\Rest\Handler\RedirectHandler for details.
112 * (T13555) Skins can enable the 'supportsMwHeading' option for new, more
113 accessible HTML markup for wikitext headings. MediaWiki's own styles and
114 scripts have been updated to support it, but your skin may also need updates.
115 More information: https://www.mediawiki.org/wiki/Heading_HTML_changes
116 A future release will emit deprecation warnings for skins with
117 'supportsMwHeading' set to false.
118 * The AuthPreserveQueryParams hook was added.
119 * (T219397) New `Language::formatDurationBetweenTimestamps()` function added
120 which takes two timestamps and a precision in order to calculate a more
121 accurate text representation of duration.
122 * Added an interactive mode to the install.php maintenance script.
123 * The ResourceLoaderModifyStartupSourceUrls hook was added.
124 * The AuthManagerFilterProviders hook was added.
125 * The AuthManagerVerifyAuthentication hook was added.
126 * The OutputPageRenderCategoryLink hook was added, as a replacement for the
127 deprecated OutputPageMakeCategoryLinks hook.
128 * PreAuthenticationProvider, PrimaryAuthenticationProvider, and
129 SecondaryAuthenticationProvider now receive a `canAlwaysAutocreate` flag in
130 the options of the `testUserForCreation` invocation. This flag is true when
131 the session provider is exempt from autocreate user permissions checks.
132 * The CentralIdLookup service gained the isOwned() method, which can be used
133 to check if a local username is reserved for a central user, even if a local
134 user account does not exist yet. This can be used by extensions to look
135 up information about the central user.
138 === External library changes in 1.43 ===
140 * The OOjs Router library has been merged into core and will be archived
143 ==== New external libraries ====
147 ===== New development-only external libraries =====
151 ==== Changed external libraries ====
153 * Updated codex, codex-design-tokens and codex-icons
154 from v1.3.6 to v1.12.0.
155 * Updated composer/semver from 3.4.0 to 3.4.2.
156 * Updated guzzlehttp/guzzle from 7.7.1 to 7.8.1.
157 * Updated jquery.i18n from 1.0.7 to 1.0.10.
158 * Updated pear/net_smtp from 1.11.1 to 1.12.1.
159 * Updated monolog/monolog from 2.9.2 to 2.9.3.
160 * Updated symfony/yaml from 5.4.35 to 5.4.39.
161 * Updated OOUI from v0.49.1 to v0.50.4.
162 * Updated wikimedia/json-codec from 3.0.1 to 3.0.2.
163 * Updated wikimedia/less.php from 4.2.1 to 5.1.1.
164 * Updated wikimedia/minify from 2.7.0 to 2.8.0.
165 * Updated vue from 3.3.9 to 3.4.27.
166 * Updated symfony/polyfill-php80 from 1.29.0 to 1.30.0.
167 * Updated symfony/polyfill-php81 from 1.29.0 to 1.30.0.
168 * Updated symfony/polyfill-php82 from 1.29.0 to 1.30.0.
169 * Updated symfony/polyfill-php83 from 1.29.0 to 1.30.0.
172 ===== Changed development-only external libraries =====
174 * Updated doctrine/dbal from 3.7.2 to 3.8.4.
175 * Updated eslint-config-wikimedia from 0.26.0 to 0.27.0.
176 * Updated mediawiki/mediawiki-codesniffer from 43.0.0 to 44.0.0.
177 * Updated phpunit/phpunit from 9.6.16 to 9.6.19.
178 * Updated seld/jsonlint from 1.10.1 to 1.10.2.
181 ==== Removed external libraries ====
185 === Bug fixes in 1.43 ===
187 * When using the 'runMaintenance' method in a LoadExtensionSchemaUpdates hook
188 handler, only the script's class name is required, not its path. (T367918)
189 * QueryPage::recache() (used by the updateSpecialPages.php maintenance script)
190 no longer attempts to ignore database errors. (T278543)
193 === Action API changes in 1.43 ===
195 * APIQueryUserInfo now returns null in the field registrationdate for users
196 created before December 2005 (their registration date was not recorded).
199 === Action API internal changes in 1.43 ===
203 === Languages updated in 1.43 ===
204 MediaWiki supports over 350 languages. Many localisations are updated regularly.
205 Below only new and removed languages are listed, as well as changes to languages
206 because of Phabricator reports.
208 * (T357853) Added unidirectional script conversion for Meitei to Bengali script.
209 * (T367377) Updated the autonym for Tai Nuea (tdd)
210 * (T354937, T362041) Added language support for Minnan (Traditional Han script)
212 * (T290657) Added language support for Levantine Arabic (apc).
213 * (T364291) Added language support for Musi, also known as Palembang (mui).
214 * (T364737) Added language support for Haryanvi (bgc).
215 * (T365365) Added language support for Chakma (ccp).
216 * (T367991) Added language support for Iban (iba).
217 * (T367688) Added language support for Interslavic (Latin) (isv-latn).
218 * (T370123) Added language support for Nupe (nup).
219 * (T371051) Added language support for Saint Lucian Creole (acf).
220 * (T354937, T370987) Added language support for Minnan (Pe̍h-ōe-jī)
222 * (T354937, T369899) Added language support for Minnan (Tâi-lô)
226 === Breaking changes in 1.43 ===
228 * ErrorPageError public properties 'msg' and 'title' may now contain
229 any MessageSpecifier object, not just Message.
230 * Reset button functionality suppressReset() and $mShowReset from HTMLForm
231 was removed without replacement.
232 * UserGroupMembership::getGroupName(), deprecated in 1.38, and
233 UserGroupMembership::getGroupMemberName(), deprecated in 1.40, have
235 * SerializedValueContainer::isUnified(), deprecated in 1.42, has been
237 * Parser::getFreshParser(), deprecated in 1.39, has been removed.
238 * ConfigFactory::getDefaultInstance(), deprecated since 1.27, has been
240 * wfGetLangObj(), deprecated since 1.41, has been removed in favor of
241 LanguageFactory::getLanguage().
242 * wfRemoveDotSegments(), deprecated in 1.39, has been removed.
243 * IReadableDatabase::getReplicaPos() has been removed without deprecation
244 as it's not used anywhere.
245 * ILoadBalancer::laggedReplicaUsed() has been moved to ILoadBalancerForOwner::
246 effectively making it internal.
247 * Define DB_MASTER, deprecated since 1.36, has been removed.
248 * ILoadBalancer::DB_MASTER, deprecated since 1.36, has been removed.
249 * Overriding MWException::getHTML(), ::getText(), ::getPageTitle(), and
250 ::reportHTML() in order to display custom exception messages is no
252 * In PageHandlerTestTrait, the newRouter() method was renamed to
253 newRouterForPageHandler() to avoid a conflict with a method of the same
254 name in RestTestTrait. Also, PageHandlerTestTrait is no longer marked as
255 "stable to use". It was marked this way by accident, the functionality it
256 provides is specific to certain handlers implemented in MediaWiki core.
257 * MediaWikiIntegrationTestCase::addCoreDBData(), deprecated since 1.41, has
259 * wfUnpack(), deprecated since 1.42, has been removed in favor of
260 StringUtils::unpack().
261 * UIDGenerator, deprecated since 1.35, has been removed.
262 * TablePager::getBody(), final and deprecated since 1.24, has been removed.
263 Use ::getBodyOutput() or ::getFullOutput() instead.
264 * ImportableUploadRevisionImporter::downloadSource(), deprecated in 1.31, is now
265 private. Its only known external caller was removed in 1.40.
266 * The following methods in the User class have been removed:
267 * Deprecated in 1.33:
268 * User::isBlockedFrom()
269 * Deprecated in 1.34:
271 * Deprecated in 1.35:
273 * User::getAllGroups()
275 * User::getGroupMemberships()
276 * User::getImplicitGroups()
278 * User::removeGroup()
279 * Deprecated in 1.37:
280 * User::isBlockedFromCreateAccount()
281 * BotPassword::invalidateAllPasswordsForCentralId() and
282 BotPassword::removeAllPasswordsForCentralId(), deprecated in 1.37,
284 * Title::getBrokenLinksFrom(), deprecated in 1.42, has been removed.
285 * The $type parameter to Skin::getCopyright(), deprecated in 1.40, has been
287 * The module `mediawiki.icon`, deprecated in 1.42, has been removed.
288 * The `@vue/composition-api` module, a deprecated alias for `vue` since 1.41,
289 has been removed. Use `vue` directly.
290 * SiteConfiguration::extractVar() and ::extractGlobal(), deprecated in 1.41,
292 * Skin::footerLink(), deprecated in 1.40, has been removed.
293 * Skin::getAction(), deprecated in 1.39, has been removed.
294 * Title::getCdnUrls() and Title::purgeSquid(), deprecated in 1.35, have been
296 * The `mediawiki.pager.tablePager` module, deprecated in 1.38, has been
297 removed in favor of the more generic `mediawiki.pager.styles`.
298 * BagOStuff::setNewPreparedValues(), deprecated in 1.40, has been removed.
299 * Constructing MWHttpRequest objects now requires timeout and connectTimeout to
300 be set; this was deprecated in 1.35.
301 * Hooks that were run from SpecialContributions are now run from the parent,
302 ContributionsSpecialPage. The page passed in is a ContributionsSpecialPage
303 type, and documentation and type comparisons may need to be updated. Affected
304 hooks are: ContributionsBeforeMainOutputHook, ContributionsToolLinksHook,
305 SpecialContributions__getForm__filtersHook.
306 * Hooks that were run from ContribsPager are now run from the parent,
307 ContributionsPager. If a pager is passed in, it is a ContributionsPager type,
308 and documentation and type comparisons may need to be updated. Affected
309 hooks are: ContribsPager__reallyDoQueryHook, ContribsPager__getQueryInfoHook,
310 ContributionsLineEndingHook, SpecialContributions__formatRow__flagsHook.
311 * Hooks that were run from DeletedContribsPager are now run from the parent,
312 ContributionsPager. If a pager is passed in, it is a ContributionsPager type,
313 and documentation and type comparisons may need to be updated. Affected
314 hooks are: DeletedContribsPager__reallyDoQueryHook and
315 DeletedContributionsLineEndingHook.
316 * The public method ContributionsSpecialPage::getUserLinks has been made
317 protected. Although not marked @internal, the method was public to be called
318 from SpecialDeletedContributions (call now removed), and was not called from
320 * DatabaseBlock::purgeExpired, deprecated since 1.38, has been removed.
321 * AbstractBlock::getPermissionsError, deprecated since 1.35, has been removed.
322 * IDatabase::namedLocksEnqueue() has been removed without deprecation.
323 * IDatabase::getTopologyRole() has been removed without deprecation.
324 * IDatabase::getTopologyBasedServerId() has been removed without deprecation.
325 Use IDatabase::getServerName() instead.
326 * IReadableDatabase::wasReadOnlyError() has been removed without deprecation.
327 Use IDatabase::isReadOnly() instead.
328 * IReadableDatabase::wasDeadlock() has been removed without deprecation.
329 * ILoadBalancer::getWriterIndex() has been removed without deprecation.
330 Use ServerInfo::WRITER_INDEX constant instead.
331 * MaintainableDBConnRef, deprecated since 1.39, has been removed.
332 * ILoadBalancer::reuseConnection(), deprecated since 1.39, has been removed.
333 * WikiPage::doDeleteArticleBatched, hard deprecated since 1.37, has been
335 * SpecialEmailUser::submit, deprecated since 1.41, has been removed.
336 * SpecialEmailUser::validateTarget, deprecated since 1.41, has been removed.
337 * SpecialEmailUser::getPermissionsError, deprecated since 1.41 has been
339 * SpecialBlock::getTargetAndType, deprecated since 1.36, has been removed.
340 * ApiQueryBlockInfoTrait::addBlockInfoToQuery(), deprecated since 1.42, has been
342 * Linker::makeExternalLink() has been deprecated in favor of
343 LinkRenderer::makeExternalLink(), which has a improved API to help phan's
344 SecurityCheckPlugin provide more accurate checks for escaping issues.
345 * Linker::makeHeadline(), Linker::generateTOC(), Linker::tocIndent(),
346 Linker::tocUnindent(), Linker::tocLine(), Linker::tocLineEnd(), and
347 Linker::tocList(), deprecated in 1.42, have been removed.
348 * Linker::formatComment(), Linker::formatLinksInComment(),
349 Linker::commentBlock(), and Linker::revComment(), deprecated in 1.38,
351 * UserCache::singleton(), deprecated in 1.43, now emits deprecation warnings.
352 Use MediaWikiServices::getInstance()->getUserCache() instead.
353 * DummyLinker has been removed. The former DummyLinker parameter
354 to the 'ImageBeforeProduceHTML' hook is now null.
355 * The following methods of IDatabase have been moved to internal interface
356 IDatabaseForOwner without deprecation. These methods are internal and
357 shouldn't be used outside of rdbms library:
358 - ::pendingWriteCallers()
361 - ::setTransactionListener()
362 - ::serverIsReadOnly()
364 - ::pendingWriteQueryDuration()
365 - ::writesOrCallbacksPending()
368 * IMaintainableDatabase::listViews(), deprecated since 1.42, has been removed.
369 * IMaintainableDatabase::truncate(), deprecated since 1.42, has been removed.
370 * IMaintainableDatabase::textFieldSize() was removed without deprecation.
371 * ReplicatedBagOStuff, deprecated since 1.42, has been removed.
372 * The 'replicaOnly' option to SqlBagOStuff has been removed without deprecation.
373 It existed for internal use by SqlBagOStuff only.
374 * Support for WinCache as local server cache has been removed, because WinCache
375 is not available for supported versions of PHP. The WinCacheBagOStuff class
376 has been removed. Use MediaWikiServices::getLocalServerObjectCache() instead,
377 or the CACHE_ACCEL type instead, which automatically selects APCu when
379 The "wincache" cache type (e.g. to ObjectCache::getInstance, and in
380 "wg*CacheType" configuration) remains supported as an alias for CACHE_ACCEL.
381 * LockManager::sha1Base16Absolute(), has been removed without deprecation.
382 * The "options" parameter to User::createNew() and the $data parameter to
383 UserOptionsManager::loadUserOptions() were removed.
384 * `.list-style-image()` mixin from mediawiki.mixins.less, deprecated since 1.38,
386 * `.background-image()` mixin from mediawiki.mixins.less, deprecated since 1.38,
388 * IDatabase::nextSequenceValue(), deprecated since 1.30, was removed.
389 * $wgAPIRequestLog was removed without deprecation. Use "api" and "api-request"
390 wgDebugLogGroups channels or SPI instead.
391 * The setStats() method in MediaWiki\Rest\Router now expects a StatsFactory
392 rather than a StatsdDataFactoryInterface. The method has been marked @internal
393 and should not be called by extensions.
394 * All `@width-breakpoint-*` Less variables have been removed. Use
395 `@min-width-breakpoint-*`/`@max-width-breakpoint-*` instead.
396 * The MessageContent class, deprecated since 1.38, is now removed. This also
397 means that the Message::content() method is also removed.
398 * The following ParserOption methods, deprecated since 1.35, were removed:
399 - ::setAllowExternalImages()
400 - ::setAllowExternalImagesFrom()
401 - ::setEnableImageWhitelist()
402 * Sanitizer::removeHTMLtags(), deprecated since 1.38, has been removed.
403 * OutputPage::getCSPNonce(), deprecated since 1.35, has been removed.
404 * UserMailer::rfc822Phrase(), deprecated since 1.38, has been removed.
405 * QueryPage::getSQL(), deprecated since 1.39, has been removed. The replacement
406 QueryPage::getQueryInfo() is now abstract.
409 === Deprecations in 1.43 ===
411 * The methods StatusValue::getErrors() and StatusValue::getErrorsByType(),
412 as well as Status::getErrorsArray() and Status::getWarningsArray(), have
413 been deprecated in favor of new method StatusValue::getMessages().
414 * PermissionManager::getPermissionErrors() has been deprecated in favor
415 of getPermissionStatus().
416 * PermissionStatus::toLegacyErrorArray() is deprecated with no replacement.
417 * PermissionsError properties $errors and $permission are deprecated.
418 To display the error, throw it or use ->report().
419 * (T166010) All PHP code in MediaWiki is slowly being moved to be in a class
420 namespace as appropriate, so that we can use PSR-4 auto-loading, which will
421 speed up general code loading of MediaWiki. The old global namespace class
422 names are being left behind as deprecated aliases.
424 In this release of MediaWiki, XYZ classes now have a namespace and XYZ do
425 not yet (XYZ% done, up from 69% in MediaWiki 1.42.0). The following have newly
436 - FallbackContentHandler
439 - JavaScriptContentHandler
445 - WikitextContentHandler
450 - MediaWiki\Deferred:
451 - RefreshSecondaryDataUpdate
452 - MediaWiki\FileBackend:
453 - FileBackendGroup – FIXME: Should this be in Wikimedia\FileBackend instead?
456 - MediaWiki\Language:
465 - IRCColourfulRCFeedFormatter
466 - JSONRCFeedFormatter
467 - MachineReadableRCFeedFormatter
470 - RedisPubSubFeedEngine
473 - MediaWiki\RenameUser:
475 - MediaWiki\Registration:
476 - ExtensionDependencyError
477 - ExtensionJsonValidationError
478 - ExtensionJsonValidator
481 - MissingExtensionException
484 - MediaWiki\RevisionList:
489 - MediaWiki\Watchlist:
491 - ClearUserWatchlistJob
492 - ClearWatchlistNotificationsJob
493 - NoWriteWatchedItemStore
495 - WatchedItemQueryService
496 - WatchedItemQueryServiceExtension
498 - WatchedItemStoreInterface
503 - Wikimedia\FileBackend:
509 - Wikimedia\ObjectCache:
516 - MediumSpecificBagOStuff
518 - MemcachedPeclBagOStuff
519 - MemcachedPhpBagOStuff
520 - MultiWriteBagOStuff
524 * MessageCache::get() with $language other than Language or null is
525 deprecated and emits deprecation warnings. For high-level access,
526 use wfMessage() or RequestContext::msg() instead.
527 * Manually constructing a Language object, deprecated in 1.35, now emits
528 deprecation warnings. Use LanguageFactory instead.
529 * SearchEngineConfig::getConfig() has been deprecated, use DI with
530 ServiceOptions to inject the required options.
531 * ObjectCache::isDatabaseId() and ::getLocalClusterInstance() have been
532 deprecated. Use their equivalents in ObjectCacheFactory.
533 * Using the "post" source in parameter declarations returned from
534 Handler::getParamSettings() is deprecated, use "body" instead.
535 * ISQLPlatform::tableNamesN() is now deprecated.
536 * The implementation in SQLPlatform of ISQLPlatform::tableNames(), deprecated in
537 MediaWiki 1.39, now emits deprecation warnings.
538 * Title::getTitleProtection(), deprecated in 1.37, now emits warnings. You can
539 use RestrictionStore::getCreateProtection() instead.
540 * Title::loadRestrictions(), deprecated in 1.37, now emits warnings.
541 * Title::flushRestrictions(), deprecated in 1.37, now emits warnings.
542 * Title::getPageViewLanguage(), deprecated in 1.42, now emits warnings.
543 * wfUrlProtocols(), deprecated in 1.39, now emits warnings.
544 * wfGetServerUrl(), deprecated in 1.39, now emits warnings.
545 * wfExpandIRI(), deprecated in 1.39, now emits warnings.
546 * The following methods, previously deprecated, now emit deprecation warnings:
547 - ContentHandler::getDefaultModelFor(), deprecated since 1.33
548 - ContentHandler::getAllContentFormats(), deprecated since 1.35
549 - ContentHandler::getContentModels(), deprecated since 1.35
550 - ContentHandler::getForContent(), deprecated since 1.35
551 - ContentHandler::getForModelID(), deprecated since 1.35
552 - ContentHandler::getContentText(), deprecated since 1.37
553 * Passing a Message argument to OutputPage::setPageTitle(), which was
554 deprecated in 1.41, now emits warnings.
555 * OutputPage::showFatalError() is deprecated, use showErrorPage() instead.
556 * OutputPage::showPermissionsErrorPage() is deprecated,
557 use showPermissionStatus() instead.
558 * OutputPage::formatPermissionsErrorMessage(), deprecated since 1.36,
559 now emits deprecation warnings. Use formatPermissionStatus() instead.
560 * OutputPage::setCategoryLinks() has been deprecated and emits deprecation
561 warnings. Use ::addCategoryLinks() instead.
562 * LoadBalancer::getConnectionRef(), deprecated since 1.39, now emits deprecation
563 warnings. Use ::getConnection() instead.
564 * DBAccessObjectUtils::getDBOptions() is deprecated, use
565 SelectQueryBuilder::recency() instead.
566 * IDatabase::lockForUpdate is deprecated, use
567 SelectQueryBuilder::acquireRowLocks instead.
568 * wfGetUrlUtils() is deprecated; instead, get a UrlUtils from services.
569 * DerivedPageDataUpdater::getPreparedEdit(), provided for back-compatibility, is
570 now deprecated; use the getters directly, instead.
571 * AuthManager::forcePrimaryAuthenticationProviders(), provided for back-
572 compatibility, is now deprecated.
573 * WikiPage::hasDifferencesOutsideMainSlot(), provided as a stop-gap before
574 refactoring to support MCR, is now deprecated.
575 * ChangesList::getTimestamp() has been deprecated; use ::revDateLink() instead.
576 * RecentChange::doMarkPatrolled() is deprecated, use
577 RecentChange::markPatrolled() instead.
578 * LogFormatter::newFromRow() and LogFormatter::newFromEntry(), deprecated since
579 1.42, now emit deprecation warnings.
580 * LinksUpdate::getAddedLinks(), ::getRemovedLinks(), deprecated since 1.38, now
581 emit deprecation warnings.
582 * TitleLinksTable::getTitleArray(), deprecated since 1.38, now emits deprecation
584 * SiteConfig::variants() has been deprecated; use ::variantsFor().
585 * ObjectCache::$instances and ::getInstance() have been deprecated; instead, use
586 ObjectCacheFactory::getInstance().
587 * WANObjectCache::clearLastError() and BagOStuff::clearLastError have been hard
588 deprecated, use ::watchErrors() together with ::getLastErrors() instead.
589 * BagOStuff::getSegmentationSize() and ::getSegmentedValueMaxSize() no longer
590 have any usage. The subclass' method in MediumSpecificBagOStuff overrides also
591 have no usage as well.
592 * ApiBase::errorArrayToStatus() is deprecated with no replacement.
593 * ApiTestCase::setExpectedApiException() has been deprecated; instead, use
594 ::expectApiErrorCode() to test error codes instead of messages.
595 * ApiPageSet::getTitles(), ApiPageSet::getGoodTitles(),
596 ApiPageSet::getMissingTitles(), ApiPageSet::getGoodAndMissingTitles(),
597 ApiPageSet::getRedirectTitles() and ApiPageSet::getSpecialTitles, deprecated
598 since 1.37, now emit deprecation warnings.
599 * QueryPage::setDBLoadBalancer() and ::getDBLoadBalancer() have been deprecated,
600 use QueryPage::setDatabaseProvider() or ::getDatabaseProvider() instead.
601 * User::isBlockedGlobally(), deprecated since 1.40, now emits deprecation
603 * User::isBlockedFromEmailuser() and User::canSendEmail(), deprecated since
604 1.41, now emit deprecation warnings.
605 * wfMergeErrorArrays() has been deprecated.
606 * User::whoIs() and User::whoIsReal(), have been deprecated.
607 * UserCache class and MediaWikiServices::getUserCache(), have been deprecated.
608 * JsonUnserializable and related classes have been renamed to JsonDeserializable
609 to make it clearer that they're related to converting serialized content back
610 into JSON, rather than stating that things are not representable in JSON. The
611 previous class names have been left behind as deprecated aliases:
612 - JsonUnserializable -> JsonDeserializable
613 - JsonUnserializableTrait -> JsonDeserializableTrait
614 - JsonUnserializer -> JsonDeserializer
615 Additionally, JsonCodec's unserialize() and unserializeArray() methods have
616 also been renamed to deserialize() and deserializeArray(), with the old names
618 * In the REST framework, the the BodyValidator interface and all functionality
619 related to it are deprecated. They have been replaced by
620 Handler::getBodyParamSettings() and Handler::parseBodyData(). The following
621 interfaces, classes, and methods are affected:
622 - interface BodyValidator
623 - class JsonBodyValidator
624 - class NullValidator
625 - function Handler::getBodyValidator
626 - function Validator::validateBody
627 * StatusValue will emit deprecation warnings when an error is given as
628 a MessageSpecifier combined with a parameters array, which is usually
629 a mistake, as the parameters have always been ignored.
630 * In StatusValue::replaceMessage(), ::hasMessage() and ::hasMessagesExcept()
631 passing MessageSpecifier or MessageValue as $source has been deprecated.
632 * PageArchive::undeleteAsUser, deprecated since 1.35, now emits deprecation
634 * DatabaseBlock::getQueryInfo() and DatabaseBlock::getRangeCond() are
635 deprecated and emit deprecation warnings. Use the equivalent methods in
637 * DatabaseBlockStore::getReadStage() and ::getWriteStage() are deprecated.
638 Use the new schema unconditionally.
639 * UserOptionsManager::resetOptions(), ::listOptionKinds and ::getOptionKinds are
640 deprecated and will emit deprecation warnings. Use the corresponding methods
641 in PreferencesFactory and UserOptionsManager::resetOptionsByName().
642 * The `i18n-all-lists-margins` module of SkinModule is deprecated as it's
643 merged into the `elements` module.
644 * ParsoidOutputAccess and all of its methods have been deprecated. Use
645 ParserOutputAccess with ParserOptions::setUseParsoid() instead.
646 * ParserOutput::addJsConfigVars(), deprecated since 1.38, now emits deprecation
647 warnings. Use ParserOutput::setJsConfigVar() instead.
648 * To support a future change allowing serializing of MessageValue objects
649 as JSON, the methods MessageValue::objectParams(), Message::objectParams()
650 and Message::objectParam() are deprecated. The UserGroupMembershipParam
651 class and the ParamType::OBJECT constant are likewise deprecated.
652 * The Less mixin .column-break-after-avoid() is deprecated. Use just the
653 CSS rule `break-after: avoid-column;` instead now.
654 * The following method are deprecated; instead call the appropriate
655 constructor method in PageRestHelperFactory with the appropriate
656 initialization arguments:
657 * HtmlOutputRendererHelper::init()
658 * HtmlMessageOutputHelper::init()
659 * HtmlInputTransformHelper::init()
660 Similarly, calling the constructor method in PageRestHelperFactory
661 without the appropriate initialization arguments is now deprecated.
662 * HTMLForm methods getPreText, setPreText, addPreText, getPostText,
663 setPostText, addPostText, getHeaderText, setHeaderText, addHeaderText,
664 getFooterText, setFooterText and addFooterText, deprecated since 1.38, now
665 emit deprecation warnings.
666 * FormSpecialPage methods preText and postText, deprecated since 1.38, now
667 emit deprecation warnings.
668 * EditPage::internalAttemptSave() is deprecated as part of cleaning up how
669 edits are saved, see T157658 for details.
670 * The MessageCache::get hook, deprecated since 1.41, now emits deprecation
672 * Twelve deprecated properties of OutputPage now will emit warnings; their
673 relevant getters or setters should be used instead:
674 * mCategoryLinks - getCategoryLinks() and setCategoryLinks()
675 * mCategories - getCategories()
676 * mIndicators - getIndicators() and setIndicators()
677 * mHeadItems - getHeadItemsArray(), hasHeadItem(), addHeadItem(),
679 * mModules - getModules() and addModules()
680 * mModuleStyles - getModuleStyles() and addModuleStyles()
681 * mJsConfigVars - getJsConfigVars() and addJsConfigVars()
682 * mTemplateIds - getTemplateIds()
683 - mEnableClientCache - Set with enableClientCache() and disableClientCache()
684 - mNewSectionLink - Get with showNewSectionLink()
685 - mHideNewSectionLink - Set with forceHideNewSectionLink()
686 - mNoGallery - getNoGallery()
687 * The 'help' key in HTMLForm descriptors is deprecated. Use the 'help-raw'
689 * ImageGalleryBase::setWidths() and ::setHeights() will now emit a deprecation
690 warning if they are called without ImageGalleryBase::setParser() having been
691 called. Please set the parser appropriately when using the image gallery.
692 * The hook OutputPageMakeCategoryLinks is deprecated. Use the new hook
693 OutputPageRenderCategoryLink instead.
696 === Other changes in 1.43 ===
698 * Class aliases to support the old PHPUnit 4 style un-namespaced `PHPUnit_`
699 classes (such as PHPUnit_Framework_Error) have been removed.
700 * [Temporary accounts] If $wgAutoCreateTempUser is enabled, then MediaWiki
701 will create a temporary account and log the user in for unsuccessful edit
702 attempts and null edits, in addition to edits that change content. This is
703 a change from the previous paradigm, where temporary accounts were created
704 only for successful edits. This change is done to support better logging
705 support and moderation, to ensure that hooks run in a pre-save context have
706 a user object to associate log entries and other actions with.
707 * Several entries have been removed from the default list of interwikis used
708 when installing new wikis. This does not affect existing wikis.
709 * User auto-creations are now performed as the target user instead of
711 * [Temporary accounts] T359043 Temporary accounts for anonymous edits are
712 enabled in DevelopmentSettings.php. To disable the feature, set
713 `$wgAutoCreateTempUser['enabled'] = false;` in LocalSettings.php
714 * Corrected the interpretation of empty arrays in extension configuration when
715 the default value is null. Previously, an empty array specified by the
716 administrator would transform into the default null value. It now
717 appropriately retains its empty array state.
718 * (T362536) Exempted "deletedhistory", "deletedtext", and "viewsuppressed"
719 rights from namespace protection ($wgNamespaceProtection) since that's
720 only meant to prevent write actions.
721 * Image captions are no longer trimmed.
726 MediaWiki 1.43 requires PHP 8.1.0 or later and the following PHP extensions:
738 MariaDB is the recommended database software. MySQL, PostgreSQL, or SQLite can
739 be used instead, but support for them is somewhat less mature.
741 The supported versions are:
743 * MariaDB 10.3 or higher
744 * MySQL 5.7.0 or higher
745 * PostgreSQL 10 or later
746 * SQLite 3.8.0 or later
748 == Online documentation ==
749 Documentation for both end-users and site administrators is available on
750 MediaWiki.org, and is covered under the GNU Free Documentation License (except
751 for pages that explicitly state that their contents are in the public domain):
753 <https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation>
756 A mailing list is available for MediaWiki user support and discussion:
758 <https://lists.wikimedia.org/postorius/lists/mediawiki-l.lists.wikimedia.org/>
760 A low-traffic announcements-only list is also available:
762 <https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/>
764 It's highly recommended that you sign up for one of these lists if you're
765 going to run a public MediaWiki, so you can be notified of security fixes.
768 There's usually someone online in #mediawiki on irc.libera.chat.