Release notes/1.35

= MediaWiki 1.35 =

Changes since MediaWiki 1.35.0-rc.3
action=watch. element. hook. cleanupTable.inc. ignore hidden users. Special:Contributions. LogEventsList. firejail's --output functionality. 'style' attribute. mw.message( ... ).parse. database.
 * (T261258) Remove checks for ancient ImageMagick versions in BitmapHandler.
 * (T260232) Don't include null page ids in query list for category dumps.
 * (T260009) Check existing watchitem when saving action=watch.
 * (T259055) Correct success messages for action=watch.
 * mediawiki.page.ready: Simpler tablesorter/makeCollapsible call.
 * mediawiki.page.ready: Fix skin override config flags, wrong way round.
 * (T262175, T248512) Remove requirement for ApiWatchlistTrait to be in ApiBase.
 * (T259053, T260434) Watchlist: Fix updateWatchLink removing css class when
 * (T261901, T261476) mediawiki.notification: Don't close notif when clicking
 * (T251506) Sanitizer: Truncate IDs to a reasonable length.
 * (T259452) Parsoid updated to v0.12.0.
 * (T261970) watch.ajax: Add expiry support to watchpage.mw event.
 * (T262900) Fix failure of rebuildLocalisationCache.php due to ResourceLoader
 * (T263014) Hard deprecate File::userCan with $user=null.
 * (T262547) Use localized success message after watching via action=watch.
 * (T201491) Fix typo 'Watchlst' in `apihelp-edit-param-watchlistexpiry`.
 * (T261081) Installer: consistently reset Language objects.
 * (T250449, T250450) Installer: consistently reset Language objects.
 * Explicitly wrap some XML calls in libxml_disable_entity_loader.
 * (T262934) Ensure dropdown label is always on its own line.
 * (T246855) resourceloader: Use a local HookRunner.
 * (T263604) Have findBadBlobs.php require Maintenance.php rather than
 * (T263606) Set fake time, to avoid flaky tests.
 * (T261325) Add FindMissingActors script.
 * (T262364) shell: Don't blacklist /run/firejail.
 * (T263655) NewPagesPager: Ignore nonexistent namespaces.
 * Update specialPageAliases and magicWords for Egyptian Arabic (arz).
 * (T261347) ParserOutput: don't throw on bad editsection.
 * (T232568, CVE-2020-25813) SpecialUserrights: If a viewer lacks `hideuser`,
 * (T255918, CVE-2020-25812) SECURITY: Unescaped message used in HTML on
 * (T256171, CVE-2020-25815) SECURITY: Unescaped message used in HTML within
 * (T258763, CVE-2020-17367, CVE-2020-17368) SECURITY: Prevent invoking
 * (T86738, CVE-2020-25814) SECURITY: mediawiki.jqueryMsg: Sanitize URLs and
 * (T115888, CVE-2020-25828) SECURITY: mediawiki.js: Escape HTML in
 * (T260485, CVE-2020-25869) SECURITY: ActorMigration: Load user from the correct
 * (T260485, CVE-2020-25869) SECURITY: ensure actor ID from correct wiki is used.
 * Add Finnish special page aliases.
 * Fix GuzzleHttpRequest request headers.
 * Fix description for pruneFileCache.php.
 * emptyUserGroup.php: handle more than 5000 users.
 * Make ApiSandbox copyable URL absolute.
 * (T261087) Add a link from a deleted page to that page's logs.

Changes since MediaWiki 1.35.0-rc.2
rate limit type.
 * (T258662) mediawiki.visibleTimeout: Update the nextVisibleTimeoutId value.
 * Ensure Parsoid doesn't throw when is used w/o Cite installed.
 * Remove maintenance/createCommonPasswordCdb.php.
 * (T260468) Increase "sites.site_global_key" to varbinary(64).
 * (T183759) Fix shell edge-cases in Windows.
 * (T257879) Drop PHP 7.2 support; require 7.3.19.
 * (T251661, CVE-2020-25827) SECURITY: User::pingLimiter: add user-global
 * (T246991) User: enforce pingLimiter expiry time.
 * (T256831) Rest: Handle Uri constructor exception.
 * (T259094) Fix RequestFromGlobalsTest failing in Travis CI.
 * (T256831, T261344) Rest: Use try/catch to handle URIs with embedded colon.

Changes since MediaWiki 1.35.0-rc.1
false. on a custom port other than 5432.
 * (T259693) uuid: Fix filenames on Windows.
 * Remove Gruntfile.js and package-lock.json from the tarball.
 * firejail: Strengthen by copying from Wikimedia's profile.
 * (T260059) ResourceLoaderOOUIImageModule: loadOOUIDefinition may return
 * (T30162, T245387) The installer supports using a Postgres server running
 * (T260201) Support private wikis in Parsoid zero configuration mode.
 * Fix bad use of `|=` PHP bit operation where `= … ||` bool is intended.
 * (T259212) SpecialBlock: Show error if a block could not be inserted or found.
 * (T255842) UserOptionsManager: fix options reset.
 * (T258649) WatchAction: avoid unnecessary UPDATEs when expiry is unchanged.
 * (T250851) Allow skins to override mediawiki.page.ready initialisation.
 * (T250851) mediawiki.page.ready: Allow skins to disable search lazy load.
 * (T253135, T255632) Update language in watchlist expiry.
 * Use IPset in MWRestrictions::checkIP.
 * (T259564) Fix race condition on edit page.
 * (T260759) Hide watchlist expiry label in edit form.
 * mime: Fix docs of MIME_EXTENSIONS, they're arrays, not space-seperated.
 * (T260031) Add application/font-sfnt to MimeMap for ttf files.
 * (T259379) WatchedItemStore: Cache single WatchedItems with preexisting expiry.
 * Add a maintenance script to create bot passwords.
 * (T201269) Add Traditional Chinese zh-hant as fallback for Amis (ami).
 * Improve wfParseUrl docs.
 * (T251038) Add multi index fields in ImageListPager for unique paginate.
 * (T259916) Guard against 'Widget not found' error.

Changes since MediaWiki 1.35.0-rc.0
disabling/enabling. DBLoadBalancerFactory.
 * (T252136) Fix RecentChanges watchlist filters when WatchlistExpiry is off.
 * (T258662) Update time period for watchlist expiry pop-up.
 * (T258443) Fix expiry dropdown not getting disabled on edit page.
 * (T259398) Add license information for promise-polyfill.
 * Remove executable bit from scripts without shebang.
 * (T256526) Fix bold of watched items on Special:RecentChangesLinked.
 * (T259060) Edit page expiry dropdown should keep state after
 * (T259009) Translate expiry period in pop-up message for watchlist expiry.
 * (T258310) Add watchlist clock icon to RecentChanges.
 * (T259362) Permit temporary table writes on replica DB connections.
 * (T250214) Add UI support in Special:EditWatchlist for watchlist expiry.
 * (T72470) Disable wgLegacyJavaScriptGlobals by default.
 * (T130906) Add Edge to MediaWiki:Clearyourcache.
 * (T257279) Add mediawiki.ui Less variable deprecation note.
 * (T249521) Fixed reassignEdits.php to work with anonymous users.
 * (T259448) Fix Circular dependency when creating service in
 * (T257259) Default to using watchlist expiry of old page when moving pages.

Upgrading notes for 1.35
1.35 requires PHP 7.3.19 or above (up from 7.2.9). (T257879)

1.35 has several database changes since 1.34, and will not work without schema updates. Note that due to changes to some very large tables like the revision table, the schema update may take quite long (minutes on a medium sized site, many hours on a large site).

Don't forget to always back up your database before upgrading!

MediaWiki 1.35 is the next LTS after 1.31, and will be supported for around 3 years.

MediaWiki has a lot of both soft and hard deprecations, and code removed. As always, make sure your versions of extensions match the MediaWiki version, and updates may be required to any custom extensions.

See the file UPGRADE for more detailed upgrade instructions, including important information when upgrading from versions prior to 1.11.

Some specific notes for MediaWiki 1.35 upgrades are below: using SQLite as the database backend for MediaWiki. This is due to the lack of write concurrency in SQLite. If you wish to use this feature, it is recommended to use MySQL/MariaDB rather than SQLite.
 * (T259685) Zeroconf (zero-configuration) VisualEditor/Parsoid doesn't work

For notes on 1.34.x and older releases, see HISTORY.

Configuration changes for system administrators in 1.35
will be completely removed in a later MediaWiki release.
 * (T72470) $wgLegacyJavaScriptGlobals is now false by default. This feature

