MediaWiki 1.21/wmf9

The latest version (labeled "1.21wmf9") of MediaWiki, the software that powers Wikipedia and its sister sites, is being deployed to all Wikimedia sites in stages, starting on Monday, 4 February 2013 (see the roadmap).

We will continue to deploy the latest software every two weeks. This is intended to minimize disruption and possible issues, and make it easier to identify the cause of problems, since the possibly problematic code will be much more recent.

Core changes

 * - New list and table attr. tests based on recent Parsoid bug fixes.
 * - Include Postgres tables and maintenance scripts for Change I23c47c2c
 * - Add column job_attempts and index job_cmd_token_id to PostgreSQL.
 * - [LockManager] Renamed getBucketFromKey -&gt; getBucketFromPath.
 * - [LockManager] Generallized wiki field to a domain field.
 * - Add return to HttpError::getStatusCode.
 * - Profiling for hook calls.
 * - Log profiling info from maintenance scripts.
 * - [LockManager] Split QuorumLockManager into its own file.
 * - [FileBackend] Added more documentation.
 * - [LockManager] Updated DBLockManager for cross-wiki support.
 * - Made nextJobDB.php respect $wgJobTypesExcludedFromDefaultQueue.
 * - Make cats which are redirects italic in category links.
 * - Fixed use of long memcached keys in AllPages.
 * - fix some spacing
 * - Make Sites::singleton actually return a singleton.
 * - Genderize user namespace for 'be' locale
 * - [JobQueue] Re-try jobs that fail normally.
 * - -  The return value of realpath should be tested
 * - Installer: Fix double escaping of config-download-localsettings.
 * - Add getters to HttpError, to use it in tests.
 * - Fix double colons in api help output
 * - Better way for extensions to add to ParserOutput.
 * - Make jquery.client recognize Iceweasel
 * - fix hardcoded quote in Special:DoubleRedirects/BrokenRedirects
 * - Make HttpError set actual HTTP error code.
 * - .gitignore Composer related files
 * - Fix invalid link of `others` during installation
 * - Dump unit tests no longer fail if gzip is not available
 * - Sprinkle &lt;code&gt; over some strings for consistency
 * - test: helper to skip tests depending on 'gzip'
 * - raise PHPUnit default timeouts
 * - api: remove duplicate __contruct calls
 * - [FileRepo] Lazy load large metadata from the DB.
 * - [LockManager] Refactoring to allow proper cross-wiki support.
 * - Rename calls to wfArrayToCGI to wfArrayToCgi
 * - [FileRepo] Use getHandler is some places that should use it.
 * - [FileRepo] Lowered negative caching duration.
 * - Use tabs to indent lines
 * - Whitelisting publicly readable title with regex
 * - raise timeout for CdbTest::testCdb
 * - rename vars in SkinTemplate::outputPage
 * - test: some Revision tests depends on PHP zlib ext
 * - testPngNativetZtxt requires zlib extension
 * - test: helper to skip tests depending on a PHP ext
 * - pass codesniffer on tests/
 * - Implement Language::isKnownLanguageTag
 * - [FileBackend] Added duplicate backend check.
 * - Changed Message::content to pass $this to MessageContent.
 * - Drops possessive from watchlist header
 * - Spell checked docs/hooks.txt
 * - Sprinkle &lt;code&gt; over some strings.
 * - Remove obsolete entries in MessagesBh.php
 * - fix some spacing
 * - Let nextJobDB.php narrow down the type based on a set.
 * - Followup Id9f2fea7: Remove wall time restriction for readline.
 * - The use of function sizeof is forbidden; use count instead
 * - fix some spacing
 * - The static declaration must come after the visibility declaration
 * - The final declaration must precede the visibility declaration
 * - The abstract declaration must precede the visibility declaration
 * - fix some spacing
 * - Fixed the usage message text if parameters are missing.
 * - refactor Database::makeSelectOptions
 * - [ExternalStore] Refactored external store classes to use a base class.
 * - Check for existence of the timeout script in ulimit5.sh
 * - Allow '+' in MySQL database names.
 * - $wgContLang global unused in addNewUserLogEntry since b65893755
 * - More tests for mismatched attr quotes + entities in nowiki &amp; pre.
 * - Added typehint
 * - use strict null check
 * - Simplified code. Removed not needed if-else
 * - Improved BagOStuff docs.
 * - Fixed call signature for PingLimiter hook.
 * - Fixed typo
 * - Added new &quot;byemail&quot; action to the new users log
 * - add profiling points in SiteSQLStore
 * - Change name of section so it does not get confused with Wikidata
 * - set the site internal id when loading sites from the db
 * - Add link to the php manual to the IBM DB2 installer entry.
 * - Implement Language::isWellFormedLanguageTag
 * - Fix self link issues about titles in different or mixed variants
 * - Test improperly quoted attribute values in HTML tags and table cells
 * - Made a message more accourate by changing the word &quot;edit&quot; for &quot;action&quot;.
 * - Add a method to clear the site list programmatically.
 * - Clear caches automatically when changing site list.
 * - Added missing documentation to SiteStore interface
 * - Fix cache key used by SiteSQLStore.
 * - Implemented Serializable interface in Site
 * - Don't return invalid XML from paraminfo when one of parameter values is null
 * -  Enable subpages per default on Project and Help namespaces.
 * - [FileBackend] Fixed bug where &quot;false&quot; could be included in getDirectoryList.
 * - Preserve warnings on API error
 * - Make Job::toString handle non-primitive parameters.
 * - Make TextContentTest and WikitextContentTest work in all cases
 * - Do not flip partial keys in CSSJanus.
 * - Invalid value of &quot;link&quot; parameter in &lt;gallery&gt; no longer produces a fatal error
 * - Added a new &quot;api-error-publishfailed&quot; message.
 * - Improved concurrency of copyFileBackend.php with pipelined downloads.
 * - : Don't rollback after successful commit
 * - Address gender support issues in page enotif subject and intro
 * - API imageinfo correctly handle redirects
 * - Minor tweak to MediaWiki:Readonlywarning
 * - Design improvements to sites code
 * - Avoid raw SQL queries in Maintenance::purgeRedundantText
 * - make purgeRedundantText not fail on pre MW1.5 records
 * - [ExternalStore] Various cleanups to ExternalStore class.
 * - Remove references to non-existent 'execute' right in Title.php
 * - Use better variable name in CoreParserFunctions::pagesize
 * - Update doc comments and code formatting.
 * - [FileRepo] Flipped RENDER_FORCE check order to avoid stat.
 * - Account creation through API no longer leaks IP address of account creator
 * - Change InfoAction cache key to use SHA1.
 * - Add support for formatnum in jqueryMsg parser
 * - Add Language::isSupportedLanguage
 * - Use a LinkBatch for the creator/last editor user (talk) pages in InfoAction
 * - Fix changes for Ia1878588 to work with databases that use non-integer timestamps.
 * - Trim spaces on user supplied comments
 * - mediawiki.jqueryMsg: Fix regression and add tests.
 * - mediawiki.Uri: Fix parsing of URIs with @ in path.
 * - Use array for join condition
 * - Document that default timestamp is current time.
 * - ObjectCache changes break XCache 3.x support
 * -  use real links for search suggestions
 * - Align comment whitespace a bit.
 * - Mark slow unit test as @group medium
 * - Check for no title and throw an exception
 * -  should be able to return the status for pages besides the one it's on
 * - Http function logic cleanups and comments.
 * - Add ability to reset certain option kinds in API.
 * - Do not send data for 0 increment calls in wfIncrStats.
 * - Remove hardcoded quotes on integer
 * - Fix hardcode database quotes in Special:Watchlist
 * - API debugging flag $wgDebugAPI to disable some security checks
 * - remove api version string and parameter
 * - Use array for database fields
 * - Fix return type doc. On SQLite ResultWrapper is returned
 * - testDecodeTagAttributes now use a data provider
 * - normalize sanitizerTest and add coverage tips
 * - Correct method name in ContentHandler comment
 * - Disable template expansion in message &lt;autoblocker&gt;.
 * - Pass context to UserGetLanguageObject
 * - Fix message movepagetext: Move to a empty page not possible
 * - Made ORMTable and ORMRow non-abstract
 * - Adding SpecialSearchResultsPrepend/Append hooks
 * - Revert &quot;Overriding Vector's footer margin when in print mode&quot;
 * - Add guard to Resources.php
 * - Moved $function definition up to make IDE happy.
 * - [FileBackend] Added work-around for lack of temp url support in rgw.
 * - Added a read-only check to runJobs.php to avoid log spam.
 * - Skip screen sheets with media queries when printing
 * - mcc can now set memcached debug mode and has help
 * - Fix typo in exception message
 * - Make redirect update in refreshLinks.php bypass the redirect table
 * - [JobQueue] Added push convenience wrapper function.
 * - Make protect level messages clear and consistent
 * - We don't use SVN anymore
 * - Follow-up Id75401be (e32c8afe): no more need to prefix debug messages
 * - Minor tweaks to installer text
 * - Additional tests to catch Parsoid regressions.
 * - Pass database connection to SpecialWatchlist::countItems
 * - Fix ApiCreateAccountTest for $wgEnableEmail = false;
 * - More natural flow for the &quot;By e-mail&quot; feature
 * - Followup I888c616e: Keep IRC line format unchanged.
 * - Followup I888c616e: one more string to localize.
 * - Force case-sensitivity on the LIKE operator, to ensure similar behaviour between MySQL and SQLite
 * - Cleanup to ImagePage::openShowImage
 * - Default to the current year in the history page filter form
 * - Further tweaks to pipe trick documentation (follow-up Iaf365e31)
 * - Links created by Linker::makeExternalLink didn't include rel=nofollow
 * - Include original URL params in variant links
 * - Simplify DatabaseBase::tableName