RELEASE-NOTES-1.42 37 KB

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