New configuration
rather than MediaWiki choosing the first of $wgExternalDiffEngine, wikidiff2, or php that is usable. users can set a new preference, search-match-redirect, which decides if search should redirect them to exact matches is available. By default, this is set to false, which maintains the previous behaviour without preference bloat. Change your site's default by setting $wgDefaultUserOptions['search-match-redirect']. of SpecialContributions can now be limited by setting this appropriately. policy check. Similar to the existing PasswordCannotMatchUsername check, this check ensures that a user's (case-insensitive) password cannot be a part of their username. e.g. password = MyPass, username = ThisUsersPasswordIsMyPass. and $wgLogoHD settings into a single, associative array. It provides support for a new key, 'wordmark', for setting a horizontal wordmark to show next to the graphical logo. To do this, set 'wordmark' to an array with 'src' set to the path of the wordmark image, and 'width' and 'height' for its dimensions in pixels. $wgLogos inherits the existing support provided by its predecessor settings: '1x' mapping to the path of the logo as a 135x135px raster image (equivalent to $wgLogo), and '1.5x', '2x', and 'svg' operating as before for $wgLogoHD. If $wgLogos is unset, $wgLogo and $wgLogoHD values are read for temporary backwards compatibility. (T232140) feature. The database table (watchlist_expiry) for this is created regardless of this setting, but all other aspects of the expiry feature are controlled by it. Enabling in production is discouraged for the time being. A future MediaWiki 1.35 release will advertise this feature once it is stable. purged on each page edit. Only has effect if $wgWatchlistExpiry is true. for watchlist expiries. Only has effect if $wgWatchlistExpiry is true. handling img_auth.php requests. (T235357) cross-site API request. administrators to limit the timeouts used by the HTTP client libraries. This only affects callers using HttpRequestFactory and the deprecated wrappers in the Http class. views when PoolCounter lock contention indicates that a stale cache entry should be sent. suppresses various hacks needed to support mixed HTTP/HTTPS wikis. We recommend this be set to true on pure HTTPS wikis. SameSite=None. This is required for cross-site CentralAuth auto-login after Chrome 84. SameSite=None cookies for browsers which implemented an incompatible draft version of the specification.
 * $wgDiffEngine — This can be used to specify the difference engine to use,
 * $wgSearchMatchRedirectPreference — This configuration setting controls whether
 * $wgPoolCounterConf['SpecialContributions'] — Per-user concurrency in the use
 * $wgPasswordPolicy — PasswordCannotBeSubstringInUsername is a new password
 * $wgLogos — This new configuration setting combines the now-deprecated $wgLogo
 * $wgWatchlistExpiry — (EXPERIMENTAL) This enables the new watchlist expiry
 * $wgWatchlistPurgeRate — This sets the chance of expired watchlist items being
 * $wgWatchlistExpiryMaxDuration — This is the maximum definite relative duration
 * $wgImgAuthPath – This can be used to override the path prefix used when
 * $wgAllowedCorsHeaders — This is a list of headers which can be used in a
 * $wgHTTPMaxTimeout and $wgHTTPMaxConnectTimeout — These allow site
 * $wgCdnMaxageStale — This controls the Cache-Control s-maxage header for page
 * $wgForceHTTPS — This makes the HTTP to HTTPS redirect be unconditional and
 * $wgCookieSameSite — This setting allows login cookies to be sent with
 * $wgUseSameSiteLegacyCookies — This adds a compatibility hack to

Changed configuration
max-age for HTTP caching through the Cache-Control header. It has uses the "versioned" key for urls that do have a version parameter, and the "unversioned" key for urls without a version parameter. The sub keys for "client" and "server" are no longer supported in MediaWiki 1.35. used. The OpenSearch API is now always enabled. 'services' option in provider specifications. - The defaults have been updated. If you were relying on the default values, you may need to update your configuration. - The 'URL' parameter, previously allowed for backwards-compatibility, has been deprecated. Use 'url' instead. dumps use the new dump format per default. Consumers of XML dumps should not be affected if they ignore any unknown tags they encounter. Also, the format is effectively unchanged for revisions that only contain the main slot. The --schema-version option can be used with the dumpBackup.php script to set the dump format. (T238921) effectively constant since 2008, and is ignored by core code. Configure the ParserFactory service in order to customize the Parser used. changed to false. use $wgGroupPermissions; e.g., to revoke sysops' ability to move images use $wgGroupPermissions['sysop']['movefile'] = false. not support direct use of the HTML tag in wikitext. that relies on this and wishes to let system administrators change it, you should convert it to a config variable specific to your skin. If you're using it to configure your wiki, you should check individual skins to see whether they have local skin config for the feature and use that. removed. Use PasswordNotInCommonList instead which covers many more passwords. (e.g. [ '127.0.0.1' => 'bad-ip' ]) for $wgProxyList has been removed. This was deprecated since 1.30. Please convert these arrays to indexed/sequential ones (e.g. [ '127.0.0.1' ]). enable sandboxing for shell commands using firejail, if it's installed. To disable restrictions, set it to false. instead of true, ahead of its planned removal.
 * $wgResourceLoaderMaxage (T235314) — This configuration array controls the
 * $wgEnableOpenSearchSuggest — This boolean variable is deprecated and no longer
 * $wgAuthManagerConfig and $wgAuthManagerAutoConfig — These can now use the
 * $wgVirtualRestConfig['modules']['parsoid'] —
 * $wgXmlDumpSchemaVersion — Default is now set to XML_DUMP_SCHEMA_VERSION_11, so
 * $wgParserConf — This configuration is now deprecated. It has been
 * $wgAutoloadAttemptLowercase — This has been deprecated, and the default value
 * $wgAllowImageMoving — This configuration setting is now deprecated. Instead,
 * $wgAllowImageTag — This configuration is now deprecated; future parsers will
 * $wgUseTwoButtonsSearchForm — This has been deprecated. If you maintain a skin
 * $wgPasswordPolicy — The deprecated policy 'PasswordCannotBePopular' has been
 * Backwards compatibility for using an associative array
 * $wgShellRestrictionMethod — This now defaults to 'autodetect', which will
 * $wgLegacyJavaScriptGlobals – This deprecated setting now default to false,

Removed configuration
sysops block email access, use $wgGroupPermissions['sysop']['blockemail']. for SQL Server was removed in 1.34. (T230418) output should instead be configured via $wgProfiler['output']. Set $wgProfiler['threshold'] instead. produced via $wgDebugComments, if enabled. skin from being shown, use $wgSkipSkins. These, deprecated in 1.34, have been removed. Use $wgUseCdn, $wgCdnServers, $wgCdnServersNoPurge, or $wgCdnMaxAge instead. it controlled was already removed in 1.26, but the variable remained existent with a value of `false` for backward-compatibility. Preprocessor_DOM, which was deprecated in 1.34 and removed in this release. were removed. The fixes are now always enabled for their respective languages. was removed. Partial blocks are now always enabled. be set locally. If the migration stage was set to anything other than SCHEMA_COMPAT_NEW locally, update.php must be run after removing the setting. Usage of the setting in code is deprecated. The setting will be removed completely in 1.36. should not be set set locally. Usage of the setting in code is deprecated; it is now set true by default. The setting will be removed completely in 1.36. was removed. Use 'replicaOnly' instead.
 * $wgSysopEmailBans — This setting, deprecated in 1.34, was removed. To let
 * $wgDBWindowsAuthentication — This setting had no effect anymore after support
 * $wgProfileOnly — This setting, deprecated in 1.23, was removed. The profiler
 * $wgProfileLimit — This setting, deprecated in 1.25, was removed.
 * $wgDebugTimestamps — This setting was removed. It affected the text output
 * $wgSkipSkin — This setting, deprecated in 1.23, was removed. To disable a
 * $wgUseSquid, $wgSquidServers, $wgSquidServersNoPurge, and $wgSquidMaxage —
 * $wgDisableCounters — This, deprecated in 1.25, was removed. The feature that
 * $wgMaxGeneratedPPNodeCount — This setting was removed. It only affected
 * $wgFixArabicUnicode and $wgFixMalayalamUnicode — These, deprecated in 1.33,
 * $wgAllowTitlesInSVG — This, unused and deprecated since 1.34, was removed.
 * $wgEnablePartialBlocks — This setting, deprecated when it was added in 1.33,
 * $wgLocalInterwiki — This setting, deprecated in 1.23, has been removed.
 * $wgContentHandlerUseDB — This setting, deprecated in 1.34, has been removed.
 * $wgMultiContentRevisionSchemaMigrationStage — This setting must no longer
 * $wgEnableRestAPI — This setting is no longer obeyed by MediaWiki core, and
 * $wgObjectCaches — The 'slaveOnly' option for SqlBagOStuff, deprecated in 1.34,

New user-facing features in 1.35
wikitext. Special:Purge have been created as shortcuts for each action. Special:EditPage/Foo redirects to title=foo&action=edit, with PageHistory, PageInfo, and Purge corresponding to action= history, info, and purge respectively. When linked to, its subpage is used as the target. Otherwise, it displays a basic interface to allow the end user to specify the target manually. for assistive technologies. $wgInterwikiMagic=false watchlist items (if $wgWatchlistExpiry is true).
 * (T204618) Whitelisted the aria-hidden HTML attribute for all elements in
 * (T13456) Special:EditPage, Special:PageHistory, Special:PageInfo, and
 * (T139221) The generated table of contents is now a navigation landmark role
 * (T245931) interwiki map API doesn't report foreign language if
 * The form at ?action=watch has a new dropdown list to support expiry dates for

New developer features in 1.35
included (T238224) and DEVELOPERS.md has been added with usage documentation and links to further help. ContentSecurityPolicy::addDefaultSource, ::addStyleSrc and ::addScriptSrc methods (e.g. $context->getOutput->getCSP->addDefaultSrc( 'example.com' )) test autoloader, by setting the "TestAutoloadNamespaces" and "TestAutoloadClasses" properties in extension.json. (T196090) name of the search engine (used in wgSearchType and wgSearchTypeAlternatives) to a specification using the ObjectFactory specification. This allows extensions to register Search Engines using namespaced classes. getRobotPolicy returns the entire policy as a string in the form , while getIndexPolicy and getFollowPolicy return their respective policies as a string. hooks were added to allow changing which wiki pages these modules contain. allowing the construction of skins with services injected. added to the constructors for many classes to improve SOLID / GRASP. Support for not passing a user has also been hard-deprecated and will be removed in 1.36. the stylesheets previously part of the "mediawiki.legacy.shared" and "mediawiki.legacy.commonPrint" module. Those modules are now deprecated and no longer loaded by skins. For skins needing to retain these styles, you will need to load these styles via a module using the ResourceLoaderSkinModule class. See Vector and Monobook for examples. addExtraCSPScriptSrc for parser tags/functions to be able to add sources to the Content Security Policy. and HTML file cache to simplify callers and make them more consistent. MultiTitleFilter class for saving title text to/from article IDs in user preferences. to the element on page load. footers. Previously this had to be done via SkinTemplateOutputPageBeforeExec. Doing so using that hook is now hard deprecated. block-related permissions. databases like Percona be used as storage. See T226857, T253248. EditPageGetCheckboxesDefinition hook. Handlers of this hook are no longer restricted to defining checkboxes. See the documentation of EditPage::getCheckboxesDefinition for more details. File::generateAndSaveThumb and File::trasform to render a thumbnail without saving it to the storage.
 * A Docker based local development develpoment environment configuration is
 * If CSP is enabled, extensions can now add additional sources using the
 * Extensions can now specify classes and namespaces to be autoloaded by the
 * (T250977) extension.json now allows "SearchMappings" which maps the canonical
 * Added getters for OutputPage's robot, index and follow policies;
 * The ResourceLoaderSiteModulePages and ResourceLoaderSiteStylesModulePages
 * The SkinFactory now allows skins to be specified as an ObjectFactory spec,
 * ContentHandlerFactory for most ContentHandler static methods. It has been
 * FileDeleteForm's constructor now accepts a user as the second parameter.
 * The ParserPreSaveTransformComplete hook was added.
 * The ParserBeforePreprocess hook was added.
 * The ResourceLoaderSkinModule class now has a "legacy" feature that loads
 * ParserOutput now has methods addExtraCSPStyleSrc, addExtraCSPDefaultSrc
 * The HtmlCacheUpdater service was added to unify the logic of purging CDN cache
 * The MultiHttpClient code will fallover to non-curl if curl_multi* is blocked.
 * Preferences which use HTMLTitlesMultiselectField can make use of
 * OutputPage::addHtmlClasses was added to allow injecting CSS classes on
 * The SkinAddFooterLinks hook is added to allow extensions to add items to skin
 * A new BlockPermissionChecker service was introduced for checking
 * The support of 'database' type of extensions has been added to allow 3d party
 * Three new return parameters have been added to the
 * New flag File::RENDER_TMP was added in order to allow

