v2.58.0: Object Storage Improvements
commit : d50cfa9ee0b0b921fb6823165c65f23ff5fed0fc
author : David Steele <david@pgbackrest.org>
date : Mon, 19 Jan 2026 17:03:44 +0700
committer: David Steele <david@pgbackrest.org>
date : Mon, 19 Jan 2026 17:03:44 +0700 IMPORTANT NOTE: The minimum values for the repo-storage-upload-chunk-size option have increased. They now represent the minimum allowed by the vendors.
Bug Fixes:
* Fix deadlock due to logging in signal handler. (Fixed by Maxim Michkov. Reviewed by David Steele.)
Features:
* HTTP support for S3, GCS, and Azure. (Contributed by Will Morland. Reviewed by David Steele.)
* Allow expiration of oldest full backup regardless of current retention. (Contributed by Stefan Fercot. Reviewed by David Steele. Suggested by Ron Johnson.)
* Support for Azure managed identities. (Contributed by Moiz Ibrar, Matthew Mols. Reviewed by David Steele.)
* Experimental support for S3 EKS pod identity. (Contributed by Pierre BOUTELOUP. Reviewed by David Steele.)
* Allow configuration of TLS cipher suites. (Contributed by Gunnar "Nick" Bluth. Reviewed by David Steele.)
* Allow process priority to be set. (Reviewed by Douglas J Hunley.)
Improvements:
* Allow dots in S3 bucket names when using path-style URIs. (Contributed by Joakim Hindersson. Reviewed by David Steele.)
* Require TLS >= 1.2 unless verification is disabled. (Reviewed by Douglas J Hunley, Gunnar "Nick" Bluth.)
* Dynamically size S3/GCS/Azure chunks for large uploads. (Reviewed by Douglas J Hunley. Suggested by Timothée Peignier.)
* Optimize S3/GCS/Azure chunk size for small files. (Reviewed by Douglas J Hunley.)
* Remove support for PostgreSQL 9.5. (Reviewed by Douglas J Hunley.)
* Improve logging of default for options with an unresolved dependency. (Reviewed by Stefan Fercot.)
Documentation Improvements:
* Remove explicit max_wal_senders/wal_level configuration from user guide. (Suggested by Jamie Nguyen.)
* Clarify that bundling is useful for filesystems with large block sizes. (Suggested by Ron Johnson.) M CONTRIBUTING.md
M README.md
M doc/RELEASE.md
M doc/resource/exe.cache
M doc/resource/git-history.cache
M doc/xml/auto/metric-coverage-report.auto.xml
M doc/xml/release/2020s/2026/2.58.0.xml
M meson.build
M src/version.h
M test/code-count/file-type.yaml
New CI container builds.
commit : d206d89d5fd40e9c386a87d326eb9fd5bc5d855c
author : David Steele <david@pgbackrest.org>
date : Mon, 19 Jan 2026 16:29:57 +0700
committer: David Steele <david@pgbackrest.org>
date : Mon, 19 Jan 2026 16:29:57 +0700 M test/container.yaml
M test/lib/pgBackRestTest/Common/VmTest.pm
Suppress Azurite API version checking in documentation builds.
commit : b52ebe1fd840d504808a850379bf82439cf50065
author : David Steele <david@pgbackrest.org>
date : Thu, 15 Jan 2026 12:01:51 +0700
committer: David Steele <david@pgbackrest.org>
date : Thu, 15 Jan 2026 12:01:51 +0700 The az tool used to create the bucket now requires an API version greater than what Azurite supports. This may be a mistake on their part (but has not resolved after a day) or may indicate that Azurite is no longer actively supported.
Either way, for now it is easiest to suppress the version check so CI builds can proceed. Other corrective action can be taken later as needed. M doc/xml/user-guide.xml
Simplify log-level options in config.yaml.
commit : 6904cdf5a8e4f66dca626f166eb0f01c42657254
author : David Steele <david@pgbackrest.org>
date : Sun, 11 Jan 2026 21:00:39 +0700
committer: David Steele <david@pgbackrest.org>
date : Sun, 11 Jan 2026 21:00:39 +0700 These were overly verbose -- inheritance is the way to do this. M src/build/config/config.yaml
Remove unused error parameter from strIdFromZN().
commit : d76da852ee61a396582eba034d49bf8e8e99b7db
author : David Steele <david@pgbackrest.org>
date : Sun, 11 Jan 2026 18:42:27 +0700
committer: David Steele <david@pgbackrest.org>
date : Sun, 11 Jan 2026 18:42:27 +0700 This parameter was made obsolete in 85caeda4. M src/common/type/string.h
M src/common/type/stringId.c
M src/common/type/stringId.h
M test/src/module/common/typeStringTest.c
Update strIdFromZN() comment missed in 6e11d650.
commit : d12aa6fcdab125f1bbc68220ac436797296a6623
author : David Steele <david@pgbackrest.org>
date : Sun, 11 Jan 2026 15:02:22 +0700
committer: David Steele <david@pgbackrest.org>
date : Sun, 11 Jan 2026 15:02:22 +0700 M src/common/type/stringId.h
Use more generic expression to fetch container IP addresses.
commit : 35505d63fd4583e290f02dae6d20e102efacf798
author : David Steele <david@pgbackrest.org>
date : Sat, 10 Jan 2026 19:13:55 +0700
committer: David Steele <david@pgbackrest.org>
date : Sat, 10 Jan 2026 19:13:55 +0700 The IP address has been moved in newer versions of Docker but this expression will fetch the IP address from the old or new location. M doc/lib/pgBackRestDoc/Common/Host.pm
M test/src/common/harnessHost.c
Throw errors on invalid StringIds in config/parse.c.
commit : 85caeda4e569bbd1adf3941ac08369f5878d5316
author : David Steele <david@pgbackrest.org>
date : Sat, 10 Jan 2026 15:52:06 +0700
committer: David Steele <david@pgbackrest.org>
date : Sat, 10 Jan 2026 15:52:06 +0700 Now that the StringIds are not stored in parse.auto.c.inc it may not be obvious if an invalid StringId is generated. By moving the encoding to after the value has been validated we can error if the StringId is invalid rather than throwing an error that the value does not exist in the allow list. M src/config/parse.c
Add PARSE_RULE_VAL_STR_IDX() to simplify logic in config/parse.c.
commit : 58988064733c24f816dcd831e6def717f253c71b
author : David Steele <david@pgbackrest.org>
date : Sat, 10 Jan 2026 15:35:37 +0700
committer: David Steele <david@pgbackrest.org>
date : Sat, 10 Jan 2026 15:35:37 +0700 Mostly this just makes the code cleaner but there are also a few function calls that were replaced with the macro.
Also tighten up the logic in cfgParseOptionValuePack() a bit even though is not related to this macro change. M src/config/parse.c
Remove generated StringIds from parse.auto.c.inc.
commit : 31d4aaa19f9ffcd30cdae427e9ab333e7163dcc6
author : David Steele <david@pgbackrest.org>
date : Sat, 10 Jan 2026 15:08:05 +0700
committer: David Steele <david@pgbackrest.org>
date : Sat, 10 Jan 2026 15:08:05 +0700 These StringIds use space and increase churn when new ids are added. It is easy and efficient to use strings for comparison and convert to StringId in code. M src/build/config/render.c
M src/config/parse.auto.c.inc
M src/config/parse.c
M test/src/module/build/configTest.c
Support for S3 EKS pod identity.
commit : 79544f64a3ce198f4685f923739def997fcafbce
author : wolrajhti <wolrajhti@users.noreply.github.com>
date : Fri, 9 Jan 2026 09:18:28 +0100
committer: GitHub <noreply@github.com>
date : Fri, 9 Jan 2026 09:18:28 +0100 Fetch credentials automatically using EKS pod identity, which removes the need for static configuration. Credentials are automatically updated before they expire to support long-running commands.M doc/xml/release/2020s/2026/2.58.0.xml
M doc/xml/release/contributor.xml
M src/build/config/config.yaml
M src/config/config.auto.h
M src/config/parse.auto.c.inc
M src/storage/s3/helper.c
M src/storage/s3/storage.c
M src/storage/s3/storage.h
M test/src/common/harnessHost.c
M test/src/module/storage/s3Test.c
Fix flapping common/io-tls unit test added in fbc607a4.
commit : 91ad65537f55aa3825b6c7b626a9e1b7cbb1ad4c
author : David Steele <david@pgbackrest.org>
date : Thu, 8 Jan 2026 11:45:14 +0700
committer: David Steele <david@pgbackrest.org>
date : Thu, 8 Jan 2026 11:45:14 +0700 Since the server exits on error in this test there is no need to shut it down when the script completes. This usually worked because the message would arrive before the server had shutdown completely but sometimes it would error on a broken pipe. M test/src/module/common/ioTlsTest.c
Clarify that bundling is useful for filesystems with large block sizes.
commit : a7e5f28511c27f2504a873db26803b26a84df8f1
author : David Steele <david@pgbackrest.org>
date : Thu, 8 Jan 2026 10:53:51 +0700
committer: David Steele <david@pgbackrest.org>
date : Thu, 8 Jan 2026 10:53:51 +0700 M doc/xml/release/2020s/2026/2.58.0.xml
M doc/xml/user-guide.xml
Allow configuration of TLS cipher suites.
commit : fbc607a48b1fb4ae65c9f2691c44453f02aef2b8
author : Gunnar "Nick" Bluth <gunnar.bluth@pro-open.de>
date : Thu, 8 Jan 2026 03:17:17 +0100
committer: GitHub <noreply@github.com>
date : Thu, 8 Jan 2026 03:17:17 +0100 Configuration of specific cipher suites may be required for compliance or to use preferred ciphers for security.
Cipher suites are applied to the entire process and cannot be configured on a per-connection basis, except that for object store clients (e.g. S3) verification can be disabled.M doc/xml/release/2020s/2026/2.58.0.xml
M src/build/config/config.yaml
M src/build/help/help.xml
M src/common/io/tls/common.c
M src/common/io/tls/common.h
M src/config/config.auto.h
M src/config/load.c
M src/config/parse.auto.c.inc
M test/define.yaml
M test/src/module/command/helpTest.c
M test/src/module/common/ioTlsTest.c
M test/src/module/config/loadTest.c
Require TLS >= 1.2 unless verification is disabled.
commit : 5b4b20a8d7d17c2bffe106595310853e3f3a9604
author : David Steele <david@pgbackrest.org>
date : Wed, 7 Jan 2026 08:22:01 +0700
committer: GitHub <noreply@github.com>
date : Wed, 7 Jan 2026 08:22:01 +0700 TLS 1.0 and 1.1 have been deprecated since 2021 (see RFC-8996) and TLS 1.2 has been available since 2008. As such it makes sense to require TLS >= 1.2 when verification is enabled. Verification is always enabled for TLS protocol sessions within pgBackRest but can be disabled for object stores (.e.g. S3) to support self-signed certificates on internal servers.
There is a slight change in behavior when verification is disabled. In prior versions SSL 2/3 would be disabled but now they are allowed (as well as TLS 1.0/1.2). With verification disabled it doesn't seem useful to be picky about protocol versions and disabling TLS 1.0/1.1 could easily cause breakage on older TLS servers.M doc/xml/release/2020s/2026/2.58.0.xml
M doc/xml/release/contributor.xml
M src/common/io/tls/client.c
M src/common/io/tls/common.c
M src/common/io/tls/common.h
M src/common/io/tls/server.c
Support for Azure managed identities.
commit : 38f14d73b6a62d06e1ead7942e49a2bb2ae90dab
author : Moiz Ibrar <moiz@pgedge.com>
date : Mon, 5 Jan 2026 16:42:11 +0500
committer: GitHub <noreply@github.com>
date : Mon, 5 Jan 2026 16:42:11 +0500 Fetch credentials automatically using managed identities, which removes the need for static configuration. Credentials are automatically updated before they expire to support long-running commands.M doc/xml/release/2020s/2026/2.58.0.xml
M doc/xml/release/contributor.xml
M src/build/config/config.yaml
M src/build/help/help.xml
M src/config/config.auto.h
M src/config/parse.auto.c.inc
M src/storage/azure/helper.c
M src/storage/azure/storage.c
M src/storage/azure/storage.h
M test/src/module/storage/azureTest.c
Fix minor formatting issue.
commit : 67c8b3462dd4e43e3acc7252d8551b95f3e018f0
author : David Steele <david@pgbackrest.org>
date : Mon, 5 Jan 2026 09:34:46 +0700
committer: David Steele <david@pgbackrest.org>
date : Mon, 5 Jan 2026 09:34:46 +0700 M src/storage/s3/storage.c
Remove prefix functionality from StringId.
commit : 6e11d65074419498045899d8b391ed17e88c8aae
author : David Steele <david@pgbackrest.org>
date : Fri, 2 Jan 2026 12:02:48 +0700
committer: David Steele <david@pgbackrest.org>
date : Fri, 2 Jan 2026 12:02:48 +0700 In practice StringIds that could not be output as the original string were not useful. Remove this functionality to simplify the code and reclaim the bit for other purposes. M src/common/type/stringId.c
M src/common/type/stringId.h
M test/src/module/common/typeStringTest.c
Move object code out of StringId module.
commit : d269d1d9bdbb390abda96a9aa613e27fd020f628
author : David Steele <david@pgbackrest.org>
date : Fri, 2 Jan 2026 11:16:28 +0700
committer: David Steele <david@pgbackrest.org>
date : Fri, 2 Jan 2026 11:16:28 +0700 Functions for creating String and StringZ objects should be in their respective modules so move them there. This simplifies the dependencies for StringId and is more modular. M src/build/common/yaml.c
M src/command/backup/backup.c
M src/command/info/info.c
M src/command/manifest/manifest.c
M src/command/restore/restore.c
M src/common/compress/helper.c
M src/common/crypto/cipherBlock.c
M src/common/log.c
M src/common/type/json.c
M src/common/type/pack.c
M src/common/type/string.c
M src/common/type/string.h
M src/common/type/stringId.c
M src/common/type/stringId.h
M src/common/type/stringZ.c
M src/common/type/stringZ.h
M src/config/config.c
M src/config/load.c
M src/info/manifest.c
M src/protocol/client.c
M src/protocol/helper.c
M src/protocol/parallelJob.c
M src/protocol/server.c
M src/storage/remote/protocol.c
M src/storage/sftp/storage.c
M test/src/common/harnessBackup.c
M test/src/common/harnessHost.c
M test/src/common/harnessPack.c
M test/src/common/harnessStorage.c
M test/src/module/common/ioTest.c
M test/src/module/common/typeJsonTest.c
M test/src/module/common/typeStringTest.c
M test/src/module/storage/sftpTest.c
Move constants required for debug logging.
commit : 911857119663e24d4647a756e9d23b83d14b3fe7
author : David Steele <david@pgbackrest.org>
date : Fri, 2 Jan 2026 10:47:45 +0700
committer: David Steele <david@pgbackrest.org>
date : Fri, 2 Jan 2026 10:47:45 +0700 Moving these constants to stringStatic.h reduces the dependency on stringZ.h for low-level debug logging. This makes it possible to add new capabilities to stringZ.c. M src/common/debug.h
M src/common/type/stringStatic.h
M src/common/type/stringZ.h
M test/src/module/test/testTest.c
Use JsonRead for all info JSON parsing.
commit : 84778658ac73b3dd32cfdb7645c5e63ce734aa6a
author : David Steele <david@pgbackrest.org>
date : Tue, 30 Dec 2025 17:40:18 +0700
committer: David Steele <david@pgbackrest.org>
date : Tue, 30 Dec 2025 17:40:18 +0700 After JsonRead was introduced the performance-sensitive areas of info were migrated from Variant. However, other areas were left using Variant because they were not important enough to update at that time.
Migrate remaining Variant usage to JsonRead wherever possible for consistency. Also improve memory management to avoid some cruft that would end up in the object mem context and avoid switching to the object mem context when possible. M src/info/info.c
M src/info/info.h
M src/info/infoBackup.c
M src/info/infoPg.c
M src/info/manifest.c
M test/src/common/harnessInfo.c
M test/src/common/harnessInfo.h
Fix test comment.
commit : d88ae742823233b680900906dde69ce415e6384a
author : David Steele <david@pgbackrest.org>
date : Mon, 29 Dec 2025 19:40:26 +0700
committer: David Steele <david@pgbackrest.org>
date : Mon, 29 Dec 2025 19:40:26 +0700 M test/src/module/storage/azureTest.c
HTTP support for S3, GCS, and Azure.
commit : 2398dd4d432d312b3641e9fbbcbe0487ad43112d
author : Will Morland <wjmorland@gmail.com>
date : Sun, 28 Dec 2025 21:39:21 -0600
committer: GitHub <noreply@github.com>
date : Sun, 28 Dec 2025 21:39:21 -0600 Allow users to specify HTTP in the endpoint but default to using HTTPS in all other scenarios to preserve the existing behavior.
Extend HttpUrl with a `defaultType` parameter to support either:
- Explicitly specifying a protocol via `.type` and enforcing that protocol is used in the URL.
- Allowing protocol to be parsed from URL, but providing default via `.defaultType` if no protocol is found in the URL.
Add partial write handling in fdWrite() to support non-blocking socket operations. The write loop now handles EAGAIN errors by waiting for the file descriptor to become writable, and continues writing the remaining bytes when write() returns fewer bytes than requested. This is required for HTTP, which may use non-blocking sockets, but doesn't have built in handling like the TLS client we are using for HTTPS. Also wrap the write() call and add a shim and additional logging for easier unit testing.M doc/xml/release/2020s/2026/2.58.0.xml
M doc/xml/release/contributor.xml
M src/common/debug.h
M src/common/io/fdWrite.c
M src/common/io/http/url.c
M src/common/io/http/url.h
M src/storage/azure/helper.c
M src/storage/azure/storage.c
M src/storage/azure/storage.h
M src/storage/gcs/storage.c
M src/storage/s3/helper.c
M src/storage/s3/storage.c
M src/storage/s3/storage.h
M test/define.yaml
M test/src/common/harnessFd.c
M test/src/common/harnessFd.h
M test/src/common/harnessHost.c
M test/src/module/common/execTest.c
M test/src/module/common/ioHttpTest.c
M test/src/module/common/ioTest.c
M test/src/module/protocol/protocolTest.c
M test/src/module/storage/azureTest.c
M test/src/module/storage/gcsTest.c
M test/src/module/storage/s3Test.c
Removed redundant documentation variables and references.
commit : 1afaab1c1e35d61ee17837f6850d731e25770e1a
author : David Steele <david@pgbackrest.org>
date : Tue, 23 Dec 2025 17:24:49 +0700
committer: David Steele <david@pgbackrest.org>
date : Tue, 23 Dec 2025 17:24:49 +0700 M doc/xml/index.xml
M doc/xml/user-guide.xml
Remove PDF documentation output.
commit : fdeb46be8337706fb8f7d0730bddaeef47f19f90
author : David Steele <david@pgbackrest.org>
date : Tue, 23 Dec 2025 16:59:08 +0700
committer: David Steele <david@pgbackrest.org>
date : Tue, 23 Dec 2025 16:59:08 +0700 PDF output is not longer used by the project. Removal will make documentation maintenance and improvements simpler. M CONTRIBUTING.md
M doc/README.md
M doc/RELEASE.md
M doc/doc.pl
M doc/lib/pgBackRestDoc/Common/DocManifest.pm
M doc/lib/pgBackRestDoc/Common/DocRender.pm
D doc/lib/pgBackRestDoc/Latex/DocLatex.pm
D doc/lib/pgBackRestDoc/Latex/DocLatexSection.pm
M doc/manifest.xml
M doc/release.pl
D doc/resource/latex/blank.eps
D doc/resource/latex/cds-logo.eps
D doc/resource/latex/preamble.tex
M doc/xml/contributing.xml
M doc/xml/documentation.xml
M test/ci.pl
M test/code-count/file-type.yaml
M test/lib/pgBackRestTest/Common/CodeCountTest.pm
Fix deadlock due to logging in signal handler.
commit : e13c462908c6ee25f8795b5d1373981549d4d5cf
author : Maxim Michkov <m.michkov@arenadata.io>
date : Mon, 22 Dec 2025 10:43:15 +0300
committer: GitHub <noreply@github.com>
date : Mon, 22 Dec 2025 10:43:15 +0300 Previously it was possible to achieve a deadlock in a signal handler, for example when SIGTERM (i.e. sent by `pgbackrest stop --force`) arrives when a lock used in `gmtime_r` is taken. Then the next time logging is done, it will deadlock on `gmtime_r`.
In general, most stdlib functions are not safe to call in signal handlers, only so called async-signal safe functions are. In particular, `snprintf` isn't safe since it is allowed to internally call `malloc`. The `exitSafe` function isn't safe due to extensive use of allocations. Because of this, we need to use a simpler logging format in signal handlers, one that only uses async-signal safe functions.M doc/xml/release/2020s/2026/2.58.0.xml
M src/command/exit.c
M src/common/log.c
M src/common/log.h
M test/define.yaml
M test/src/module/command/exitTest.c
M test/src/module/common/logTest.c
Fix missing parameter logging in storageS3New().
commit : cc7b9b72718c091de54417f9f35761dcfab610d9
author : David Steele <david@pgbackrest.org>
date : Mon, 22 Dec 2025 14:23:08 +0700
committer: David Steele <david@pgbackrest.org>
date : Mon, 22 Dec 2025 14:23:08 +0700 M src/storage/s3/storage.c
Allow expiration of oldest full backup regardless of current retention.
commit : bf2b276dc011464b13039630870934fd42ca473c
author : Stefan Fercot <pgstef@fercot.be>
date : Thu, 11 Dec 2025 15:40:32 +0100
committer: GitHub <noreply@github.com>
date : Thu, 11 Dec 2025 15:40:32 +0100 Prior to this commit it was difficult to expire just the oldest full backup while ignoring current retention settings. The user had to manually update retention or script something to automate it. Expiring the oldest full backup is useful when disk space is running low.
Add the --oldest option to allow expiration of the oldest full backup and any dependent backups regardless of the current retention settings. Archive retention is also adjusted to expire WAL before the oldest retained full backup.M doc/xml/release/2020s/2026/2.58.0.xml
M src/build/config/config.yaml
M src/build/help/help.xml
M src/command/expire/expire.c
M src/config/config.auto.h
M src/config/parse.auto.c.inc
M test/define.yaml
M test/src/module/command/expireTest.c
Allow dots in S3 bucket names when using path-style URIs.
commit : 3fdb4a1ea00b442aca5fc714818d293d57490386
author : Joakim Hindersson <j.hindersson@gmail.com>
date : Sun, 7 Dec 2025 06:59:12 +0100
committer: GitHub <noreply@github.com>
date : Sun, 7 Dec 2025 06:59:12 +0100 The reasoning in the FAQ and code about RFC-2818 is only valid when using host style URIs. According to AWS S3 bucket naming standard the allowed characters is any lowercase alphanumeric including dash and dot.
Most self hosted S3 services utilize path based URIs where dots are valid in a bucket name so this check should only apply for host based buckets. Even though its use is not recommended and path-based access is being phased out of AWS S3 it is still valid and should function for other providers.M doc/xml/release/2020s/2026/2.58.0.xml
M doc/xml/release/contributor.xml
M src/config/load.c
M test/src/module/config/loadTest.c
Update Cirrus-CI FreeBSD 14 runner version.
commit : 8a4df08bd2025a122a6ec47788c8b942221bf8d7
author : David Steele <david@pgbackrest.org>
date : Sun, 7 Dec 2025 10:51:19 +0530
committer: David Steele <david@pgbackrest.org>
date : Sun, 7 Dec 2025 10:51:19 +0530 M .cirrus.yml
Fix WAL segment numbering in command/expire unit test.
commit : 09efab039aa4c79f1c762eecefeee32c53a3507b
author : Stefan Fercot <pgstef@fercot.be>
date : Sat, 29 Nov 2025 11:39:01 +0530
committer: David Steele <david@pgbackrest.org>
date : Sat, 29 Nov 2025 11:39:01 +0530 WAL segments were being numbered in decimal format rather than hex. This worked in the prior cases (more or less) but is not correct or flexible. M test/src/module/command/expireTest.c
Improve logging of default for options with an unresolved dependency.
commit : 38ac6387cbbfc6f78a686de657e5a4de4ed59295
author : David Steele <david@pgbackrest.org>
date : Fri, 28 Nov 2025 14:27:36 +0530
committer: GitHub <noreply@github.com>
date : Fri, 28 Nov 2025 14:27:36 +0530 Options with unresolved dependencies can have an implied default specified. This makes the code a bit simpler since we don't need to check for option validity.
However, there was an edge case where if an option was specified in the config file and ultimately the dependency was not resolved then the option would not be marked as default and therefore show up in the option logging at the beginning of a command. The default value was correct so everything operated as expected but the logging was confusing.
In the case of an implied default, reinitialize the option struct so that any leftover settings will be reset.M doc/xml/release/2020s/2026/2.58.0.xml
M src/config/parse.c
M test/src/module/config/parseTest.c
Optimize S3/GCS/Azure chunk size for small files.
commit : 28bfa20ba3b860f72ba7ab6c018e37ada99e2109
author : David Steele <david@pgbackrest.org>
date : Tue, 25 Nov 2025 17:28:20 +0530
committer: GitHub <noreply@github.com>
date : Tue, 25 Nov 2025 17:28:20 +0530 The prior code allocated the entire chunk buffer when the file was opened. However, in practice many files are smaller than the chunk buffer, especially in the main process.
Instead grow the chunk buffer as data comes in to save memory when smaller files are being processed. This adds some overhead for reallocations but modern processors do this very efficiently so it should not be significant compared to the cost of compressing, encrypting, and transferring files. Even so, the growth is fairly aggressive when the input buffers are full so only one or two reallocation are required to get to the default chunk size.M doc/xml/release/2020s/2026/2.58.0.xml
M src/storage/azure/write.c
M src/storage/gcs/write.c
M src/storage/s3/write.c
M src/storage/write.c
M src/storage/write.h
M test/define.yaml
M test/src/module/storage/azureTest.c
M test/src/module/storage/gcsTest.c
M test/src/module/storage/s3Test.c
Dynamically size S3/GCS/Azure chunks for large uploads.
commit : 86554faa707292855c2776a0c70b5e212b1e3945
author : David Steele <david@pgbackrest.org>
date : Sat, 22 Nov 2025 20:32:37 +0400
committer: GitHub <noreply@github.com>
date : Sat, 22 Nov 2025 20:32:37 +0400 Previously an S3 upload with default repo-storage-upload-chunk-size would only work for files <= 50GiB because of the limited number of chunks allowed. GCS has a smaller chunk size default so it topped out at 40GiB. Azure allows 50,000 chunks so it allowed up to 200GiB.
These are all far larger than files PostgreSQL will create but these days a data directory might also contain files created by plugins that can be much larger.
Since the eventual file size is not known in advance (due to compression) it is hard to pick an appropriate chunk size in advance. Instead, dynamically grow the chunk size over time to reach 5TiB for S3 and GCS (their upper limit). Azure has more parts so it will reach 45TiB, which is smaller than the upper limit of 190TiB, but seems sufficient for now.
The default buffer size is used for the first GiB (plus some) to provide compatibility with any clones that do not support variable block sizes. There is no evidence that this is a problem but better to be safe.
The minimum values for repo-storage-upload-chunk-size have been increased to match vendor minimums and simply the chunk size algorithm.M doc/xml/release/2020s/2026/2.58.0.xml
M src/build/config/config.yaml
M src/build/help/help.xml
M src/config/parse.auto.c.inc
M src/storage/azure/write.c
M src/storage/gcs/write.c
M src/storage/s3/write.c
M src/storage/write.c
M src/storage/write.h
M test/src/module/command/helpTest.c
M test/src/module/config/loadTest.c
M test/src/module/storage/azureTest.c
M test/src/module/storage/gcsTest.c
M test/src/module/storage/posixTest.c
M test/src/module/storage/s3Test.c
Remove explicit max_wal_senders/wal_level configuration from user guide.
commit : bce97d3ea80675b8eab3dbf692e8bc8f077f30c7
author : David Steele <david@pgbackrest.org>
date : Wed, 19 Nov 2025 10:40:02 +0200
committer: David Steele <david@pgbackrest.org>
date : Wed, 19 Nov 2025 10:40:02 +0200 Since PostgreSQL 10 these settings have been defaulted to values required by the user guide so there is no need to explicitly set them.
PostgreSQL 9.5/9.6 are still supported by pgBackRest but are not represented in the user guide since they are EOL. M doc/xml/release/2020s/2026/2.58.0.xml
M doc/xml/release/contributor.xml
M doc/xml/user-guide.xml
Fix 32-bit CI testing.
commit : d83019924bd07bf563ec2d8f7b8417694fd51519
author : David Steele <david@pgbackrest.org>
date : Wed, 12 Nov 2025 14:27:22 +0200
committer: David Steele <david@pgbackrest.org>
date : Wed, 12 Nov 2025 14:27:22 +0200 32-bit testing was broken by 24802a08, which was attempting to fix multi-architecture builds by using docker to set the architecture.
i386 is not a special case but the prior alternate architectures did not run integration tests. This requires passing the architecture around since the integration test main process runs on the host system, which may be a different architecture. M .github/workflows/test.yml
M test/ci.pl
M test/container.yaml
M test/lib/pgBackRestTest/Common/ContainerTest.pm
M test/lib/pgBackRestTest/Common/JobTest.pm
M test/lib/pgBackRestTest/Common/VmTest.pm
M test/src/build/config/config.yaml
M test/src/build/help/help.xml
M test/src/command/test/test.c
M test/src/command/test/test.h
M test/src/common/harnessHost.c
M test/src/main.c
M test/src/module/command/backupTest.c
M test/src/module/test/testTest.c
M test/test.pl
Removed unused code in test container build.
commit : c6ebfc8faed2609b996f9ab4dd80c7fc6bfd774f
author : David Steele <david@pgbackrest.org>
date : Wed, 12 Nov 2025 11:22:08 +0200
committer: David Steele <david@pgbackrest.org>
date : Wed, 12 Nov 2025 11:22:08 +0200 M test/lib/pgBackRestTest/Common/ContainerTest.pm
M test/lib/pgBackRestTest/Common/VmTest.pm
Allow process priority to be set.
commit : 0fc7e96f5addb01e7f6f3585e37d209cc17dd956
author : David Steele <david@pgbackrest.org>
date : Tue, 11 Nov 2025 21:06:42 +0200
committer: GitHub <noreply@github.com>
date : Tue, 11 Nov 2025 21:06:42 +0200 Decreasing process priority makes the pgBackRest processes less likely to interfere with the normal operation of PostgreSQL.M doc/xml/release/2020s/2026/2.58.0.xml
M src/build/config/config.yaml
M src/build/help/help.xml
M src/config/config.auto.h
M src/config/load.c
M src/config/parse.auto.c.inc
M test/src/module/command/helpTest.c
M test/src/module/config/loadTest.c
Rearrange options for clarity.
commit : 8b9a19e078a9650786433047a05f15637dcac8c6
author : David Steele <david@pgbackrest.org>
date : Tue, 11 Nov 2025 13:24:27 +0200
committer: David Steele <david@pgbackrest.org>
date : Tue, 11 Nov 2025 13:24:27 +0200 Especially for pg-* and repo-*, groups options in a way that makes them easier to maintain with headers to make them easier to find. M src/build/config/config.yaml
Move PostgreSQL connection options to the same section.
commit : 639f27f67ebc90f11646be8b0863a3f3b3ef088e
author : David Steele <david@pgbackrest.org>
date : Tue, 11 Nov 2025 12:29:59 +0200
committer: David Steele <david@pgbackrest.org>
date : Tue, 11 Nov 2025 12:29:59 +0200 This makes maintenance easier. Also fix the command list for db-timeout so it matches pg-database, i.e. all the commands that can connect to the database. M src/build/config/config.yaml
M src/config/parse.auto.c.inc
Add new defines to help with option command maintenance.
commit : f5b51a5680364ea9488d5666477ba6c9229322d9
author : David Steele <david@pgbackrest.org>
date : Tue, 11 Nov 2025 11:53:59 +0200
committer: David Steele <david@pgbackrest.org>
date : Tue, 11 Nov 2025 11:53:59 +0200 Add +inherit, +role, and -command to help with command maintenance. These allow command lists to automatically add new commands without them needing to be added manually. They should also be easier to read than long command lists. M src/build/config/config.yaml
M src/build/config/parse.c
M test/src/module/build/configTest.c
Use roles to simplify option command lists.
commit : 9653d444f2b831924baf10dd53051c9d49beb02d
author : David Steele <david@pgbackrest.org>
date : Tue, 11 Nov 2025 09:44:41 +0200
committer: David Steele <david@pgbackrest.org>
date : Tue, 11 Nov 2025 09:44:41 +0200 In many cases the valid commands are based on the commands valid for roles. In these cases derive the commands from a role list rather than an explicit command list.
Not only is this notation more compact but it helps prevent new commands from being missed.
This exposed a few issues:
1) The cmd option should only be valid when a command supports the local role since it is used to execute the local process. A number of commands were included before that did not have the local role.
2) cmd-ssh should be valid for any command that allows remotes. The annotate command was missing from this list.
3) compress-level-network should be valid for any command that allows remotes. The repo-rm command was missing from this list. M src/build/config/config.yaml
M src/build/config/parse.c
M src/config/parse.auto.c.inc
M test/src/module/build/configTest.c
Cleanup pg-host options for unsupported remote restore.
commit : 411c1d0a8730c30a04189b79237970d3aa5934c7
author : David Steele <david@pgbackrest.org>
date : Tue, 11 Nov 2025 09:09:15 +0200
committer: David Steele <david@pgbackrest.org>
date : Tue, 11 Nov 2025 09:09:15 +0200 Restoring to a remote pg-host is not supported but the options were a bit untidy. Many options were marked as internal but should be invalid. repo-host-type and repo-host are required to let restore know if a pg-host is configured and remain internal but the rest of the pg-host-* options are now invalid for restore.
The same applies to the archive-get and archive-push commands although these were less likely to cause confusion.
Also reverse the dependency of pg-host and pg-host-type, i.e. make pg-host-type depend on pg-host, and alter pg-host-cmd and pg-host-user to depend on pg-host-type=ssh. M src/build/config/config.yaml
M src/config/parse.auto.c.inc
Cleanup repo-host options for remote backup.
commit : 9be51f9bf370c4ff2a802dbd4fdafd09e2a05810
author : David Steele <david@pgbackrest.org>
date : Tue, 11 Nov 2025 08:52:36 +0200
committer: David Steele <david@pgbackrest.org>
date : Tue, 11 Nov 2025 08:52:36 +0200 931435c0 added the ability to backup to a remote repo but did not quite get the option updates right. It worked, but a number of options were marked as internal so would not be visible to the user in command-line help.
Also reverse the dependency of repo-host and repo-host-type, i.e. make repo-host-type depend on repo-host, and alter repo-host-cmd and repo-host-user to depend on repo-host-type=ssh. M src/build/config/config.yaml
M src/config/parse.auto.c.inc
M test/src/module/config/parseTest.c
Show internal state for commands/options in parse.auto.c.inc.
commit : 7a74fd3fb98b6862ebc71fd7dc55d9cb69a3c3b3
author : David Steele <david@pgbackrest.org>
date : Mon, 10 Nov 2025 20:05:42 +0200
committer: David Steele <david@pgbackrest.org>
date : Mon, 10 Nov 2025 20:05:42 +0200 Previously internal state was not included because it does not affect how commands/options are used -- only whether they are shown in help. However, this makes it hard to know when the internal state changes because help is generated at build time and in any case is just a binary blob.
Internal state is not stored in the config structures since the macros resolve to nothing but it is handy for debugging to see when internal state has changed. M src/build/config/render.c
M src/config/parse.auto.c.inc
M src/config/parse.c
M test/src/module/build/configTest.c
Remove overly verbose command role rules.
commit : 40381c2fe8415482aa2c874289247704e9d23886
author : David Steele <david@pgbackrest.org>
date : Mon, 10 Nov 2025 19:54:05 +0200
committer: David Steele <david@pgbackrest.org>
date : Mon, 10 Nov 2025 19:54:05 +0200 The default rules work for most commands so use them. Exceptions for the repo option remain. M src/build/config/config.yaml
Remove unused start/stop commands on repo options.
commit : 2f4765c6faaf5bed8887ccdc8e2bcac23a7ceb29
author : David Steele <david@pgbackrest.org>
date : Mon, 10 Nov 2025 19:34:48 +0200
committer: David Steele <david@pgbackrest.org>
date : Mon, 10 Nov 2025 19:34:48 +0200 The logic defined start/stop as being valid for no roles but it is simpler to just omit them. M src/build/config/config.yaml
Migrate document command/option description preprocessing to C.
commit : 91281b714414201d6a9ec90b0a9bc130bb40297f
author : David Steele <david@pgbackrest.org>
date : Mon, 10 Nov 2025 12:28:05 +0200
committer: David Steele <david@pgbackrest.org>
date : Mon, 10 Nov 2025 12:28:05 +0200 The Perl processing of config.yaml put hard limits on the format of that file. To allow flexibility in the file format remove all Perl processing on config.yaml.
This is just the beginning of migrating the preprocessor to C but even this small bit allows the removal of a lot of Perl code. M doc/doc.pl
D doc/lib/pgBackRestDoc/Common/DocConfig.pm
M doc/lib/pgBackRestDoc/Common/DocExecute.pm
M doc/lib/pgBackRestDoc/Common/DocRender.pm
D doc/lib/pgBackRestDoc/Custom/DocConfigData.pm
M doc/lib/pgBackRestDoc/Html/DocHtmlPage.pm
M doc/lib/pgBackRestDoc/Latex/DocLatexSection.pm
M doc/lib/pgBackRestDoc/Markdown/DocMarkdownRender.pm
M doc/manifest.xml
M doc/release.pl
M doc/src/command/build/build.c
A doc/src/command/build/pre.c
A doc/src/command/build/pre.h
M doc/src/command/build/reference.c
M doc/src/meson.build
M doc/xml/dtd/doc.dtd
M doc/xml/user-guide.xml
M src/build/common/xml.c
M src/build/common/xml.h
M test/define.yaml
M test/src/module/common/typeXmlTest.c
M test/src/module/doc/buildTest.c
Remove redundant command lists from src/build/config/config.yaml.
commit : 186ed610b59f1107d508c84e12da2ccdcdad89d3
author : David Steele <david@pgbackrest.org>
date : Sun, 9 Nov 2025 13:59:20 +0200
committer: David Steele <david@pgbackrest.org>
date : Sun, 9 Nov 2025 13:59:20 +0200 When not specified, the command list is generated based on all commands valid for the specified roles. M src/build/config/config.yaml
Use get_option() for tasks supported by the new meson version.
commit : ff64ad688e274b4d495fe9dde88cd8087e32f036
author : David Steele <david@pgbackrest.org>
date : Sat, 8 Nov 2025 15:43:12 +0200
committer: David Steele <david@pgbackrest.org>
date : Sat, 8 Nov 2025 15:43:12 +0200 55e9969 updated the meson version but only reverted one of the changes implemented in 0eccbc8 where the version was lowered to >= 0.45.
Use get_option() as allowed by the updated version for clearer and more robust build code. M meson.build
Remove support for PostgreSQL 9.5.
commit : 5171e8bde31b9711c9c5b4ccc5170b61c5235548
author : David Steele <david@pgbackrest.org>
date : Fri, 7 Nov 2025 10:01:50 +0200
committer: GitHub <noreply@github.com>
date : Fri, 7 Nov 2025 10:01:50 +0200 Per our policy to support five EOL versions of PostgreSQL, 9.5 is no longer supported by pgBackRest. Remove all logic associated with 9.5 and update the tests.
An effort was made to advance versions as much as possible in the tests while still providing coverage. Hopefully this will reduce churn when future versions expire, though it has created a bit more here.
Tests for 9.4/9.5 are left in the expire/info tests to demonstrate that these commands work with old versions present.M CONTRIBUTING.md
M doc/xml/contributing.xml
M doc/xml/release/2020s/2026/2.58.0.xml
M src/build/config/config.yaml
M src/build/postgres/postgres.yaml
M src/command/backup/backup.c
M src/config/load.c
M src/db/db.c
M src/db/db.h
M src/info/manifest.c
M src/postgres/interface/version.vendor.h
M src/postgres/version.auto.h
M src/postgres/version.h
M test/container.yaml
M test/lib/pgBackRestTest/Common/DbVersion.pm
M test/lib/pgBackRestTest/Common/JobTest.pm
M test/lib/pgBackRestTest/Common/VmTest.pm
M test/src/common/harnessBackup.c
M test/src/common/harnessPostgres.c
M test/src/common/harnessPostgres.h
D test/src/common/harnessPostgres/harness095.c
M test/src/common/harnessPq.h
M test/src/module/command/annotateTest.c
M test/src/module/command/archiveCommonTest.c
M test/src/module/command/archiveGetTest.c
M test/src/module/command/archivePushTest.c
M test/src/module/command/backupTest.c
M test/src/module/command/checkTest.c
M test/src/module/command/manifestTest.c
M test/src/module/command/restoreTest.c
M test/src/module/command/stanzaTest.c
M test/src/module/command/verifyTest.c
M test/src/module/config/loadTest.c
M test/src/module/db/dbTest.c
M test/src/module/info/infoArchiveTest.c
M test/src/module/info/infoBackupTest.c
M test/src/module/info/infoPgTest.c
M test/src/module/info/manifestTest.c
M test/src/module/integration/allTest.c
M test/src/module/postgres/interfaceTest.c
Fix incorrect pg_control struct used for PostgreSQL 9.5.
commit : 1f2b2778ab661155850c88f3d99aaaab617f1483
author : David Steele <david@pgbackrest.org>
date : Thu, 6 Nov 2025 10:21:23 +0200
committer: David Steele <david@pgbackrest.org>
date : Thu, 6 Nov 2025 10:21:23 +0200 The 9.6 pg_control struct was being used for 9.5. This was not detected by testing because the new field introduced for 9.6 fit into an alignment hole in the 9.5 struct so the size of the struct and offset of all other members did not change. Since the new member was not used there was no impact on functionality.
9.5 is being removed in the next release so the only reason to fix this is to make the diff for that change more sensible, and to document that this happened. M src/postgres/interface/version.vendor.h
Remove versioning from static types used by versioned PostgreSQL types.
commit : 1c976ded9156548e23c75bd33e6f67d56adb84cf
author : David Steele <david@pgbackrest.org>
date : Wed, 5 Nov 2025 23:18:29 +0200
committer: David Steele <david@pgbackrest.org>
date : Wed, 5 Nov 2025 23:18:29 +0200 Some of these types were versioned at one time. Others were not but it seemed better to version all of them for consistency. In fact this just creates churn when PostgreSQL versions are expired.
Also move the uint64 type to version.vendor.h since it is only used by versioned types. M src/postgres/interface/static.vendor.h
M src/postgres/interface/version.vendor.h
Remove unused BlockNumber type.
commit : 339f4ee72ab0fa2a46885575a197f0487014dfd3
author : David Steele <david@pgbackrest.org>
date : Wed, 5 Nov 2025 23:04:04 +0200
committer: David Steele <david@pgbackrest.org>
date : Wed, 5 Nov 2025 23:04:04 +0200 If this type was ever used it is not used now. M src/postgres/interface/static.vendor.h
Remove explicit versioning from macros using versioned PostgreSQL types.
commit : 8749601e6da1cc4d03bbfc9040bbb39c9f6ea580
author : David Steele <david@pgbackrest.org>
date : Wed, 5 Nov 2025 22:46:54 +0200
committer: David Steele <david@pgbackrest.org>
date : Wed, 5 Nov 2025 22:46:54 +0200 Some of these macros have required different implementations according to PostgreSQL version but none of them do now.
The idea of versioning them even when not required was that it would reduce churn but in fact churn is increased because PostgreSQL versions expire far more often than these macros need version specific implementations. M src/postgres/interface/version.intern.h
M test/src/common/harnessPostgres/harnessVersion.intern.h
Simplify macros in db/db unit test.
commit : 00621b6b7940e7d2cd38c266d282d92a64636b49
author : David Steele <david@pgbackrest.org>
date : Wed, 5 Nov 2025 21:46:40 +0200
committer: David Steele <david@pgbackrest.org>
date : Wed, 5 Nov 2025 21:46:40 +0200 Some of these tests were likely written before the higher-level macros existed. The rest were copied. M test/src/module/db/dbTest.c
Fix typo in bundling section of user guide.
commit : c5657eab23de7c926ae3ff8aeb9603e52369b7a0
author : David Steele <david@pgbackrest.org>
date : Wed, 5 Nov 2025 10:58:16 +0200
committer: David Steele <david@pgbackrest.org>
date : Wed, 5 Nov 2025 10:58:16 +0200 repo-bundle-limit controls the size of files included in bundles, not repo-bundle-size, which controls the total size of bundles. M doc/xml/user-guide.xml
Improve wording in performance tuning section of user guide.
commit : 5ef282fc22be6e5f38061a249e023ffafa85672d
author : David Steele <david@pgbackrest.org>
date : Wed, 5 Nov 2025 10:45:44 +0200
committer: David Steele <david@pgbackrest.org>
date : Wed, 5 Nov 2025 10:45:44 +0200 M doc/xml/user-guide.xml
Move release notes to decade directories.
commit : 6e9ea92e8a0534830f6b45a93073cced20daba63
author : David Steele <david@pgbackrest.org>
date : Tue, 21 Oct 2025 15:11:28 +0200
committer: David Steele <david@pgbackrest.org>
date : Tue, 21 Oct 2025 15:11:28 +0200 M doc/xml/release.xml
R100 doc/xml/release/2014/0.10.xml doc/xml/release/2010s/2014/0.10.xml
R100 doc/xml/release/2014/0.11.xml doc/xml/release/2010s/2014/0.11.xml
R100 doc/xml/release/2014/0.15.xml doc/xml/release/2010s/2014/0.15.xml
R100 doc/xml/release/2014/0.16.xml doc/xml/release/2010s/2014/0.16.xml
R100 doc/xml/release/2014/0.17.xml doc/xml/release/2010s/2014/0.17.xml
R100 doc/xml/release/2014/0.18.xml doc/xml/release/2010s/2014/0.18.xml
R100 doc/xml/release/2014/0.19.xml doc/xml/release/2010s/2014/0.19.xml
R100 doc/xml/release/2014/0.30.xml doc/xml/release/2010s/2014/0.30.xml
R100 doc/xml/release/2015/0.50.xml doc/xml/release/2010s/2015/0.50.xml
R100 doc/xml/release/2015/0.60.xml doc/xml/release/2010s/2015/0.60.xml
R100 doc/xml/release/2015/0.61.xml doc/xml/release/2010s/2015/0.61.xml
R100 doc/xml/release/2015/0.65.xml doc/xml/release/2010s/2015/0.65.xml
R100 doc/xml/release/2015/0.70.xml doc/xml/release/2010s/2015/0.70.xml
R100 doc/xml/release/2015/0.75.xml doc/xml/release/2010s/2015/0.75.xml
R100 doc/xml/release/2015/0.77.xml doc/xml/release/2010s/2015/0.77.xml
R100 doc/xml/release/2015/0.78.xml doc/xml/release/2010s/2015/0.78.xml
R100 doc/xml/release/2015/0.80.xml doc/xml/release/2010s/2015/0.80.xml
R100 doc/xml/release/2015/0.82.xml doc/xml/release/2010s/2015/0.82.xml
R100 doc/xml/release/2015/0.85.xml doc/xml/release/2010s/2015/0.85.xml
R100 doc/xml/release/2015/0.87.xml doc/xml/release/2010s/2015/0.87.xml
R100 doc/xml/release/2015/0.88.xml doc/xml/release/2010s/2015/0.88.xml
R100 doc/xml/release/2015/0.89.xml doc/xml/release/2010s/2015/0.89.xml
R100 doc/xml/release/2016/0.90.xml doc/xml/release/2010s/2016/0.90.xml
R100 doc/xml/release/2016/0.91.xml doc/xml/release/2010s/2016/0.91.xml
R100 doc/xml/release/2016/0.92.xml doc/xml/release/2010s/2016/0.92.xml
R100 doc/xml/release/2016/1.00.xml doc/xml/release/2010s/2016/1.00.xml
R100 doc/xml/release/2016/1.01.xml doc/xml/release/2010s/2016/1.01.xml
R100 doc/xml/release/2016/1.02.xml doc/xml/release/2010s/2016/1.02.xml
R100 doc/xml/release/2016/1.03.xml doc/xml/release/2010s/2016/1.03.xml
R100 doc/xml/release/2016/1.04.xml doc/xml/release/2010s/2016/1.04.xml
R100 doc/xml/release/2016/1.05.xml doc/xml/release/2010s/2016/1.05.xml
R100 doc/xml/release/2016/1.06.xml doc/xml/release/2010s/2016/1.06.xml
R100 doc/xml/release/2016/1.07.xml doc/xml/release/2010s/2016/1.07.xml
R100 doc/xml/release/2016/1.08.xml doc/xml/release/2010s/2016/1.08.xml
R100 doc/xml/release/2016/1.09.xml doc/xml/release/2010s/2016/1.09.xml
R100 doc/xml/release/2016/1.10.xml doc/xml/release/2010s/2016/1.10.xml
R100 doc/xml/release/2016/1.11.xml doc/xml/release/2010s/2016/1.11.xml
R100 doc/xml/release/2016/1.12.xml doc/xml/release/2010s/2016/1.12.xml
R100 doc/xml/release/2017/1.13.xml doc/xml/release/2010s/2017/1.13.xml
R100 doc/xml/release/2017/1.14.xml doc/xml/release/2010s/2017/1.14.xml
R100 doc/xml/release/2017/1.15.xml doc/xml/release/2010s/2017/1.15.xml
R100 doc/xml/release/2017/1.16.xml doc/xml/release/2010s/2017/1.16.xml
R100 doc/xml/release/2017/1.17.xml doc/xml/release/2010s/2017/1.17.xml
R100 doc/xml/release/2017/1.18.xml doc/xml/release/2010s/2017/1.18.xml
R100 doc/xml/release/2017/1.19.xml doc/xml/release/2010s/2017/1.19.xml
R100 doc/xml/release/2017/1.20.xml doc/xml/release/2010s/2017/1.20.xml
R100 doc/xml/release/2017/1.21.xml doc/xml/release/2010s/2017/1.21.xml
R100 doc/xml/release/2017/1.22.xml doc/xml/release/2010s/2017/1.22.xml
R100 doc/xml/release/2017/1.23.xml doc/xml/release/2010s/2017/1.23.xml
R100 doc/xml/release/2017/1.24.xml doc/xml/release/2010s/2017/1.24.xml
R100 doc/xml/release/2017/1.25.xml doc/xml/release/2010s/2017/1.25.xml
R100 doc/xml/release/2017/1.26.xml doc/xml/release/2010s/2017/1.26.xml
R100 doc/xml/release/2017/1.27.xml doc/xml/release/2010s/2017/1.27.xml
R100 doc/xml/release/2018/1.28.xml doc/xml/release/2010s/2018/1.28.xml
R100 doc/xml/release/2018/1.29.xml doc/xml/release/2010s/2018/1.29.xml
R100 doc/xml/release/2018/2.00.xml doc/xml/release/2010s/2018/2.00.xml
R100 doc/xml/release/2018/2.01.xml doc/xml/release/2010s/2018/2.01.xml
R100 doc/xml/release/2018/2.02.xml doc/xml/release/2010s/2018/2.02.xml
R100 doc/xml/release/2018/2.03.xml doc/xml/release/2010s/2018/2.03.xml
R100 doc/xml/release/2018/2.04.xml doc/xml/release/2010s/2018/2.04.xml
R100 doc/xml/release/2018/2.05.xml doc/xml/release/2010s/2018/2.05.xml
R100 doc/xml/release/2018/2.06.xml doc/xml/release/2010s/2018/2.06.xml
R100 doc/xml/release/2018/2.07.xml doc/xml/release/2010s/2018/2.07.xml
R100 doc/xml/release/2019/2.08.xml doc/xml/release/2010s/2019/2.08.xml
R100 doc/xml/release/2019/2.09.xml doc/xml/release/2010s/2019/2.09.xml
R100 doc/xml/release/2019/2.10.xml doc/xml/release/2010s/2019/2.10.xml
R100 doc/xml/release/2019/2.11.xml doc/xml/release/2010s/2019/2.11.xml
R100 doc/xml/release/2019/2.12.xml doc/xml/release/2010s/2019/2.12.xml
R100 doc/xml/release/2019/2.13.xml doc/xml/release/2010s/2019/2.13.xml
R100 doc/xml/release/2019/2.14.xml doc/xml/release/2010s/2019/2.14.xml
R100 doc/xml/release/2019/2.15.xml doc/xml/release/2010s/2019/2.15.xml
R100 doc/xml/release/2019/2.16.xml doc/xml/release/2010s/2019/2.16.xml
R100 doc/xml/release/2019/2.17.xml doc/xml/release/2010s/2019/2.17.xml
R100 doc/xml/release/2019/2.18.xml doc/xml/release/2010s/2019/2.18.xml
R100 doc/xml/release/2019/2.19.xml doc/xml/release/2010s/2019/2.19.xml
R100 doc/xml/release/2019/2.20.xml doc/xml/release/2010s/2019/2.20.xml
R100 doc/xml/release/2020/2.21.xml doc/xml/release/2020s/2020/2.21.xml
R100 doc/xml/release/2020/2.22.xml doc/xml/release/2020s/2020/2.22.xml
R100 doc/xml/release/2020/2.23.xml doc/xml/release/2020s/2020/2.23.xml
R100 doc/xml/release/2020/2.24.xml doc/xml/release/2020s/2020/2.24.xml
R100 doc/xml/release/2020/2.25.xml doc/xml/release/2020s/2020/2.25.xml
R100 doc/xml/release/2020/2.26.xml doc/xml/release/2020s/2020/2.26.xml
R100 doc/xml/release/2020/2.27.xml doc/xml/release/2020s/2020/2.27.xml
R100 doc/xml/release/2020/2.28.xml doc/xml/release/2020s/2020/2.28.xml
R100 doc/xml/release/2020/2.29.xml doc/xml/release/2020s/2020/2.29.xml
R100 doc/xml/release/2020/2.30.xml doc/xml/release/2020s/2020/2.30.xml
R100 doc/xml/release/2020/2.31.xml doc/xml/release/2020s/2020/2.31.xml
R100 doc/xml/release/2021/2.32.xml doc/xml/release/2020s/2021/2.32.xml
R100 doc/xml/release/2021/2.33.xml doc/xml/release/2020s/2021/2.33.xml
R100 doc/xml/release/2021/2.34.xml doc/xml/release/2020s/2021/2.34.xml
R100 doc/xml/release/2021/2.35.xml doc/xml/release/2020s/2021/2.35.xml
R100 doc/xml/release/2021/2.36.xml doc/xml/release/2020s/2021/2.36.xml
R100 doc/xml/release/2022/2.37.xml doc/xml/release/2020s/2022/2.37.xml
R100 doc/xml/release/2022/2.38.xml doc/xml/release/2020s/2022/2.38.xml
R100 doc/xml/release/2022/2.39.xml doc/xml/release/2020s/2022/2.39.xml
R100 doc/xml/release/2022/2.40.xml doc/xml/release/2020s/2022/2.40.xml
R100 doc/xml/release/2022/2.41.xml doc/xml/release/2020s/2022/2.41.xml
R100 doc/xml/release/2022/2.42.xml doc/xml/release/2020s/2022/2.42.xml
R100 doc/xml/release/2022/2.43.xml doc/xml/release/2020s/2022/2.43.xml
R100 doc/xml/release/2023/2.44.xml doc/xml/release/2020s/2023/2.44.xml
R100 doc/xml/release/2023/2.45.xml doc/xml/release/2020s/2023/2.45.xml
R100 doc/xml/release/2023/2.46.xml doc/xml/release/2020s/2023/2.46.xml
R100 doc/xml/release/2023/2.47.xml doc/xml/release/2020s/2023/2.47.xml
R100 doc/xml/release/2023/2.48.xml doc/xml/release/2020s/2023/2.48.xml
R100 doc/xml/release/2023/2.49.xml doc/xml/release/2020s/2023/2.49.xml
R100 doc/xml/release/2024/2.50.xml doc/xml/release/2020s/2024/2.50.xml
R100 doc/xml/release/2024/2.51.xml doc/xml/release/2020s/2024/2.51.xml
R100 doc/xml/release/2024/2.52.1.xml doc/xml/release/2020s/2024/2.52.1.xml
R100 doc/xml/release/2024/2.52.xml doc/xml/release/2020s/2024/2.52.xml
R100 doc/xml/release/2024/2.53.1.xml doc/xml/release/2020s/2024/2.53.1.xml
R100 doc/xml/release/2024/2.53.xml doc/xml/release/2020s/2024/2.53.xml
R100 doc/xml/release/2024/2.54.0.xml doc/xml/release/2020s/2024/2.54.0.xml
R100 doc/xml/release/2024/2.54.1.xml doc/xml/release/2020s/2024/2.54.1.xml
R100 doc/xml/release/2025/2.54.2.xml doc/xml/release/2020s/2025/2.54.2.xml
R100 doc/xml/release/2025/2.55.0.xml doc/xml/release/2020s/2025/2.55.0.xml
R100 doc/xml/release/2025/2.55.1.xml doc/xml/release/2020s/2025/2.55.1.xml
R100 doc/xml/release/2025/2.56.0.xml doc/xml/release/2020s/2025/2.56.0.xml
R100 doc/xml/release/2025/2.57.0.xml doc/xml/release/2020s/2025/2.57.0.xml
R100 doc/xml/release/2026/2.58.0.xml doc/xml/release/2020s/2026/2.58.0.xml
Begin v2.58.0 development.
commit : 713a7732326801ef3f852ad9fa2a3901e7e3f763
author : David Steele <david@pgbackrest.org>
date : Sat, 18 Oct 2025 11:18:32 +0200
committer: David Steele <david@pgbackrest.org>
date : Sat, 18 Oct 2025 11:18:32 +0200 M doc/resource/git-history.cache
M doc/xml/release.xml
A doc/xml/release/2026/2.58.0.xml
M meson.build
M src/version.h
M test/code-count/file-type.yaml