RELEASE-NOTES-1.30 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. == MediaWiki 1.30.2 ==
  2. THIS IS NOT A RELEASE YET
  3. === Changes since MediaWiki 1.30.1 ===
  4. * (T204729) WatchedItemStore::countVisitingWatchersMultiple() shouldn't query all
  5. titles when asked for none
  6. == MediaWiki 1.30.1 ==
  7. This is a security and maintenance release of the MediaWiki 1.30 branch.
  8. === Changes since MediaWiki 1.30.0 ===
  9. * (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides
  10. 'newbie'.
  11. * (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's
  12. account lock.
  13. * (T87572) Make FormatMetadata::flattenArrayReal() work for an associative array.
  14. * Updated composer/spdx-licenses from 1.1.4 to 1.3.0 (development dependency).
  15. * (T189567) the CLI installer (maintenance/install.php) learned to detect and
  16. include extensions. Pass --with-extensions to enable that feature.
  17. * (T190503) Let built-in web server (maintenance/dev) handle .php requests.
  18. * (T167507) selenium: Run Chrome headlessly.
  19. * selenium: Pass -no-sandbox to Chrome under Docker.
  20. * (T179190) selenium: Move logic for running tests from package.json to selenium.sh
  21. * (T192584) Stop incorrectly passing USE INDEX to RecentChange::newFromConds().
  22. * Add default edit rate limit of 90 edits/minute for all users.
  23. * (T186565) Fix PHP Notice from `ob_end_flush()` in `FileRepo::streamFile()`.
  24. * oojs/oojs-ui updated to remove an unnecessary dependancy.
  25. * (T196125) php-memcached 3.0 (provided with PHP 7.0) is now supported.
  26. * (T118683) Fix exception from &$user deref on HHVM in the TitleMoveComplete hook.
  27. * (T196672) The mtime of extension.json files is now able to be zero
  28. * (T180403) Validate $length in padleft/padright parser functions.
  29. * (T143790) Make $wgEmailConfirmToEdit only affect edit actions.
  30. * (T193995) Fix undefined patchPath() method call in parser tests.
  31. * Special:BotPasswords now requires reauthentication.
  32. * (T191608, T187638) Add 'logid' parameter to Special:Log.
  33. * (T193829) Indicate when a Bot Password needs reset.
  34. * (T151415) Log email changes.
  35. * (T200861) Fix total breakage of SQLite web upgrade.
  36. * (T202550) Unbreak SpecialListusersHeaderForm and SpecialListusersHeader
  37. hooks.
  38. * (T190539) Explicitly require Postgres 9.1.
  39. * (T118420) Unbreak Oracle installer.
  40. == MediaWiki 1.30 ==
  41. === Changes since MediaWiki 1.30.0-rc.0 ===
  42. * Upgraded Moment.js from v2.15.0 to v2.19.3.
  43. * Add ip_changes to postgres/tables.sql.
  44. * Skip null shell parameters.
  45. * Add wfWaitForSlaves() to maintenance/migrateComments.php.
  46. * (T182245) Fix join conditions in ImageListPager.
  47. * (T178626) Revert #contentSub and #jump-to-nav margin changes.
  48. === MySQL version requirement in 1.30 ===
  49. As of 1.30, MediaWiki now requires MySQL 5.5.8 or higher (see Compatibility
  50. section).
  51. === Configuration changes in 1.30 ===
  52. * The "C.UTF-8" locale should be used for $wgShellLocale, if available, to avoid
  53. unexpected behavior when code uses locale-sensitive string comparisons. For
  54. example, the Scribunto extension considers "bar" < "Foo" in most locales
  55. since it ignores case.
  56. * $wgShellLocale now affects LC_ALL rather than only LC_CTYPE. See
  57. documentation of $wgShellLocale for details.
  58. * $wgShellLocale is now applied for all requests. wfInitShellLocale() is
  59. deprecated and a no-op, as it is no longer needed.
  60. * $wgJobClasses may now specify callback functions as an alternative to plain
  61. class names. This is intended for extensions that want control over the
  62. instantiation of their jobs, to allow for proper dependency injection.
  63. * $wgResourceModules may now specify callback functions as an alternative
  64. to plain class names, using the 'factory' key in the module description
  65. array. This allows dependency injection to be used for ResourceLoader modules.
  66. * $wgExceptionHooks has been removed.
  67. * (T163562) $wgRangeContributionsCIDRLimit was introduced to control the size
  68. of IP ranges that can be queried at Special:Contributions.
  69. * (T45547) $wgUsePigLatinVariant added (off by default).
  70. * (T152540) MediaWiki now supports a section ID escaping style that allows to display
  71. non-Latin characters verbatim on many modern browsers. This is controlled by the
  72. new configuration setting, $wgFragmentMode.
  73. * $wgExperimentalHtmlIds is now deprecated and will be removed in a future version,
  74. use $wgFragmentMode to migrate off it to a modern alternative.
  75. * $wgExternalInterwikiFragmentMode was introduced to control how fragments in
  76. sinterwikis going outside of current wiki farm are encoded.
  77. * (T120333) Soft-deprecated the use of PHP extension 'mysql' in favor of 'mysqli'.
  78. This PHP extension was deprecated in PHP 5.5 and removed in PHP 7.0. MediaWiki
  79. auto-selects the 'mysqli' driver since MediaWiki 1.22, except if explicitly
  80. requested through the configuration parameter $wgDBservers.
  81. * $wgOOUIEditPage was removed, as it is now the default. This was documented as a
  82. temporary variable during the migration period.
  83. === New features in 1.30 ===
  84. * (T37247) Output from Parser::parse() will now be wrapped in a div with
  85. class="mw-parser-output" by default. This may be changed or disabled using
  86. ParserOptions::setWrapOutputClass().
  87. * (T163562) Added ability to search for contributions within an IP ranges
  88. at Special:Contributions.
  89. * Added 'ChangeTagsAllowedAdd' hook, enabling extensions to allow software-
  90. specific tags to be added by users.
  91. * Added a 'ParserOptionsRegister' hook to allow extensions to register
  92. additional parser options.
  93. * (T45547) Included Pig Latin, a language game in English, as a
  94. LanguageConverter variant. This allows English-speaking developers
  95. to develop and test LanguageConverter more easily. Pig Latin can be
  96. enabled by setting $wgUsePigLatinVariant to true.
  97. * Added RecentChangesPurgeRows hook to allow extensions to purge data that
  98. depends on the recentchanges table.
  99. * Added JS config values wgDiffOldId/wgDiffNewId to the output of diff pages.
  100. * (T2424) Added direct unwatch links to entries in Special:Watchlist (if the
  101. 'watchlistunwatchlinks' preference option is enabled). With JavaScript
  102. enabled, these links toggle so the user can also re-watch pages that have
  103. just been unwatched.
  104. * Added $wgParserTestMediaHandlers, where mock media handlers can be passed to
  105. MediaHandlerFactory for parser tests.
  106. * Edit summaries, block reasons, and other "comments" are now stored in a
  107. separate database table. Use the CommentFormatter class to access them.
  108. ** This is currently gated by $wgCommentTableSchemaMigrationStage. Most wikis
  109. can set this to MIGRATION_NEW and run maintenance/migrateComments.php as
  110. soon as any necessary extensions are updated.
  111. * (T138166) Added ability for users to prohibit other users from sending them
  112. emails with Special:Emailuser. Can be enabled by setting
  113. $wgEnableUserEmailBlacklist to true.
  114. * (T67297) $wgBrowserBlacklist is deprecated, and changing it will have no effect.
  115. Instead, users using browsers that do not support Unicode will be unable to edit
  116. and should upgrade to a modern browser instead.
  117. === External library changes in 1.30 ===
  118. ==== Upgraded external libraries ====
  119. * Updated justinrainbow/json-schema from v3.0 to v5.2.
  120. * Updated mediawiki/mediawiki-codesniffer from v0.7.2 to v0.12.0.
  121. * Updated wikimedia/composer-merge-plugin from v1.4.0 to v1.4.1.
  122. * Updated wikimedia/relpath from v1.0.3 to v2.0.0.
  123. * Updated OOjs from v2.0.0 to v2.1.0.
  124. * Updated OOUI from v0.21.1 to v0.23.0.
  125. * Updated QUnit from v1.23.1 to v2.4.0.
  126. * Updated phpunit/phpunit from v4.8.35 to v4.8.36.
  127. * Upgraded Moment.js from v2.15.0 to v2.19.3.
  128. ==== New external libraries ====
  129. * The class \TestingAccessWrapper has been moved to the external library
  130. wikimedia/testing-access-wrapper and renamed \Wikimedia\TestingAccessWrapper.
  131. * Purtle, a fast, lightweight RDF generator.
  132. ==== Removed and replaced external libraries ====
  133. * …
  134. === Bug fixes in 1.30 ===
  135. * (T151633) Ordered list items use now Devanagari digits in Nepalese
  136. (thanks to Sfic)
  137. === Action API changes in 1.30 ===
  138. * (T37247) action=parse output will be wrapped in a div with
  139. class="mw-parser-output" by default. This may be changed or disabled using
  140. the new 'wrapoutputclass' parameter.
  141. * When errorformat is not 'bc', abort reasons from action=login will be
  142. formatted as specified by the error formatter parameters.
  143. * action=compare can now handle arbitrary text, deleted revisions, and
  144. returning users and edit comments.
  145. * (T164106) The 'rvdifftotext', 'rvdifftotextpst', 'rvdiffto',
  146. 'rvexpandtemplates', 'rvgeneratexml', 'rvparse', and 'rvprop=parsetree'
  147. parameters to prop=revisions are deprecated, as are the similarly named
  148. parameters to prop=deletedrevisions, list=allrevisions, and
  149. list=alldeletedrevisions. Use action=compare, action=parse, or
  150. action=expandtemplates instead.
  151. === Action API internal changes in 1.30 ===
  152. * ApiBase::getDescriptionMessage() and the "apihelp-*-description" messages are
  153. deprecated. The existing message should be split between "apihelp-*-summary"
  154. and "apihelp-*-extended-description".
  155. * (T123931) Individual values of multi-valued parameters can now be marked as
  156. deprecated.
  157. === Languages updated in 1.30 ===
  158. MediaWiki supports over 350 languages. Many localisations are updated
  159. regularly. Below only new and removed languages are listed, as well as
  160. changes to languages because of Phabricator reports.
  161. * Added: kbp (Kabɩyɛ / Kabiyè)
  162. * Added: skr (Saraiki, سرائیکی)
  163. * Added: tay (Tayal / Atayal)
  164. * Removed: tokipona (Toki Pona)
  165. ==== Pig Latin added ====
  166. * (T45547) Added Pig Latin, a made-up English variant (en-x-piglatin),
  167. for easier variant development and testing. Disabled by default. It can be
  168. enabled by setting $wgUsePigLatinVariant to true.
  169. === Other changes in 1.30 ===
  170. * The use of an associative array for $wgProxyList, where the IP address is in
  171. the key instead of the value, is deprecated (e.g. [ '127.0.0.1' => 'value' ]).
  172. Please convert these arrays to indexed/sequential ones (e.g. [ '127.0.0.1' ]).
  173. * mw.user.bucket (deprecated in 1.23) was removed.
  174. * LoadBalancer::getServerInfo() and LoadBalancer::setServerInfo() are
  175. deprecated. There are no known callers.
  176. * File::getStreamHeaders() was deprecated.
  177. * MediaHandler::getStreamHeaders() was deprecated.
  178. * Title::canTalk() was deprecated. The new Title::canHaveTalkPage() should be
  179. used instead.
  180. * MWNamespace::canTalk() was deprecated. The new MWNamespace::hasTalkNamespace()
  181. should be used instead.
  182. * The ExtractThumbParameters hook (deprecated in 1.21) was removed.
  183. * The OutputPage::addParserOutputNoText and ::getHeadLinks methods (both
  184. deprecated in 1.24) were removed.
  185. * wfMemcKey() and wfGlobalCacheKey() were deprecated. BagOStuff::makeKey() and
  186. BagOStuff::makeGlobalKey() should be used instead.
  187. * (T146304) Preprocessor handling of LanguageConverter markup has been improved.
  188. As a result of the new uniform handling, '-{' may need to be escaped
  189. (for example, as '-<nowiki/>{') where it occurs inside template arguments
  190. or wikilinks.
  191. * (T163966) Page moves are now counted as edits for the purposes of
  192. autopromotion, i.e., they increment the user_editcount field in the database.
  193. * Two new hooks, LogEventsListLineEnding and NewPagesLineEnding, were added for
  194. manipulating Special:Log and Special:NewPages lines.
  195. * The OldChangesListRecentChangesLine, EnhancedChangesListModifyLineData,
  196. PageHistoryLineEnding, ContributionsLineEnding and DeletedContributionsLineEnding
  197. hooks have an additional parameter, for manipulating HTML data attributes of
  198. RC/history lines. EnhancedChangesListModifyBlockLineData can do that via the
  199. $data['attribs'] subarray.
  200. * (T130632) The OutputPage::enableTOC() method was removed.
  201. * WikiPage::getParserOutput() will now throw an exception if passed
  202. ParserOptions that would pollute the parser cache. Callers should use
  203. WikiPage::makeParserOptions() to create the ParserOptions object and only
  204. change options that affect the parser cache key.
  205. * Article::viewRedirect() is deprecated.
  206. * IP::isValidBlock() was deprecated. Use the equivalent IP::isValidRange().
  207. * DeprecatedGlobal no longer supports passing in a direct value, it requires a
  208. callable factory function or a class name.
  209. * The $parserMemc global, wfGetParserCacheStorage(), and ParserCache::singleton()
  210. are all deprecated. The main ParserCache instance should be obtained from
  211. MediaWikiServices instead. Access to the underlying BagOStuff is possible
  212. through the new ParserCache::getCacheStorage() method.
  213. * .mw-ui-constructive CSS class (deprecated in 1.27) was removed.
  214. * Sanitizer::escapeId() was deprecated, use escapeIdForAttribute(),
  215. escapeIdForLink() or escapeIdForExternalInterwiki() instead.
  216. * Title::escapeFragmentForURL() was deprecated, use one of the aforementioned
  217. Sanitizer functions or, if possible, Title::getFragmentForURL().
  218. * Second parameter to Sanitizer::escapeIdReferenceList() ($options) now does
  219. nothing and is deprecated.
  220. * mw.util.escapeId() was deprecated, use escapeIdForAttribute() or
  221. escapeIdForLink().
  222. * MagicWord::replaceMultiple() (deprecated in 1.25) was removed.
  223. * WikiImporter now requires the second parameter to be an instance of the Config,
  224. class. Prior to that, the Config parameter was optional (a behavior deprecated in
  225. 1.25).
  226. * Removed 'jquery.mwExtension' module. (deprecated since 1.26)
  227. * mediawiki.ui: Deprecate greys, which are not part of WikimediaUI color palette
  228. any more.
  229. * CdbReader, CdbWriter, CdbException classes (deprecated in 1.25) were removed.
  230. The namespaced classes in the Cdb namespace should be used instead.
  231. * IPSet class (deprecated in 1.26) was removed. The namespaced IPSet\IPSet
  232. should be used instead.
  233. * RunningStat class (deprecated in 1.27) was removed. The namespaced
  234. RunningStat\RunningStat should be used instead.
  235. * MWMemcached and MemCachedClientforWiki classes (deprecated in 1.27) were removed.
  236. The MemcachedClient class should be used instead.
  237. * EditPage underwent some refactoring and deprecations:
  238. * EditPage::isOouiEnabled() is deprecated and will always return true.
  239. * EditPage::getSummaryInput() and ::getSummaryInputOOUI() are deprecated. Please
  240. use ::getSummaryInputWidget() instead.
  241. * EditPage::getCheckboxes() and ::getCheckboxesOOUI() are deprecated. Please
  242. use ::getCheckboxesWidget() instead.
  243. * Creating an EditPage instance without calling EditPage::setContextTitle() should
  244. be avoided and will be deprecated in a future release.
  245. * EditPage::safeUnicodeInput() and ::safeUnicodeOutput() are deprecated and no-ops.
  246. * EditPage::$isCssJsSubpage, ::$isCssSubpage, and ::$isJsSubpage are deprecated. The
  247. corresponding methods from Title should be used instead.
  248. * EditPage::$isWrongCaseCssJsPage is deprecated. There is no replacement.
  249. * EditPage::$mArticle and ::$mTitle are deprecated for public usage. The getters
  250. ::getArticle() and ::getTitle() should be used instead.
  251. * Trying to control or fake EditPage context by overriding $wgUser, $wgRequest, $wgOut,
  252. and $wgLang is no longer supported and won't work. The IContextSource returned from
  253. EditPage::getContext() must be modified instead.
  254. * Parser::getRandomString() (deprecated in 1.26) was removed.
  255. * Parser::uniqPrefix() (deprecated in 1.26) was removed.
  256. * Parser::extractTagsAndParams() now only accepts three arguments. The fourth,
  257. $uniq_prefix was deprecated in 1.26 and has now been removed.
  258. * (T172514) The following tables have had their UNIQUE indexes turned into proper
  259. PRIMARY KEYs for increased maintainability: categorylinks, imagelinks, iwlinks,
  260. langlinks, log_search, module_deps, objectcache, pagelinks, query_cache, site_stats,
  261. templatelinks, text, transcache, user_former_groups, user_properties.
  262. * IDatabase::nextSequenceValue() is no longer needed by any database backends
  263. (formerly it was needed by PostgreSQL and Oracle), and is now deprecated.
  264. * (T146591) The lc_lang_key index on the l10n_cache table has been changed into a
  265. PRIMARY KEY.
  266. * (T157227) bot_password.bp_user, change_tag.ct_log_id, change_tag.ct_rev_id,
  267. page_restrictions.pr_user, tag_summary.ts_log_id, tag_summary.ts_rev_id and
  268. user_properties.up_user have all been made unsigned on MySQL.
  269. * DB_SLAVE is deprecated. DB_REPLICA should be used instead.
  270. * wfUsePHP() is deprecated.
  271. * wfFixSessionID() was removed.
  272. * wfShellExec() and related functions are deprecated, use Shell::command(). This also
  273. slightly changes the behavior of how execution time limits are calculated when only
  274. some of defaults are overridden per-call. When in doubt, always override both wall
  275. clock and CPU time.
  276. * (T138166) SpecialEmailUser::getTarget() now requires a second argument, the sending
  277. user object. Using the method without the second argument is deprecated.
  278. * (T67297) Browsers that don't support Unicode will have their edits rejected.
  279. * (T178450) The module 'jquery.badge' is deprecated and will be removed in a future
  280. release. For notifying the user of an event, the Notifications ("Echo") system
  281. should be used instead.
  282. * (T178451) SECURITY: Potential XSS when $wgShowExceptionDetails = false and browser
  283. sends non-standard url escaping.
  284. * (T165846) SECURITY: BotPassword login attempts weren't throttled.
  285. == Compatibility ==
  286. MediaWiki 1.30 requires PHP 5.5.9 or later. There is experimental support for
  287. HHVM 3.6.5 or later.
  288. MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used,
  289. but support for them is somewhat less mature. There is experimental support for
  290. Oracle and Microsoft SQL Server.
  291. The supported versions are:
  292. * MySQL 5.5.8 or later
  293. * PostgreSQL 9.1 or later
  294. * SQLite 3.3.7 or later
  295. * Oracle 9.0.1 or later
  296. * Microsoft SQL Server 2005 (9.00.1399)
  297. == Upgrading ==
  298. 1.30 has several database changes since 1.29, and will not work without schema
  299. updates. Note that due to changes to some very large tables like the revision
  300. table, the schema update may take a long time (minutes on a medium sized site,
  301. many hours on a large site).
  302. Don't forget to always back up your database before upgrading!
  303. See the file UPGRADE for more detailed upgrade instructions, including
  304. important information when upgrading from versions prior to 1.11.
  305. For notes on 1.29.x and older releases, see HISTORY.
  306. == Online documentation ==
  307. Documentation for both end-users and site administrators is available on
  308. MediaWiki.org, and is covered under the GNU Free Documentation License (except
  309. for pages that explicitly state that their contents are in the public domain):
  310. https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
  311. == Mailing list ==
  312. A mailing list is available for MediaWiki user support and discussion:
  313. https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
  314. A low-traffic announcements-only list is also available:
  315. https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
  316. It's highly recommended that you sign up for one of these lists if you're
  317. going to run a public MediaWiki, so you can be notified of security fixes.
  318. == IRC help ==
  319. There's usually someone online in #mediawiki on irc.freenode.net.