Upgrade to release 1.656:
- Prevent dbi_profile crash (CVE-2026-108518) (Henrik Teichmann)
- Fix lock file not removed when DBD::DBM check for bad serializer
class fails. (CVE-2026-111879)
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 2.20:
- Added a plug-in type for profile header parsing.
- Fixed premultiplied alpha on planar 16 bit and optimized
matrix-shaper transforms.
- Fixed planar half float and Lab double formatters, and planar
strides in fast_float.
- Fixed gamut checking with two profiles and a possible crash with
malformed profiles.
- Recovered neutrality correction in black point detection.
- Made cmsCreateLab2Profile white point handling consistent with
cmsCreateLab4Profile.
- Fixed UTF8 buffer size calculation.
- CGATS parser is now more permissive on certain properties.
- Fixed callback type mismatch in resampled CLUT evaluation.
- Fixed a crash in PostScript CSA generation.
- Fixed memory leaks in black preserving intents and .cube loading.
- cmsChangeBuffersFormat now correctly rejects format changes on
floating point transforms.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 3.2.3:
- configure.ac: add 0800-openssl-4.patch from Brent Kirby
- util/ipmiutil.c: set ver 3.23
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 2.8.146:
- Update compile-time configuration option `WITH_SELF_PIPE` to use
`poll()` when available.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 16.1.0:
Added
- Graph attribute svgid sets the id property of the <svg> of a
graph.
Fixed
- An sfdp crash has been fixed. This was a regression in Graphviz
15.1.1.
- Graphs that induce invalid trapezoids during ortho routing no
longer cause Graphviz crashes on non-Windows platforms. These
scenarios now exit with failure gracefully.
- edgepaint no longer crashes when passed the illegal option -s.
- cluster no longer crashes when passed single character
command-line options without arguments (e.g. cluster -C).
- cluster of trivial graphs with no nodes no longer crashes.
- cluster on large chains of nodes no longer references
out-of-bounds memory. This was a regression in Graphviz 7.1.0.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 1.8.0:
- Repeated reads
--read-repeated[=<count>] [<file>]: Read the flash chip multiple
times (default: 3, minimum: 3) and use majority voting to detect
unstable connections. Deduplicates read results to minimise memory
usage. If a file is given and a strict majority is found, saves the
majority content to it. Useful for diagnosing flaky SPI wiring or
unreliable programmers.
- Bugs fixed
Internal programmer no longer exits when ECAM is unavailable On
Intel PCH100+ systems the flash enable code opens a second libpci
accessor with PCI_ACCESS_ECAM. Mapping the ECAM region requires
access to a physical range the kernel commonly reserves for a
driver (PNP0C02), which CONFIG_IO_STRICT_DEVMEM denies. libpci
reports this through its error handler, which by contract does not
return and by default terminates the process, so flashrom died
with:
pcilib: Cannot map ecam region: Operation not permitted. before
probing anything, with no command line option to work around it.
Every kernel built with CONFIG_IO_STRICT_DEVMEM=y was affected,
which is the default in most distributions.
An ECAM initialisation failure is now caught and the 0xcf8/0xcfc
port I/O access is used instead. ECAM is still tried first, so
machines that need it keep using it.
Remove 0003-cli_classic-Initialize-time_start-time_end.patch
because the patch has been merged in the upstream.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 3.13.1:
- Improve behaviour of --scale-down in tiling window managers.
Newly loaded images should now no longer flicker.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 1.0.145:
- Use SHA512 if listed in Release file
- work_out_debs: On hurd-any, add seedfiles to fulfill passwd's
dependency on systemd-tmpfiles
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 0.13.1:
Enhancements:
- bwrap now accepts multiple --sync-fd arguments and will handle
all of the fds.
Bug fixes:
- O_PATH is used when opening parent directories in the new root,
fixing an error when read permission is missing.
License-Update: Change from LGPL-2.0-or-later to LGPL-2.1-or-later
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 3.14.0:
General Notes
- Botan4 is expected to be released in May 2027. This new major
release will remove significant deprecated functionality. Please
consult the deprecation notes in doc/deprecated.rst and if your
usage would be impacted by any such deprecations, please comment
in GH #4666
- Add a warning to the documentation regarding recent research on
the security of Classic McEliece. Following the current
recommendations of BSI, Classic McEliece should only be used in a
hybrid scheme. (GH #5993)
- The API documentation now consistently warns about algorithms and
operations with known side channel issues. (GH #6007)
New APIs and Features
- Add types PK_Signature_Options PK_Encryption_Options,
PK_KEM_Options, and PK_Key_Agreement_Options which allow an
application to precisely control how public key operations
(signature, encryption, decryption, KEM, etc) are performed. (GH
#5489#5864)
- Add an implementation of HPKE from RFC 9180 (GH #5989)
- Add an implementation of the BLS12-381 pairing friendly curve,
including the groups G1, G2, and Gt and the pairing operation.
(GH #5718)
- Add Work_Executor, which allows an application to replace the
library's internal thread pool with its own executor. (GH #5990)
- ML-DSA signatures now support the application context string of
FIPS 204, passed via PK_Signature_Options::with_context. (GH
#5531)
- Add an experimental C API for TLS in the new ffi_tls module,
currently covering policies, credentials, and session managers.
Experimental modules are not built by default and not covered by
SemVer. (GH #2492#5941#5963)
- Introduce a new design for entropy sources. (GH #5928#5945)
- Add EC_Group::register_custom_group, which makes explicit the
registration behavior previously only available as a side effect
of the EC_Group constructor taking the curve parameters. (GH
#5922)
- Add group functions returning the associated EC_Group to
EC_Scalar and EC_AffinePoint. (GH #5948)
- Add TLS::Callbacks::tls_register_deferred_operation, which gives
the library explicit control over DTLS retransmission timers, as
an alternative to polling Channel::timeout_check. Use of
timeout_check is deprecated. (GH #5915#6096)
- In TLS 1.3 send KeyUpdate requests when the number of records
sent or received approaches a policy-set limit. (GH #5877)
- Add TelephoneNumber and TelephoneNumberRange types modeling the
telephone numbers and number ranges used in RFC 8226 STIR
certificates. (GH #5979)
- Add PKCS12::mac_protected which indicates if the PKCS #12 file
was protected using a MAC. (GH #5902)
- Jitter_RNG now accepts the compliance mode and the oversampling
rate which should be used by the jitterentropy library. AIS 20/31
NTG.1 compliance can be requested with Jitter_RNG::Mode::NTG1 if
jitterentropy 3.7.0 or later is used. Note that Jitter_RNG no
longer forces the FIPS mode of jitterentropy by default; use
Jitter_RNG::Mode::FIPS to retain the previous behavior. (GH
#5832)
- FFI handles can now share ownership of the underlying object. The
RNG passed to botan_tpm2_ctx_enable_crypto_backend is now
retained for the lifetime of the TPM2 context, rather than being
borrowed. Add botan_is_shared and botan_use_count to query the
ownership of a handle. (GH #5959#6038#6048#6052)
- Add FFI functions botan_ec_scalar_get_group,
botan_ec_point_get_group, and botan_ec_point_to_mp_xy. (GH #6080)
- Add FFI functions botan_x509_crl_view_issuer_dn and
botan_x509_crl_view_issuer_dn_count for accessing the issuer DN
of a CRL. (GH #6077)
- Processor_RNG now supports the ARMv8.5-A FEAT_RNG extension (the
RNDR instruction) on aarch64. (GH #5228#6084)
Security and Hardening
- CVE-2026-118770 Fix a use after free in the TLS asio integration
which depending on application usage patterns may allow leaking
heap memory to the peer.
- CVE-2026-118771 Fix a bug in TLS 1.3 which could allow an
unauthenticated peer to pin unlimited amounts of memory in the
handshake by sending many dummy ChangeCipherSpec messages.
- Fix a bug in DTLS which allowed a peer to skip the cookie
exchange even if the policy required it.
- Address various DTLS handshake desync bugs (GH #5783)
- Fix a number of minor TLS conformance bugs and validate peer
input with respect to some RFC requirements which were previously
ignored. (GH #6061)
- During X.509 path validation, signatures are now verified
starting from the trust anchor down to the leaf, stopping at the
first invalid signature. (GH #5982)
- CRL signatures are now checked against the trusted hashes policy,
as already done for certificate signatures. (GH #5981)
- Ed25519, Ed448, X25519, and X448 public keys are now fully
validated on deserialization, rejecting points of low order. (GH
#5594)
- Harden EC, RSA, DL, and Ed25519 private key loading, rejecting
various invalid encodings and parameters. (GH #5994#5995#5996#5997#6009#6041)
- All paths which decode or construct an EC_Group now verify the
complete set of group parameters, including generator validity,
the Hasse bound, and the curve discriminant. Anomalous curves
(where the order equals the field prime) are now rejected, and
the deprecated EC_Group constructor rejects cofactors of zero or
greater than 16. (GH #5921)
- ECIES now verifies that the peer's public point is encoded using
the point format specified in the ECIES parameters. Also,
EC_AffinePoint::deserialize now rejects hybrid encoded points of
the wrong length. (GH #5913#5920)
- Rework how stateful RNGs decide that they are seeded. Previously
a call of randomize_with_input with an empty output and a
non-empty input of sufficient length was treated as sufficient
for seeding. Now only an explicit call of initialize_with or
add_entropy is treated as a possible seeding event. (GH #5928#5945)
- The TLS server now validates that the host name received in the
SNI extension is a syntactically valid DNS name. The name passed
to the Credentials_Manager and other callbacks is now the
canonical (lowercased) form. (GH #5937)
- Fix various bugs in decoding the RFC 3779 IP address and AS
identifier extensions. Add interop between IPAddressBlocks and
the IPv4/IPv6 name types. (GH #5957#5978)
- Fix lenient decoding of the RFC 8226 TNAuthList extension, and
add support for encoding it. (GH #5977)
- Replace the algorithm name parser with a stricter and faster one.
Previously, invalid or trailing parameters were sometimes
silently ignored, for example HMAC(SHA-512,Foo) was accepted. (GH
#5956)
- Fix several bugs and missing validations in the HTTP client.
Control characters in headers are now rejected, RequestLimits now
caps the response body at 8 MiB by default, and timeouts are
tracked using a monotonic clock with the budget carried across
redirects. (GH #5980)
- SPAKE2+ now rejects a ProverSecret with w0 or w1 equal to zero,
and the context moves to a failed state if any peer message fails
to decode, rather than allowing further attempts. (GH #5976)
- Avoid an information leak during RSA key generation, where the
number of candidate primes rejected after sieving leaked some
bits of the final prime. (GH #6068)
- The Lucas primality test is now constant time; previously the
search for the parameter D leaked information about the prime
being tested. (GH #6067)
- Fix various minor side channels, including a value dependent
branch when storing BigInt words, a value dependent loop in
modular multiplication, variable length blinding of RSA
exponents, and a branch when negating Ed25519 field elements.
Many more secrets are now marked for the valgrind based constant
time checks. (GH #6069#6071)
- Improve validation of ML-KEM, ML-DSA, FrodoKEM, Classic McEliece,
McEliece, and XMSS keys. Invalid keys now consistently throw
Decoding_Error, and various cheap consistency checks are
performed during deserialization. (GH #6083)
- Fix two bugs in TLS session resumption. A server now verifies
that a resumed session satisfies the current policy, including
client certificate authentication requirements and (in TLS 1.2)
the ciphersuite requirements, rather than accepting any
previously established session. Additionally a session manager
shared between a client and a server role no longer allows a
session established in one role to be resumed in the other. (GH
#5797#5837)
- TLS now limits the number of consecutive useless records (empty
records, warning alerts, and TLS 1.3 compatibility mode
ChangeCipherSpec) accepted from the peer, closing the connection
if the limit is exceeded. The default limit of 32 can be changed
using TLS::Policy::max_useless_records. (GH #6051)
- AutoSeeded_RNG now mixes a high resolution timestamp along with
output from the system RNG into each request, to help recover
from a VM rollback or process duplication which the kernel RNG
did not detect. (GH #6054)
- The stateful key index registry used by XMSS and HSS-LMS now
detects a fork using the fork generation counter rather than only
the process ID, and Stateful_RNG now detects a fork which occurs
before it is first seeded. (GH #6058)
- The baseline SM4 implementation (used if there is no suitable AES
or SIMD hardware) is now constant time. (GH #6090)
Behavior Changes
- TLS now enforces that certificates contain the digitalSignature
bit (or, for TLS 1.2 RSA key exchange, keyEncipherment).
Previously nonRepudiation or dataEncipherment key usages were
also accepted. (GH #6061)
- If the TLS policy requires client authentication then PSK
ciphersuites will no longer be accepted, since PSK plus client
auth is not supported in the handshake. (GH #6061)
- Update the ML-DSA private key encoding in PKCS #8 containers to
conform to RFC 9881. All three encodings of the RFC (seed,
expanded key, both) are supported. The old formats can still be
decoded. (GH #5002#5307)
- Update the ML-KEM private key encoding in PKCS #8 containers to
conform to RFC 9935. The old formats can still be decoded. (GH
#5934)
- By default, ECDSA signatures are now randomized rather than
deterministic even when RFC 6979 support is available at build
time. Deterministic signatures can be requested using the API
PK_Signature_Options::with_deterministic_signature or by
appending ",Deterministic" to the normal hash specifier string.
(GH #5489)
- AutoSeeded_RNG now uses HMAC_DRBG with SHA-256 rather than
SHA-512 when hardware support for SHA-256 is available. (GH
#6003)
- Rework ChaCha_RNG: it now uses HMAC(SHA-512) instead of
HMAC(SHA-256) and also derives the ChaCha nonce from the key
material. Optional fast key erasure can be enabled with
ChaCha_RNG::KeyErasure::WithKeyErasure to gain backtracking
resistance. As a result the output of ChaCha_RNG for a given seed
has changed; it was never guaranteed to be stable across versions
and may change again in the future. (GH #5121)
- Password hash tuning (PasswordHashFamily::tune_params) now
measures the CPU time of the calling thread where available
(falling back to a monotonic clock), and uses the fastest of
several samples rather than the mean. This makes the result much
less sensitive to concurrent load and clock adjustments. (GH
#5898)
- During X.509 path validation the self-signature of the trust
anchor is no longer verified; the anchor is trusted because the
application provided it. For a typical chain this removes about a
third of the cost of path validation. (GH #6008)
- DSA now rejects parameters where p is smaller than 512 bits or
larger than 3072 bits, or where q is larger than 256 bits.
Previously only a minimum of 160 bits for q was enforced. (GH
#6039)
- The ASN.1 pretty printer now formats integers of fewer than 32
bits in decimal; previously the limit was 16 bits. (GH #6025)
Optimizations
- Add support for parallel hash function invocations, including
AVX2/AVX512 implementations of SHA-256, SHA-512, and SHAKE (GH
#5493#5865#5867#5869#5871#5872#5873)
- Optimize SLH-DSA, XMSS, HSS-LSM, FrodoKEM, and ML-KEM using
parallel hash function execution. (GH #5866#5868#5870#5876#5878)
- Refactor and optimize Ed25519 (GH #5893)
- Refactor and optimize X25519, especially improving key generation
(GH #6010)
- Elliptic curve optimizations, especially improving P-256 and SM2.
(GH #6012#6013#6020#6021#6024#6031#6059)
- Add AVX-512+IFMA modular exponentiation support, improving RSA
and FFDHE by 3-4x (GH #6026)
- Add a fused Montgomery multiplication using BMI2/ADX, improving
modular exponentiation on x86-64 processors without IFMA by about
30%, and optimize the corresponding Montgomery squaring. (GH
#6044#6053)
- Add AVX2 codepath for ML-KEM (GH #5964#6032#6033)
- Enable many SIMD optimizations on POWER systems (GH #6027#6028)
- Improve the performance of one-shot RSA private key operations
(GH #6004)
- Optimize multiprecision integer division operations, and convert
all such divisions to be constant time with respect to their
inputs. (GH #5849#5880#5883#5884)
- Optimize primality testing by performing trial division by small
primes before running Miller-Rabin, rewriting the Lucas test to
use Montgomery form, using faster variable time variants when
testing public parameters, and running the Miller-Rabin and Lucas
tests in the thread pool when it is available. (GH #5886#6040)
- Improve the performance of X.509 certificate parsing, including
PEM decoding, OID decoding, and extension handling. (GH #5888#5889#5890#5891)
- Avoid quadratic behavior when decoding an X.509 distinguished
name with many attributes. (GH #6063)
- Add a certificate cache to the macOS system certificate store,
implement contains() directly, and query the keychain by issuer
DN and serial number instead of scanning all certificates of an
issuer. (GH #5541#5929)
- Resolve a performance regression in TLS 1.3 record processing
introduced in 3.13.0, and avoid several copies and allocations on
the send side. (GH #6002#6046)
- Reduce memory allocations during TLS 1.2 record processing. (GH
#5887)
- Use the AES instructions to compute the key schedule on x86,
ARMv8, and POWER8, making AES::set_key substantially faster,
especially on ARMv8 and POWER8 which previously used the
bitsliced software key schedule. (GH #6078#6081)
- Modify the bitsliced AES implementation to use the native word
size of the processor, instead of always 32 bits. (GH #5826)
- The AVX-512/GFNI Twofish implementation is now used for all
blocks, including any tail of fewer than 16 blocks, so the table
based implementation is never used on processors which support
these extensions. (GH #5975)
- Optimize the Whirlpool compression function on x86-64 and
aarch64. (GH #5857#5892)
- Add an AVX-512 implementation of base64 encoding and decoding (GH
#5999)
- Optimize base58 encoding and decoding (GH #5858)
- Enable support for NEON/ARMv8 codepaths on Windows aarch64 (GH
#5863)
Bug Fixes
- Fix a bug where a TLS 1.2 client configured with multiple
certificate chains selected among them arbitrarily, without
considering the server's signature_algorithms extension. (GH
#5932)
- Fix the in-memory TLS session manager, which ordered stored
sessions by session ID rather than by recency, so the wrong
session could be evicted or returned. (GH #5847)
- Fix a bug introduced in 3.13.0 where, in builds without the
system RNG, RandomNumberGenerator::randomize_with_ts_input passed
only the low 32 bits of the timestamp, and never the process id,
as additional input. (GH #5924#5926)
- Fix various bugs in RNGs and entropy sources, including some edge
cases involving fork safety. (GH #5987)
- Fix several bugs in the PKCS #11 wrapper, including typed key
searches matching keys of the wrong type, EC public keys always
being encoded in compressed form, ECDH accepting peer points with
a small order component, and Object::destroy leaving a stale
handle. (GH #5983)
- Fix a race in the FFI layer where the thread-local storage for
the last exception message could be accessed after its
destruction during process shutdown. (GH #5859)
- Fix libsodium compatibility issues in the sodium compat layer (GH
#5966)
- Fix various edge cases in the sqlite3 database wrapper. (GH
#5972)
- TOTP::verify_totp now takes an optional forward_drift_accepted
parameter to accept codes from a client whose clock is ahead of
the server's, as allowed by RFC 6238. The existing
clock_drift_accepted parameter is unchanged and still only
applies backwards. (GH #6035#6070)
- Fix several corner case bugs in CPU feature detection. (GH #6036)
- Fix the move operators of Dynamically_Loaded_Library, which
previously caused the library to be closed twice. (GH #5967)
- Fix various bugs in the TLS ASIO stream. Cancellation slots are
now forwarded to the next layer so that timeouts reach pending
operations, synchronous operations are refused while an
asynchronous write is in flight, operations attempted before the
handshake no longer cause all later handshakes to fail, and move
assignment of Stream now compiles. (GH #6060)
- Fix various bugs and edge cases in the stateful hash signature
schemes XMSS and HSS-LMS (GH #6066)
Deprecations and Cleanups
- Deprecate the public header pem.h; it will become internal in
Botan4. (GH #5891)
- Deprecate the modules filters, comb4p, passhash9, emsa_x931, ofb,
rc4, certstor_sql, and certstor_sqlite3. Additionally SRP6, the
X9.42 PRF, and the TLS OCB ciphersuites are now documented as
deprecated. (GH #5971)
- Remove many unused header includes, including from public
headers. Applications which relied on transitive includes may
need to add explicit includes. (GH #5897)
Command Line Utility
- Add a create_cert_for_key command, which issues a certificate
directly for a public key without requiring a PKCS #10 request.
This allows creating certificates for KEM keys such as ML-KEM.
(GH #5529)
- Add a --one-shot flag to the speed command which causes the
public key benchmarks to create a new operation object
(PK_Signer, PK_Verifier, ...) for each measured operation, rather
than creating one and reusing it. (GH #5951)
- Remove the sandboxing support (sandbox_init, pledge, Capsicum)
from the command line tool. Recent versions of macOS kill any
process which calls sandbox_init, and the other implementations
were dead or untested code. (GH #5940#5942)
- Fix many bugs in the command line tool. Commands now consistently
report failures through the exit status, integer and option
arguments are strictly validated, I/O errors are consistently
detected, and passing the same file as input and --output no
longer truncates the input. (GH #6037)
Python Binding
- The Python binding now can adapt itself to any version of Botan3.
(GH #5851)
- Add X509Cert.binary_values/string_values and the equivalents on
X509CRL. (GH #5984)
- Fix a number of bugs in the Python binding (GH #5969#6064)
Build and Infrastructure
- Add support for precompiled headers with GCC and Clang, enabled
using --enable-pch. (GH #5298)
- SIMD support on POWER now requires POWER8 (VSX). (GH #6029)
- Add --disable-lsx and --disable-lasx options for LoongArch. (GH
#5108)
- Various build fixes, including for MinGW with libc++ 20 or later,
the import library output directory with GCC on MinGW, and Clang
on Aarch64. (GH #5850#5854#5875#5901#5953#5954)
- The aes_ni, aes_armv8, and aes_power8 modules have been merged
into a single aes_hwaes module. Build configurations which
referenced the old module names must be updated. (GH #6081)
- Fix the CMake package configuration on MinGW, which did not set
IMPORTED_IMPLIB for the imported target. (GH #6057)
- CI updates including moving most builds to Ubuntu 26.04, adding
Windows Aarch64 builders, dropping the 32-bit MIPS cross build,
updating dependencies used in CI, and improving resilience to
slow package mirrors. (GH #5768#5846#5848#5860#5861#6065)
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 1.38.2:
- Added a `"scheduler"` / `"assume_continuation"` configuration
parameter. When `true`, the scheduler assumes that all posted
handlers are a continuation of the currently executing handler,
allowing them to be added to a fast thread-local queue. This can
improve performance for applications that exclusively use
short-running handlers.
- Added a `"reactor"` / `"io_uring_ring_count"` configuration
parameter. This sets the number of independent io_uring
instances ("rings") that a single execution context maintains
internally. Increasing this parameter from its default of 1 may
improve scalability when the execution context is used with
multiple threads.
- Added a `"reactor"` / `"io_uring_ring_size"` configuration
parameter, which is used to specify the number of entries in each
io_uring instance.
- Added a `"reactor"` / `"io_uring_submit_batch_size"`
configuration parameter. This sets the number of pending
io_uring submission queue entries at which they are submitted
immediately, rather than deferred.
- Added a `"reactor"` / `"io_uring_iowait"` configuration
parameter, which may be used to determine whether the thread is
marked as being in iowait while io_uring operations are pending.
- Added the ability to configure `ssl::stream<>`'s internal buffer
sizes.
- Added `asio/fwd.hpp`, as a way to safely forward declare some
Asio class names, even when `ASIO_ENABLE_VERSION_NAMESPACE` or
`ASIO_VERSION_NAMESPACE` are defined.
- Added an example for using `cancel_after` with coroutines.
- Changed all exception classes to use inline implementations, to
fix an undefined symbol error on some platforms when using
separate compilation.
- Changed constants and CPOs to use external linkage for C++17 and
later.
- Changed "slim" mutexes to use futexes on Linux.
- Changed the reactor send/receive path to use `MSG_DONTWAIT`, if
supported, rather than setting the socket to be non-blocking.
- Added a missing optimisation for `concurrency_hint == 1` in the
`io_context` class's `poll_one()` function.
- Added support for `co_composed` under `ASIO_NO_EXCEPTIONS`.
- Fixed a `co_composed` crash on MSVC that occurs when using
multiple completion signatures.
- Fixed a `co_composed` crash on MSVC by ensuring 16-byte block
alignment in its internal coroutine representation.
- Fixed the return type on one `cancel_after` overload.
- Fixed integer truncation in `basic_streambuf::commit`/`consume`
for sizes greater than or equal to `INT_MAX`.
- Fixed a buffer invalidation error triggered when SSL streams are
moved, and clarified the buffer invalidation semantics in the
documentation.
- Fixed a compilation error, seen with some compilers such as
[^nvc++], that occurs when using `post`, `dispatch` or `defer`
(or an asynchronous operation built on them) with a completion
handler.
- Fixed `parallel_group` handling of non-terminal cancellation
requests.
- Fixed thread sanitizer warnings due to atomic thread fences, and
added thread sanitizer instrumentation to the io_uring backend.
- Fixed a signed/unsigned warning in `basic_resolver_results`.
- Fixed `experimental::channel` compilation with older versions of
MSVC.
- Fixed the `multicast::enable_loopback` socket option size on
NetBSD and OpenBSD.
- Suppressed case fall-through warnings in the SSL implementation.
- Fixed standard library coroutine detection when using
[^clang-cl].
- Improved cross-referencing within the documentation.
License-Update: Update copyright years to 2003-2026
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
get_new_ids() keeps the ids it saw in earlier calls, including those of
objects freed since. When the list created by test_at_addrs reuses one
of those addresses it is not reported as new and the test fails, which
was seen on musl qemux86-64:
{'python3-objgraph': ['tests.py:AtAddrsTest.test_at_addrs']}
Refresh the baseline right before creating the list.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The client unit tests mock socket.socket but not socket.getaddrinfo(), so
every test resolves example.com. Without working DNS in the image (e.g.
yoe-musl-sysvinit qemux86-64) all of tests/test_client.py fails.
Backport the upstream fix that uses localhost instead.
AI-Generated: Uses Claude Code
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
libyuv's CMakeLists.txt hardcodes the install destinations to bin, lib
and include, so on multilib (lib64) targets the libraries are installed
to the wrong location and are not packaged.
Add a patch to use GNUInstallDirs (CMAKE_INSTALL_BINDIR,
CMAKE_INSTALL_LIBDIR, CMAKE_INSTALL_INCLUDEDIR) so files are installed
to the correct, platform-appropriate directories.
Signed-off-by: Kanksha Paturi <Kanksha.Paturi@windriver.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This release fixes a 2026.5 regression where static-delta pulls fail with
"mmap: No such device" when the BSPATCH output lives on FUSE, which breaks
Flatpak system updates. It also carries more hardening: dirtree objects
with duplicate names are rejected, static-delta superblocks are parsed as
untrusted, the OpenSSL signers check for a return value of 1, rofiles-fuse
blocks O_TRUNC opens and removexattr on hardlinked objects, and a crash on
loading a second revoked SPKI key is fixed. ostree-prepare-root now accepts
a /run/ostree directory created earlier by the initramfs.
https://github.com/ostreedev/ostree/releases/tag/v2026.6
AI-Generated: Uses Claude Code (Claude Opus 5.5)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add a PACKAGECONFIG option for OpenSC's CT-API reader driver so it
can be enabled without modifying the recipe, e.g. from local.conf:
PACKAGECONFIG:pn-opensc = "ctapi"
Please note that OpenSC's configure allows only one reader driver:
Only one of --enable-pcsc, --enable-cryptotokenkit,
--enable-openct, --enable-ctapi can be specified!
So to use it, ctapi should replace the default pcsc rather than
being just added to it. Not enabled by default. Existing builds are
unaffected.
The patch also removes --disable-ctapi from EXTRA_OECONF.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The zsh/pcre module is link=dynamic only, so add a PACKAGECONFIG for it
that conflicts with static.
libpcre2 inherits binconfig-disabled, so pass a small pcre2-config
wrapper using pkg-config via PCRE_CONFIG.
AI-Generated: Uses Claude Code
Signed-off-by: Sean Nyekjaer <sean@geanix.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The zsh/db/gdbm module is link=dynamic only, so add a PACKAGECONFIG for
it that conflicts with static.
When static is disabled, preset the dynamic loading checks configure
can't run when cross compiling.
AI-Generated: Uses Claude Code
Signed-off-by: Sean Nyekjaer <sean@geanix.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Allow building zsh with dynamically loadable modules by moving
--disable-dynamic into a PACKAGECONFIG named static, enabled by
default to keep the current behaviour.
Signed-off-by: Sean Nyekjaer <sean@geanix.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
The zsh/pcre module is link=dynamic only, and the recipe configures
with --disable-dynamic, so the module is not built. pcre is also
disabled by default in configure.
Drop libpcre2 from DEPENDS to avoid pulling in an unused library.
Signed-off-by: Sean Nyekjaer <sean@geanix.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
gdbm support is disabled by default in zsh's configure, so
--disable-gdbm is redundant and gdbm in DEPENDS is unused.
Signed-off-by: Sean Nyekjaer <sean@geanix.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Add -M30% -C --find-copies-harder to the git send-email example in
README.md so that git format-patch detects renames and copies more
aggressively.
Patches that move or copy files then show only the changed lines
instead of full file deletions and additions, which makes them
smaller and easier to review.
Suggested-by: Khem Raj <khem.raj@oss.qualcomm.com>
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 6.1.0:
- No functional changes, only in binary wheels released to PyPI
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 0.4.5:
- Improve performance of get_literal_values()
- Expand chained type aliases in get_literal_values()
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 2.3.3:
Security:
- The limit on <use> expansions added in 2.3.1 counted expansions,
not their size. Each expansion copies and renders the whole
element it refers to, so a few kilobytes of nested <use> groups
with a large group at the bottom could still take minutes and
gigabytes to render (CWE-400, GHSA-xpfm-fw4h-qxwv, an incomplete
fix of GHSA-555j-qj3j-c8jv). The elements copied by all
expansions of a document, external SVGs included, are now limited
too (MAX_USE_CLONED_ELEMENTS, 20,000); once it is spent the
remaining <use> elements are skipped and an error is logged.
Thanks to Adrian Korwel for the report.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 4.0:
- BREAK: The contents of an HTML template are no longer treated as
part of the document. Selectors do not descend into a template,
and elements inside one can't see beyond it, which also applies
to pseudo-classes such as :lang(), :disabled, and :default.
select and filter will still reach the contents of a template
when they are called on the template itself, for example
soup.template.select('p'). See the FAQ for more information.
- BREAK: The contents of an iframe are no longer treated as a
separate document, as they are not one in a browser. Elements in
an iframe are normal children, so :root does not match them, and
:default, :indeterminate, :checked, :dir(), :lang(), and
:read-write treat them like any other element. Recent versions of
html.parser, lxml, and html5lib all escape the contents of an
iframe like a browser does, so this mostly affects XHTML, Python
versions that still don't escape such content in their specific
html.parser, and elements added to an iframe by hand.
:-soup-contains() now also includes the escaped text in an
iframe. See the FAQ for more information.
- NEW: Update :disabled and :enabled to treat option and optgroup
elements inside a disabled select as disabled, following a recent
HTML specification update.
- FIX: Fix the subsequent-sibling combinator and :has(~ ...) never
matching top level elements of a fragment that has no root
element, unless caching was disabled.
- FIX: :indeterminate now treats a radio button group without a
form as extending across the whole document instead of the top
level element that contains it, and it no longer ignores radio
buttons at the top level.
- FIX: Fix :default to treat a button with a missing or invalid
type, and an input with type="image", as submit buttons.
- FIX: Fix :in-range and :out-of-range raising TypeError when the
document contains an input without a type attribute.
- FIX: :read-write (and :read-only) now treat
contenteditable="plaintext-only" elements as editing hosts and
match the editable elements inside an editing host, following the
nearest contenteditable state.
- FIX: :read-write (and :read-only) now ignore contenteditable on
non-HTML elements, such as an SVG foreignObject, as the attribute
only applies to HTML elements. Such elements inherit the state of
their parent.
- FIX: :checked now only matches the last radio button with a
checked attribute in a radio button group, as in a browser, where
a group is the radio buttons with the same name and form,
including the form attribute. :default still matches all of them,
and the contents of a template are unaffected as they are not
connected.
- FIX: :dir() and :defined no longer affect the rest of the
selector list they are in. Previously, a selector list that used
either of them could not have its combinators cross an iframe,
ignored the specified namespaces, and matched nothing in XML, not
even the parts that didn't use them. They still do not match in
XML, but :not(:dir(ltr)) and :not(:defined) now do.
- FIX: :default and :indeterminate now honor the form attribute,
which can associate a submit button or radio button with a form
it is not in, or leave it without a form. It is ignored in a
template, as in the HTML specification. Submit buttons outside of
a form can now be its default button.
- FIX: :default, :checked, and :indeterminate now handle a form
inside a form like a browser. In HTML, a browser ignores the
nested form and takes its end tag for that of the parent, which
matters for parsers that keep the nested form, such as
html.parser. In XHTML and in a template, nested forms are real
forms.
- FIX: :checked now matches the option that a browser would select.
Without multiple, that is only the last option with a selected
attribute in a select, and if there are none and the select shows
a single option, the first option that is not disabled. :default
still only considers the selected attribute.
- FIX: Fix [attribute!=value] excluding values that only start with
the specified value, and in XML documents, type values that
contain a newline.
- FIX: Match the values of every attribute that the HTML
specification lists as ASCII case insensitive (rel, method, lang,
dir, ...) without ASCII case sensitivity on HTML elements in HTML
documents, not just type. Non-HTML elements are matched case
sensitively.
- FIX: :dir() now matches non-HTML elements, such as SVG and
MathML, by the direction they inherit from their parent (the dir
attribute only applies to HTML elements), and HTML elements
inside them, such as in an SVG foreignObject, by the direction of
their ancestors.
- FIX: Fix :dir() ignoring the value of an input with dir="auto"
and a missing or empty type.
- FIX: :dir() now uses a table generated from Unicode 18 instead of
unicodedata, so results no longer depend on the Unicode version
of the Python in use, and unassigned code points use their
default direction.
- FIX: :dir() now uses the value of an input with dir="auto" when
type is hidden, password, submit, reset, or button, as the HTML
specification does.
- FIX: dir="auto" and bdi now analyze the text of non-HTML
elements, such as SVG and MathML, and only ignore HTML elements
such as script, style, and bdi. The text directly in an iframe is
analyzed as well, and the contents of a template, which are not
part of the document, are not.
- FIX: :dir() no longer lets the contents of a template inherit
direction from the template or its ancestors, as they are not
part of the document. They are left to right unless they specify
otherwise.
- FIX: :dir() now matches a bdi element that is the root by its
text instead of assuming left to right.
- FIX: :dir() now treats any element without a parent element as
left to right, not just the root. Before, all but the first top
level element of a fragment parsed with html.parser never
matched.
- FIX: :dir() now accepts any identifier, as CSS requires,
including escaped ones. Values other than ltr and rtl do not
match anything.
- FIX: Respect namespaces provided by the parser when the root is
not an HTML element, such as an svg element extracted from an
html5lib document. Previously every element in such a tree was
treated as an HTML element, which affected namespace selectors,
namespaced attributes, and HTML specific pseudo-classes.
- FIX: Fix :lang() treating an element with an empty lang or
xml:lang attribute as having the language of a tagged ancestor.
- FIX: Cache forms without a default button when matching :default
to avoid quadratic time on forms with many non-default submit
candidates.
- FIX: Fix :in-range and :out-of-range matching elements whose
value, min, or max has a trailing newline; per HTML, such values
are not valid, so they are treated like a missing value and
cannot be out of range.
- FIX: Fix :in-range and :out-of-range raising ValueError when a
date, month, week, or local date and time input has a year with
more digits than Python will convert; such a year is now treated
as invalid.
- FIX: Fix :in-range and :out-of-range not recognizing a
datetime-local value, min, or max that uses a single space
instead of T to separate the date and time.
- FIX: Search a form only once for checked radio buttons when
matching :indeterminate to avoid quadratic time on forms with
many radio button groups.
- FIX: :lang() now uses the lang attribute of SVG elements, as the
HTML specification does (with xml:lang taking precedence).
Previously only xml:lang was considered for elements outside the
HTML namespace.
- FIX: :defined no longer matches HTML elements with an is
attribute (customized built-in elements), which, like custom
elements, are undefined until they are registered.
- FIX: Cache the index of each child when matching the general
sibling combinator (a ~ b and :has(~ b)) to avoid quadratic time
when the first matching sibling is far into a long list of
siblings.
- FIX: Match attribute values with the i modifier using ASCII case
insensitivity.
- FIX: Treat an input with an unknown type, such as type="foo", as
a text input in :placeholder-shown, :read-write, :read-only and
:dir(), as an invalid type is in the Text state in the HTML
specification.
- FIX: Fix :enabled and :disabled never matching input elements
with type="hidden".
- FIX: :required no longer matches input elements of types the
required attribute does not apply to (hidden, range, color,
submit, image, reset and button). Like in browsers, they match
:optional.
- FIX: Cache whether an element is or has a matching ancestor when
matching the descendant combinator (a b) to avoid time that grows
with the depth of the document to the power of the number of
combinators.
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
Upgrade to release 5.18.1:
- Fix enter/leave room in connect handler, when a message queue is
used (regression introduced in v5.18.0)
Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>