Update RELEASE-NOTES-1.35
[mediawiki.git] / RELEASE-NOTES-1.36
blobd259c8d5976f33e206deff2c065661a916c1caec
1 = MediaWiki 1.36 =
3 == MediaWiki 1.36.0-PRERELEASE ==
5 THIS IS NOT A RELEASE YET
7 MediaWiki 1.36 is an alpha-quality development branch, and is not recommended
8 for use in production.
10 == Upgrading notes for 1.36 ==
11 Don't forget to always back up your database before upgrading!
13 See the file UPGRADE for more detailed upgrade instructions, including
14 important information when upgrading from versions prior to 1.11.
16 Some specific notes for MediaWiki 1.36 upgrades are below:
18 * …
20 For notes on 1.35.x and older releases, see HISTORY.
22 === Configuration changes for system administrators in 1.36 ===
24
26 ==== New configuration ====
27 * $wgManualRevertSearchRadius – this introduces a new feature that marks edits
28   as reverts if they restore the page to an exact previous state. This
29   configuration variable sets the maximum number of revisions of a page that
30   will be checked against every new edit. Set this to 0 to disable the feature
31   entirely.
32 * …
34 ==== Changed configuration ====
35 * …
37 ==== Removed configuration ====
38 * $wgUseTwoButtonsSearchForm - This setting, deprecated in 1.35, has been
39   removed.
40 * $wgAllowImageMoving - This setting, deprecated in 1.35, has been removed.
41   Use group permission settings instead. For example, to prevent sysops
42   from moving files, set `$wgGroupPermissions['sysop']['movefile'] = false;`
43 * …
45 === New user-facing features in 1.36 ===
46 * All HTML5 named entities are now accepted in wikitext.
47 * …
49 === New developer features in 1.36 ===
50 * Parser test files can now declare a dependency on a specific extension
51   being loaded, not just on the presence of a certain extension tag hook.
52   This is a better fit for extensions like TimedMediaHandler, which affect
53   the output but don't register parser hooks.  Use `extension:Foo` in
54   the `!! hooks` section of your parser test file to declare a dependency
55   on the `Foo` extension being loaded.
56 * To expose code previously present in SpecialBlock/SpecialUnblock
57   to other parts of the code, or to extensions,
58   the new BlockUser and UnblockUser command objects were added.
59   Use the BlockUserFactory and UnblockUserFactory services to create them.
60 * …
62 === External library changes in 1.36 ===
63 * …
65 ==== New external libraries ====
66 * …
68 ===== New development-only external libraries =====
69 * …
71 ==== Changed external libraries ====
72 * pear/mail_mime was upgraded from 1.10.8 to 1.10.9.
73 * wikimedia/html-formatter was upgraded from 1.0.2 to 2.0.0.
74 * Updated OOUI from 0.39.3 to 0.40.3.
75 * Updated jquery.client from 2.0.2 to 3.0.0.
76 * Updated guzzlehttp/guzzle from 6.5.4 to 7.0.1.
77 * Updated pear/net_smtp from 1.9.1 to 1.9.2.
78 * …
80 ===== Changed development-only external libraries =====
81 * Updated composer/spdx-licenses from 1.5.3 to 1.5.4.
82 * doctrine/sql-formatter was upgraded from 1.1.0 to 1.1.1.
83 * doctrine/dbal was upgraded from 2.10.2 to 2.10.4.
84 * Updated nikic/php-parser from 4.4.0 to 4.10.0.
85 * …
87 ==== Removed external libraries ====
88 * The html5shiv library has been removed, as support for Internet Explorer 8 has
89   been dropped.
90 * …
92 === Bug fixes in 1.36 ===
93 * …
95 === Action API changes in 1.36 ===
96 * …
98 === Action API internal changes in 1.36 ===
99 * …
101 === Languages updated in 1.36 ===
102 MediaWiki supports over 350 languages. Many localisations are updated regularly.
103 Below only new and removed languages are listed, as well as changes to languages
104 because of Phabricator reports.
106 * …
108 === Breaking changes in 1.36 ===
109 * (T176526) EditPage::getContextTitle() will now throw an exception if a context
110   title was not set using setContextTitle(). Previously, this mis-use would only
111   cause a deprecation warning to be emitted.
112 * Multiple methods that fell back to the $wgUser global variable were
113   individually hard deprecated previously. The following have now been removed:
114   - ApiTestCase::doLogin
115   - Article::doDeleteArticle
116   - Article::doDeleteArticleReal
117   - Article::getComment
118   - Article::getCreator
119   - Article::getUser
120   - Article::getUserText
121   - Article::insertProtectNullRevision
122   - File::delete
123   - File::recordUpload
124   - ForeignDBFile::delete
125   - ForeignDBFile::recordUpload
126   - LocalFile::delete
127   - LocalFile::deleteOld
128   - LocalFile::recordUpload
129   - PageArchive::undelete
130   - RecentChange::markPatrolled
131   - Title::getUserPermissionsErrors
132   - Title::quickUserCan
133   - Title::userCan
134   - WebRequest::getLimitOffset
135   - WikiPage::doDeleteArticle
136   - WikiPage::insertProtectNullRevision
137   - All methods of the old SpecialPageFactory; the entire class was removed
138 * Multiple methods previously had optional User parameters, with fallbacks
139   to the $wgUser global variable. Not passing a User to those methods was
140   previously hard deprecated, and support for not passing a User has now
141   been removed:
142    - FileDeleteForm::__construct
143    - FileDeleteForm::doDelete
144    - LocalFileDeleteBatch::__construct
145    - LogEventsList::getExcludeClause (only needed for the 'user' audience)
146    - LogEventsList::userCan
147    - LogEventsList::userCanBitfield
148    - LogEventsList::userCanViewLogType
149    - LogPage::addEntry (also accepts user id instead)
150    - PatrolLog::record
151    - Title::getNotificationTimestamp (though the entire method is deprecated)
152    - WikiPage::getComment (only needed for the FOR_THIS_USER audience)
153    - WikiPage::getCreator (only needed for the FOR_THIS_USER audience)
154    - WikiPage::getUser (only needed for the FOR_THIS_USER audience)
155    - WikiPage::getUserText (only needed for the FOR_THIS_USER audience)
156 * The following hooks have been removed:
157    - APIQueryInfoTokens
158    - APIQueryRecentChangesTokens
159    - APIQueryRevisionsTokens
160    - APIQueryUsersTokens
161    - ApiTokensGetTokenTypes
162 * LogEventsList::typeAction previously accepted an optional right parameter,
163   and checked if the context user ($wgUser) had that right. Passing a right
164   was hard deprecated in 1.35, and support for passing a right has now been
165   removed.
166 * WikiPage::doDeleteArticleReal previously accepted an optional user as its
167   fifth parameter, and fell back to $wgUser if not user was provided. The
168   signature changed to have the user as the second parameter, and the old
169   signature was hard deprecated in 1.35. Support for the old signature has
170   now been removed.
171 * User::addNewUserLogEntry, deprecated since 1.27, was removed.
172 * The global function `wfWaitForSlaves`, deprecated in 1.27 and hard-deprecated
173   in 1.35, has been removed. Use LBFactory::waitForReplication() instead.
174 * The global variable $wgMemc, deprecated since 1.35, has been removed.
175   Usage should generally be migrated to WANObjectCache, or if you really need
176   the internal object, use ObjectCache::getLocalClusterInstance instead.
177 * CategoryFinder, which was deprecated in 1.31 and hard-deprecated in 1.35,
178   has been removed.
179 * Sanitizer::escapeId(), deprecated in 1.30, has been removed.
180 * Parser::setFunctionTagHook(), deprecated in 1.35, has been removed.
181 * The ParserBeforeTidy hook, deprecated in 1.35, has been removed.
182 * The ParserBeforeTidy, ParserBeforeStrip, and ParserAfterStrip hooks,
183   deprecated in 1.35, have been removed.
184 * All methods of MWTidy except for MW::tidy() have been removed.  These
185   were either @internal or deprecated in 1.35.
186 * The support for IE8 has been dropped.
187 * Less mixin `.background-image-svg-quick()` from mediawiki.mixins.less,
188   deprecated since 1.35, has been removed.
189 * The ResourceLoader module `mediawiki.legacy.oldshared` and its file
190   'oldshared.css', deprecated since 1.35 has been removed (T248357).
191 * The LinkBegin and LinkEnd hooks, deprecated in 1.28, have been removed. You
192   can instead use the HtmlPageLinkRendererBegin and HtmlPageLinkRendererEnd
193   hooks, respectively.
194 * Skin::getDynamicStylesheetQuery(), deprecated in 1.32, has been removed. You
195   should use action=raw&ctype=text/css directly.
196 * Skin::makeI18nUrl(), deprecated in 1.35, has been removed.
197 * The following User methods, deprecated and moved to BlockManager in 1.34,
198   were removed: isDnsBlacklisted, inDnsBlacklist, isLocallyBlockedProxy,
199   trackBlockWithCookie.
200 * Support for v1 of the parser tests file format has been removed; it was
201   deprecated in 1.35. (T174199)
202 * SpecialUnblockUser::processUIUnblock() has a different return
203   value (previously, array of messages or a boolean value, now,
204   a Status object). This function was also marked as @internal and is no
205   longer safe to call it publicly.
206 * mw.Title.getDotExtension() from the 'mediawiki.Title' module was removed
207   without deprecation. You should use mw.Title.getExtension() and prepend
208   the dot if need be.
209 * Removed HookContainer::getOriginalHooksForTest() without deprecation.
210   This method was introduced in 1.35 for internal use, and appears unused
211   outside of MediaWiki core.
212 * ParserCache::__construct() now requires three parameters.
213 * Message->getFormat(), deprecated in 1.29, has been removed.
214 * …
216 === Deprecations in 1.36 ===
217 * LocalFile::recordUpload2, soft deprecated in 1.35, now emits deprecation
218   warnings. Use ::recordUpload3 instead.
219 * The User class, which was marked as @newable in 1.35, is no longer newable,
220   meaning that it is no longer safe to manually call the constructor via
221   `new User`. Instead, use the UserFactory service.
222 * Use of the `preprocessor=Preprocessor_DOM` option in parser test files has
223   been deprecated.  Preprocessor_DOM was removed in 1.35.
224 * ParserOptions::setTidy() has been deprecated.  It has had no effect since
225   1.35.
226 * Sanitizer::escapeIdReferenceList() has been deprecated; it will eventually
227   be made private to the class, as it appears to have no uses outside the
228   Sanitizer class.
229 * Sanitizer::hackDocType() is deprecated; it will eventually be made private.
230 * Skin::getIndicatorsHTML() is deprecated. The functionality can be retained
231   by reimplementing the method using the raw indicators data from
232   OutputPage::getIndicators.
233 * Skin::makeVariablesScript() has been deprecated. Use
234   ResourceLoader::makeInlineScript() instead.
235 * The PageProps class was converted to a service. PageProps::overrideInstance
236   was deprecated, and MediaWikiServices::redefineService should be used
237   instead.
238 * Title::nameOf() is deprecated; use Title::newFromID()->getPrefixedDBkey()
239   instead.
240 * DatabaseBlock::insert, DatabaseBlock::update, DatabaseBlock::purgeExpired and
241   DatabaseBlock::delete are deprecated. Use DatabaseBlockStore::insertBlock,
242   DatabaseBlockStore::updateBlock, DatabaseBlockStore::purgeExpiredBlocks and
243   DatabaseBlockStore::deleteBlock instead.
244 * SpecialBlock::getTargetAndType is deprecated. Call AbstractBlock::parseTarget
245   directly instead.
246 * SpecialUnblock::processUnblock was deprecated - use UnblockUserFactory
247   service instead.
248 * Deprecated MediaWikiIntegrationtestCase::removeTemporaryHook() in favor of
249   MediaWikiIntegrationtestCase::clearHook().
250 * Skin::getSearchLink(), also exposed as 'searchaction' option in SkinTemplate,
251   has been deprecated. Use Title or SpecialPage methods directly.
252 * Skin::getAllowedSkins and ::getSkinNames have been deprecated. Use their
253   respective equivalents in SkinFactory instead.
254 * The RollbackComplete hook has been deprecated, use the PageSaveComplete hook
255   instead.
256 * Skin::makeUrl() has been deprecated. Title methods should be used instead.
257 * Skin::privacyLink(), Skin::disclaimerLink() and Skin::aboutLink() have been
258   deprecated. Please use Skin::footerLink() instead.
259 * Skin::getLogo() has been deprecated. Use ResourceLoaderSkinModule instead.
260 * Skin::mainPageLink() has been deprecated. Use LinkRenderer service instead.
261 * BaseTemplate::getToolbox() method has been hard deprecated. The toolbox data
262   is now available in a sidebar data array which you can get from any class
263   that's extending QuickTemplate class.
264 * Constructing a DefaultPreferencesFactory, LinkHolderArray or PasswordReset
265   without a $hookContainer parameter is deprecated.
266 * Autopromote class, soft deprecated since 1.35, now emits deprecation warnings.
267   Use UserGroupManager instead.
268 * SpecialBlock::canBlockEmail has been deprecated. Please use
269   BlockPermissionChecker::checkEmailPermissions instead.
270 * SpecialBlock::checkUnblockSelf has been deprecated. Please use
271   BlockPermissionChecker::checkBlockPermissions instead.
272 * SpecialBlock::parseExpiryInput was deprecated - use
273   BlockUser::parseExpiryInput instead.
274 * All public properties of CacheTime and ParserOutput classes were
275   hard deprecated. Use appropriate accessor methods instead.
276 * …
278 === Other changes in 1.36 ===
279 * The 'tidy' key in ParserOptions (used in the parser cache) has been removed.
280   It has had no effect since 1.35.
281 * A future release of MediaWiki will make {{=}} a built-in parser function,
282   for use when automatically escaping the `=` character in template arguments.
283   A tracking category and parser warning have been added to this release when
284   {{=}} is used and it expands to something other than `=`.
285 * The implementation of TestFileReader::read has been changed to use
286   Parsoid's parser test file parser.  This should be compatible with
287   existing code, but it only supports version 2 of the test file
288   specification and may be more strict when parsing invalid input,
289   including duplicate tests.
290 * The SkinLessImportPaths attribute was added, allowing skins to add a
291   directory to the import path for LESS stylesheets. Skins can use this
292   to provide a custom version of mediawiki.skin.variables.less, setting
293   skin-specific values for certain LESS variables.
294 * …
296 == Compatibility ==
297 MediaWiki 1.36 requires PHP 7.2.22 or later, and the following PHP extensions:
299 * ctype
300 * dom
301 * fileinfo
302 * iconv
303 * json
304 * mbstring
305 * xml
307 MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
308 but support for them is somewhat less mature.
310 The supported versions are:
312 * MySQL 5.5.8 or later
313 * PostgreSQL 9.2 or later
314 * SQLite 3.8.0 or later
316 == Online documentation ==
317 Documentation for both end-users and site administrators is available on
318 MediaWiki.org, and is covered under the GNU Free Documentation License (except
319 for pages that explicitly state that their contents are in the public domain):
321        https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
323 == Mailing list ==
324 A mailing list is available for MediaWiki user support and discussion:
326        https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
328 A low-traffic announcements-only list is also available:
330        https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
332 It's highly recommended that you sign up for one of these lists if you're
333 going to run a public MediaWiki, so you can be notified of security fixes.
335 == IRC help ==
336 There's usually someone online in #mediawiki on irc.freenode.net.