From 5ccbf5d55250c5ff9d4c87719373b627311c16d8 Mon Sep 17 00:00:00 2001 From: Tim Orling Date: Tue, 3 Feb 2026 11:13:50 -0800 Subject: python3-orjson: upgrade 3.10.17 -> 3.11.6 Update python3-orjson-crates.inc Add patches to fix compilation for arm64/riscv64 by gating x86/x86_64 only AVX512 feature(s). The approach has thus far been rejected by upstream: https://github.com/ijl/orjson/pull/609. Release Notes: https://github.com/ijl/orjson/blob/master/CHANGELOG.md#3116---2026-01-29 * orjson now includes code licensed under the Mozilla Public License 2.0 (MPL-2.0). * Drop support for Python 3.9. * ABI compatibility with CPython 3.15 alpha 5. * Build now depends on Rust 1.89 or later instead of 1.85. * Fix sporadic crash serializing deeply nested list of dict. * Show simple error message instead of traceback when attempting to build on unsupported Python versions. * ABI compatibility with CPython 3.15 alpha 1. * Publish PyPI wheels for 3.14 and manylinux i686, manylinux arm7, manylinux ppc64le, manylinux s390x. * Build now requires a C compiler. * Fix PyPI project metadata when using maturin 1.9.2 or later. * Fix build using Rust 1.89 on amd64. * Build now depends on Rust 1.85 or later instead of 1.82. * Publish PyPI wheels for CPython 3.14. * Fix str on big-endian architectures. This was introduced in 3.11.0. * Use a deserialization buffer allocated per request instead of a shared buffer allocated on import. * ABI compatibility with CPython 3.14 beta 4. * Fix incorrect escaping of the vertical tabulation character. This was introduced in 3.10.17. Comparing changes: https://github.com/ijl/orjson/compare/3.10.17...3.11.6 Signed-off-by: Tim Orling Signed-off-by: Khem Raj --- ...1-Guard-avx512-module-with-x86-target-cfg.patch | 37 ++++++++++++++++++++++ ...eature-detection-macro-in-pystrref-object.patch | 34 ++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 meta-python/recipes-devtools/python/python3-orjson/0001-Guard-avx512-module-with-x86-target-cfg.patch create mode 100644 meta-python/recipes-devtools/python/python3-orjson/0002-Guard-x86-feature-detection-macro-in-pystrref-object.patch (limited to 'meta-python/recipes-devtools/python/python3-orjson') diff --git a/meta-python/recipes-devtools/python/python3-orjson/0001-Guard-avx512-module-with-x86-target-cfg.patch b/meta-python/recipes-devtools/python/python3-orjson/0001-Guard-avx512-module-with-x86-target-cfg.patch new file mode 100644 index 0000000000..604030e062 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-orjson/0001-Guard-avx512-module-with-x86-target-cfg.patch @@ -0,0 +1,37 @@ +From c5c46664a914d3a7f048c51c3b9c2ab13e21ed1b Mon Sep 17 00:00:00 2001 +From: Tim Orling +Date: Thu, 29 Jan 2026 09:59:55 -0800 +Subject: [PATCH] Guard avx512 module with x86 target cfg + +The avx512.rs module contains x86_64-specific intrinsics and target +features that are not valid on non-x86 architectures like RISC-V. + +Upstream-Status: Inappropriate [Rejected by upstream https://github.com/ijl/orjson/pull/609] + +Signed-off-by: Tim Orling +--- + src/ffi/pystrref/avx512.rs | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/ffi/pystrref/avx512.rs b/src/ffi/pystrref/avx512.rs +index e4c7697..46450ac 100644 +--- a/src/ffi/pystrref/avx512.rs ++++ b/src/ffi/pystrref/avx512.rs +@@ -3,12 +3,14 @@ + + use super::pyunicode_new::*; + ++#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] + use core::arch::x86_64::{ + _mm512_and_si512, _mm512_cmpgt_epu8_mask, _mm512_cmpneq_epi8_mask, _mm512_loadu_epi8, + _mm512_mask_cmpneq_epi8_mask, _mm512_maskz_loadu_epi8, _mm512_max_epu8, _mm512_set1_epi8, + }; + + #[inline(never)] ++#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] + #[target_feature(enable = "avx512f,avx512bw,avx512vl,bmi2")] + pub(crate) unsafe fn create_str_impl_avx512vl(buf: &str) -> *mut crate::ffi::PyObject { + unsafe { +-- +2.39.5 + diff --git a/meta-python/recipes-devtools/python/python3-orjson/0002-Guard-x86-feature-detection-macro-in-pystrref-object.patch b/meta-python/recipes-devtools/python/python3-orjson/0002-Guard-x86-feature-detection-macro-in-pystrref-object.patch new file mode 100644 index 0000000000..59105e723c --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-orjson/0002-Guard-x86-feature-detection-macro-in-pystrref-object.patch @@ -0,0 +1,34 @@ +From 7ef16220caaa82f7a90047c8c9b5ff2eeb15b9ce Mon Sep 17 00:00:00 2001 +From: Tim Orling +Date: Thu, 29 Jan 2026 10:22:31 -0800 +Subject: [PATCH 2/2] Guard x86 feature detection macro in pystrref/object.rs + +The std::is_x86_feature_detected! macro only works on x86/x86_64 +targets. This patch wraps the feature detection and AVX-512 code path +with cfg guards to allow compilation on non-x86 architectures. + +On non-x86 targets, the code will fall through to the generic +implementation instead of attempting AVX-512 optimizations. + +Upstream-Status: Inappropriate [Rejected by upstream https://github.com/ijl/orjson/pull/609] + +Signed-off-by: Tim Orling +--- + src/ffi/pystrref/object.rs | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/ffi/pystrref/object.rs b/src/ffi/pystrref/object.rs +index 9ef12eb..7c2c046 100644 +--- a/src/ffi/pystrref/object.rs ++++ b/src/ffi/pystrref/object.rs +@@ -29,6 +29,7 @@ static mut STR_CREATE_FN: StrDeserializer = super::scalar::str_impl_kind_scalar; + + pub fn set_str_create_fn() { + unsafe { ++ #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] + #[cfg(all(CPython, feature = "avx512"))] + if std::is_x86_feature_detected!("avx512vl") { + STR_CREATE_FN = super::avx512::create_str_impl_avx512vl; +-- +2.39.5 + -- cgit v1.2.3-54-g00ecf