I am happy to announce the availability of the general release of MediaWiki 1.39!

Tarballs have already been uploaded, and the git tag has been pushed.

Thanks to everyone who helped out with this release, especially thanks to those who tested out the release candidates and provided feedback, as well as the developers who worked hard to get several important fixes merged in time for the 1.39 final release. To see what's changed in 1.39, see the release notes below.

Please note that the PHP version requirement has been raised from 7.3.19 in MediaWiki 1.38 (and 1.35) to 7.4.3.

MediaWiki 1.39 is the first release of MediaWiki 'born' with PHP 8.0 and PHP 8.1 support included. We anticipate there may be some as-yet undiscovered bugs with PHP 8.x support, of which we'd love to hear reports so they can be fixed. We plan to back-port fixes to 1.38 and 1.35 to the extent possible.

MediaWiki 1.39 is an LTS and is due to be supported until the end of November 2025.

As a reminder, 1.35 LTS is due to become end-of-life in November 2023, and 1.38 is due to become end-of-life in June 2023. 1.37 is becoming end-of-life today, and will be formally announced in a separate email.

=== Changes since MediaWiki 1.39.0-rc.1 ===
* Localisation updates.
* exception: Tolerate no service container when trying DB rollback.
* (T320282) Upgrading wikimedia/xmp-reader (0.8.3 => 0.8.4).
* objectcache: Deprecate WANObjectCache::reap() and ::reapCheckKey().
* (T320864) When calling mail(), use an array for headers.
* Upgrading wikimedia/xmp-reader (0.8.4 => 0.8.5).
* (T321154) Call setFormIdentifier() on LogEventsList form.
* When importing revision with same timestamp as latest revision, treat it as the new latest.
* (T320726) RandomImageGenerator::getImageSpec: Don't pass a float to mt_rand(), for PHP 8.1.
* (T298485, T322360) WikiExporter: Avoid calling reload in processing every row.
* (T321551) pager: Fix null used for foreach in Pager::getNavigationBar.
* (T321551) pager: Remove unused AlphabeticPager::getOrderTypeMessages() support.
* pager: Remove unused PagerNavigationBuilder::setExtra().
* PagerNavigationBuilder: Document that nulls in setLinkQuery() etc. are allowed.
* (T322335) ApiQueryRevisionsBase: Fix 'rvdiffto' parameter handling on PHP 8.0.
* (T314096) TestFileEditor: Fix string interpolation.
* (T289926) api: Fix minor PHP 8.1 incompatibility in ApiOptions.
* (T322803) SpecialBotPasswords: Don't pass null to trim().
* (T289926) Fix incomplete ITextFormatter mocks.
* Language: Handle ronna and quetta.
* (T72510) rdbms: make SqlitePlatform::tableName() apply double quotes.
* (T323373) Parser: Fix extractSections() behavior for PHP >= 8.0.
* .gitattributes: Ship docker-compose.yml to the tarball.

Open Bugs:
[1] https://phabricator.wikimedia.org/project/board/5694/

Bug report form:
[2] https://phabricator.wikimedia.org/maniphest/task/edit/form/1/?tags=MW-1.39-Release

**********************************************************************
Download:
https://releases.wikimedia.org/mediawiki/1.39/mediawiki-1.39.0.tar.gz
https://releases.wikimedia.org/mediawiki/1.39/mediawiki-1.39.0.zip

Download without bundled extensions:
https://releases.wikimedia.org/mediawiki/1.39/mediawiki-core-1.39.0.tar.gz
https://releases.wikimedia.org/mediawiki/1.39/mediawiki-core-1.39.0.zip

Patch to previous version (1.39.0-rc.1):
https://releases.wikimedia.org/mediawiki/1.39/mediawiki-1.39.0.patch.gz
https://releases.wikimedia.org/mediawiki/1.39/mediawiki-1.39.0.patch.zip

GPG signatures:
https://releases.wikimedia.org/mediawiki/1.39/mediawiki-core-1.39.0.tar.gz.sig
https://releases.wikimedia.org/mediawiki/1.39/mediawiki-core-1.39.0.zip.sig
https://releases.wikimedia.org/mediawiki/1.39/mediawiki-1.39.0.tar.gz.sig
https://releases.wikimedia.org/mediawiki/1.39/mediawiki-1.39.0.zip.sig
https://releases.wikimedia.org/mediawiki/1.39/mediawiki-1.39.0.patch.gz.sig
https://releases.wikimedia.org/mediawiki/1.39/mediawiki-1.39.0.patch.zip.sig

Public keys:
https://www.mediawiki.org/keys/keys.html

Release Notes
https://www.mediawiki.org/wiki/Release_notes/1.39