Use db query builder not raw sql
[lhc/web/wiklou.git] / RELEASE-NOTES-1.30
1 == MediaWiki 1.30 ==
2
3 THIS IS NOT A RELEASE YET
4
5 MediaWiki 1.30 is an alpha-quality branch and is not recommended for use in
6 production.
7
8 === MySQL version requirement in 1.30 ===
9 As of 1.30, MediaWiki now requires MySQL 5.5.8 or higher (see Compatibility
10 section).
11
12 === Configuration changes in 1.30 ===
13 * The "C.UTF-8" locale should be used for $wgShellLocale, if available, to avoid
14 unexpected behavior when code uses locale-sensitive string comparisons. For
15 example, the Scribunto extension considers "bar" < "Foo" in most locales
16 since it ignores case.
17 * $wgShellLocale now affects LC_ALL rather than only LC_CTYPE. See
18 documentation of $wgShellLocale for details.
19 * $wgShellLocale is now applied for all requests. wfInitShellLocale() is
20 deprecated and a no-op, as it is no longer needed.
21 * $wgJobClasses may now specify callback functions as an alternative to plain
22 class names. This is intended for extensions that want control over the
23 instantiation of their jobs, to allow for proper dependency injection.
24 * $wgResourceModules may now specify callback functions as an alternative
25 to plain class names, using the 'factory' key in the module description
26 array. This allows dependency injection to be used for ResourceLoader modules.
27 * $wgExceptionHooks has been removed.
28 * (T163562) $wgRangeContributionsCIDRLimit was introduced to control the size
29 of IP ranges that can be queried at Special:Contributions.
30 * (T45547) $wgUsePigLatinVariant added (off by default).
31 * (T152540) MediaWiki now supports a section ID escaping style that allows to display
32 non-Latin characters verbatim on many modern browsers. This is controlled by the
33 new configuration setting, $wgFragmentMode.
34 * $wgExperimentalHtmlIds is now deprecated and will be removed in a future version,
35 use $wgFragmentMode to migrate off it to a modern alternative.
36 * $wgExternalInterwikiFragmentMode was introduced to control how fragments in
37 sinterwikis going outside of current wiki farm are encoded.
38 * (T120333) Soft-deprecated the use of PHP extension 'mysql' in favor of 'mysqli'.
39 This PHP extension was deprecated in PHP 5.5 and removed in PHP 7.0. MediaWiki
40 auto-selects the 'mysqli' driver since MediaWiki 1.22, except if explicitly
41 requested through the configuration parameter $wgDBservers.
42 * $wgOOUIEditPage was removed, as it is now the default. This was documented as a
43 temporary variable during the migration period.
44
45 === New features in 1.30 ===
46 * (T37247) Output from Parser::parse() will now be wrapped in a div with
47 class="mw-parser-output" by default. This may be changed or disabled using
48 ParserOptions::setWrapOutputClass().
49 * (T163562) Added ability to search for contributions within an IP ranges
50 at Special:Contributions.
51 * Added 'ChangeTagsAllowedAdd' hook, enabling extensions to allow software-
52 specific tags to be added by users.
53 * Added a 'ParserOptionsRegister' hook to allow extensions to register
54 additional parser options.
55 * (T45547) Included Pig Latin, a language game in English, as a
56 LanguageConverter variant. This allows English-speaking developers
57 to develop and test LanguageConverter more easily. Pig Latin can be
58 enabled by setting $wgUsePigLatinVariant to true.
59 * Added RecentChangesPurgeRows hook to allow extensions to purge data that
60 depends on the recentchanges table.
61 * Added JS config values wgDiffOldId/wgDiffNewId to the output of diff pages.
62 * (T2424) Added direct unwatch links to entries in Special:Watchlist (if the
63 'watchlistunwatchlinks' preference option is enabled). With JavaScript
64 enabled, these links toggle so the user can also re-watch pages that have
65 just been unwatched.
66 * Added $wgParserTestMediaHandlers, where mock media handlers can be passed to
67 MediaHandlerFactory for parser tests.
68 * Edit summaries, block reasons, and other "comments" are now stored in a
69 separate database table. Use the CommentFormatter class to access them.
70 ** This is currently gated by $wgCommentTableSchemaMigrationStage. Most wikis
71 can set this to MIGRATION_NEW and run maintenance/migrateComments.php as
72 soon as any necessary extensions are updated.
73
74 === External library changes in 1.30 ===
75
76 ==== Upgraded external libraries ====
77 * mediawiki/mediawiki-codesniffer updated to 0.8.1.
78 * wikimedia/composer-merge-plugin updated to 1.4.1.
79
80 ==== New external libraries ====
81 * The class \TestingAccessWrapper has been moved to the external library
82 wikimedia/testing-access-wrapper and renamed \Wikimedia\TestingAccessWrapper.
83
84 ==== Removed and replaced external libraries ====
85 * …
86
87 === Bug fixes in 1.30 ===
88 * (T151633) Ordered list items use now Devanagari digits in Nepalese
89 (thanks to Sfic)
90
91 === Action API changes in 1.30 ===
92 * (T37247) action=parse output will be wrapped in a div with
93 class="mw-parser-output" by default. This may be changed or disabled using
94 the new 'wrapoutputclass' parameter.
95 * When errorformat is not 'bc', abort reasons from action=login will be
96 formatted as specified by the error formatter parameters.
97 * action=compare can now handle arbitrary text, deleted revisions, and
98 returning users and edit comments.
99 * (T164106) The 'rvdifftotext', 'rvdifftotextpst', 'rvdiffto',
100 'rvexpandtemplates', 'rvgeneratexml', 'rvparse', and 'rvprop=parsetree'
101 parameters to prop=revisions are deprecated, as are the similarly named
102 parameters to prop=deletedrevisions, list=allrevisions, and
103 list=alldeletedrevisions. Use action=compare, action=parse, or
104 action=expandtemplates instead.
105
106 === Action API internal changes in 1.30 ===
107 * ApiBase::getDescriptionMessage() and the "apihelp-*-description" messages are
108 deprecated. The existing message should be split between "apihelp-*-summary"
109 and "apihelp-*-extended-description".
110 * (T123931) Individual values of multi-valued parameters can now be marked as
111 deprecated.
112
113 === Languages updated in 1.30 ===
114 MediaWiki supports over 350 languages. Many localisations are updated
115 regularly. Below only new and removed languages are listed, as well as
116 changes to languages because of Phabricator reports.
117
118 * Added: kbp (Kabɩyɛ / Kabiyè)
119 * Added: skr (Saraiki, سرائیکی)
120 * Added: tay (Tayal / Atayal)
121
122 ==== Pig Latin added ====
123 * (T45547) Added Pig Latin, a made-up English variant (en-x-piglatin),
124 for easier variant development and testing. Disabled by default. It can be
125 enabled by setting $wgUsePigLatinVariant to true.
126
127 === Other changes in 1.30 ===
128 * The use of an associative array for $wgProxyList, where the IP address is in
129 the key instead of the value, is deprecated (e.g. [ '127.0.0.1' => 'value' ]).
130 Please convert these arrays to indexed/sequential ones (e.g. [ '127.0.0.1' ]).
131 * mw.user.bucket (deprecated in 1.23) was removed.
132 * LoadBalancer::getServerInfo() and LoadBalancer::setServerInfo() are
133 deprecated. There are no known callers.
134 * File::getStreamHeaders() was deprecated.
135 * MediaHandler::getStreamHeaders() was deprecated.
136 * Title::canTalk() was deprecated. The new Title::canHaveTalkPage() should be
137 used instead.
138 * MWNamespace::canTalk() was deprecated. The new MWNamespace::hasTalkNamespace()
139 should be used instead.
140 * The ExtractThumbParameters hook (deprecated in 1.21) was removed.
141 * The OutputPage::addParserOutputNoText and ::getHeadLinks methods (both
142 deprecated in 1.24) were removed.
143 * wfMemcKey() and wfGlobalCacheKey() were deprecated. BagOStuff::makeKey() and
144 BagOStuff::makeGlobalKey() should be used instead.
145 * (T146304) Preprocessor handling of LanguageConverter markup has been improved.
146 As a result of the new uniform handling, '-{' may need to be escaped
147 (for example, as '-<nowiki/>{') where it occurs inside template arguments
148 or wikilinks.
149 * (T163966) Page moves are now counted as edits for the purposes of
150 autopromotion, i.e., they increment the user_editcount field in the database.
151 * Two new hooks, LogEventsListLineEnding and NewPagesLineEnding, were added for
152 manipulating Special:Log and Special:NewPages lines.
153 * The OldChangesListRecentChangesLine, EnhancedChangesListModifyLineData,
154 PageHistoryLineEnding, ContributionsLineEnding and DeletedContributionsLineEnding
155 hooks have an additional parameter, for manipulating HTML data attributes of
156 RC/history lines. EnhancedChangesListModifyBlockLineData can do that via the
157 $data['attribs'] subarray.
158 * (T130632) The OutputPage::enableTOC() method was removed.
159 * WikiPage::getParserOutput() will now throw an exception if passed
160 ParserOptions that would pollute the parser cache. Callers should use
161 WikiPage::makeParserOptions() to create the ParserOptions object and only
162 change options that affect the parser cache key.
163 * Article::viewRedirect() is deprecated.
164 * IP::isValidBlock() was deprecated. Use the equivalent IP::isValidRange().
165 * DeprecatedGlobal no longer supports passing in a direct value, it requires a
166 callable factory function or a class name.
167 * The $parserMemc global, wfGetParserCacheStorage(), and ParserCache::singleton()
168 are all deprecated. The main ParserCache instance should be obtained from
169 MediaWikiServices instead. Access to the underlying BagOStuff is possible
170 through the new ParserCache::getCacheStorage() method.
171 * .mw-ui-constructive CSS class (deprecated in 1.27) was removed.
172 * Sanitizer::escapeId() was deprecated, use escapeIdForAttribute(),
173 escapeIdForLink() or escapeIdForExternalInterwiki() instead.
174 * Title::escapeFragmentForURL() was deprecated, use one of the aforementioned
175 Sanitizer functions or, if possible, Title::getFragmentForURL().
176 * Second parameter to Sanitizer::escapeIdReferenceList() ($options) now does
177 nothing and is deprecated.
178 * mw.util.escapeId() was deprecated, use escapeIdForAttribute() or
179 escapeIdForLink().
180 * MagicWord::replaceMultiple() (deprecated in 1.25) was removed.
181 * WikiImporter now requires the second parameter to be an instance of the Config,
182 class. Prior to that, the Config parameter was optional (a behavior deprecated in
183 1.25).
184 * Removed 'jquery.mwExtension' module. (deprecated since 1.26)
185 * mediawiki.ui: Deprecate greys, which are not part of WikimediaUI color palette
186 any more.
187 * CdbReader, CdbWriter, CdbException classes (deprecated in 1.25) were removed.
188 The namespaced classes in the Cdb namespace should be used instead.
189 * IPSet class (deprecated in 1.26) was removed. The namespaced IPSet\IPSet
190 should be used instead.
191 * RunningStat class (deprecated in 1.27) was removed. The namespaced
192 RunningStat\RunningStat should be used instead.
193 * MWMemcached and MemCachedClientforWiki classes (deprecated in 1.27) were removed.
194 The MemcachedClient class should be used instead.
195 * EditPage::isOouiEnabled() is deprecated and will always return true.
196 * EditPage::getSummaryInput() and ::getSummaryInputOOUI() are deprecated. Please
197 use ::getSummaryInputWidget() instead.
198 * EditPage::getCheckboxes() and ::getCheckboxesOOUI() are deprecated. Please
199 use ::getCheckboxesWidget() instead.
200 * Parser::getRandomString() (deprecated in 1.26) was removed.
201 * Parser::uniqPrefix() (deprecated in 1.26) was removed.
202 * Parser::extractTagsAndParams() now only accepts three arguments. The fourth,
203 $uniq_prefix was deprecated in 1.26 and has now been removed.
204 * (T172514) The following tables have had their UNIQUE indexes turned into proper
205 PRIMARY KEYs for increased maintainability: categorylinks, imagelinks, iwlinks,
206 langlinks, log_search, module_deps, objectcache, pagelinks, query_cache, site_stats,
207 templatelinks, text, transcache, user_former_groups, user_properties.
208 * IDatabase::nextSequenceValue() is no longer needed by any database backends
209 (formerly it was needed by PostgreSQL and Oracle), and is now deprecated.
210 * (T146591) The lc_lang_key index on the l10n_cache table has been changed into a
211 PRIMARY KEY.
212 * (T157227) bot_password.bp_user, change_tag.ct_log_id, change_tag.ct_rev_id,
213 page_restrictions.pr_user, tag_summary.ts_log_id, tag_summary.ts_rev_id and
214 user_properties.up_user have all been made unsigned on MySQL.
215 * DB_SLAVE is deprecated. DB_REPLICA should be used instead.
216 * wfUsePHP() is deprecated.
217 * wfFixSessionID() was removed.
218 * wfShellExec() and related functions are deprecated, use Shell::command().
219
220 == Compatibility ==
221 MediaWiki 1.30 requires PHP 5.5.9 or later. There is experimental support for
222 HHVM 3.6.5 or later.
223
224 MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
225 but support for them is somewhat less mature. There is experimental support for
226 Oracle and Microsoft SQL Server.
227
228 The supported versions are:
229
230 * MySQL 5.5.8 or later
231 * PostgreSQL 8.3 or later
232 * SQLite 3.3.7 or later
233 * Oracle 9.0.1 or later
234 * Microsoft SQL Server 2005 (9.00.1399)
235
236 == Upgrading ==
237 1.30 has several database changes since 1.29, and will not work without schema
238 updates. Note that due to changes to some very large tables like the revision
239 table, the schema update may take a long time (minutes on a medium sized site,
240 many hours on a large site).
241
242 Don't forget to always back up your database before upgrading!
243
244 See the file UPGRADE for more detailed upgrade instructions, including
245 important information when upgrading from versions prior to 1.11.
246
247 For notes on 1.29.x and older releases, see HISTORY.
248
249 == Online documentation ==
250 Documentation for both end-users and site administrators is available on
251 MediaWiki.org, and is covered under the GNU Free Documentation License (except
252 for pages that explicitly state that their contents are in the public domain):
253
254 https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
255
256 == Mailing list ==
257 A mailing list is available for MediaWiki user support and discussion:
258
259 https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
260
261 A low-traffic announcements-only list is also available:
262
263 https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
264
265 It's highly recommended that you sign up for one of these lists if you're
266 going to run a public MediaWiki, so you can be notified of security fixes.
267
268 == IRC help ==
269 There's usually someone online in #mediawiki on irc.freenode.net.