forked from wikimedia/mediawiki
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRELEASE-NOTES-1.39
633 lines (592 loc) · 32 KB
/
RELEASE-NOTES-1.39
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
= MediaWiki 1.39 =
== MediaWiki 1.39.0-rc.1 ==
=== Changes since MediaWiki 1.39.0-rc.0 ===
* Localisation updates.
* (T318754) WebInstallerOptions::addPersonalizationOptions(): Close fieldset
* (T306802) docker: update to latest published images
* (T318307) HTMLFormField::validate(): Update docs to permit all data types
* (T318460) SpecialChangeEmail: Set default for returntoquery
* (T318481) composer: Drop symfony/php73-polyfill
* …
== MediaWiki 1.39.0-rc.0 ==
THIS IS NOT A RELEASE YET
MediaWiki 1.39 is a pre-release testing branch, and is not recommended
for use in production.
== Upgrading notes for 1.39 ==
Don't forget to always back up your database before upgrading!
See the file UPGRADE for more detailed per-version upgrade instructions from the
oldest supported upgrading version, MediaWiki 1.31.
Some specific notes for MediaWiki 1.39 upgrades are below:
* (T278139) Drop PHP 7.3 support in MediaWiki 1.39; require 7.4.3 or higher.
For notes on 1.38.x and older releases, see HISTORY.
=== Configuration changes for system administrators in 1.39 ===
==== New configuration ====
* $wgAutoCreateTempUser – This configures automatic user creation on page save.
* $wgCopyUploadAllowOnWikiDomainConfig – This configures if administrators can
use the MediaWiki:Copyupload-allowed-domains system message to define which
domains can be used with the upload-by-url tool.
* $wgCdnMatchParameterOrder – This can be set to false if MediaWiki is behind a
CDN that re-orders query parameters. This will make the code that matches
request URLs to canonical CDN URLs insensitive to parameter order.
* $wgMultiShardSiteStats – This allows you to split site_stats across multiple
rows. Only useful for very large, heavily edited wikis. (T306589)
==== Changed configuration ====
* $wgInvalidUsernameCharacters – This setting now contains the char '>', which
is now the reserved delimiter for external user names.
* $wgLocalFileRepo – The default serialization method for file meta-data has
been changed to JSON. You can revert it to PHP by setting the property
'useJsonMetadata' to false.
* $wgLBFactoryConf – The 'configCallback' flag can now be set to a callback
function that returns an array with keys to update in $wgLBFactoryConf. This
can be used to update the database configuration on the fly, e.g. to take
replica hosts out of rotation.
* $wgDBservers and $wgLBFactoryConf – The DBO_SSL flag in has been deprecated in
favour of a boolean "ssl" parameter.
* $wgObjectCaches – The 'globalKeyLB' and 'localKeyLB' flags are no longer
supported.
==== Removed configuration ====
* $wgMultiContentRevisionSchemaMigrationStage - This transition flag, deprecated
since MediaWiki 1.35, has been removed; the data migration is over.
* $wgActorTableSchemaMigrationStage - This transition flag has been removed; the
data migration is over.
* $wgWikiFarmSiteDetector – This experimental setting has been removed without
replacement. Use the MW_WIKI_NAME environment variable to specifiy the name of
the site for which to load configuration. Using the WIKI_NAME environment
variable for this purpose is deprecated.
* $wgParserCacheUseJson - The ParserCache now always uses JSON serialization.
Reading old non-JSON cache entries is still supported. The setting had been
deprecated since 1.36.
* $wgAllowJavaUploads - To allow uploads of JAR files, remove application/java
from $wgMimeTypeExclusions.
* $wgMaxRedirects – This broken feature was removed, as it never worked as
intended (T296430).
* $wgElementTiming – This experimental, default-disabled feature has been
removed without replacement.
* $wgPriorityHints and $wgPriorityHintsRatio – The related experimental feature
has been removed without replacement.
* $wgIncludeLegacyJavaScript – This flag has been removed, without loss of any
functionality in this release. Most former "wikibits" functions were removed
after deprecation in previous releases. The remaining functions, such as
importScript, are now available unconditionally.
* $wgLegacySchemaConversion - This unused setting has been removed.
* $wgInterwikiPrefixDisplayTypes - This unused setting has been removed.
* $wgMangleFlashPolicy – This is no longer functional, and is now deprecated.
Users who are somehow still using Flash as a browser extension will be exposed
to CSRF vulnerabilities.
=== New user-facing features in 1.39 ===
* Optional automatic user creation on page save ($wgAutoCreateTempUser)
* Administrators now have the option to delete/undelete the associated "Talk"
page when they are (un)deleting a given page. `deletetalk` and `undeletetalk`
options were added to the 'delete' and 'undelete' action APIs in MW 1.38.
* `{{=}}` is now a wikitext built-in magic word, expanding to `=`. This is
conventionally used as an escape mechanism to allow the use of `=` in
unnamed template arguments. Defining [[Template:=]] to expand to something
other than `=` has been deprecated since 1.36, with affected pages put into
a special tracking category for migration.
* (T284020) Bot passwords are now supported when using the REST API.
=== New developer features in 1.39 ===
* Added optional $size param to SearchResultProvideThumbnail hook.
* SearchResultProvideThumbnail hook interface moved from MediaWiki\Rest\Hook
namespace to MediaWiki\Search\Hook.
* JsonValidateSaveHook has been added to allow extensions to set additional
pre-save validations for specific JSON pages (T313254)
* Added 'PermissionErrorAudit' hook, enabling extensions to audit permission
errors on specfic actions. For instance account registration failed attempts
due to a block (T306018).
=== External library changes in 1.39 ===
==== New external libraries ====
* Added Codex v0.1.1. This replaces the now deprecated wvui library.
===== New development-only external libraries =====
* Updated QUnit from 2.18.0 to 2.18.2.
==== Changed external libraries ====
* Updated jQuery from v3.6.0 to v3.6.1.
* Updated OOUI from v0.43.2 to v0.44.3.
* Updated composer/semver from 3.2.6 to 3.3.2.
* Updated symfony/polyfill-php73 from 1.25.0 to 1.26.0.
* Updated symfony/polyfill-php80 from 1.25.0 to 1.26.0.
* Updated symfony/yaml from 5.4.3 to 5.4.10.
* Updated vue/compat from 3.2.23 to 3.2.37.
* Updated wikimedia/base-convert from 2.0.1 to 2.0.2.
* Updated wikimedia/ip-set from 3.0.0 to 3.1.0.
* Updated wikimedia/minify from 2.2.6 to 2.3.0.
* Updated wikimedia/php-session-serializer from 2.0.0 to 2.0.1.
* Updated wikimedia/running-stat from 1.2.1 to 2.1.0.
* Updated wikimedia/scoped-callback from 3.0.0 to 4.0.0.
* Updated wikimedia/services from 2.0.1 to 3.0.0.
* Updated wikimedia/timestamp from 3.0.0 to 4.0.0.
* Updated wikimedia/xmp-reader from 0.8.1 to 0.8.3.
===== Changed development-only external libraries =====
* Updated composer/spdx-licenses from 1.5.5 to 1.5.6.
* Updated doctrine/dbal for PHP < 7.3 from 2.13.6 to 2.13.9.
* Updated doctrine/dbal for PHP >= 7.3 from 3.1.5 to 3.4.2.
=== Bug fixes in 1.39 ===
* (T314013) $wgExtraNamespaces no longer overrides canonical namespace names
specified in extension.json files. While this setting can still be used to
rename extension-defined namespaces, system administrators may need to run
namespaceDupes.php after upgrading.
=== Action API changes in 1.39 ===
* New `undeletetalk` parameter on action=undelete that allows you to restore
all revisions of the associated talk page.
=== Languages updated in 1.39 ===
MediaWiki supports over 350 languages. Many localisations are updated regularly.
Below only new and removed languages are listed, as well as changes to languages
because of Phabricator reports.
* Actual localization was added for several languages, which were already
in Names.php and even used for a Wikipedia:
** (T313200) Added language support for Rundi (Kirundi, rn).
** (T310976) Added language support for Tumbuka (ChiTumbuka, tum).
** (T314270) Added language support for Kanuri (kr).
* (T313199) Added language support for Sylheti (syl).
* (T311975) Added language support for Ghanaian Pidgin (gpe).
* (T307080) Added language support for Okinawan (ryu).
* (T307887) Added language support for Mooré (mos).
* (T308813) Added language support for Nigerian Pidgin (pcm).
* (T309763) Added language support for Tai Nüa (tdd).
* (T310040) Added language support for Fante (fat).
* (T311034) Added language support for Campidanese Sardinian (sro).
* (T315406) Fix the autonym of the Iñupiaq language to "Iñupiatun".
* (T315677) Removed French fallback from the Fula language (ff).
* (T304920) In Swahili, The "Media" namespace is now "Media", as in English,
and the "File" namespace is now "Faili". The old name of the "File" namespace
was "Picha", and it's kept for backwards compatibility. If you manage a wiki
in Swahili, and you use "Faili:" as a namespace anywhere in wikitext, and
you mean to use it as "Media:", these need to be replaced to "Media:".
* (T309866) Some namespace translations were updated for Kyrgyz (ky). The old
ones are retained as aliases for backwards compatibility.
* (T117845) Started the renaming of the language codes for Serbian from sr-ec
and sr-el to sr-cyrl and sr-latn.
=== Breaking changes in 1.39 ===
* Basic non-JavaScript (Grade C) support has been dropped for Internet Explorer
9-10, Firefox 27-38, and Android 4.3-4.4.
* The following methods, deprecated since 1.37, have been removed from IDatabase
- ::fetchObject()
- ::fetchRow()
- ::numRows()
- ::freeResult()
* Title::getDefaultNamespace(), deprecated since 1.37, has been removed.
* The DBPrimaryPos class alias 'DBMasterPos' has been removed.
* The global function wfGetLB(), deprecated since 1.27, has been removed.
* Passing a db to BlockRestrictionStore::loadByBlockId() is no longer supported.
BlockRestrictionStoreFactory should be used to fetch a correct
BlockRestrictionStore instead. This was deprecated since 1.38.
* The global function wfGetCache(), deprecated since 1.32, has been removed. You
can use ObjectCache::getInstance() instead.
* The global function wfGetMainCache(), deprecated since 1.32, has been removed.
You can use ObjectCache::getLocalClusterInstance() instead.
* MovePage::__construct() now requires that all parameters be passed. The
fallback to MediaWikiServices emitted deprecation notices since 1.37.
* WikiPage::doEditContent(), deprecated since 1.32, was removed.
* WikiPage::prepareContentForEdit() now requires a UserIdentity parameter to be
provided. Not providing one has been deprecated since 1.37.
* EventRelayerKafka, deprecated in 1.38, was removed.
* MediaWiki\Logger\Monolog\KafkaHandler, deprecated in 1.38, was removed.
* The "trace" option of SectionProfiler, deprecated in 1.38, was removed.
* The global function wfWikiID(), deprecated since 1.35, has been removed.
* Database::wasKnownStatementRollbackError() was removed. Subclasses should
override isKnownStatementRollbackError() instead.
* Database::wasQueryTimeoutError() was removed. Subclasses should
override isQueryTimeoutError() instead.
* Database::buildSuperlative() has been removed without deprecation.
* The following methods, deprecated in 1.37, have been removed:
- Linker::setStubThreshold(), ::getStubThreshold().
- LinkRendererFactory::createForUser().
- ParserOptions::getStubThreshold(), ::setStubThreshold().
* Changes to ResourceLoader modules:
- The mediawiki.viewport module, deprecated in 1.37 has been
removed. Use IntersectionObserver instead.
* If you manage a wiki in Swahili, and you use "Faili:" as a namespace anywhere,
and you mean to use it as "Media:", replace it with "Media:". See T304920.
* Changes to skins:
- Skin::getCopyrightIcon(), ::getPoweredBy(), deprecated in 1.37 have been
removed.
- Skin::bottomScripts, deprecated in 1.37, now emits deprecation notices.
Skins using SkinTemplate must set bodyOnly as a skin option and
remove lines of code generating html, body and head elements.
- Skin::makeSearchButton and Skin::makeSearchInput were deprecated in 1.38.
Use SkinTemplate methods with the same name or Skin::getTemplateData
instead.
- Styles for the HTML classes `warningbox`, `errorbox` and `successbox` have
been removed in favor of Html class methods.
- The feature `legacy` used inside ResourceLoaderSkinModule,
deprecated in 1.37, will no longer ship any styles.
- Skin::getSkinStylePath, deprecated since 1.36, has been removed.
- Skin::getPortletData has been made private.
- SkinTemplate::getPersonalToolsList(), deprecated in 1.35 has been
removed.
- The following SkinTemplate template data, deprecated in 1.37,
have been removed:
- poweredbyico
- copyrightico
- The following hooks, deprecated in 1.37, have been removed:
- SkinGetPoweredBy: SkinGetPoweredByHook
- The following hooks are deprecated and replaced with
SkinTemplateNavigation::Universal:
- SkinTemplateNavigation::SpecialPage
- SkinTemplateNavigation
- PersonalUrls
- The mediawiki.skinning.content.externallinks module, which was
deprecated in 1.36 has been removed. Skins that still rely on it
will lose the icon styling of external links by type.
* Experimental wiki farm support: Automatic detection of the requested site
within a wiki farm based on the requested domain has been removed.
Use the MW_WIKI_NAME environment variable to specify the name of the site
to load configuration for. Using the WIKI_NAME environment variable for this
purpose is deprecated. This is only relevant if you have been using
$wgWikiFarmSettingsDirectory to load wiki farm config.
* MWExceptionHandler::installHandler was marked @internal and had required
arguments added. This method is intended for use in bootstrap code and is
unused in known extensions.
* MWException::useOutputPage was made private without deprecation.
This method was apparently only public for testing and is unused in known
extensions.
* Calling getId() on a User or UserIdentityValue from the wrong wiki, deprecated
since 1.36, now throws an exception.
* The following methods have been removed from ExtensionRegistry without
deprecation and without replacement. They had been introduced in 1.35 for use
in the testing framework, and were not in use by any known extension:
- exportAutoloadClassesAndNamespaces
- exportTestAutoloadClassesAndNamespaces
* The MWNamespace class, deprecated since 1.34, has been removed. Use the
NamespaceInfo service instead.
* The UnknownContent and UnknownContentHandler class aliases have been removed,
use FallbackContent and FallbackContentHandler instead.
* IResultWrapper::next() now returns void, to match the Iterator interface that
it implements. fetchObject() has the same behavior as next() used to.
* In HTMLForm HTMLAutoCompleteSelectFields, the parameters 'autocomplete' and
'autocomplete-messages', which were deprecated in MediaWiki 1.29, were
removed. Instead, use 'autocomplete-data' and 'autocomplete-data-messages'.
* The global $wgParser, deprecated in 1.32, was removed. Use
MediaWikiServices::getInstance()->getParser() instead.
* ParserOutput::setText will now set the ParserOutput's text to null if
given null. Previously it did nothing if given null.
* The default value for the first argument to the ParserOutput constructor
is now null instead of ''.
* IDatabase::lockTables() and IDatabase::unlockTables(), deprecated since 1.38,
have been removed.
* The $context parameter to `new HTMLForm( … )` and `HTMLForm::factory( … )`
is now required.
* The class alias for revision related classes in namespace MediaWiki\Storage
has been removed. Classes are IncompleteRevisionException,
MutableRevisionRecord, MutableRevisionSlots, RevisionAccessException,
RevisionArchiveRecord, RevisionFactory, RevisionLookup, RevisionRecord,
RevisionSlots, RevisionStore, RevisionStoreRecord, SlotRecord, and
SuppressedDataException.
* Calling getBy() on an AbstractBlock from the wrong wiki, deprecated since
1.38, now throws an exception.
* Passing a MediaWiki\Linker\LinkTarget to EditPage::makeTemplatesOnThisPageList
or TemplatesOnThisPageFormatter::format is no longer supported,
a MediaWiki\Page\PageIdentity is required.
* The deprecated class alias FakeConverter has been removed, use
TrivialLanguageConverter instead.
* The deprecated ApiQueryContributions class alias has been removed, use
ApiQueryUserContribs instead.
* The deprecated MediaWiki\Special\SpecialPageFactory class alias has been
removed, use MediaWiki\SpecialPage\SpecialPageFactory instead.
* The following skin modules, deprecated in 1.37, have been removed:
- mediawiki.skinning.elements
- mediawiki.skinning.content
- mediawiki.toc.styles
- mediawiki.legacy.config
- mediawiki.legacy.shared
- mediawiki.legacy.commonPrint
* FileModule::compileLessFile(), deprecated since 1.35, has been removed. Use
::compileLessString() instead.
* LogFormatter::styleRestricedElement(), deprecated since 1.37, has been
removed. Use ::styleRestrictedElement() instead.
* Title::isNamespaceProtected(), deprecated in 1.34, has been removed.
* ApiStashEdit::parseAndStash(), deprecated in 1.34, has been removed.
* LinkCache::forUpdate(), deprecated in 1.34, has been removed.
* Passing null instead of a NamespaceInfo instance to LinkCache::__construct()
is not supported anymore. It is recommended to request an instance from the
service container.
* ApiQueryBase::showHiddenUsersAddBlockInfo(), deprecated in 1.34, has been
removed. Use ApiQueryBlockInfoTrait instead.
* ApiQueryBase::prefixedTitlePartToKey(), deprecated in 1.35, has been removed.
Use ::parsePrefixedTitlePart() instead.
* ExternalStoreDB::getSlave(), deprecated in 1.34, has been removed. Use
ExternalStoreDB::getReplica() instead.
* ChangesListSpecialPage::checkStructuredFilterUiEnabled() and
SpecialWatchlist::checkStructuredFilterUiEnabled() now support UserIdentity
as the only argument. Passing Config argument was deprecated in 1.34.
* DatabaseUpdater::ifNoActorTable(), deprecated in 1.35, has been removed. Use
::ifTableNotExists() instead.
* MediaWiki\Revision\RevisionStoreFactory::getRevisionStore was documented
to allow passing bool true as a dbDomain, this is no longer possible,
because that is an invalid value for a dbDomain.
* LinkHolderArray::__construct() had its signature changed. The class was marked
internal in 1.35.
* SpecialMute::isTargetBlacklisted(), deprecated in 1.35, has been removed. Use
::isTargetMuted() instead.
* WebRequest::checkUrlExtension(), deprecated in 1.35, has been removed.
* ContentHandler::cleanupHandlersCache(), deprecated in 1.35, has been removed.
* SpecialVersion::getExtAuthorsFileName, deprecated in 1.35, has been removed.
Use MediaWiki\ExtensionInfo::getAuthorsFileName.
* SpecialVersion::getExtLicenseFileName, deprecated in 1.35, has been removed.
Use MediaWiki\ExtensionInfo::getLicenseFileNames.
* CategoryPage::getCategoryViewerClass and ::setCategoryViewerClass, deprecated
in 1.35, have been removed.
* SqlBlobStore::getLegacyEncodingConversionLang(), deprecated in 1.34, has been
removed.
* wfCanIPUseHTTPS(), deprecated in 1.37, has been removed.
* wfGetScriptUrl(), deprecated in 1.35, has been removed.
* The following methods of Database class, are no longer stable to override:
- ::implicitOrderby()
- ::selectSQLText()
- ::bitNot()
- ::bitAnd()
- ::bitOr()
- ::buildConcat()
- ::buildGreatest()
- ::buildLeast()
- ::buildSubstring()
- ::buildStringCast()
- ::buildIntegerCast()
- ::tableName()
- ::addIdentifierQuotes()
- ::buildLike()
- ::limitResult()
- ::unionSupportsOrderAndLimit()
- ::unionQueries()
- ::conditional()
- ::strreplace()
- ::timestamp()
- ::getInfinity()
- ::setTableAliases()
- ::setIndexAliases()
- ::buildGroupConcatField()
* SpecialUnblock::processUnblock(), deprecated in 1.36, has been removed. Use
UnblockUser instead.
* wfLocalFile() and wfFindFile(), deprecated in 1.34, have been removed.
* Maintenance script resetUserTokens.php, deprecated in 1.27, has been removed.
* These methods in Database have been removed without deprecation as they are
not used outside core. Users should override corresponding methods in
SQLPlatform instead:
- Database::doInsert -> SQLPlatform::insertSqlText
- Database::doDropTable -> SQLPlatform::dropTableSqlText
- Database::doRollback -> SQLPlatform::rollbackSqlText
- Database::doSavepoint -> SQLPlatform::savepointSqlText
- Database::doReleaseSavepoint -> SQLPlatform::releaseSavepointSqlText
- Database::doRollbackToSavepoint -> SQLPlatform::rollbackToSavepointSqlText
* The following protected methods of Database class have been removed without
deprecation as they are not used outside core. Users should call
corresponding methods in SQLPlatform:
- Database::makeInsertLists -> SQLPlatform::makeInsertLists
- Database::isFlagInOptions -> SQLPlatform::isFlagInOptions
- Database::normalizeOptions -> SQLPlatform::normalizeOptions
- Database::fieldNameWithAlias -> SQLPlatform::fieldNameWithAlias
- Database::isTransactableQuery -> SQLPlatform::isTransactableQuery
* $wgCanonicalNamespaceNames no longer includes custom namespaces defined using
$wgExtraNamespaces. Extensions should use the NamespaceInfo service instead
of accessing this configuration setting directly.
* The following hook, deprecated in 1.35, has been removed:
- ParserGetVariableValueVarCache: ParserGetVariableValueVarCacheHook
* The $variableCache parameter to the ParserGetVariableValueSwitch hook is
no longer used; non-standard use of this parameter has been deprecated since
1.35.
* These methods have been moved from IDatabase to IMaintainableDatabase:
- IDatabase::fieldExists -> IMaintainableDatabase::fieldExists
- IDatabase::indexExists -> IMaintainableDatabase::indexExists
- IDatabase::tableExists -> IMaintainableDatabase::tableExists
* DBConnRef doesn't accept live connection in constructor anymore.
Only parameters for getting connection should be provided.
* IDatabase::getTopologyRootPrimary() was removed.
* User::blockedBy(), deprecated since 1.38, has been removed.
* User::getBlockId(), deprecated since 1.38, has been removed.
=== Deprecations in 1.39 ===
* PageProps::getInstance(), deprecated since 1.38, emits deprecations warnings.
* The global function wfGetDB() has been deprecated. Use
LoadBalancer::getConnection() instead.
* SpecialRedirectWithAction::__construct without SearchEngineFactory argument
will now emit a deprecation notice.
* Use of the SiteStatsUpdate constructor has been deprecated in favor of
the ::factory() method.
* AuthManager::checkAccountCreatePermissions has been deprecated. Use
AuthManager::authorizeCreateAccount or AuthManager::probablyCanCreateAccount
instead.
* Title::getSelectFields() has been deprecated in favor of
PageStore::newSelectQueryBuilder()
* Title::newFromTitleValue(), deprecated since in 1.34, now emits deprecation
warnings. Use ::newFromLinkTarget() instead.
* ExtensionRegistry::readFromQueue() has been marked @internal. Extensions
should use ExtensionProcessor instead.
* Processor::getExtraAutoloaderPaths() and
ExtensionProcessor::getExtraAutoloaderPaths() have been deprecated, use get
getExtractedAutoloadInfo() instead.
* The following global functions are deprecated in favor of the listed UrlUtils
methods.
- wfExpandUrl -> UrlUtils::expand
- wfGetServerUrl -> UrlUtils::getServer
- wfAssembleUrl -> UrlUtils::assemble
- wfRemoveDotSegments -> UrlUtils::removeDotSegments
- wfUrlProtocols -> UrlUtils::validProtocols
- wfUrlProtocolsWithoutProtRel -> UrlUtils::validAbsoluteProtocols
- wfParseUrl -> UrlUtils::parse
- wfExpandIRI -> UrlUtils::expandIRI
- wfMatchesDomainList -> UrlUtils::matchesDomainList
These methods are exact replacements except that
1) they return null instead of false or empty string on error (where
applicable);
2) UrlUtils::validProtocols does not take a parameter (documentation said not
to pass one to wfUrlProtocols anyway);
3) they use type hints (don't try passing null instead of string, etc.).
* MaintainableDBConnRef is deprecated, use DBConnRef instead.
* Loading DefaultSettings.php is deprecated. To get default values of main
config settings, use MainConfigSchema::listDefaultValues() or
MainConfigSchema::getDefaultValue().
* AbstractContent::getRedirectChain() and
AbstractContent::getUltimateRedirectTarget() are now emitting deprecation
warnings (T296430).
* (T244138) QueryPage::getSQL() is deprecated. Instead QueryPage::getQueryInfo()
should be overridden.
* Calling new JobRunner() directly without $serviceOptions now emits
deprecation warnings. Use MediaWikiServices::getInstance()->getJobRunner()
instead.
* Passing an array of targets to Article::getRedirectHeaderHtml() is
deprecated. Supply a single redirect target instead (T296430).
* The following Less mediawiki.mixins have been deprecated:
- .animation()
- .animation-delay()
- .transform-rotate()
* Skin::getAction is deprecated. Use IContextSource::getActionName instead.
* User::getOption, deprecated since 1.35, now emits deprecation warnings.
Use UserOptionsLookup::getOption instead.
* ILBFactory::forEachLB() is deprecated. Use ::getAllLBs().
* LoadBalancer::forEachOpenConnection() and ::forEachOpenPrimaryConnection()
are deprecated without replacement.
* The following classes were moved from the root namespace to the
MediaWiki\ResourceLoader namespace, the old names becoming deprecated aliases:
ResourceLoader, MessageBlobStore, VueComponentParser.
* The following classes had the "ResourceLoader" prefix stripped while being
moved to the MediaWiki\ResourceLoader namespace, the old names becoming
deprecated aliases: DerivativeResourceLoaderContext,
ResourceLoaderCircularDependencyError, ResourceLoaderClientHtml,
ResourceLoaderCodexModule, ResourceLoaderContext, ResourceLoaderFileModule,
ResourceLoaderFilePath, ResourceLoaderForeignApiModule, ResourceLoaderImage,
ResourceLoaderImageModule, ResourceLoaderLanguageDataModule,
ResourceLoaderLessVarFileModule, ResourceLoaderModule,
ResourceLoaderMwUrlModule, ResourceLoaderOOUIFileModule,
ResourceLoaderOOUIIconPackModule, ResourceLoaderOOUIImageModule,
ResourceLoaderOOUIModule, ResourceLoaderSiteModule,
ResourceLoaderSiteStylesModule, ResourceLoaderSkinModule,
ResourceLoaderStartUpModule, ResourceLoaderUserModule,
ResourceLoaderUserOptionsModule, ResourceLoaderUserStylesModule,
ResourceLoaderWikiModule.
* The following methods in WikiRevision and their interfaces
ImportableUploadRevision and ImportableOldRevision are deprecated:
- ::getUserObj() → ::getUser()
- ::setUserObj() → ::setUsername()
- ::setUserIP() → ::setUsername()
* ObjectCache::addBusyCallback() is deprecated and non-functional.
* MWTimestamp::getHumanTimestamp(), deprecated in 1.26, now emits deprecation
warnings.
* Article::viewRedirect(), deprecated in 1.30, now emits deprecation warnings.
* Parser::getFreshParser() is deprecated, use ParserFactory::getInstance().
* CoreParserFunctions::mwnamespace() is deprecated and emits deprecation
warnings, use CoreParserFunctions::namespace() instead.
* Registering magic variables whose names include a colon is deprecated.
* User::blockedFor(), deprecated in 1.35, now emits deprecation warnings.
* Access to previously public properties AbstractBlock::$mExpiry,
AbstractBlock::$mHideName, AbstractBlock::$mTimestamp, DatabaseBlock::$mAuto,
and DatabaseBlock::$mParentBlockId, deprecated in 1.34, now emits deprecation
warnings.
* Access to previously public properties User::$mBlock, User::$mBlockedby, and
User::$mHideName, deprecated in 1.35, now emits deprecation warnings.
* JobQueueGroup::singleton() and ::destroySingletons(), deprecated in 1.37, now
emit deprecation warnings.
* Title::getNotificationTimestamp(), deprecated in 1.35, now emits deprecation
warnings.
* Global functions wfReadOnly and wfReadOnlyReason, deprecated in 1.38, now
emit deprecation warnings.
* Overriding or calling DifferenceEngine::getDiffBodyCacheKey(), deprecated in
1.31, now emits deprecation warnings.
* Access to previously public property WikiRevision::$fileIsTemp, deprecated in
1.29, now emits deprecation warnings.
* wfQueriesMustScale() has been deprecated and emits deprecation warnings.
* ContextSource::getStats(), RequestContext::getStats(), and
DerivativeContext::getStats(), deprecated in 1.27, now emit deprecation
warnings.
* ManualLogEntry::setTags(), deprecated in 1.33, now emits deprecation warnings.
* WikiRevision::downloadSource(), deprecated in 1.31, now emits deprecation
warnings.
* DifferenceEngine::textDiff(), deprecated in 1.32, now emits deprecation
warnings.
* FormatMetadata::flattenArrayContentLang(), deprecated in 1.36, now emits
deprecation warnings.
* SkinTemplate::getNameSpaceKey(), deprecated in 1.35, now emits deprecation
warnings.
* EnqueueJob::newFromJobsByWiki(), deprecated in 1.33, now emits deprecation
warnings.
* The following methods of the MWGrants class, all deprecated since 1.38,
are now emitting deprecation warnings:
- getValidGrants
- getRightsByGrant
- grantName
- grantNames
- getGrantRights
- grantsAreValid
- getGrantGroups
- getHiddenGrants
- getGrantsLink
- getGrantsWikiText
* DataUpdate::runUpdates(), deprecated in 1.28, now emits deprecation warnings.
* CdnCacheUpdate::newFromTitles(), deprecated in 1.35, now emits deprecation
warnings.
* Instantiating HTMLCacheUpdate class, deprecated in 1.34, now emits deprecation
warnings.
* ISQLPlatform::tableNames() (implemented by IDatabase) is now deprecated.
None of the tableName*() functions should be used by most users;
if you absolutely must use raw SQL, write several tableName() calls instead.
* Language::isWellFormedLanguageTag() has been deprecated in favor of
LanguageCode::isWellFormedLanguageTag().
* The PrevNextNavigationRenderer helper class has been deprecated in favor of
the new PagerNavigationBuilder one.
* The methods IndexPager::getPagingLinks(), IndexPager::getLimitLinks() and
IndexPager::buildPrevNextNavigation() have been deprecated in favor of
IndexPager::getNavigationBuilder().
* Overriding the method IndexPager::makeLink() has been deprecated.
* ActorMigration is deprecated. The temporary table is no longer needed, the
actor table can be directly joined to the revision table, which is simple
enough to not need a helper class. See the methods of ActorMigration for more
specific information on replacements. ActorMigrationBase remains usable for
migrations in extension tables.
* …
=== Other changes in 1.39 ===
* Dynamic default values are now applied before extension registration callbacks
are run. This way, extensions have a complete view of config variables, with
all defaults applied. For example, when the default value of X used to be
static but becomes dynamic, and an extension reads the value of X in the
registration callback, it will now continue to function as expected. In some
cases however, this may cause an undesired change in behavior: if the dynamic
default of setting X depends on the value of setting Y, and an extension
changes Y, the changed value of Y will no longer affect the value of X.
== Compatibility ==
MediaWiki 1.39 requires PHP 7.4.3 or later and the following PHP extensions:
* ctype
* dom
* fileinfo
* iconv
* intl
* json
* mbstring
* xml
MariaDB is the recommended database software. MySQL, PostgreSQL, or SQLite can
be used instead, but support for them is somewhat less mature.
The supported versions are:
* MariaDB 10.3 or higher
* MySQL 5.7.0 or higher
* PostgreSQL 10 or later
* SQLite 3.8.0 or later
== Online documentation ==
Documentation for both end-users and site administrators is available on
MediaWiki.org, and is covered under the GNU Free Documentation License (except
for pages that explicitly state that their contents are in the public domain):
https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
== Mailing list ==
A mailing list is available for MediaWiki user support and discussion:
https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
A low-traffic announcements-only list is also available:
https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
It's highly recommended that you sign up for one of these lists if you're
going to run a public MediaWiki, so you can be notified of security fixes.
== IRC help ==
There's usually someone online in #mediawiki on irc.libera.chat.