New external libraries

 * Added wikimedia/ip-utils 1.0.0.
 * Added wikimedia/parsoid 0.12.0.
 * Added wikimedia/services 2.0.1.
 * Added taylorhakes/promise-polyfill v8.1.3.
 * Added vuejs v2.6.11.
 * Added vuex v3.1.3.

New development-only external libraries

 * Added doctrine/dbal 2.10.2.
 * Added doctrine/sql-formatter 1.1.0.
 * Added pimple/pimple 3.3.0.

Changed external libraries
Fixes error log spam with too-large XMP data, and adds support for GPano tags. 0.2.0.
 * pear/mail_mime was upgraded from 1.10.2 to 1.10.8.
 * wikimedia/less.php was upgraded from 1.8.0 to 3.0.0.
 * Updated oojs from 3.0.0 to 5.0.0.
 * Updated OOUI from 0.35.1 to 0.39.3.
 * zordius/lightncandy was upgraded from 0.23.0 to 1.2.5.
 * Updated jQuery from v3.3.1 to v3.4.1.
 * Updated jQuery Migrate from v3.0.1 to v3.1.0.
 * Updated wikimedia/assert from 0.2.2 to 0.5.0.
 * Updated pear/net_smtp from 1.8.1 from to 1.9.1.
 * Updated psr/log from 1.0.2 to 1.1.3.
 * Updated jquery.i18n from 1.0.5 to 1.0.7.
 * Updated guzzlehttp/guzzle from 6.3.3 to 6.5.4.
 * Updated wikimedia/xmp-reader from 0.6.3 to 0.7.0.
 * Updated wikimedia/base-convert from v2.0.0 to v2.0.1.
 * Updated composer/semver from 1.5.0 to 1.5.1.
 * Updated wikimedia/remex-html from 2.1.0 to 2.2.0.
 * Replaced wikimedia/password-blacklist 0.1.4 with wikimedia/common-passwords

Changed development-only external libraries

 * Updated symfony/yaml from 3.4.28 to 5.0.5.
 * Updated nikic/php-parser from 3.1.5 to 4.4.0.
 * Updated php-parallel-lint/php-console-highlighter from v0.3.2 to v0.5.
 * Updated php-parallel-lint/php-parallel-lint from v0.9.2 to v1.2.0.
 * Updated psy/psysh from 0.9.9 to 0.10.4.
 * Updated monolog/monolog from 1.24.0 to 1.25.2.
 * Upgrade mediawiki-codesniffer from 28.0.0 to 30.0.0.
 * Updated composer/spdx-licenses from 1.5.1 to 1.5.3.
 * Updated monolog/monolog from 1.25.2 to 1.25.3.
 * Updated qunit from 2.9.1 to 2.10.0.

Removed external libraries
Removing this unbreaks development on Windows systems, in exchange for losing time limits in running unit tests.
 * phpunit/php-invoker (dev-only).
 * The jquery.getAttrs module was removed.

Action API changes in 1.35
The API behaves the same with and without this parameter. It was previously used by $wgEnableOpenSearchSuggest to partially disable the API if set to false. Specifically, it would deny internal frontend requests carrying this parameter, whilst accepting other requests. interpreted in surprising ways. For example, the following will now return a badinteger error: - "1.9" (formerly interpreted as "1") - " 1" (formerly interpreted as "1") - "1e1" (formerly interpreted as "1" or "10", depending on the PHP version) - "1foobar" (formerly interpreted as "1") - "foobar" (formerly intepreted as "0") parameters. Ranges should be assumed to be enforced. When specified, the API will return the 'assertanonfailed' error if the user is logged in. detection, as an alternative to 'basetimestamp'. Note that self-conflicts will continue to be ignored if 'basetimestamp' is set, but not if only 'baserevid' is set. Use action=changecontentmodel. Unlike Special:ChangeContentModel, the api module does not work for pages that do not already exist. - action=watch accepts a new 'expiry' parameter analagous to the expiry accepted by action=userrights, action=block, etc., except it must be no   greater than $wgWatchlistExpiryMaxDuration, or an infinity value. - action=query&list=watchlistraw returns pages' watchlist expiry dates. session loss.
 * The 'suggest' parameter of action=opensearch has been deprecated.
 * Integer-type parameters are now validated for syntax rather than being
 * Many user-type parameters now accept a user ID, formatted like "#12345".
 * The 'assert' parameter used by all API modules now supports the value 'anon'.
 * action=edit now supports the 'baserevid' parameter for edit conflict
 * A new module was added to change the content model of existing pages.
 * If $wgWatchlistExpiry is true, the following API changes are made:
 * (T249526) action=login will now return Failed rather than NeedToken on

Action API internal changes in 1.35
validation, which brings some new features and changes. For the most part existing module code should work as it did before, but see subsequent notes for changes. - The values for all ApiBase PARAM_* constants have changed. Code should have been using the constants rather than hard-coding the values. - Several ApiBase PARAM_* constants have been deprecated, see the in-class documentation for details. Use the equivalent ParamValidator constants instead. - The value returned for 'upload'-type parameters has changed from WebRequestUpload to Psr\Http\Message\UploadedFileInterface. to specify the type of "user" allowed and to request UserIdentity objects rather than name strings. The default is to accept all types (name, IP, range, and interwiki) that were formerly accepted. prefix. extralanglink when $wgInterwikiMagic is false.
 * The Action API now uses the Wikimedia\ParamValidator library for parameter
 * Validation of 'user'-type parameters is more flexible. PARAM constants exist
 * Maximum limits are no longer ignored in "internal mode".
 * The $paramName to ApiBase::handleParamNormalization should now include the
 * (T245931) meta=siteinfo&siprop=interwikimap no longer reports language or

Languages updated in 1.35
MediaWiki supports over 350 languages. Many localisations are updated regularly. Below only new and removed languages are listed, as well as changes to languages because of Phabricator reports.

have been updated for better international suppport. They will now be BetterWorldBooks.com, OpenLibrary.org and Worldcat.org.
 * The default targets for the ISBN search from Special:BookSources in English
 * (T237672) Changed the Moroccan Arabic language (ary) to the Arabic script.
 * (T201269) Added language support for Amis (ami).
 * (T248299) Added language support for Inari Sami (smn).
 * (T251369) Added language support for Ladin (lld).
 * (T251369) Added language support for Seediq (trv), also known as Taroko.

