StatusValue: Add a getter for MessageSpecifier list
[mediawiki.git] / RELEASE-NOTES-1.42
blobeb3f7779e89f3ffc2df03a122c21a3f7310e1b30
1 = MediaWiki 1.42 =
3 == MediaWiki 1.42.0-PRERELEASE ==
5 THIS IS NOT A RELEASE YET
7 MediaWiki 1.42 is an alpha-quality development branch, and is not recommended
8 for use in production.
10 == Upgrading notes for 1.42 ==
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.42 upgrades are below:
17 * MediaWiki now requires Composer 2.x, and any related (vendor) files generated
18   by Composer must be generated by Composer 2.x. Composer 1.x is mostly end of
19   life by upstream, and using it will result in slower actions when downloading
20   and installing packages. See the upstream blog post at
21   https://blog.packagist.com/deprecating-composer-1-support/ for further
22   information.
23 * …
25 For notes on 1.41.x and older releases, see HISTORY.
27 === Configuration changes for system administrators in 1.42 ===
28 * Composer 1.x is no longer supported, and can no longer be used with MediaWiki.
29 * …
31 ==== New configuration ====
32 * $wgMicroStashType: The object cache backend for the MicroStash service.
33 * $wgEditRecoveryExpiry: Number of seconds to keep edit recovery data
34   after the edit is stored.
35 * $wgDjvuUseBoxedCommand and $wgDjvuShell: A temporary flag to control whether
36   or not to use BoxedCommand when wrapping DejaVu rendering, and the command to
37   call if so.
38 * $wgConditionalUserOptions: Makes it possible to define user properties with
39   defaults varying by user, without growing the user_properties table. Typical
40   use-case is to enable a feature only for users created after a certain date.
41 * $wgGrantRiskGroups: Grant risk levels, used to indicate on various UIs which
42   grants should be considered risky. (T290790)
43 * $wgTempAccountCreationThrottle: Like AccountCreationThrottle, but for managing
44   temporary account creations.
45 * …
47 ==== Changed configuration ====
48 * $wgAutoCreateTempUser: 'matchPattern' now supports multiple match patterns.
49 * $wgLogActionsHandlers is now ObjectFactory compatible.
50 * $wgBotPasswordsCluster and $wgBotPasswordsDatabase have been deprecated
51   use $wgVirtualDomainsMapping['virtual-botpasswords'] instead.
52 * The MainPageIsDomainRoot setting is no longer considered experimental.
53 * $wgAutoCreateTempUser is updated to use a different format for temporary
54   accounts. This configuration value is marked as unstable, so breaking
55   changes were expected. If your wiki used temporary accounts before
56   1.42, you will need to override the configuration value to also match
57   the old format of *$1.
58 * …
60 ==== Removed configuration ====
61 * $wgDisableCookieCheck has been removed.
62 * $wgStatsCacheType has been removed. Set $wgMicroStashType instead.
63 * $wgJobSerialCommitThreshold has been removed without deprecation,
64   it wasn't used anywhere according to codesearch and any setups using this
65   config will perform just fine but might be less performant.
66 * $wgLogoHD, deprecated since 1.35, has been removed. Use $wgLogo instead.
67 * $wgContentHandlerTextFallback, deprecated since 1.37, has been removed.
68   No longer customizable.
69 * $wgSquidPurgeUseHostHeader, deprecated since 1.33, has been removed.
70   No longer customizable and always true.
71 * $wgAllowImageTag, deprecated since 1.35, has been removed.
72   Register an extension tag named <img> instead.
73 * $wgMinimalPasswordLength and $wgMaximalPasswordLength, deprecated since 1.26
74   have been dropped. Use $wgPasswordPolicy instead.
75 * $wgUseMediaWikiUIEverywhere has been removed.
76 * $wgHTMLFormAllowTableFormat has been removed.
77 * $wgOpenSearchTemplate, deprecated since 1.25, has been removed
78   Use $wgOpenSearchTemplates['application/x-suggestions+json'] instead.
79 * $wgUseSameSiteLegacyCookies has been removed.
80 * …
82 === New user-facing features in 1.42 ===
83 * (T308160) filter: is now allowed in inline CSS in wikitext
84 * …
86 === New features for sysadmins in 1.42 ===
87 * …
89 === New developer features in 1.42 ===
90 * (T326466) MediaWikiIntegrationTestCase's database and set-up code now avoids
91   using dynamic properties, which was causing deprecation warnings in PHP 8.2.
92 * (T13555) MediaWiki now includes styles that allow more accessible markup for
93   section headings. MediaWiki's own HTML output will be changed in the future.
94   More information: https://www.mediawiki.org/wiki/Heading_HTML_changes
95 * (T193472) PHP Notice and Warning errors that are silenced (e.g. by the "@"
96   operator, error_reporting directive, or Wikimedia\AtEase) are now logged to
97   a new "silenced-error" channel.
98 * (T347347) The CLI installer accepts a "--with-developmentsettings" argument
99   to require the DevelopmentSettings.php file at install time.
100 * (T350054) MediaWiki's ResourceLoader has been updated to add basic support
101   for code-splitting (aka "tree-shaking") when using the Codex component
102   library. A ResourceLoader module can now specify a list of "codexComponents"
103   in its module defintion and ensure that only the code for those components
104   gets sent to the client. More information:
105   https://www.mediawiki.org/wiki/Codex#Subset_of_components
106 * (T345185) The SessionProviderInterface now allows defining providers that
107   are exempt from rights checks when auto creating users.
108 * …
110 === External library changes in 1.42 ===
112 ==== New external libraries ====
113 * Added mediawiki/json-codec at v2.2.1.
114 * Added mck89/peast at v1.16.2.
115 * …
117 ===== New development-only external libraries =====
118 * …
120 ==== Changed external libraries ====
121 * Updated OOUI from v0.48.1 to v0.49.1.
122 * Updated OOjs Router from 0.3.0 to 0.5.0.
123 * Updated codex, codex-design-tokens and codex-icons
124   from v1.0.0 to v1.3.6.
125 * Updated Vue from v3.2.37-compat to v3.3.9.
126 * Updated composer/semver from 3.3.2 to 3.4.0.
127 * Updated guzzlehttp/guzzle from 7.5.3 to 7.7.1.
128 * Updated monolog/monolog from 2.2.0 to 2.9.2.
129 * Updated pear/mail from 1.5.1 to 1.6.0.
130 * Updated pear/mail_mime from 1.10.11 to 1.10.12.
131 * Updated pear/net_smtp from 1.10.1 to 1.11.1.
132 * Updated psr/http-message from 1.0.1 to 1.1.
133 * Updated symfony/polyfill-php80 from 1.28.0 to 1.29.0.
134 * Updated symfony/polyfill-php81 from 1.28.0 to 1.29.0.
135 * Updated symfony/polyfill-php82 from 1.28.0 to 1.29.0.
136 * Updated symfony/polyfill-php83 from 1.28.0 to 1.29.0.
137 * Updated symfony/yaml from 5.4.23 to 5.4.35.
138 * Updated wikimedia/less.php from 4.1.1 to 4.2.1.
139 * Updated wikimedia/remex-html from 4.0.1 to 4.1.0.
140 * Updated wikimedia/minify from 2.5.1 to 2.7.0.
141 * Updated wikimedia/relpath from 3.0.0 to 4.0.0.
142 * Updated wikimedia/shellbox from 4.0.0 to 4.0.1.
143 * …
145 ===== Changed development-only external libraries =====
146 * Updated QUnit from v2.19.4 to v2.20.0.
147 * Updated composer/spdx-licenses from 1.5.7 to 1.5.8.
148 * Updated doctrine/dbal from 3.4.2 to 3.7.2.
149 * Updated doctrine/sql-formatter from 1.1.1 to 1.1.3.
150 * Updated grunt-banana-checker from 0.11.0 to 0.11.1.
151 * Updated mediawiki/mediawiki-codesniffer from 42.0.0 to 43.0.0.
152 * Updated mediawiki/mediawiki-phan-config from 0.13.0 to 0.14.0.
153 * Updated php-parallel-lint/php-parallel-lint from 1.3.2 to 1.4.0.
154 * Updated phpunit/phpunit from 9.5.28 to 9.6.16.
155 * Updated psy/psysh from ^0.11.1 to ^0.12.3.
156 * Updated seld/jsonlint from 1.8.3 to 1.10.1.
157 * Updated wikimedia/testing-access-wrapper from 2.0.0 to 3.0.0.
158 * …
160 ==== Removed external libraries ====
161 * …
163 === Bug fixes in 1.42 ===
164 * …
166 === Action API changes in 1.42 ===
167 * APIQueryTags now includes "software" in the "source" array for software
168   generated tags. Reliance on the "extension" entries in this array is now
169   deprecated, but they will remain for backwards compatibility.
170 * …
172 === Action API internal changes in 1.42 ===
173 * …
175 === Languages updated in 1.42 ===
176 MediaWiki supports over 350 languages. Many localisations are updated regularly.
177 Below only new and removed languages are listed, as well as changes to languages
178 because of Phabricator reports.
180 * (T268143) Language variant conversion has been removed for Kazakh.
181 * (T352776) Updated autonym spelling for the Mon language (mnw).
182 * (T351874) Added language support for Komering (kge).
183 * (T351992) Added language support for Efik (efi).
184 * (T352954) Added language support for Rutul (rut).
185 * (T353058) Added language support for Arbëresh (aae).
186 * (T353307) Added language support for Guadeloupean Creole (gcf).
187 * (T353500) Added language support for Southeastern Kolami (nit).
188 * (T354519) Added language support for Tooro (ttj).
189 * (T354926) Added language support for Nyoro (nyo).
190 * (T356616) Added language support for Chinook Jargon (chn).
191 * (T357879) Added language support for Ibibio (ibb).
192 * …
194 === Breaking changes in 1.42 ===
195 * (T340802) ResourceLoader: The targets system is no longer active; all modules
196   will load on all platforms even if they are marked as desktop- or mobile-only
197   in the 'targets' field, which is no longer read. As part of this, the internal
198   methods RL\Module::setTarget() & ::getTargets(), and OutputPage::setTarget(),
199   have been removed.
200 * TitleArray, deprecated since 1.41, has been removed.
201 * UserRightsProxy, deprecated since 1.38, has been removed.
202 * SiteConfiguration::getConfig(), deprecated in 1.41, has been removed.
203 * UserLoginCompleteHook is always called with its $direct parameter set to
204   boolean true. The false case has been removed.
205 * MagicWord::load() has been marked @internal and may change in the future
206   without further notice.
207 * All classes that implemented IDBAccessObject interface and all interfaces
208   that extended it, no longer do that. See https://w.wiki/9DAX for more info.
209 * BagOStuff::setNewPreparedValues() now emits deprecation warnings.
210 * The type of the last parameter of BeforeInitializeHook::onBeforeInitialize
211   and MediaWikiPerformActionHook::onMediaWikiPerformAction changed from
212   MediaWiki to ActionEntryPoint. Relevant methods are still available on
213   the object.
214 * Classes that override Maintenance::finalSetup() must now declare the
215   $settings parameter and pass it on when calling the parent implementation.
216   MaintenanceRunner will always provide this parameter when calling
217   finalSetup().
218 * WebResponse::disableForPostSend() is no longer static.
219 * MediaWiki's virtualrest internal library has been removed in favor of the
220   HTTP library like: Guzzle, MultiHttpClient or MwHttpRequest.
221 * Several deprecated methods have been removed from the Content interface,
222   in favor of the respective methods in ContentHandlers. Callers should
223   use a more narrow interface like ContentRenderer or ContentTransformer
224   when possible. The following methods have been removed from Content:
225   - getParserOutput()
226   - preSaveTransform()
227   - preloadTransform()
228   - prepareSave()
229 * User::blockedFor() and AbstractBlock::getReason(), deprecated in 1.35, have
230   been removed. Use AbstractBlock::getReasonComment() instead.
231 * SerializedValueContainer::newUnified(), deprecated in 1.41 has been removed.
232 * Use of ActorMigration for any of the following tables, deprecated since 1.34,
233   is no longer supported:
234   - archive
235   - image
236   - oldimage
237   - filearchive
238   - recentchanges
239   - logging
240   - ipblocks
241 * ParserOutput::setFlag() and ::getFlag(), deprecated in 1.38, were removed. You
242   should use ::setOutputFlag() and ::getOutputFlag() instead.
243 * PostgresUpdater::addPgEnumValue() unused everywhere, have been removed
244   without deprecation. Use of ENUM is highly discouraged.
245 * ILoadBalancer::getAnyOpenConnection() has been removed without deprecation,
246   use ::getConnection() instead.
247 * The unused method CommentStore::getFields() has been removed without
248   depreaction.
249 * LanguageConverter's internal properties, all deprecated in 1.35 or 1.36, have
250   now had their deprecated property accessors dropped:
251   - mConvRuleTitle
252   - mUserVariant
253   - mHeaderVariant
254   - mMaxDepth
255   - mVarSeparatorPattern
256   - mLangObj
257   - mTablesLoaded
258   - mTables
259   - mVariants
260   - mMainLanguageCode
261   - mVariantFallbacks
262   - mFlags
263   - mVariantNames
264   - mDescCodeSep
265   - mDescVarSep
266 * OutputPage::addParserOutputText has been marked @internal since there are no
267   known users of it. Its old behavior has been deprecated and will change
268   in the future without further notice.
269 * A some methods of ConnectionManager and SessionConsistentConnectionManager,
270   previously deprecated, have been removed:
271   - ::releaseConnection(), deprecated in 1.38; do not use
272   - ::getWriteConnectionRef(), deprecated in 1.39; use getWriteConnection()
273   - ::getReadConnectionRef(), deprecated in 1.38; use getReadConnection()
274   - ::getLazyWriteConnectionRef(), deprecated in 1.39; use getWriteConnection()
275   - ::getLazyReadConnectionRef(), deprecated in 1.38; use getReadConnection()
276 * CoreParserFunctions::mwnamespace(), deprecated in 1.39, has been removed. Use
277   CoreParserFunctions::namespace() instead.
278 * Processor:: and ExtensionProcessor::getExtraAutoloaderPaths(), deprecated in
279   1.39, have been removed; use ::getExtractedAutoloadInfo() instead.
280 * MWExceptionHandler::rollbackMasterChangesAndLog(), deprecated in 1.37, has
281   been removed. Use ::rollbackPrimaryChangesAndLog() instead.
282 * Passing a custom database connection to DatabaseBlockStore::insertBlock(),
283   deprecated since 1.41, is no longer supported.
284 * LanguageConverterFactory::isTitleConversionDisabled(), deprecated in 1.36,
285   has been removed. Use ::isLinkConversionDisabled() instead.
286 * MediaWikiIntegrationTestCase::$tablesUsed has been deprecated. The framework
287   now detects these automatically.
288 * Passing an actor id to the constructor of UserIdentityValue, deprecated
289   since 1.36, is no longer being supported.
290 * Support for setting dynamic property on StatusValue object has been removed.
291   To pass your arbitrary data along the object, use StatusValue::statusData
292   property (which is always declared).
293 * The global function wfReportTime(), deprecated since 1.40, has been removed.
294 * The skin template parameter 'reporttime', deprecated since 1.41, has been
295   removed.
296 * WikiPage::getPageIsRedirectField(), deprecated since 1.41, has been removed.
297 * WikiPage::insertRedirect(), deprecated since 1.41, has been removed.
298 * Several methods in PageArchive, all deprecated in 1.38, have been removed:
299   - ::listRevisions()
300   - ::getRevisionRecordByTimestamp()
301   - ::getArchivedRevisionRecord()
302   - ::getPreviousRevisionRecord()
303   - ::getLastRevisionId()
304   - ::isDeleted()
305   - ::getFileStatus()
306   - ::getRevisionStatus()
307 * Database, DatabaseInstaller, DatabaseUpdater, DBPrimaryPos, ResultWrapper and
308   SQLPlatform are no longer stable to extend. It is not possible to define
309   database types in an extension.
310 * UserDef::PARAM_ALLOWED_USER_TYPES now differentiates between temporary account
311   usernames and user accounts. Any endpoints that want temp users to be
312   valid but were passing a name through will break. Temp users must now be
313   explicitly allowed.
314 * The Hooks class, a legacy wrapper for HooksContainer, has been removed. All of
315   its contents have been previously deprecated in 1.35 (or 1.41 for ::runner()):
316   - ::register()
317   - ::clear(),
318   - ::isRegistered()
319   - ::getHandlers()
320   - ::run()
321   - ::runWithoutAbort()
322   - ::runner()
323 * Article::__get(), ::__set(), deprecated since 1.35, have been removed.
324 * Several API calls have been updated to return a 'temp' user flag:
325   - ApiQueryImageInfo
326   - ApiQueryLogEvents
327   - ApiQueryRecentChanges
328   - APIs extended from ApiQueryRevisionsBase
329 * Parser::getCustomDefaultSort() and ::setDefaultSort(), deprecated since 1.38,
330   have been removed.
331 * UserOptionsLookup::getDefaultOptions() and
332   UserOptionsLookup::getDefaultOption() now accept an UserIdentity, to
333   take conditional defaults for user properties into account. When conditional
334   defaults are used, calling those methods without the UserIdentity might
335   produce unexpected results.
336 * Installer related classes have been namespaced without having aliases added.
337   The following have been moved to MediaWiki\Installer:
338   - CliInstaller
339   - DatabaseInstaller
340   - InstallDocFormatter
341   - Installer
342   - InstallerOverrides
343   - InstallerSessionProvider
344   - LocalSettingsGenerator
345   - MysqlInstaller
346   - PostgresInstaller
347   - PostgresUpdater
348   - SqliteInstaller
349   - SqliteUpdater
350   - WebInstaller
351   - WebInstallerComplete
352   - WebInstallerCopying
353   - WebInstallerDBConnect
354   - WebInstallerDBSettings
355   - WebInstallerDocument
356   - WebInstallerExistingWikis
357   - WebInstallerInstall
358   - WebInstallerLanguage
359   - WebInstallerName
360   - WebInstallerOptions
361   - WebInstallerOutput
362   - WebInstallerPage
363   - WebInstallerReleaseNotes
364   - WebInstallerRestart
365   - WebInstallerUpgrade
366   - WebInstallerUpgradeDoc
367   - WebInstallerWelcome
368 * mediawiki.ui/variables.less, deprecated since 1.41, has been removed in
369   favor of mediawiki.skin.variables.less.
370 * The module `jquery.cookie` (deprecated as of 1.41) has been removed.  Please
371   use `mediawiki.cookie` instead
372 * The no-op module `es6-polyfills` (deprecated as of 1.41) has been removed.
373 * Log formatters (as defined in $wgLogActionsHandlers) are now created by
374   ObjectFactory, which means their constructors must be public. Legacy log
375   formatters using callbacks instead of class names are no longer supported.
376 * The old aliases for the namespaced ResourceLoader classes, deprecated since
377   they were moved in MediaWiki 1.39, have now been dropped:
378   - ResourceLoader – use MediaWiki\ResourceLoader\ResourceLoader
379   - ResourceLoaderCircularDependencyError
380     – use MediaWiki\ResourceLoader\CircularDependencyError
381   - ResourceLoaderClientHtml – use MediaWiki\ResourceLoader\ClientHtml
382   - ResourceLoaderCodexModule – use MediaWiki\ResourceLoader\CodexModule
383   - ResourceLoaderContext – use MediaWiki\ResourceLoader\Context
384   - ResourceLoaderFileModule – use MediaWiki\ResourceLoader\FileModule
385   - ResourceLoaderFilePath – use MediaWiki\ResourceLoader\FilePath
386   - ResourceLoaderForeignApiModule
387     – use MediaWiki\ResourceLoader\ForeignApiModule
388   - ResourceLoaderImage – use MediaWiki\ResourceLoader\Image
389   - ResourceLoaderImageModule – use MediaWiki\ResourceLoader\ImageModule
390   - ResourceLoaderLessVarFileModule
391     – use MediaWiki\ResourceLoader\LessVarFileModule
392   - ResourceLoaderModule – use MediaWiki\ResourceLoader\Module
393   - ResourceLoaderMwUrlModule – use MediaWiki\ResourceLoader\MwUrlModule
394   - ResourceLoaderOOUIFileModule – use MediaWiki\ResourceLoader\OOUIFileModule
395   - ResourceLoaderOOUIIconPackModule
396     – use MediaWiki\ResourceLoader\OOUIIconPackModule
397   - ResourceLoaderOOUIImageModule
398     – use MediaWiki\ResourceLoader\OOUIImageModule
399   - ResourceLoaderOOUIModule – use MediaWiki\ResourceLoader\OOUIModule
400   - ResourceLoaderSiteModule – use MediaWiki\ResourceLoader\SiteModule
401   - ResourceLoaderSiteStylesModule
402     – use MediaWiki\ResourceLoader\SiteStylesModule
403   - ResourceLoaderSkinModule – use MediaWiki\ResourceLoader\SkinModule
404   - ResourceLoaderStartUpModule – use MediaWiki\ResourceLoader\StartUpModule
405   - ResourceLoaderUserModule – use MediaWiki\ResourceLoader\UserModule
406   - ResourceLoaderUserOptionsModule
407     – use MediaWiki\ResourceLoader\UserOptionsModule
408   - ResourceLoaderUserStylesModule
409     – use MediaWiki\ResourceLoader\UserStylesModule
410   - ResourceLoaderWikiModule – use MediaWiki\ResourceLoader\WikiModule
411   - DerivativeResourceLoaderContext
412     – use MediaWiki\ResourceLoader\DerivativeContext
413   - MessageBlobStore – use MediaWiki\ResourceLoader\MessageBlobStore
414   - VueComponentParser – use MediaWiki\ResourceLoader\VueComponentParser
415 * (T318989) Skin::lastModified, deprecated since 1.40, has been removed.
416 * Composer 1.x is no longer supported, and can no longer be used with MediaWiki.
417 * Title::GAID_FOR_UPDATE, deprecated in 1.34, has been removed. Instead, your
418   code should use IDBAccessObject::READ_LATEST.
419 * Six private Title class members, deprecated in 1.37, are now fully private;
420   use their corresponding accessor methods:
421    - $mTextform   -> getText()
422    - $mUrlform    -> getPartialURL()
423    - $mDbkeyform  -> getDBkey()
424    - $mNamespace  -> getNamespace()
425    - $mInterwiki  -> getInterwiki()
426    - $mFragment   -> getFragment()
427 * Skin::bottomScripts, deprecated since 1.37, has been removed.
428 * Fallback index and options have been removed from
429   DBAccessObjectUtils::getDBOptions() without deprecation.
430 * The deprecated class aliases for now-namespaced or renamed PHP classes that
431   were added in or before 1.39 LTS have now been removed:
432    - Blob -> Wikimedia\Rdbms\Blob
433    - Block -> MediaWiki\Block\DatabaseBlock
434    - DBAccessError -> Wikimedia\Rdbms\DBAccessError
435    - DBConnectionError -> Wikimedia\Rdbms\DBConnectionError
436    - DBError -> Wikimedia\Rdbms\DBError
437    - DBExpectedError -> Wikimedia\Rdbms\DBExpectedError
438    - DBQueryError -> Wikimedia\Rdbms\DBQueryError
439    - DBReadOnlyError -> Wikimedia\Rdbms\DBReadOnlyError
440    - DBReplicationWaitError -> Wikimedia\Rdbms\DBReplicationWaitError
441    - DBTransactionError -> Wikimedia\Rdbms\DBTransactionError
442    - DBTransactionSizeError -> Wikimedia\Rdbms\DBTransactionSizeError
443    - DBUnexpectedError -> Wikimedia\Rdbms\DBUnexpectedError
444    - DatabaseMysqlBase -> Wikimedia\Rdbms\DatabaseMySQL
445    - DatabaseMysqli -> Wikimedia\Rdbms\DatabaseMySQL
446    - EasyDeflate -> Deflate
447    - Field -> Wikimedia\Rdbms\Field
448    - IMaintainableDatabase -> Wikimedia\Rdbms\IMaintainableDatabase
449    - LinksDeletionUpdate -> MediaWiki\Deferred\LinksUpdate\LinksDeletionUpdate
450    - LinksUpdate -> MediaWiki\Deferred\LinksUpdate\LinksUpdate
451    - LoadBalancer -> Wikimedia\Rdbms\LoadBalancer
452    - LoadBalancerSingle -> Wikimedia\Rdbms\LoadBalancerSingle
453    - RCFeedEngine -> FormattedRCFeed
454    - RandomPage -> MediaWiki\Specials\SpecialRandomPage
455 * The return value of IDatabase::upsert(), deprecated since 1.33, has been
456   removed.
457 * Instancing MediaWiki\Specials\SpecialRandomPage without injected services has
458   been removed.
459 * mediawiki.ui/utilities.less with its three layout CSS classes has been removed
460 * SpecialPage::listed() and ::setListed(), deprecated since 1.35, have both been
461   removed. Use ::isListed() to read, and over-ride by implementing isListed() or
462   by sub-classing UnlistedSpecialPage.
463 * BlockListPager::getTotalAutoblocks() was removed.
464 * …
466 === Deprecations in 1.42 ===
467 * (T273239) wfGetDB(), deprecated in 1.39, now emits deprecation warnings. Most
468   code can migrate to MediaWikiServices::getInstance()->getConnectionProvider()
469   ->getReplicaDatabase() or …->getPrimaryDatabase() as appropriate.
470 * (T166010) All PHP code in MediaWiki is slowly being moved to be in a class
471   namespace as appropriate, so that we can use PSR-4 auto-loading, which will
472   speed up general code loading of MediaWiki. The old global namespace class
473   names are being left behind as deprecated aliases.
475   In this release of MediaWiki, XYZ classes now have a namespace and XYZ do
476   not yet (XYZ% done, up from 63% in MediaWiki 1.41.0). The following have newly
477   been moved:
478   - MediaWiki\Cache:
479     - BacklinkCache
480     - FileCacheBase
481     - GenderCache
482     - HTMLCacheUpdater (and fix case for consistency with HTMLFileCache)
483     - LinkBatch
484     - LinkCache
485     - UserCache
486   - MediaWiki\Context:
487     - ContextSource
488     - DerivativeContextSource
489     - IContextSource
490     - MutableContext
491     - RequestContext
492   - MediaWiki\Deferred:
493     - AtomicSectionUpdate
494     - AutoCommitUpdate
495     - CdnCacheUpdate
496     - DataUpdate
497     - DeferrableCallback
498     - DeferrableUpdate
499     - DeferredUpdates
500     - DeferredUpdatesScope
501     - DeferredUpdatesScopeMediaWikiStack
502     - DeferredUpdatesScopeStack
503     - EnqueueableDataUpdate
504     - HtmlFileCacheUpdate
505     - JobQueueEnqueueUpdate
506     - MWCallableUpdate
507     - MergeableUpdate
508     - MessageCacheUpdate
509     - SearchUpdate
510     - SendPasswordResetEmailUpdate
511     - SiteStatsUpdate
512     - TransactionRoundAwareUpdate
513     - TransactionRoundDefiningUpdate
514     - UserEditCountInfo
515     - UserEditCountUpdate
516   - MediaWiki\HTMLForm:
517     - CodexHTMLForm
518     - CollapsibleFieldsetLayout
519     - HTMLForm
520     - HTMLFormActionFieldLayout
521     - HTMLFormElement
522     - HTMLFormField
523     - HTMLFormFieldLayout
524     - HTMLFormFieldRequiredOptionsException
525     - HTMLNestedFilterable
526     - OOUIHTMLForm
527     - VFormHTMLForm
528     - MediaWiki\HTMLForm\Field:
529       - HTMLApiField
530       - HTMLAutoCompleteSelectField
531       - HTMLButtonField
532       - HTMLCheckField
533       - HTMLCheckMatrix
534       - HTMLComboboxField
535       - HTMLDateTimeField
536       - HTMLEditTools
537       - HTMLExpiryField
538       - HTMLFileField
539       - HTMLFloatField
540       - HTMLFormFieldCloner
541       - HTMLFormFieldWithButton
542       - HTMLHiddenField
543       - HTMLInfoField
544       - HTMLIntField
545       - HTMLMultiSelectField
546       - HTMLNamespacesMultiselectField
547       - HTMLRadioField
548       - HTMLRestrictionsField
549       - HTMLSelectAndOtherField
550       - HTMLSelectField
551       - HTMLSelectLanguageField
552       - HTMLSelectLimitField
553       - HTMLSelectNamespace
554       - HTMLSelectNamespaceWithButton
555       - HTMLSelectOrOtherField
556       - HTMLSizeFilterField
557       - HTMLSubmitField
558       - HTMLTagFilter
559       - HTMLTagMultiselectField
560       - HTMLTextAreaField
561       - HTMLTextField
562       - HTMLTextFieldWithButton
563       - HTMLTimezoneField
564       - HTMLTitleTextField
565       - HTMLTitlesMultiselectField
566       - HTMLToggleSwitchField
567       - HTMLUserTextField
568       - HTMLUsersMultiselectField
569   - MediaWiki\Installer:
570     - DatabaseUpdater
571     - MysqlUpdater
572   - MediaWiki\LinkedData:
573     - PageDataRequestHandler
574   - MediaWiki\Maintenance:
575     - Version
576   - MediaWiki\Message:
577     - Message
578   - MediaWiki\Parser:
579     - Parser
580     - ParserOutput
581   - MediaWiki\PoolCounter:
582     - PoolCounter
583     - PoolCounterNull
584     - PoolCounterRedis
585     - PoolCounterWork
586     - PoolCounterWorkViaCallback
587     - PoolWorkArticleView
588     - PoolWorkArticleViewCurrent
589     - PoolWorkArticleViewOld
590   - MediaWiki\Site:
591     - CachingSiteStore
592     - DBSiteStore
593     - HashSiteStore
594     - MediaWikiSite
595     - Site
596     - SiteExporter
597     - SiteImporter
598     - SiteList
599     - SiteLookup
600     - SiteStore
601   - (T352284) MediaWiki\User\Options:
602     - DefaultOptionsLookup
603     - UserOptionsLookup
604     - UserOptionsManager
605     - StaticUserOptionsLookup
606 * Some hook classes have been moved from the generic MediaWiki\Hooks namespace
607   to live closer to the code which uses them:
608   - MediaWiki\Output\Hook:
609     - AfterBuildFeedLinksHook
610     - AfterFinalPageOutputHook
611     - BeforePageDisplayHook
612     - BeforePageRedirectHook
613     - GetCacheVaryCookiesHook
614     - LanguageLinksHook
615     - MakeGlobalVariablesScriptHook
616     - OutputPageAfterGetHeadLinksArrayHook
617     - OutputPageBeforeHTMLHook
618     - OutputPageBodyAttributesHook
619     - OutputPageCheckLastModifiedHook
620     - OutputPageMakeCategoryLinksHook
621     - OutputPageParserOutputHook
622 * API modules using ApiBase::requirePostedParameters() must also override
623   mustBePosted() to return true.
624 * Overriding MWException::getHTML(), ::getText(), ::getPageTitle(), and
625   ::reportHTML() in order to display custom exception messages is now
626   deprecated. Provide the error message when constructing the Exception,
627   or if you need a whole custom error page, use ErrorPageError instead.
628 * Using `new ImportReporter( … )` or `new ApiImportReporter( … )` without
629   the $context parameter is now deprecated.
630 * Using `WikiImporterFactory::getWikiImporter()` without the $performer
631   parameter is now deprecated.
632 * BlockManager::getUserBlock() was deprecated. Instead use
633   BlockManager::getBlock(), which expects the caller to do ipblock-exempt
634   checking.
635 * The `composer phpunit:entrypoint` entrypoint has been deprecated, along with
636   bootstrap.integration.php and suite.xml. Run tests with `composer phpunit`
637   instead, or simply `vendor/bin/phpunit`, which use bootstrap.php and
638   phpunit.xml.dist.
639 * The global variable $wgCommandLineMode is deprecated. In most cases checks
640   for `$wgCommandLineMode` can be replaced with `MW_ENTRY_POINT === 'cli'`.
641 * The global function wfUnpack is deprecated and emits deprecation
642   warnings. Use StringUtils::unpack instead.
643 * SpecialEmailUser::getTarget() has been deprecated.
644 * User::isBlocked(), ::isBlockedFromCreateAccount() and ::isBlockedFrom() now
645   emit deprecation warnings. They were deprecated since 1.34, 1.37 and 1.33
646   respectively.
647 * DatabaseBlock::newFromID() was deprecated and will emit deprecation warnings.
648   Instead use DatabaseBlockStore::newFromID().
649 * DatabaseBlock::getAutoblockExpiry() was deprecated without replacement.
650 * MagicWord::getId() has been deprecated.
651 * MagicWordFactory::getSubstIDs() has been deprecated.
652 * Status::setMessageLocalizer is deprecated. Callers that want to control the
653   localization of the Status object should obtain a StatusFormatter from
654   the StatusFormatterFactory.
655 * Html::buttonAttributes() and Html::getTextInputAttributes() methods
656   no longer do anything and have been deprecated.
657 * DatabaseBlock::doAutoblock and ::updateTimestamp are now deprecated, use
658   DatabaseBlockStore::doAutoblock and ::updateTimestamp instead.
659 * The MediaWiki class has been deprecated. Type hints in hooks should be
660   changed to refer to MediaWikiEntryPoint instead. Note that extensions should
661   not define their own entry points and should not interfere with the state of
662   MediaWikiEntryPoint instances.
663 * Various methods in ObjectCache have been deprecated and their equivalent made
664   available in ObjectCacheFactory, use them instead:
665   - ::getInstance() -> ObjectCacheFactory::getInstance()
666   - ::newFromParams() -> ObjectCacheFactory::newFromParams()
667   - ::newAnything() -> ObjectCacheFactory::newInstance(
668          ObjectCache::getAnythingId() )
669   - ::getLocalServerInstance() -> ObjectCacheFactory::getLocalServerInstance()
670   - ::clear() -> ObjectCacheFactory::clear()
671   - In addition, the ObjectCache::$instances member has been deprecated as well.
672 * Vuex has been deprecated in favor of its successor, Pinia. Though deprecated,
673   Vuex 4 will remain accessible for the foreseeable future. Pinia should be used
674   for new projects.
675 * Linker::makeHeadline() has been deprecated.
676 * SerializedValueContainer::isUnified() has been deprecated and now emits
677   deprecation warnings since 1.42.
678 * Linker::generateTOC(), Linker::tocIndent(), Linker::tocUnindent(),
679   Linker::tocLine(), Linker::tocLineEnd(), Linker::tocList() are deprecated.
680 * Title::getBrokenLinksFrom() has been deprecated.
681 * LogFormatter subclasses now emit deprecation warnings unless they are
682   constructed using LogFormatterFactory.
683 * ReplicatedBagOStuff has been deprecated since 1.42.
684 * The third argument to ContentRenderer::getParserOutput() now accepts a
685   RevisionRecord or WikiRevision; passing an integer revision id has been
686   deprecated and emits a warning.
687 * Passing a null value to ParserOutput::setPageProperty() has been deprecated
688   and emits a warning; pass an empty string or use `::unsetPageProperty()`
689   instead.
690 * Passing a non-scalar value to ParserOutput::setPageProperty() will emit
691   a warning (it has never worked).
692 * ParserOutput::setLanguageLinks() has been deprecated.
693 * ParserOutput::getTimestamp() and ::setTimestamp() have been deprecated; use
694   ::getRevisionTimestamp() and ::setRevisionTimestamp() instead.
695 * ParserOutput::setText() has been deprecated; use ::setRawText() instead which
696   matches the name of the corresponding getter, ParserOutput::getRawText().
697 * ParserOutput::addTemplate() will emit a deprecation warning if it is called
698   with a non-local title, such as an interwiki link.  In a future release
699   it will throw InvalidArgumentException.
700 * ApiQueryBlockInfoTrait::addBlockInfoToQuery() will emit deprecation warnings
701   and will soon stop working due to schema changes. Instead use
702   addDeletedUserFilter() or getBlockDetailsForRows().
703 * UploadBase::getImageInfo was deprecated, subclasses of ApiUpload can use
704   ApiUpload::getUploadImageInfo() instead.
705 * DatabaseBlockStore::updateTimestamp() is now internal and should not be
706   called.
707 * The LocalisationCache helper class GlobalDependency has been deprecated,
708   use MainConfigDependency instead.
709 * The module `mediawiki.icon` has been deprecated. Use the Codex mixin instead
710   (T351681).
711 * ConfigRepository::class and MediaWikiServices::getConfigRepository() have been
712   deprecated, they are unused.
713 * Passing a WikiPage to PageEditStash::parseAndCache() has been deprecated.
714   Use PageUpdater instance.
715 * SpecialBlock::getSuggestedDurations() has been deprecated, use
716   Language::getBlockDurations() instead.
717 * MediaWikiServices::getBlockErrorFormatter() has been deprecated, use
718   MediaWikiServices::getFormatterFactory()->getBlockErrorFormatter() instead.
719 * DummyLinker has been deprecated. The DummyLinker parameter to the
720   'ImageBeforeProduceHTML' hook will become null in the future.
721 * Database::listViews() has been deprecated. This was previously used to filter
722   views out of the return value of Database::listTables(). Now listTables()
723   will not include views. MediaWiki does not use views.
724 * (T207621) UserMailer::rfc822Phrase() has been hard deprecated.
725 * TempUserConfig::getMatchPattern has been deprecated, use
726   TempUserConfig::getMatchPatterns instead.
727 * (T230025) Title::purgeSquid(), deprecated in 1.35, now emits warnings.
728 * Title::getCdnUrls(), deprecated in 1.35, now emits warnings.
729 * The rarely-used convenience method Xml::wrapClass() is now deprecated. Instead
730   you can use Xml::tags('span', ['class'=>'foo'], 'bar').
731 * WebRequest::getCrossSiteCookie() has been deprecated due to the removal of
732   $wgUseSameSiteLegacyCookies. It will emit deprecation warnings. Use
733   WebRequest::getCookie().
734 * Using the array_merge_recursive merge strategy in extension.json and skin.json
735   has been hard deprecated.
736 * DBAccessObjectUtils::getDBFromIndex() is now deprecated, use
737   ::getDBFromRecency() instead.
738 * Many Xml methods that are specific to HTML but not XML are deprecated:
739   - Xml::buildForm
740   - Xml::check
741   - Xml::checkLabel
742   - Xml::fieldset
743   - Xml::input
744   - Xml::inputLabel
745   - Xml::inputLabelSep
746   - Xml::label
747   - Xml::option
748   - Xml::password
749   - Xml::radio
750   - Xml::radioLabel
751   - Xml::span
752   - Xml::submitButton
753   - Xml::textarea
754   has been hard deprecated
755 * IMaintainableDatabase::truncate() has been deprecated. Use truncateTable()
756   instead.
757 * TextConflictHelper->incrementStatsByUserEdits() is now deprecated.  The
758   action this function previously handled should be moved into
759   incrementConflictStats() and incrementResolvedStats().
760 * SQLPlatform::getQueryVerb() is now deprecated.
761 * …
763 === Other changes in 1.42 ===
764 * Gallery: Image captions are no longer wrapped in <p> tags. Skins that
765   customize rendering for galleries may need to tweak their CSS.
766 * Scripts under maintenance/dev/, for quickly setup a local MediaWiki for
767   development purposes, have been removed, see DEVELOPERS.md for alternatives.
768 * …
770 == Compatibility ==
772 MediaWiki 1.42 requires PHP 7.4.3 or later and the following PHP extensions:
774 * ctype
775 * dom
776 * fileinfo
777 * iconv
778 * intl
779 * json
780 * mbstring
781 * xml
783 MariaDB is the recommended database software. MySQL, PostgreSQL, or SQLite can
784 be used instead, but support for them is somewhat less mature.
786 The supported versions are:
788 * MariaDB 10.3 or higher
789 * MySQL 5.7.0 or higher
790 * PostgreSQL 10 or later
791 * SQLite 3.8.0 or later
793 == Online documentation ==
794 Documentation for both end-users and site administrators is available on
795 MediaWiki.org, and is covered under the GNU Free Documentation License (except
796 for pages that explicitly state that their contents are in the public domain):
798   https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
800 == Mailing list ==
801 A mailing list is available for MediaWiki user support and discussion:
803   https://lists.wikimedia.org/postorius/lists/mediawiki-l.lists.wikimedia.org/
805 A low-traffic announcements-only list is also available:
807   https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/
809 It's highly recommended that you sign up for one of these lists if you're
810 going to run a public MediaWiki, so you can be notified of security fixes.
812 == IRC help ==
813 There's usually someone online in #mediawiki on irc.libera.chat.