mw.storage: Fix broken test (incompatible with Chrome 45)
[mediawiki.git] / RELEASE-NOTES-1.26
blob47c751e86391b7a93a6651fb63d78f4f8030ba4e
1 Security reminder: If you have PHP's register_globals option set, you must
2 turn it off. MediaWiki will not work with it enabled.
4 == MediaWiki 1.26 ==
6 THIS IS NOT A RELEASE YET
8 MediaWiki 1.26 is an alpha-quality branch and is not recommended for use in
9 production.
11 === Configuration changes in 1.26 ===
12 * $wgPasswordResetRoutes['email'] = true by default.
13 * $wgEnableParserCache was deprecated, set $wgParserCacheType to CACHE_NONE
14   instead if you want to disable the parser cache.
15 * New-style continuation is now the default for API action=continue. Clients may
16   use the 'rawcontinue' parameter to receive raw query-continue data, but the
17   new style is encouraged as it's harder to implement incorrectly.
18 * Deprecated API formats dump and wddx have been completely removed.
19 * (T7645) The "Signature" button on the edit toolbar is now hidden by default
20   in non-talk namespaces. A new configuration variable,
21   $wgExtraSignatureNamespaces, controls in which subject (non-talk) namespaces
22   the "Signature" button on the edit toolbar will be displayed.
23 * $wgResourceLoaderUseESI was deprecated and removed. This was an experimental
24   feature that was never enabled by default.
25 * $wgResourceLoaderExperimentalAsyncLoading was deprecated and removed.
26   This experimental feature was never enabled by default and is obsolete as of
27   MediaWiki 1.26, in where ResourceLoader became fully asynchronous.
28 * $wgMasterWaitTimeout was removed (deprecated in 1.24).
29 * Fields in ParserOptions are now private. Use the accessors instead.
30 * Custom LESS functions (defined via $wgResourceLoaderLESSFunctions)
31   have been removed, after being deprecated in 1.24.
32 * $wgAlwaysUseTidy has been removed.
33 * ResetSessionID hook has been removed. Nothing seems to use it.
34 * Certain AuthPlugin methods are deprecated in favor of new hooks:
35 ** AuthPlugin::initUser() is replaced by LocalUserCreated.
36 ** AuthPlugin::updateUser() is replaced by UserLoggedIn.
37 ** AuthPlugin::updateExternalDB() is replaced by the existing UserSaveSettings.
38 ** AuthPlugin::updateExternalDBGroups() is replaced by UserGroupsChanged.
39 ** AuthPluginUser::isHidden() is replaced by UserIsHidden.
40 ** AuthPluginUser::isLocked() is replaced by UserIsLocked.
41 * The UserRights hook is deprecated in favor of the new UserGroupsChanged hook.
42 * AuthPlugin::initUser() and AuthPlugin::updateUser() should no longer replace
43   the passed User object.
45 === New features in 1.26 ===
46 * (T51506) Now action=info gives estimates of actual watchers for a page.
47   See $wgRCMaxAge, $wgWatchersMaxAge and $wgUnwatchedPageSecret
48   to learn how to configure if needed.
49 * Change tags can now be hidden in the interface by disabling the associated
50   "tag-<id>" interface message.
51 * ':' (colon) is now invalid in usernames for new accounts. Existing accounts
52   are not affected.
53 * Added a new hook, 'LogException', to log exceptions in nonstandard ways.
54 * Revive the 'SpecialSearchResultsAppend' hook which occurs after the list of
55   search results are rendered. The initial use case is to append a "give us
56   feedback" link beneath the search results.
57 * Added a new hook, 'RejectParserCacheValue', which allows extensions to
58   reject an otherwise-successful parser cache lookup. The intent is to allow
59   extensions to manage the eviction of archaic HTML output from the cache.
60 * (T68699) The expiration of the UserID and Token login cookies
61   ($wgExtendedLoginCookieExpiration) can be configured independently of the
62   expiration of all other cookies ($wgCookieExpiration).
63 * (T50519) Support for generating JPEG/PNG thumbnails from WebP images added
64   if ImageMagick is used as image scaler ($wgUseImageMagick = true). Uploading
65   of WebP images still disabled by default. Add $wgFileExtensions[] =
66   'webp'; to LocalSettings.php to enable uploading of WebP images.
67 * Added new hooks 'EnhancedChangesListModifyLineData' &
68   'EnhancedChangesListModifyBlockLineData', to modify the data used to build
69   lines in enhanced recentchanges and watchlist.
70 * Caches that need purging ability now use the WANObjectCache interface.
71   This corresponds to a new $wgMainWANCache setting, which defaults to using
72   the $wgMainCacheType settings.
73 * Callers needing fast light-weight data stores use $wgMainStash to select
74   the store type from $wgObjectCaches. The default is the local database.
75 * Interface message overrides in the MediaWiki namespace will now be cached in
76   memcached and APC (if available), rather than memcached and local files.
77 * Added a new hook, 'RandomPageQuery', to allow modification of the query used
78   by Special:Random to select random pages.
79 * $wgTransactionalTimeLimit was added, which controls the request time limit
80   for potentially slow POST requests that need to be as atomic as possible.
81 * ResourceLoader now loads all scripts asynchronously. The top-queue and
82   startup modules are no longer synchronously loaded.
83 * 'mediawiki.ui.button' styles are no longer unconditionally loaded on every
84   page. During the deprecation period, the styles will only be loaded on pages
85   which contain 'mw-ui-button' in their HTML. Starting in 1.28, the styles will
86   only be loaded if explicitly required.
88 ==== External libraries ====
89 * Update es5-shim from v4.0.0 to v4.1.5.
90 * Update json2 from revision 2014-02-04 to 2015-05-03.
91 * Update Sinon.JS from 1.10.3 to 1.15.4.
92 * Upgrade jQuery Client from v1.0.0 to v2.0.0.
93 * Added mediawiki/at-ease 1.0.0.
94 * Update QUnit from v1.17.1 to v1.18.0.
96 === Bug fixes in 1.26 ===
97 * (T53283) load.php sometimes sends 304 response without full headers
98 * (T65198) Talk page tabs now have a "rel=discussion" attribute
99 * (T98841) {{msgnw:}} now preserves comments even when subst: is not used.
100 * (T104142) $wgEmergencyContact and $wgPasswordSender now use their default
101   value if set to an empty string.
103 === Action API changes in 1.26 ===
104 * New-style continuation is now the default for action=continue. Clients may
105   use the 'rawcontinue' parameter to receive raw query-continue data, but the
106   new style is encouraged as it's harder to implement incorrectly.
107 * Deprecated API formats dump and wddx have been completely removed.
108 * API action=query&list=tags: The displayname can now be boolean false if the
109   tag is meant to be hidden from user interfaces.
110 * action=import no longer allows both the namespace= and rootpage= parameters
111   to be set. If they are both set, the value of rootpage= will be ignored.
112 * prop=revision output in enum mode is now sorted by timestamp rather than
113   revision ID. This usually won't make any difference.
114 * (T102645) Namespace list from meta=siteinfo&siprop=namespaces is now an array
115   with formatversion=2.
116 * Various other output from meta=siteinfo will now always be arrays instead of
117   sometimes being numerically-indexed objects with formatversion=2.
118 * When errors about users being blocked are returned, they now include
119   information about the relevant block.
120 * (T99926) list=random has higher limits, in line with other API modules.
121 * list=random's rnredirect parameter is deprecated in favor of a new
122   rnfilterredir parameter that also allows for listing both redirects and
123   non-redirects.
124 * list=random now supports continuation.
125 * API responses to GET requests may now include ETag and Last-Modified headers,
126   and will honor corresponding If-None-Match and If-Modified-Since on such
127   requests.
129 === Action API internal changes in 1.26 ===
130 * New metadata item ApiResult::META_KVP_MERGE to allow for merging the KVP key
131   into the value when the value is an assoc.
132 * API action modules may now provide values for the RFC 7232 ETag and
133   Last-Modified headers. The API will check these against If-None-Match and
134   If-Modified-Since request headers on GET requests and avoid executing the
135   module when appropriate.
137 === Languages updated in 1.26 ===
139 MediaWiki supports over 350 languages. Many localisations are updated
140 regularly. Below only new and removed languages are listed, as well as
141 changes to languages because of Phabricator reports.
143 * Languages added:
144 ** ase (American sign language), thanks to translator Icemandeaf
145 ** dty (डोटेली/Doteli), thanks to translators जनक राज भट्ट, बिप्लब आनन्द,
146    मेश सिंह बोहरा, and राम प्रसाद जोशी
147 ** luz (لئری دوٙمینی / Southern Luri)
149 === Other changes in 1.26 ===
150 * ChangeTags::tagDescription() will return false if the interface message
151   for the tag is disabled.
152 * Added PageHistoryPager::doBatchLookups hook.
153 * Added $wikiId parameter to FormatAutocomments hook.
154 * Added ParserCacheSaveComplete to ParserCache
155 * supportsDirectEditing and supportsDirectApiEditing methods added to
156   ContentHandler, to provide a way for ApiEditPage and EditPage to check
157   if direct editing of content is allowed. These methods return false,
158   by default for the ContentHandler base class and true for TextContentHandler
159   and it's derivative classes (everything in core). For Content types that
160   do not support direct editing, an alternative mechanism should be provided
161   for editing, such as action overrides or specific api modules.
162 * mediaWiki.confirmCloseWindow now returns an object of functions, instead of
163   one function. The callback can't be called directly any more. The callback
164   function is replaced with confirmCloseWindow.release().
165 * BREAKING CHANGE: Added an optional ResouceLoaderContext parameter to
166   ResourceLoaderModule::getDependencies(). Extension classes that override that
167   method should be updated. If they aren't updated, PHP Strict standards
168   warnings will appear when E_STRICT error reporting is enabled. Note: in the
169   near future, this parameter will probably become non-optional.
170 * Removed maintenance script deleteImageMemcached.php.
171 * MWFunction::newObj() was removed (deprecated in 1.25).
172   ObjectFactory::getObjectFromSpec() should be used instead.
173 * The parser will no longer randomize the string it uses to mark the place of
174   items that were stripped during parsing. It will use a fixed string instead.
175   This causes the parser to re-use the regular expressions it uses to search
176   and replace markers rather than generate novel expressions on each parse.
177   Re-using regular expressions will improve performance on HHVM and the
178   forthcoming PHP 7. The interfaces changes accompanying this change are:
179   - Parser::getRandomString() and Parser::uniqPrefix() have been deprecated.
180   - The $uniq_prefix argument for Parser::extractTagsAndParams() and the
181     $prefix argument for StripState::_construct() are deprecated and their
182     value is ignored.
183 * wfSuppressWarnings() and wfRestoreWarnings() were split into a separate library,
184   mediawiki/at-ease, and are now deprecated. Callers should use
185   MediaWiki\suppressWarnings() and MediaWiki\restoreWarnings() directly.
186 * The Block class constructor now takes an associative array of parameters
187   instead of many optional positional arguments. Calling the constructor the old
188   way will issue a deprecation warning.
189 * The jquery.mwExtension module was deprecated.
190 * $wgSpecialPageGroups was removed (deprecated in 1.21).
191 * SpecialPageFactory::setGroup was removed (deprecated in 1.21).
192 * SpecialPageFactory::getGroup was removed (deprecated in 1.21).
193 * DatabaseBase::ignoreErrors() is now protected.
194 * BREAKING CHANGE: mediawiki.legacy.ajax has been removed, following
195   a lengthy deprecation period.
196 * The ScopedPHPTimeout class was removed.
197 * Removed maintenance script fixSlaveDesync.php.
198 * Watchlist tokens, SpecialResetTokens, and User::getTokenFromOption()
199   are deprecated. Applications using those can work via the OAuth
200   extension instead. New tokens types should not be added.
201 * DatabaseBase::errorCount() was removed (unused).
202 * $wgDeferredUpdateList was removed.
203 * DeferredUpdates::addHTMLCacheUpdate() was removed.
205 == Compatibility ==
207 MediaWiki 1.26 requires PHP 5.3.3 or later. There is experimental support for
208 HHVM 3.3.0.
210 MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
211 support for them is somewhat less mature. There is experimental support for
212 Oracle and Microsoft SQL Server.
214 The supported versions are:
216 * MySQL 5.0.3 or later
217 * PostgreSQL 8.3 or later
218 * SQLite 3.3.7 or later
219 * Oracle 9.0.1 or later
220 * Microsoft SQL Server 2005 (9.00.1399)
222 == Upgrading ==
224 1.26 has several database changes since 1.25, and will not work without schema
225 updates. Note that due to changes to some very large tables like the revision
226 table, the schema update may take quite long (minutes on a medium sized site,
227 many hours on a large site).
229 If upgrading from before 1.11, and you are using a wiki as a commons
230 repository, make sure that it is updated as well. Otherwise, errors may arise
231 due to database schema changes.
233 If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
234 new database fields are filled with data.
236 If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
237 1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
238 with MediaWiki 1.21.
240 Don't forget to always back up your database before upgrading!
242 See the file UPGRADE for more detailed upgrade instructions.
244 For notes on 1.25.x and older releases, see HISTORY.
246 == Online documentation ==
248 Documentation for both end-users and site administrators is available on
249 MediaWiki.org, and is covered under the GNU Free Documentation License (except
250 for pages that explicitly state that their contents are in the public domain):
252         https://www.mediawiki.org/wiki/Documentation
254 == Mailing list ==
256 A mailing list is available for MediaWiki user support and discussion:
258         https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
260 A low-traffic announcements-only list is also available:
262         https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
264 It's highly recommended that you sign up for one of these lists if you're
265 going to run a public MediaWiki, so you can be notified of security fixes.
267 == IRC help ==
269 There's usually someone online in #mediawiki on irc.freenode.net.