Breaking changes in 1.35
Use ResourceLoaderModule::getLessVars instead. Use the mediawiki.util module instead. module instead. available by default, without any dependency. deprecated in 1.34, have been removed. Use "jquery.ui" instead. Use "user.options" instead. multiple keys. This affects mw.config.exists and mw.user.tokens.exists. exposed only for integration purposes, are now each replaced by a const called CONSTRUCTOR_OPTIONS. This was a breaking change made without deprecation. Use MediaWikiServices::getMainWANObjectCache instead. Construct WANObjectCache directly instead, or use MediaWikiServices. deprecated in 1.34, was removed. Use $wgLocalVirtualHosts instead. It has been a non-configurable copy of $wgLanguageCode since MW 1.8 (2006). Use $wgLanguageCode directly instead. ApiBlockInfoTrait::getBlockDetails instead. Instead, use the GetUserBlock hook. been made, principally in related methods and properties being removed or made private: - disableCache, deprecated in 1.28. - serializeHalfParsedText and the helpers unserializeHalfParsedText, isValidHalfParsedText, and StripState::getSubState and StripState::merge, all deprecated in 1.31. The helper functions LinkHolderArray::mergeForeign and LinkHolderArray::getSubArray were also removed. - getConverterLanguage, deprecated in 1.32. Use getTargetLanguage instead. - A large set of methods exposed only for historical reasons, deprecated in   1.34, have now been removed or made private: - areSubpagesAllowed - armorLinks - createAssocArgs - doAllQuotes - doDoubleUnderscore - doHeadings - doMagicLinks - formatHeadings - getImageParams - getVariableValue - initialiseVariables - makeKnownLinkHolder - maybeDoSubpageLink - parseLinkParameter - replaceExternalLinks - replaceInternalLinks - replaceInternalLinks2 - replaceLinkHoldersText. - splitWhitespace - stripAltText - testPreprocess - testPst - testSrvus - incrementIncludeSize, setTransparentTagHook, replaceTransparentTags, and $mTransparentTagHooks have been removed without deprecation. - The following constants have been made private without deprecation: - ::EXT_LINK_ADDR - ::EXT_IMAGE_REGEX - ::SPACE_NOT_NL - The following properties have been removed without deprecation: - ::$mDefaultStripList - ::$mIncludeCount - ::$mRevIdForTs - The following properties have been made private without deprecation: - ::$mFunctionSynonyms - ::$mFunctionTagHooks - ::$mStripList - ::$mVarCache - ::$mImageParams - ::$mImageParamsMagicArray - ::$mSubstWords - ::$mVariables - ::$mConf (deprecated in 1.34) - ::$mExtLinkBracketedRegex - ::$mUrlProtocols - ::$mAutonumber - ::$mLinkHolders - ::$mDefaultSort - ::$mTplRedirCache - ::$mForceTocPosition - ::$mTplDomCache - ::$mOutputType - ::$mLangLinkLanguages - ::$currentRevisionCache - ::$mProfiler - ::$mLinkRenderer - Parser::getTitle will now throw a TypeError if $mTitle is uninitialized. This use pattern was deprecated in 1.34. - ContentHandler::makeParserOptions, deprecated in 1.32, was removed. Use WikiPage::makeParserOptions or ParserOptions::newCanonical instead. - The ParserAfterUnstrip hook, believed to be unused, was removed without deprecation. - Preprocessor_DOM and related classes, deprecated in 1.34, have been removed. Consequently, the related ParserOptions::getMaxGeneratedPPNodeCount and ::setMaxGeneratedPPNodeCount have been removed without deprecation. - The support for the old signature for ParserFactory::__construct, which was deprecated in 1.34, has been removed. - Parser::getDefaultPreprocessorClass, deprecated in 1.34, has been removed. ContentHandler::getSlotDiffRendererWithOptions. This breaks consumers which call parent::getSlotDiffRendererInternal (no instances of which are known). TextContent::getHtml instead. ExtensionRegistry::queue. wikimedia/cdb library instead. for HHVM was dropped) and these versions of PHP only support apcu. The default "apc" entry in $wgObjectCaches now refers to APCUBagOStuff.  DestructibleService, NoSuchServiceException, SalvageableService,  ServiceAlreadyDefinedException, ServiceContainer and ServiceDisabledException  in the global namespace, deprecated in 1.33, were removed. Use the classes in  the MediaWiki\\Services namespace instead.  ::isValidInterwiki, ::invalidateCache, and ::getAllPrefixes.  accept arbitrary entries, pass in true for this config.  been removed. Use ::parseAsContent or ::parseAsInterface, as  appropriate.  These were MagicWord::get, ::getSubstIDs, ::getDoubleUnderscoreArray,  ::getVariableIDs, and ::getCacheTTL. Instead, use MagicWordFactory (via MediaWikiServices). parameter. Passing a user was deprecated in 1.33.  deprecated in 1.34, have been removed. They should not have been public.  Sanitizer::validateAttributes has been deprecated; use an associative  array where keys are the allowed attributes.  its introduction in 1.28, has been removed.  and MovePage::moveSubpages instead.  WikiPage::doEditContent.  in 1.25, were removed. Use the MovePage class and its methods instead.  - checkLastModified  - loadFromMemcached  - storeInMemcached  - setCacheDuration  - setVary  have been made private to allow a signature change.  no visibilities defined, have been made private to allow signature changes.  been made private to allow a signature change.  1.32, have been removed.  been made private to allow a signature change.  signature change: the second parameter must be a RevisionRecord object,  rather than a Revision object.  private to allow a signature change. Skin::getSearchLink instead. removed. It has been made private. hav been made private to allow a signature change. "mediawiki.legacy.commonPrint" modules. The legacy shared styles must now be loaded by the skin explicitly, either inherited via the "mediawiki.skinning.*" modules, or by making your skin's main styles module use the ResourceLoaderSkinModule class with the "legacy" attribute. See Vector and Monobook for examples. This was deprecated in 1.25. be @internal as part of a signature change. No known uses exist outside of MediaWiki core. Use ArticleRevisionViewCustom to control output. required=true when exists=true. Form fields that use exists=true should also set required=true if they are required. modifyTable, modifyField, runMaintenance, copyFile, appendLine. In PostgresUpdater, the following methods are no longer public: addPgEnumValue, addPgIndex, addPgExtIndex. This change was made without deprecation due to immediate danger of data corruption and loss, see T157651. Extensions should instead use dropExtensionTable, modifyExtensionExtensionTable, modifyExtensionField, addExtensionUpdate. The addExtensionUpdate method can still be used to access any of the protected methods on DatabaseUpdater. and wgEnableWriteAPI; they were deprecated in MediaWiki 1.31 and removed from the PHP environment in MediaWiki 1.32. persist method of the right MediaWiki\Session\SessionManager object instead. array parameter. Use Title objects (or other LinkTarget) instead. were removed. Use AuthManager instead. means, per Stable interface policy, that these should now be considered stable. This also helps MW align with PSR 2 and PSR 12. This was done based on audits of the corpus of skins and extensions hosted in Gerrit. If you find any that you need to be less restrictive (i.e. public or protected), please report these so that we can re-evaluate or suggest workarounds. ->getMsg instead. instead. were removed. Use Html::errorBox or ::warningBox instead. have become private without deprecation. now require an additional HookContainer constructor parameter: - AuthManager - BadFileLookup - BlockManager - ClassicInterwikiLookup - ContentHandlerFactory - ContentSecurityPolicy - DefaultOptionsManager - DerivedPageDataUpdater - FullSearchResultWidget - HtmlCacheUpdater - LanguageFactory - LanguageNameUtils - LinkRenderer - LinkRendererFactory - LocalisationCache - MagicWordFactory - MessageCache - NamespaceInfo - PageEditStash - PageHandlerFactory - PageUpdater - ParserFactory - PermissionManager - RevisionStore - RevisionStoreFactory - Router - SearchEngineConfig - SearchEngineFactory - SearchFormWidget - SearchNearMatcher - SessionBackend - SpecialPageFactory - UserNameUtils - UserOptionsManager - WatchedItemQueryService - WatchedItemStore construction: - AuthenticationProvider - ResourceLoaderModule - SearchEngine ILBFactory::getChronologyProtectorTouched were changed without backwards compatibility. an user ID as part of ongoing refactoring of SpecialBlock class. been removed. Use User::changeAuthenticationData instead. User::getQueryInfo instead. has been removed. been replaced by the populateContentTables.php script. any previous restrictions rather than adding to them, making it possible to disable the default restrictions.
 * MediaWiki no longer supports PHP 7.2; use PHP 7.3.19+ (T228346, T257879).
 * ResourceLoader::getLessVars, deprecated in 1.32, was removed.
 * The jquery.tabIndex module, deprecated in 1.34, has been removed.
 * The mediawiki.RegExp module alias, deprecated in 1.34, was removed.
 * The easy-deflate.inflate module, unused since 1.32, was removed.
 * The easy-deflate.deflate module was removed. Use the mediawiki.deflate
 * The mediawiki.notify module was removed. The mw.notify shortcut is now
 * (T219604) The "jquery.ui.*" and "jquery.effects.*" module aliases,
 * (T235457) The "user.tokens" module has been removed.
 * (T251855) The mw.Map#exists method in JavaScript no longer supports checking
 * The internal variable $constructorOptions for the Parser & SpecialPageFactory,
 * ObjectCache::getWANInstance, deprecated in 1.34, was removed.
 * ObjectCache::newWANCacheFromParams, deprecated in 1.34, was removed.
 * (T231366) The ProfilerOutputDb class and profileinfo.php entry point,
 * SiteConfiguration->localVHosts, deprecated in 1.25, was removed.
 * The $wgContLanguageCode read-only variable was removed.
 * ApiQueryUserInfo::getBlockInfo, deprecated in 1.34, was removed. Use
 * Password::equals, deprecated in 1.33, was removed. Use Password::verify.
 * QuickTemplate::setRef, deprecated in 1.31, was removed. Use set.
 * The mediawiki.ui.text module, deprecated in 1.28 and unused, was removed.
 * AbstractBlock::mReason, deprecated in 1.34, is no longer public.
 * The GetBlockedStatus and UserIsHidden, deprecated in 1.34, has been removed.
 * As part of work to replace the Parser, a large number of breaking changes have
 * MediaWikiTestCase::prepareServices, deprecated in 1.32, has been removed
 * The method ContentHandler::getSlotDiffRendererInternal is replaced with
 * TextContent::getHighlightHtml, deprecated since 1.24, has been removed. Use
 * ExtensionRegistry::load, deprecated in 1.34, was removed. Instead, use
 * MWMessagePack class, deprecated in 1.34, was removed.
 * The cdb.php maintenance script was removed. Use the 'cdb' command from the
 * User::addNewUserLogEntryAutoCreate, deprecated in 1.27, was removed.
 * FileBasedSiteLookup class, deprecated in 1.33, was removed.
 * The wfGlobalCacheKey global function, deprecated in 1.30, was removed.
 * The APCBagOStuff class was removed. MediaWiki requires PHP 7.2+ (support
 * Database::bufferResults, deprecated in 1.34, has been removed.
 * CannotReplaceActiveServiceException, ContainerDisabledException,
 * The following methods in the Interwiki class were removed: ::fetch,
 * The UsersMultiselectWidget config 'allowArbitrary' is now false by default. To
 * OutputPage::parse and OutputPage::parseInline, deprecated in 1.32, have
 * WikiPage::selectFields, deprecated in 1.31, was removed. Use ::getQueryInfo.
 * The remaining static methods for MagicWord, deprecated in 1.32, were removed.
 * ApiBase::checkTitleUserPermissions no longer accepts a User as the third
 * Sanitizer::setupAttributeWhitelist and Sanitizer::attributeWhitelist,
 * Passing a sequential array as the second parameter to
 * The $warnCallback parameter to Sanitizer::removeHTMLtags, deprecated since
 * SpecialRecentChanges::filterByCategories, deprecated in 1.31, was removed.
 * The `ArticleContentViewCustom` hook, deprecated in 1.32, was removed.
 * AuthManager::callLegacyAuthPlugin, deprecated in 1.33, was removed.
 * wfGetMessageCacheStorage was removed without deprecation.
 * Title::moveSubpages, deprecated in 1.34, was removed. Use the MovePage class
 * Article::doEditContent, deprecated in 1.29, was removed. Instead, use
 * CommentStore::newKey, deprecated in 1.31, was removed.
 * EditPage::$hookError was changed from public to private.
 * Title::isValidMoveOperation, ::moveTo, and ::isValidMoveTarget, deprecated
 * Title::getUserCaseDBKey, deprecated in 1.33, was removed. Use ::getDBkey.
 * StringUtils::explodeMarkup was removed without deprecation.
 * AjaxResponse methods that were unused have been removed without deprecation:
 * ApiDelete::delete and ::deleteFile, both of which were protected methods,
 * HistoryPager::revLink, ::curLink, ::lastLink, and ::diffButtons, which had
 * SpecialNewpages::revisionFromRcResult, which previously was protected, has
 * DifferenceEngine::$mOldRev and $mNewRev, deprecated for public access in
 * DifferenceEngine::revisionDeleteLink, which was previosuly protected, has
 * DifferenceEngine::getParserOutput, which is protected, has had a breaking
 * WikiPage::setLastEdit, which was previously protected, has been made
 * Skin::getSkinNameMessages deprecated in 1.34, has been removed.
 * Skin::escapeSearchLink deprecated in 1.34, has been removed, use
 * Skin::shouldPreloadLogo deprecated in 1.32, has been removed.
 * Revision::loadFromId and RevisionStore::loadRevisionFromId have been
 * OutputPage::parserOptions doesn't accept an $options parameter anymore.
 * MessageCache::getParserOptions previously did not have a visibility set.
 * SpecialUndelete::showDiff previously did not have a visibilty set. It
 * The Skin no longer loads the "mediawiki.legacy.shared" or
 * Passing an ApiMain to the constructor of ApiResult is no longer supported.
 * ResourceLoaderWikiModule::invalidateModuleCache has been declared to
 * The ArticleAfterFetchContentObject hook, deprecated in 1.32, was removed.
 * DatabaseBlock::isValid, deprecated in 1.33, was removed.
 * HTMLUserTextField and HTMLUsersMultiselectField previously implied
 * In DatabaseUpdater, the following methods are no longer public: dropTable,
 * ResourceLoader no longer provides the (always-true) variables for wgEnableAPI
 * The wfSetupSession global function, deprecated in 1.27, was removed. Use the
 * The wfIsHHVM global function, deprecated in 1.34, was removed.
 * GenderCache::doTitlesArray no longer accepts string values in its $titles
 * Unused CommentStore::MAX_COMMENT_LENGTH has been removed.
 * User::checkTemporaryPassword and User::checkPassword, deprecated in 1.27,
 * All constants and class functions now have explicit visibility modifiers. This
 * BaseTemplate::msgWiki, deprecated in 1.33, was removed. Use ->msg or
 * QuickTemplate::msgWiki, deprecated in 1.33, was removed. Use ->msg
 * WebInstaller::getErrorBox and ::getWarningBox, deprecated in 1.34,
 * SpecialVersion::getExtensionCredits and SpecialVersion::getSkinCredits
 * As part of the migration to a new hook system (T240307), the following classes
 * The following classes now require setHookContainer to be called after
 * The parameters to ChronologyProtector::getTouched and
 * The deprecated $blacklist parameter to wfIsBadImage has been removed.
 * SpecialBlock::checkUnblockSelf no longer accepts an integer representing
 * User::setInternalPassword and User::setPassword, deprecated in 1.27, have
 * User::selectFields, deprecated in 1.31, has been removed. Use
 * The "legacy" serialization type in RESTBagOStuff, deprecated in 1.34,
 * The populateContentModel.php maintenance script was removed. It has
 * The findHooks.php maintenance script, for the old hooks system, was removed.
 * (T257278) Calling MediaWiki\Shell\Command::restrict will now overwrite

Deprecations in 1.35
now deprecated. MediaWiki support for PHPUnit 4 ended with the removal of HHVM support. They seem to be unused. Just use get directly, and catch any exception. deprecated. Use BlockErrorFormatter::getMessage instead. from the new wikimedia/ip-utils library instead. Additionally, the RE_IP_* constants are also deprecated. RE_IP_BYTE can be replaced with a class constant on the IPUtils class, while the others will eventually be made private. getFallbacksFor, getFallbacksIncludingSiteLanguage. Use the corresponding new methods on the LanguageFallback class: getFirst, getAll, and getAllIncludingSiteLanguage. become internal implementation of DatabaseBlock. instead reset MediaWikiServices between test runs. (MediaWikiIntegrationTestCase does this automatically.) MediaWikiServices::getGenderCache instead. setMwGlobals( 'wgLanguageCode', 'xxx' ) to set a different site language code, or setService( 'ContentLanguage', $myObj ) to set a specific Language object. Service resets and $wgContLang will be handled automatically. work to move to PHPUnit 8; PHPUnit's assertInternalType was deprecated, and will be removed in PHPUnit 9. MediaWikiIntegrationTest::assertTypeOrValue, a wrapper for assertType, has been removed immediately, without deprecation. CommentStoreComments, and getReason returns a string with no caller control over language or formatting. Instead use AbstractBlock::getReasonComment, which returns the CommentStoreComment. getrusage function without checking for its existence. deprecated. Instead, use User::getBlock to get the block, then use AbstractBlock::getByName or AbstractBlock::getHideName.Use the GetUserBlock hook to set, unset or modify a block, including hiding or unhiding a user. new MergeHistoryFactory class. is directly calling the Language constructor. Use the new LanguageFactory class instead. outside the Language class itself. Language::$mLangObjCache = []. respective functions in LanguageConverter: - autoConvert - autoConvertToAllVariants - convert - convertTitle - convertNamespace - hasVariants - hasVariant - convertHtml - convertCategoryKey - getVariants - getPreferredVariant - getURLVariant - findVariantLink - getExtraHashOptions - updateConversionTable Use LanguageFallback::MESSAGES and LanguageFallback::STRICT respectively MediaWikiServices instead to get a LanguageFactory. deprecated. Use LocalisationCache's getItem, getSubitem, and getSubitemList methods directly. instead. optional array of options. Specifying the value of the `oldrevision` key of the array to be a Revision object, rather than a RevisionRecord object, is  hard deprecated. The same applies to the options parameter in WikiPage::doEditUpdates. Use respective methods in RevisionStore instead. constants and deprecated: $mWeekdayMsgs, $mWeekdayAbbrevMsgs, $mMonthMsgs, $mMonthGenMsgs, $mMonthAbbrevMsgs, $mIranianCalendarMonthMsgs, $mHebrewCalendarMonthMsgs, $mHebrewCalendarMonthGenMsgs, $mHijriCalendarMonthMsgs and $durationIntervals. WebRequest::checkUrlExtension has been deprecated, and now always returns true. equivalent ParamValidator constants: PARAM_DFLT, PARAM_ISMULTI, PARAM_TYPE, PARAM_MAX, PARAM_MAX2, PARAM_MIN, PARAM_ALLOW_DUPLICATES, PARAM_DEPRECATED, PARAM_REQUIRED, PARAM_SUBMODULE_MAP, PARAM_SUBMODULE_PARAM_PREFIX, PARAM_ALL, PARAM_EXTRA_NAMESPACES, PARAM_SENSITIVE, PARAM_DEPRECATED_VALUES, PARAM_ISMULTI_LIMIT1, PARAM_ISMULTI_LIMIT2, PARAM_MAX_BYTES, PARAM_MAX_CHARS. ParamValidator::explodeMultiValue instead. generally this sort of thing should be handled by fully validating the parameter. Use ApiParamValidator::validateValue with an appropriate settings array instead. - getForTitle - getForContent - getForModelID - getContentModels - getAllContentFormats - protected $handler (not need anymore) - cleanupHandlersCache (not need anymore) instead. MediaWikiServices::getLocalServerObjectCache or ObjectCache::makeLocalServerCache. MediaFileTrait::getImageLimitsFromOptions instead. above, a large number of deprecations changes been made, to simplify the API or because they will not be supported in replacement: - Parser::doBlockLevels (and BlockLevelPass class has been marked @internal) - Parser::setFunctionTagHook - Parser::attributeStripCallback - Parser::fetchTemplate - use Parser::fetchTemplateAndTitle instead. - Parser::enableOOUI - use $parser->getOutput->enableOOUI instead. - LinkHolderArray has been deprecated for public usage and will be   internal part of parser. - The following parser-related hooks have been deprecated: - InternalParseBeforeSanitize Use an alternative hook which doesn't expose internal half-parsed state, like ParserBeforeInternalParse or ParserAfterTidy - ParserFetchTemplate Use BeforeParserFetchTemplateAndTitle - ParserSectionCreate No replacement; tag wrapping will be done by core in future. - BeforeParserrenderImageGallery No replacement; MediaHandler provides for customizable media rendering - ParserBeforeTidy Use ParserAfterTidy instead to avoid exposing internal half-parsed state - ParserBeforeStrip No replacement; stripping is no longer supported. - ParserAfterStrip No replacement; stripping is no longer supported. - The accessor/mutator methods Parser::Options, Parser::OutputType, and Parser::Title have been deprecated; use the appropriate Parser::get* or   Parser::set* methods instead. - Parser::firstCallInit has been deprecated. The parser is initialized fully on construction and so ::firstCallInit no longer has any effect when manually invoked. - ParserOptions::setAllowExternalImages, ::setAllowExternalImagesFrom, and ::setEnableImageWhitelist have been deprecated. Future parsers will not allow per-parser configuration of image filtering; use site configuration instead. - ParserOptions::getTidy and ParserOptions::setTidy have been deprecated. These options no longer have any effect. - Most methods of MWTidy, except for MWTidy::tidy, have been deprecated; tidiness is always enabled and not configurable. - Version 1 of the parserTests file format has been deprecated. You'll need to   update your parser tests to version 2, which uses Remex tidy on all test output by default. Support for parser tests with Remex tidy off will later be removed entirely. - $wgParser — This global variable, soft deprecated in 1.32, has now been hard deprecated. Use MediaWikiServices::getInstance->getParser instead. (T160811) - LanguageConverter $languageConverter has been added. and its usage with old arguments is hard deprecated. deprecated as there is no reason they should be used outside the LanguageConverter class and will be changed from public to private: - mLangObj - mUcfirst - mConvRuleTitle - mURLVariant - mUserVariant - mHeaderVariant - mMaxDepth - mVarSeparatorPattern changed from public to protected: - mTables use the RecentChange_save hook or similar instead. use the RevisionDataUpdates hook or similar instead. been hard deprecated. Please use the SkinTemplateNavigation__Universal hook instead. ResourceLoaderFileModule::compileLessString instead Use MultiHttpClient or HtmlCacheUpdater instead. deprecated in favor of MimeAnalyzer::getExtensionsFromMimeType and ::getMimeTypesFromExtension, respectively. The new methods return arrays rather than strings. hard deprecated. Caller must provide an Article instance. ::getLimitOffsetForUser and pass a User object. ::getPreviousRevisionRecord method. ::getArchivedRevisionRecord method. and pass a User object. ::getExpectedParentRevision method. instead relying on the global $wgUser. A user parameter has been added, and //not// providing a user is deprecated. There are no known callers outside of mediawiki core. MediaWikiServices::getInstance->getAuthManager instead. ContribsPager::tryCreatingRevisionRecord. user is hard deprecated, and support for calling them without passing a user will be removed in 1.36: - Title::getNotificationTimestamp (note however that the method is deprecated     in its entirely in favor of the new WatchlistNotificationManager service) - PatrolLog::record - LogEventsList::userCan - LogEventsList::userCanBitfield - LogEventsList::userCanViewLogType - LogPage::addEntry - FileDeleteForm::doDelete - OldLocalFile::userCan - ArchivedFile::userCan - File::userCan an optional user parameter. If the audience is FOR_THIS_USER and no user is passed, they fallback to $wgUser. Not passing a user when one is needed is deprecated - LogEventsList::getExcludeClause - WikiPage::getComment - WikiPage::getCreator - WikiPage::getUser - WikiPage::getUserText user is soft deprecated. were hard deprecated. Instead, use WikiPage::insertNullProtectionRevision. WikiPage::doDeleteArticle are all deprecated. Instead, use WikiPage::doDeleteArticleReal. WikiPage::updateIfNewerOn are deprecated. Instead, use WikiPage::updateRevisionOn. WikiPage::prepareContentForEdit. RevisionRecord object as its optional second parameter. Passing a Revision is now hard deprecated. Instead, use ContentHandler::getUndoContent. Instead, pass the associated Content objects, as well as whether the undo is from the current revision. use WikiPage::doDeleteUpdates and ::doEditUpdates. parameter. It now accepts RevisionRecord objects, and passing Revision objects is deprecated. fetchRevisionRecord method, which has been converted from protected to public. user as the second parameter. Support for the old signature is hard deprecated, and once removed the user parameter will be required. At the same time, a number of file-deletion related methods were updated - File::delete is hard deprecated in favor of the new ::deleteFile - LocalFile::delete is hard deprecated in favor of the new ::deleteFile - LocalFile::deleteOld is hard deprecated in favor of the new ::deleteOldFile - ForeignDBFile::delete is hard deprecated in favor of the new ::deleteFile ForeignDBFile classes) is hard deprecated, and LocalFile::recordUpload2 is soft deprecated. Use the new LocalFile::recordUpload3, which has a different  signature and requires that a User parameter is passed.  to the MediaWiki\SpecialPage namespace. The old location remains as a  deprecated alias.  were deprecated in 1.33, were hard deprecated. Instead, use  PermissionManager::userCan, ::quickUserCan, and ::getPermissionErrors.  deprecated. Instead, get a SpecialPageFactory from MediaWikiServices and  use its methods.  RevisionRecord object; passing a Revision is hard deprecated.  first parameter; passing a Revision is hard deprecated.  a RevisionRecord object; passing a Revision is hard deprecated.  a RevisionRecord object; passing a Revision is hard deprecated.  have now been individually hard deprecated:  - ::__construct - create MutableRevisionRecord objects instead  - ::newFromId - use RevisionLookup::getRevisionById instead - ::newFromTitle - use RevisionLookup::getRevisionByTitle instead - ::newFromPageId - use RevisionStore::getRevisionByPageId instead - ::newFromArchiveRow - use RevisionFactory::newRevisionFromArchiveRow - ::newFromRow - use RevisionStore::newRevisionFromRow instead - ::loadFromPageId - use RevisionStore::getRevisionByPageId instead - ::loadFromTitle - use RevisionStore::getRevisionByTitle instead - ::loadFromTimestamp - use RevisionStore::getRevisionByTimestamp instead - ::getQueryInfo - use RevisionStore::getQueryInfo instead - ::getArchiveQueryInfo - use RevisionStore::getArchiveQueryInfo instead - ::getParentLengths - use RevisionStore::getRevisionSizes instead - ::getRevisionRecord - no replacement - ::getId - use RevisionRecord::getId instead - ::setId - use MutableRevisionRecord::setId instead - ::setUserIdAndName - use MutableRevisionRecord::setUser instead - ::getTextId - use SlotRecord::getContentAddress for retrieving an actual content address, or RevisionRecord::hasSameContent to compare content - ::getParentId - use RevisionRecord::getParentId instead - ::getSize - use RevisionRecord::getSize instead - ::getSha1 - use RevisionRecord::getSha1 instead - ::getTitle - use RevisionRecord::getPageAsLinkTarget instead - ::setTitle - the method was previously a no-op - ::getPage - use RevisionRecord::getPageId instead - ::getUser - use RevisionRecord::getUser and then User::getId instead - ::getUserText - use RevisionRecord::getUser and then User::getName instead - ::getComment - use RevisionRecord::getComment instead - ::isMinor - use RevisionRecord::isMinor instead - ::isUnpatrolled - use RevisionStore::getRcIdIfUnpatrolled instead - ::getRecentChange - use RevisionStore::getRecentChange instead - ::isDeleted - use RevisionRecord::isDeleted instead - ::getVisibility - use RevisionRecord::getVisibility instead - ::getContent - use RevisionRecord::getContent instead - ::getSerializedData - use SlotRecord::getContent for retrieving a     content object, and Content::serialize for the serialized form - ::getContentModel - use SlotRecord::getModel instead - ::getContentFormat - use SlotRecord::getFormat instead, with a fallback to ContentHandler::getDefaultFormat - ::getContentHandler - use ContentHandlerFactory::getContentHandler instead - ::getTimestamp - use RevisionRecord::getTimestamp instead - ::isCurrent - use RevisionRecord::isCurrent instead - ::getPrevious - use RevisionLookup::getPreviousRevision instead - ::getNext - use RevisionLookup::getNextRevision instead - ::getRevisionText - use RevisionRecord::getContent instead - ::compressRevisionText - use SqlBlobStore::compressData instead - ::decompressRevisionText - use SqlBlobStore::decompressData instead - ::insertOn - use RevisionStore::insertRevisionOn instead - ::base36Sha1 - use SlotRecord::base36Sha1 instead - ::newNullRevision - use RevisionStore::newNullRevision - ::userCan - use RevisionRecord::userCanBitfield instead - ::userCanBitfield - use RevisionRecord::userCanBitfield instead - ::getTimestampFromId - use RevisionStore::getTimestampFromId instead - ::countByPageId - use RevisionStore::countRevisionsByPageId instead - ::countByTitle - use RevisionStore::countRevisionsByTitle instead - ::userWasLastToEdit - use RevisionStore::userWasLastToEdit instead - ::newKnownCurrent - use RevisionStore::getKnownCurrentRevision instead have been made private. They were: - ::getRevisionStore - ::getRevisionLookup - ::getRevisionFactory - ::getBlobStore The $mRecord variable was also changed from protected to private. well as suitable replacements, are noted below: - ArticleRevisionUndeleted (hard deprecated, use the RevisionUndeleted hook) - ArticleRollbackComplete (hard deprecated, use the RollbackComplete hook) - DiffRevisionTools (hard deprecated, use the DiffTools hook) - DiffViewHeader (hard deprecated, use the DifferenceEngineViewHeader hook) - HistoryRevisionTools (hard deprecated, use the HistoryTools hook) - NewRevisionFromEditComplete (hard deprecated, use the     RevisionFromEditComplete hook). - PageContentInsertComplete (hard deprecated, use the PageSaveComplete hook) - PageContentSaveComplete (hard deprecated, use the PageSaveComplete hook) - RevisionInsertComplete (soft deprecated in 1.31, now hard deprecated) - TitleMoveCompleting (hard deprecated, use the PageMoveCompleting hook) - TitleMoveComplete (hard deprecated, use the PageMoveComplete hook) - UndeleteShowRevision (hard deprecated) - ::loadRevisionFromTitle - ::loadRevisionFromTimestamp - ::loadRevisionFromPageId - ::listRevisionSizes Direct construction is deprecated, use MediaWikiServices::getJobRunner. LoggerAwareInterface is deprecated as well. Rely on the logger passed in the constructor instead. the fourth parameter. Specifying such a right is deprecated. deprecated. Pass a RevisionRecord instead. Skins and extensions that are using this should copy its necessary CSS rules to their own styles module. CologneBlue and Nostalgia skins serve as examples. Use the "mediawiki.skinning.*" modules, or ResourceLoaderSkinModule instead. - APIQueryInfoTokens - APIQueryRecentChangesTokens - APIQueryRevisionsTokens - APIQueryUsersTokens - ApiTokensGetTokenTypes other than Article is deprecated. Use Action::getArticle or Action::getWikiPage instead. deprecated and should be removed in 1.36. deprecated and should be removed in 1.36. - Title::getFirstRevision (hard deprecated) - Title::getEarliestRevTime - WikiPage::getOldestRevision (hard deprecated) - Article::getOldestRevision (hard deprecated) Use RevisionStore::getFirstRevision instead. in preparation for breaking changes. Neither method has any known callers outside of MediaWiki core. Both methods modify an array passed by reference ($resultDetails) - accessing the Revision objects added to that array (using the keys `current` and `target`) is also deprecated. parameters. They now accept either Revision or RevisionRecord objects. Passing a Revision object is hard deprecated. - ::revUserLink - ::revUserTools - ::revComment - ::generateRollback - ::getRollbackEditCount - ::buildRollbackLink - ::getRevDeleteLink objects for its two parameters. It now accepts RevisionRecord objects, and passing Revision objects is hard deprecated. second parameter. It now accepts RevisionRecord objects, and passing Revision objects is hard deprecated. uses have been deprecated: modifying the passed $magicWordId or failing to cache the returned value in $variableCache. The related MagicWordwgVariableIDs hook has been deprecated and renamed; use the GetMagicVariableIDs hook instead. - ::$mTagHooks - ::$mFunctionHooks - ::$mMarkerIndex - ::$mFirstCall - ::$mPreprocessor - ::$mOutput - ::$mStripState - ::$mLinkID - ::$mIncludeSizes - ::$mPPNodeCount - ::$mGeneratedPPNodeCount - ::$mHighestExpansionDepth - ::$mDoubleUnderscores - ::$mExpensiveFunctionCount - ::$mShowToc - ::$mUser - ::$mOptions - ::$mTitle - ::$ot - ::$mRevisionObject - ::$mRevisionId - ::$mRevisionTimestamp - ::$mRevisionUser - ::$mRevisionSize - ::$mInputSize - ::$mInParse of the new ::getRevisionRecord and ::setRevisionRecord methods. part of its planned removal: - Article::$mContext is deprecated; use getContext/setContext instead. - Article::__get, ::__set are hard deprecated, use the WikiPage properties instead. - These Article methods were hard deprecated; use their WikiPage equivalents: - ::checkFlags, - ::checkTouched, - ::clearPreparedEdit, - ::commitRollback, - ::doDeleteArticleReal, - ::doEditContent, - ::doPurge, - ::doRollback, - ::doUpdateRestrictions, - ::doViewUpdates, - ::exists, - ::followRedirect, - ::getContentHandler, - ::getContentModel, - ::getContributors, - ::getDeletionUpdates, - ::getHiddenCategories, - ::getId, - ::getLatest, - ::getLinksTimestamp, - ::getMinorEdit, - ::getRedirectTarget, - ::getRedirectURL, - ::getTimestamp, - ::getTouched, - ::hasViewableContent, - ::insertOn, - ::insertRedirect, - ::insertRedirectEntry, - ::isCountable, - ::isRedirect, - ::loadFromRow, - ::loadPageData, - ::lockAndGetLatest, - ::makeParserOptions, - ::pageDataFromId, - ::pageDataFromTitle, - ::prepareContentForEdit, - ::protectDescription, - ::protectDescriptionLog, - ::replaceSectionAtRev, - ::setTimestamp, - ::shouldCheckParserCache, - ::supportsSections, - ::triggerOpportunisticLinksUpdate, - ::updateCategoryCounts, and - ::updateRedirectOn. - Article::generateReason was hard deprecated; instead, please use WikiPage::getAutoDeleteReason. - Article::replaceSectionContent was hard deprecated, use Article::replaceSectionAtRev instead. - Article::getRevision and WikiPage::getRevision were hard deprecated in favor of the new WikiPage::getRevisionRecord method. were deprecated in favor of using the new service: - isIP - isIPRange - isValidUserName - isUsableName - isCreatableName - getCanonicalName the second parameter, and the suppression option the third parameter. Previously, the third parameter was unused. Using the old signature is hard deprecated. 1.24, accepted as its third parameter a Revision object. It now accepts a RevisionRecord, and passing a Revision is hard deprecated. parameter, which falls back to using global $wgUser, is hard deprecated. ::getRevisionObject were hard deprecated in favor of the new ::fetchCurrentRevisionRecordOfTitle, ::statelessFetchRevisionRecord, and ::getRevisionRecordObject methods respectively. were hard deprecated in favor of the new ::getCurrentRevisionRecordCallback and ::setCurrentRevisionRecordCallback methods respectively. object returned (via the `revision` key to the array) is deprecated. Instead, use `revision-record` to retrieve the equivalent RevisionRecord. a Status object with an array value. For both of those arrays, accessing the Revision object returned (via the `revision` key to the array) is deprecated. Instead, use `revision-record` to retrieve the equivalent RevisionRecord. needed in core: chooseBlock, fromMaster, deleteIfExpired. than detected. wfScript can be used to get a configured script URL. getDefaultOption, getOptions, getOption, getBoolOption, getIntOption, setOption, listOptionKinds, getOptionKinds, resetOptions. Use corresponding methods in UserOptionsLookup or UserOptionsManager service classes instead. TalkPageNotificationManager instead. favor of the new SpamChecker service. User::clearAllNotifications were deprecated in favor of the new WatchlistNotificationManager service. UnlistedSpecialPage to set listed as false, and use SpecialPage::isListed to get the value. deprecated. GuzzleHttpRequest now require the timeout and connectTimeout options to always be specified, otherwise a deprecation warning will be raised. Most callers should use HttpRequestFactory which always sets these options. LinkRenderer::normalizeTarget. getGroupMemberships, getEffectiveGroups, getAutomaticGroups, addGroup, removeGroup, getFormerGroups, getAllGroups, getImplicitGroups, addAutopromoteOnceGroups. Use the new UserGroupManager service instead. selectFields, getMembershipsForUser, getMembership, insert, delete, newFromRow, initFromRow, purgeExpired. Use the new UserGroupManager service instead. instead. It was soft deprecated in 1.27. favor of the Skin::getAfterPortlet method. Skin::getAfterPortlet does not wrap the result in a div, callers are responsible for that. The hook BaseTemplateAfterPortlet, called by both methods has been deprecated as well and is replaced by SkinAfterPortlet. UserGroupManager. Use SidebarBeforeOutput hook and get the revision id from the OutputPage object. is now available in a sidebar data array which you can get from any class that's extending QuickTemplate class. The hook associated with this method, BaseTemplateToolbox, has been hard deprecated. To add items to the toolbox, use SidebarBeforeOutput hook instead. The page mw:Manual:Hooks/SkinTemplateOutputPageBeforeExec and T60137 for recommendations for alternative approaches based on how developers previously used this hook. instead. deprecated. Use OutputPageBodyAttributes hook instead. InstallerDBSupport::getDatabases deprecated, as part of a long-term plan to remove support for mixed HTTP/HTTPS wikis. MWDebug::getHTMLDebugLog directly. Use ExternalStoreDB::getReplica instead. standard variable naming scheme (compare WikimediaUI Base) including `@colorGray* variables have been deprecated. New variables are in place and aliases have been set. Replace occurrences and use the new variables instead.
 * The PHPUnit4And6Compat class, used to provide compatibility with PHPUnit 4, is
 * LockManagerGroup::getDefault and LockManagerGroup::getAny are deprecated.
 * AbstractBlock::getPermissionsError and AbstractBlock::getBlockErrorParams are
 * The IP class is deprecated. Please instead use the Wikimedia\IPUtils class
 * The following Language methods are deprecated: getFallbackFor,
 * FileJournal::factory is deprecated. Use the constructor directly instead.
 * AbstractBlock methods setBlocker, getBlocker are deprecated and will
 * Title::countRevisionsBetween has been deprecated and moved into RevisionStore.
 * FileBackendGroup::singleton is deprecated. Use MediaWikiServices instead.
 * FileBackendGroup::destroySingleton is deprecated. Test frameworks should
 * GenderCache::singleton, deprecated in 1.28, is hard deprecated. Use
 * MediaWikiIntegrationTest::setContentLang has been deprecated. Use
 * MediaWikiIntegrationTest::assertType has been deprecated, as part of the
 * AbstractBlock::getReason is deprecated, since reasons are actually stored as
 * The global function wfGetRusage is deprecated and will now always call the
 * The properties User::mBlock, User::mBlockedby and User::mHideName are
 * Directly calling the MergeHistory constructor is deprecated. Instead, use the
 * Language::factory and Language::getParentLanguage are deprecated, and so
 * Language::classFromCode is deprecated. There is no reason it should be used
 * Language::clearCaches is deprecated. Instead, reset all services and set
 * The following functions from Language class are deprecated in favour of
 * Language::classFromCode is hard deprecated and should be removed in 1.36
 * Language::getConverter is deprecated and should be removed in 1.36
 * Language::MESSAGES_FALLBACKS, Language::STRICT_FALLBACKS were deprecated.
 * Language::$mLangObjCache is deprecated and should be removed in 1.36. Use
 * Language::getMessagesFor, getMessageFor, and getMessageKeysFor are
 * OutputPage::getCSPNonce is deprecated, use OutputPage::getCSP->getNonce
 * DerivedPageDataUpdater::prepareUpdate accepted as its second parameter an
 * Skin::makeI18nUrl and makeNSUrl have been deprecated, no longer used.
 * Title::countAuthorsBetween and Title::getAuthorsBetween were hard deprecated.
 * Remove deprecated SkinCopyrightFooter &$forContent parameter
 * The following Language class static variables have been replaced with
 * As part of dropping security support for IE 6 and IE 7,
 * The following ApiBase::PARAM_* constants have been deprecated in favor of
 * ApiBase::explodeMultiValue is deprecated. Use
 * ApiBase::parseMultiValue is deprecated. No replacement is provided;
 * ApiBase::validateLimit and ApiBase::validateTimestamp are deprecated.
 * ContentHandler (use ContentHandlerFactory):
 * (T212738) The $wgVersion global is deprecated; instead, use MW_VERSION.
 * $wgMemc is deprecated, use MediaWikiServices::getLocalServerObjectCache
 * ObjectCache::detectLocalServerCache is deprecated, instead use
 * ImagePage::getImageLimitsFromOptions is deprecated. Use static function
 * As part of work to replace the Parser, alongside the breaking changes listed
 * The signature of DefaultPreferencesFactory::__construct has been changed:
 * The public usage of the following properties of LanguageConverter have been
 * The ArticleEditUpdatesDeleteFromRecentchanges hook has been deprecated. Please
 * The ArticleEditUpdates hook has been deprecated. Please
 * The SkinTemplatePreventOtherActiveTabs and SkinTemplateTabAction hooks have
 * ResourceLoaderFileModule::compileLessFile has been deprecated, use
 * The SquidPurgeClient and SquidPurgeClientPool classes have been deprecated.
 * MimeAnalyzer::getExtensionsForType and ::getTypesForExtensions were
 * Calling Action::factory and Action constructor with WikiPage has been
 * ApiTestCase::doLogin, soft deprecated in 1.31, was hard deprecated.
 * WebRequest::getLimitOffset is hard deprecated. Instead, use
 * PageArchive::getPreviousRevision is hard deprecated. Instead, use the new
 * PageArchive::getArchivedRevision is hard deprecated. Instead, use the new
 * PageArchive::undelete is hard deprecated. Instead, use ::undeleteAsUser
 * PageArchive::getRevision is hard deprecated.
 * EditPage::getBaseRevision was hard deprecated. Instead, use the new
 * The public variable EditPage::$mBaseRevision was hard deprecated.
 * FileDeleteForm previously did not accept a user parameter in its constructor,
 * AuthManager::singleton has been deprecated. Use
 * ContribsPager::tryToCreateValidRevision is hard deprecated. Instead, use
 * The following functions all accept an optional user parameter. Not passing a
 * The following functions all accept an optional audience parameter and
 * UploadBase::checkWarnings now accepts a User parameter; not providing a
 * Article::insertProtectNullRevision and WikiPage::insertProtectNullRevision
 * Article::doDeleteArticle, Article::doDeleteArticleReal, and
 * Article::getComment is deprecated. Instead, use WikiPage::getComment.
 * Article::getCreator is deprecated. Instead, use WikiPage::getCreator.
 * Article::updateRevisionOn and ::updateIfNewerOn, and
 * Article::getUser is deprecated. Instead, use WikiPage::getUser.
 * Article::getUserText is deprecated. Instead, use WikiPage::getUserText.
 * Article::prepareContentForEdit is hard deprecated. Instead, use
 * WikiPage::prepareContentForEdit previously accepted either a Revision or a
 * Article::getUndoContent and WikiPage::getUndoContent are hard deprecated.
 * Passing Revision objects to ContentHandler::getUndoContent is hard deprecated.
 * Article::doDeleteUpdates and ::doEditUpdates are deprecated. Instead,
 * WikiPage::doEditUpdates previously accepted a Revision object as its first
 * Article::getRevisionFetched is deprecated. Instead, use the
 * LocalFileDeleteBatch was migrated to a new constructor signature with the
 * File::recordUpload (along with the respective methods in the LocalFile and
 * The SpecialPageFactory class was moved from the MediaWiki\Special namespace
 * Title::userCan, ::quickUserCan, and ::getUserPermissionsErrors, which
 * All methods of the old SpecialPageFactory, deprecated in 1.32, were hard
 * User::updateNewtalk now accepts as its optional third parameter a
 * User::getNewMessageRevisionId and ::getNewMessageLinks were hard deprecated.
 * DifferenceEngine::getRevisionHeader now accepts a RevisionRecord as its
 * WikiPage::doDeleteUpdates now accepts as its optional third parameter
 * WikiPage::onArticleEdit now accepts as its optional second parameter
 * Global $wgUser variable was soft deprecated.
 * The Revision class was soft deprecated entirely in 1.31. All methods
 * The Revision method had a few methods that were previously protected and
 * Multiple hooks that include Revision objects were deprecated. The hooks, as
 * The following RevisionStore methods were deprecated:
 * WikiPage::$mLastRevision was changed from protected to private.
 * RecentChange::markPatrolled was deprecated. Use ::doMarkPatrolled instead.
 * The JobRunner class has been converted to a service class.
 * JobRunner::setLogger has been deprecated, thus using JobRunner as a
 * LogEventsList::typeAction accepts an optional right to check against as
 * SkinTemplate::makeArticleUrlDetails has been deprecated, no longer used.
 * Passing a Revision object into CategoryMembershipChange constructor is
 * The "mediawiki.legacy.oldshared" module has been deprecated.
 * The "mediawiki.legacy.shared" module has been deprecated.
 * The following hooks, soft deprecated in 1.24, have been hard deprecated:
 * Calling Action::factory and Action constructor with any Page implementations
 * Action::page property is deprecated for direct access.
 * LESS `.background-image-svg` mixin from 'mediawiki.mixins.less' is
 * LESS `.background-image-svg-quick` mixin from 'mediawiki.mixins.less' is
 * The following methods were deprecated:
 * WikiPage::commitRollback and ::doRollback are declared to be internal
 * The following Linker methods previously accepted Revision objects as
 * WikiPage::hasDifferencesOutsideMainSlot previously accepted Revision
 * WikiPage::updateRevisionOn previously accepted Revision objects for its
 * The ParserGetVariableValueVarCache hook has been deprecated.
 * When using the ParserGetVariableValueSwitch hook, the following unusual
 * The following Parser properties have been deprecated:
 * LinksUpdate::getRevision and ::setRevision are hard deprecated in favor
 * A large number of exposed variables and methods of Article were deprecated as
 * A new UserNameUtils service was introduced. The following User methods
 * The signature of WikiPage::doDeleteArticleReal was changed to make the user
 * ApiQueryRevisions::getRollbackToken, which has been soft deprecated since
 * Passing Article to ParserCache::get was deprecated
 * ParserOptions::newCanonical with no first parameter, or null as the first
 * Parser::fetchCurrentRevisionOfTitle, ::statelessFetchRevision, and
 * ParserOptions::getCurrentRevisionCallback and ::setCurrentRevisionCallback
 * Parser::statelessFetchTemplate returns an array; accessing the Revision
 * WikiPage::doEditContent returns an array, and PageUpdater::getStatus returns
 * Page interface was deprecated. Use Article or WikiPage instead.
 * The following DatabaseBlock methods are deprecated because they are no longer
 * wfGetScriptUrl was deprecated. The script URL should be configured rather
 * Action::factory with null $action argument is hard deprecated
 * The following methods of the User class were deprecated: getDefaultOptions,
 * UserRetrieveNewTalks hook was deprecated without replacement.
 * User::getNewtalk and ::setNewtalk were hard deprecated. Use service
 * EditPage::matchSpamRegex and ::matchSummarySpamRegex were hard deprecated in
 * Title::getNotificationTimestamp, User::clearNotification, and
 * SpecialPage::setListed and SpecialPage::listed were deprecated. Subclass
 * CategoryPage::getCategoryViewerClass and ::setCategoryViewerClass were
 * MWHttpRequest and its subclasses PhpHttpRequest, CurlHttpRequest and
 * Linker::normaliseSpecialPage has been deprecated, instead make use of
 * SkinTemplate::getPersonalToolsList was soft deprecated.
 * ChangeTags::truncateTagDescription has been deprecated.
 * The following methods of the User class are deprecated: getGroups,
 * The following methods of the UserGroupMembership class were deprecated:
 * wfWaitForSlaves has been hard deprecated. Use LBFactory::waitForReplication
 * BaseTemplate::getAfterPortlet and ::renderAfterPortlet have been deprecated in
 * Autopromote class has been soft deprecated and it's methods moved into
 * SkinTemplateBuildNavUrlsNav_urlsAfterPermalink hook has been deprecated.
 * BaseTemplate::getToolbox method has been soft deprecated. The toolbox data
 * The SkinTemplateOutputPageBeforeExec hook is deprecated.
 * SkinTemplateToolboxEnd hook has been deprecated. Use SidebarBeforeOutput hook
 * Using Skin::addToBodyAttributes method to add body attributes has been
 * Installer::getDBTypes has been hard deprecated in favor of
 * The hooks BeforeHttpsRedirect, CanIPUseHTTPS and UserRequiresHTTPS were
 * Skin::generateDebugHTML has been hard deprecated. Call
 * ExternalStoreDB::getSlave, soft deprecated in 1.34, was hard deprecated.
 * Less variables in mediawiki.ui/variables.less file that don't follow the

Other changes in 1.35
to delete expired watchlist items. These items will also be deleted during wiki editing if $wgWatchlistPurgeRate is > 0. This maintenance script only has effect if $wgWatchlistExpiry is true. It is recommended that a cronjob or similar be set up to run it at least daily. MediaWiki\ExtensionInfo::getLicenseFileNames instead. MediaWiki\ExtensionInfo::getAuthorsFileName instead. compatibility code and duplication in the database have been removed. The old schema was a 1:1 relationship modeled by revision.text_id -> text.old_id. The new schema is a n:m relationship, revision.rev_id <- slots.slot_revision_id|slots.slot_content_id -> content.content_id|content.content_address -> text.old_id. The same applies to the archive table. The following fields were removed: - revision.rev_text_id, replaced by content.content_address - revision.rev_content_model, replaced by content.content_model, referencing content_models.model_id - revision.rev_content_format, replaced by automatic detecting in   ContentHandler - archive.ar_text_id, replaced by content.content_address - archive.ar_content_model, replaced by content.content_model, referencing content_models.model_id - archive.ar_content_format, replaced by automatic detecting in   ContentHandler progressing. The following fields were unused and have been removed: - revision.rev_comment, replaced by rev_comment_id referencing comment.comment_id. - revision.rev_user and rev_user_text, replaced by rev_actor referencing actor.actor_id. Note that archive.ar_user, archive.ar_user_text, and archive.ar_comment had already been removed in previous releases. on a custom port other than 5432.
 * A new maintenance script is added (purgeExpiredWatchlistItems.php) with which
 * Title::purgeSquid is deprecated. Use MediaWikiServices::getHtmlCacheUpdater.
 * SpecialVersion::getExtLicenseFileName has been deprecated, use
 * SpecialVersion::getExtAuthorsFileName has been deprecated, use
 * Migration to the new content storage schema is complete, all backwards
 * Migration to normalized storage of edit comments and user names is
 * The printableversion has been marked as deprecated per T167956.
 * (T30162, T245387) The installer supports using a Postgres server running

Compatibility
MediaWiki 1.35 requires PHP 7.3.19 or later, and the following PHP extensions:


 * ctype
 * dom
 * fileinfo
 * iconv
 * json
 * mbstring
 * xml

MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used, but support for them is somewhat less mature.

The supported versions are:


 * MySQL 5.5.8 or later
 * PostgreSQL 9.2 or later
 * SQLite 3.8.0 or later

Online documentation
Documentation for both end-users and site administrators is available on MediaWiki.org, and is covered under the GNU Free Documentation License (except for pages that explicitly state that their contents are in the public domain):

https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation

Mailing list
A mailing list is available for MediaWiki user support and discussion:

https://lists.wikimedia.org/mailman/listinfo/mediawiki-l

A low-traffic announcements-only list is also available:

https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce

It's highly recommended that you sign up for one of these lists if you're going to run a public MediaWiki, so you can be notified of security fixes.

IRC help
There's usually someone online in #mediawiki on irc.freenode.net.