11---
22version : 6.0.0
33baseline : 4.20.1
4- date : 2025-04-08
4+ date : 2025-07-01
55draft : true
66heading_offset : 2
77---
88
99* RPM defaults to enforcing signature checking (#1573 )
1010* RPM uses the full key ID or fingerprint to identify OpenPGP keys everywhere (#2403 )
1111* Support for multiple OpenPGP signatures per package (#3385 )
12+ * Support for OpenPGP v6 and PQC keys and signatures (#3363 , work in progress)
1213* Support for updating previously imported keys (#2577 )
1314* Support for both RPM v4 and v6 packages
1415* Support for installing RPM v3 packages has been removed (#1107 )
15- * By default, RPM no longer verifies obsolete crypto (MD5, SHA1, DSA) (#1292 )
16- * Man page overhaul (work in progress as of 6.0 alpha)
16+ * Man page overhaul (work in progress)
1717* Pristine and verifiable release tarballs (#3565 ) (#2702 )
1818
1919### General Use
2020* Several enhancements to * rpmkeys* (8):
2121 * ` rpmkeys --import ` can now be used to update keys (#2577 ).
2222 This also updates the key handle from a short ambiguous key id to
2323 full fingerprint.
24+ * ` rpmkeys --import ` now also works from a pipe
2425 * ` rpmkeys --export ` added for exporting keys
2526 * ` rpmkeys --checksig ` , ` --list ` , ` --delete ` use and expect full
2627 fingerprint of the keys (#3360 )
2728 * ` rpmkeys ` works identically with all keystore backends
2829 * ` rpmkeys --rebuild ` can be used to rebuild the keystore contents and
2930 move between different keystore backends (#3347 )
31+ * ` rpmkeys ` key lookup is now case-insensitive
3032* Several enhancements to * rpmsign* (1):
3133 * ` rpmsign ` can use either GnuPG or Sequoia-sq for signing (controlled
3234 by ` %_openpgp_sign ` macro (` gpg ` or ` sq ` ))
@@ -36,24 +38,46 @@ heading_offset: 2
3638* New query tag extensions (e.g. with ` --qf <format> ` ):
3739 * ` rpmformat ` for determining package format version (3/4/6)
3840 * ` openpgp ` for managing all supported OpenPGP signature types
41+ * New query formatter ` :hashalgo ` for displaying hash algorithm names
3942* New ` --filemime ` query alias for querying per-file MIME info
4043* Consistent terminology and case usage in signature and key messages
4144 * OpenPGP signatures are called OpenPGP in output
4245 * RPM v3 header+payload signatures are called "legacy" in output
46+ * New feature to calculate a set of configurable digests on verification
47+ and safe them in the rpmdb. This can help identifying the originating
48+ package file. (RHEL-35619)
49+ * Fix scriptlet errors not reflected in transaction result code (#2581 )
50+ * Fix ` %triggerprein ` and ` %triggerun ` not failing the associated
51+ install/erase operation (#3815 )
4352* Man page overhaul (WIP):
4453 * Update all manual pages to a new consistent style (#3669 )
4554 * Add man pages for all major components and file formats (#3612 )
55+ * rpm-config(5)
56+ * rpm-payloadflags(5)
57+ * rpm-rpmrc(5)
58+ * rpm-macrofile(5)
59+ * rpm-lua(7)
60+ * rpm-macros(7)
61+ * rpm-queryformat(7)
4662 * Move end-user commands to section 1
4763 * Many previously undocumented things covered, many errors fixed
64+ * Versioned documentation on https://rpm.org/docs/
65+ * Man pages
66+ * Reference manual
67+ * API docs
4868
4969### Packaging
5070* * rpmbuild* (1) now supports generating two different package formats
5171 (controlled by ` %_rpmformat ` macro):
5272 * [ RPM v6] ( https://rpm-software-management.github.io/rpm/manual/format_v6.html )
5373 * All file sizes and related limits are 64bit
5474 * Crypto modernization
55- * MIME file info
75+ * Obsolete crypto (MD5 and SHA1) dropped
76+ * SHA3 header and payload digests added (#3797 , #3642 )
77+ * Per-file MIME info
5678 * Widely compatible with RPM >= 4.14
79+ * The "external" dependency generator mode no longer supported with
80+ v6 packages (#2373 )
5781 * [ RPM v4] ( https://rpm-software-management.github.io/rpm/manual/format_v4.html )
5882 * Bit-per-bit compatible with packages produced by RPM 4.x
5983* * rpmbuild* (1) can now automatically sign packages if ` %_openpgp_autosign_id `
@@ -65,6 +89,10 @@ heading_offset: 2
6589* Fix architecture checking accidentally moved after build (#3569 )
6690* Fix buildsys specific ` %prep ` section not accepted (#3635 )
6791* Fix ` check-rpaths ` brp script when both RPATH and RUNPATH exist (#3667 )
92+ * Fix a memory leak in ` rpmspec --shell `
93+ * Fix 4.20 regression on ` rpmbuild -rs ` failing on non-existent directory
94+ (#3682 )
95+ * Fix an extra newline printed on ` rpm --eval `
6896* ` brp-elfperms ` buildroot policy script was removed (#3195 )
6997
7098### API Changes
@@ -84,20 +112,30 @@ heading_offset: 2
84112 * ` rpmtxnRebuildKeystore() ` for rebuilding transaction keystore
85113* New flags to control ` rpmSign() ` operation added:
86114 ` RPMSIGN_FLAG_RESIGN ` , ` RPMSIGN_FLAG_RPMV4 ` , ` RPMSIGN_FLAG_RPMV6 `
115+ * New functions for controlling per-package verification level:
116+ * ` rpmteVfyLevel() ` and ` rpmteSetVfyLevel() `
117+ * ` te.VfyLevel() ` and ` te.SetVfyLevel() ` in the Python bindings
87118* New identifiers related to multiple signature support added:
88119 * ` RPMTAG_OPENPGP ` rpm tag
89120 * ` RPMSIGTAG_OPENPGP ` signature header tag (alias to ` RPMTAG_OPENPGP ` )
90121 * ` RPMVSF_NOOPENPGP ` verification flag
91122* New rpm tags:
92123 ` RPMTAG_PAYLOADSIZE ` , ` RPMTAG_PAYLOADSIZEALT ` , ` RPMTAG_RPMFORMAT ` ,
93- ` RPMTAG_FILEMIMEINDEX ` , ` RPMTAG_MIMEDICT ` , ` RPMTAG_FILEMIMES `
124+ ` RPMTAG_FILEMIMEINDEX ` , ` RPMTAG_MIMEDICT ` , ` RPMTAG_FILEMIMES ` ,
125+ ` RPMTAG_SOURCENEVR ` , ` RPMTAG_PAYLOADSHA3_256 ` , ` RPMTAG_PAYLOADSHA3_256ALT ` ,
126+ ` RPMTAG_SHA3_256HEADER `
127+ * Renamed rpm tags:
128+ * ` RPMTAG_PAYLOADDIGEST ` to ` RPMTAG_PAYLOADSHA256 `
129+ * ` RPMTAG_PAYLOADDIGESTALT ` to ` RPMTAG_PAYLOADSHA256ALT `
130+ * ` RPMTAG_PAYLOADDIGESTALGO ` to ` RPMTAG_PAYLOADSHA256ALGO ` (obsolete)
94131* New identifiers related to SHA-3 added:
95132 ` RPM_HASH_SHA3_256 ` , ` RPM_HASH_SHA3_512 `
96133* New symbols related to MIME types in v6 packages:
97134 * ` rpmfilesFMime() ` , ` rpmfiFMime() ` for retrieving per-file MIME info
98135 * ` RPMFI_NOFILEMIME ` flag to control behavior
99136* New OpenPGP identifiers related to RFC-9580 added
100137* ` rpmtsAddInstallElement() ` returns ` 3 ` on unsupported package format
138+ * ` fdSize() ` returns an error on non-regular files
101139
102140### Internal Improvements
103141* RPM is now built as C++20 code (except for plugins and Python bindings)
@@ -110,18 +148,34 @@ heading_offset: 2
110148* New ` openpgp.cert.d ` based keystore (experimental) (#3341 )
111149* New ` make site ` build target for easy local rendering of documentation
112150* Make reference counting atomic throughout the codebase
151+ * Support underscores in RPMTAG names
113152* Fix keystore reads lacking transaction lock
114153* Fix a race condition in ` rpmioMkpath() ` (#3508 )
115154* Fix recursion depth for macro error message (#3197 )
116155* Fix empty password field in passwd/group causing entry to be ignored (#3594 )
117156* Fix built-in macros not usable before loading macro files (#3638 )
157+ * Fix fdSize() failure handling in rpmSign()
158+ * Fix pseudo-tags without an associated type showing up in --querytags
159+ * Fix rpm install prefix not honored in the legacy ` find-provides ` and
160+ ` find-requires ` dependency generator scripts
161+ * Fix Python reference leaks related to archive handling
162+ * Fix non-deterministic storage of dependency information in packages (#1056 )
163+ * Fix ` sysusers ` script escaping chroot for ` u! ` entires
164+ * Fix rpm 4.19 regression on failed update return code (#3718 )
118165* Drop ` gpg(keyid) ` provides from gpg-pubkey headers (#3360 )
119166* Eliminate various internal symbols accidentally leaking to the ABI
167+ * Eliminate uses of non-portable signal(2) API (#3688 )
120168* Optimize ` rpmlog() ` locking
169+ * Python bindings:
170+ * Support Python module isolation (RhBug:2327289)
171+ (https://bugzilla.redhat.com/show_bug.cgi?id=2327289 )
172+ * Fix some resource leaks, run tests with ASAN
121173
122174### Building RPM
123175* A C++20 compiler is now required in addition to a C99 compiler, but
124176 C++20 modules support is not required.
177+ * rpm-sequoia >= 1.8.0 is now required for building with Sequoia (default)
178+ * Python >= 3.10 is now required for building the Python bindings
125179* [ scdoc] ( https://git.sr.ht/~sircmpwn/scdoc ) man page generator is now
126180 required for building RPM
127181* Pre-built API documentation is no longer shipped in the release tarballs.
@@ -144,6 +198,8 @@ heading_offset: 2
144198 * Can be queried with RPM >= 4.6
145199 * Can be unpacked with RPM >= 4.12
146200 * Can be verified and installed with RPM >= 4.14 (with caveats/limitations)
201+ * RPM defaults to building v6 packages, this can be changed with the
202+ ` %_rpmformat ` macro.
147203* Lua ` posix.fork() ` family of calls, deprecated in 4.20, is disabled in
148204 packages built with RPM >= 6.0. They continue to function in packages
149205 built by RPM <= 4.20 however.
@@ -160,4 +216,4 @@ heading_offset: 2
160216* ` %_passwd_path ` and ` %_group_path ` are now treated as colon separated
161217 paths to allow using multiple files as the source of NSS information
162218 (e.g. with nss-altfiles)
163- * ` --pkgid ` and ` --hdrid ` query sources CLI-switches have been dropped (#2633 )
219+ * ` --pkgid ` and ` --hdrid ` query CLI-switches have been dropped (#2633 )
0 commit comments