Update Rust crate ort to v2.0.0-rc.13 - #34
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/ort-2.x-lockfile
branch
from
July 25, 2026 11:59
b5a122b to
c3edb42
Compare
renovate
Bot
force-pushed
the
renovate/ort-2.x-lockfile
branch
from
July 29, 2026 03:41
c3edb42 to
e78e173
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
2.0.0-rc.10→2.0.0-rc.13Release Notes
pykeio/ort (ort)
v2.0.0-rc.13Compare Source
2.0.0-rc.13
💖 If you find
ortuseful, please consider sponsoring us on Open Collective 💖🤔 Need help upgrading? Ask questions in GitHub Discussions or in the pyke.io Discord server!
🎯 Execution provider clarity
EP structs like
ep::CUDAare now compile-time gated behind their respective Cargo feature flags. The EP feature flags only modifying runtime behavior was a common pain point, and this change bringsortin line with, like, every other Rust crate in existence.ortwill now throw an error at link time ifdownload-binariesis enabled and no binaries contain all of the requested EPs. Previously, if you enabled a nonsensical combination likecuda+coreml,ortwould silently fall back to a CPU-only build. This caused great confusion as the only indicator of what went wrong was in log messages that don't show by default. A newlax-feature-matchingCargo feature will fallback to the closest fit instead of erroring.🍎 ONNX Runtime 1.28
rc.13skips ahead 4 ONNX Runtime versions to v1.28, bringing new operator support, bug & security fixes, and performance improvements.✖️ No CUDA 12
rc.13only ships CUDA 13 binaries, as ONNX Runtime has deprecated CUDA 12.🧩 Custom operator ergonomics
Custom operators have been reworked to have a more Rusty interface:
struct MyOperator; impl Operator for MyOperator { + type Kernel<'attr> = ort::operator::BoxedKernel<'attr>; fn name(&self) -> &str { "MyOperator" } - fn inputs(&self) -> Vec<OperatorInput> { - vec![OperatorInput::required(TensorElementType::Float32), OperatorInput::required(TensorElementType::Float32)] + fn inputs(&self) -> impl IntoIterator<Item = OperatorInput> { + [OperatorInput::required(TensorElementType::Float32), OperatorInput::required(TensorElementType::Float32)] } - fn outputs(&self) -> Vec<OperatorOutput> { - vec![OperatorOutput::required(TensorElementType::Float32)] + fn outputs(&self) -> impl IntoIterator<Item = OperatorOutput> { + [OperatorOutput::required(TensorElementType::Float32)] } - fn create_kernel(&self, _: &KernelAttributes) -> ort::Result<Box<dyn Kernel>> { - Ok(Box::new(|ctx: &KernelContext| { + fn create_kernel<'attr>(&self, _: &KernelContext<'attr>) -> ort::Result<Self::Kernel<'attr>> { + Ok(Box::new(|ctx: &ComputeContext| { ... })) } }ℹ️ Custom diagnostic messages
ortnow uses the wonderful#[diagnostic]attributes to drastically improve the clarity of commonly encountered errors.☑️ Miri-approved
Test coverage was expanded and
ortwas ran against Miri, and a few unsoundness bugs were fixed.✨ Other features
8db51e7Add VSINPU EP5688cce(ort-web): Allow creating tensors from images.726dc7cExpose the DirectML EP API.5e669f6Support string array operator attributes5f99738Support float16 tensor usage with the nativef16type on nightly Rust62ad710(ort-candle): Updatecandleto 0.11d5dc28f(ort-tract): Updatetractto 0.23🔧 Other fixes
d5eb59fCommitting a session which has a map input/output will no longer panic.d2838f8Fixed the fallback behavior whenort-syscan't create a system-wide cache dir.26f656bAllowDynTensorto beCloned.e336d6bAllow0dimensions in tensors.14e9d29Fix tensor byte size calculation for 8-bit floating point types.7bdabccAllowtry_extract_scalarto work on tensors with shape[1].85f6074Fixed retrieving string attributes in custom operator shape inference contexts.17ed727Don't deadlock whenload-dynamicfails.a5ee3adDon't forcestdforndarraywhenstdis enabled.d535605Allowcopy-dylibsto work independently ofdownload-binaries.49413baRerunbuild.rson macOS when Xcode updates.bb20575Warn when AVX-2 isn't supported when using pyke binaries.9c840a3Support FreeBSD.01f377bSupport Mac Catalyst.❤️🧡💛💚💙💜
v2.0.0-rc.12Compare Source
2.0.0-rc.12
💖 If you find
ortuseful, please consider sponsoring us on Open Collective 💖🤔 Need help upgrading? Ask questions in GitHub Discussions or in the pyke.io Discord server!
This release was made possible by Rime.ai!
📍 Multiversioning
The big highlight of this release is multiversioning:
ortcan now use any minor version of ONNX Runtime from v1.17 to v1.24. New features are gated behindapi-*feature flags, likeapi-20orapi-24. These flags will set the minimum version of ONNX Runtime required byort.More info 👉 https://ort.pyke.io/setup/multiversion
🪄 Automatic device selection
With ONNX Runtime 1.22 or later,
ortwill now automatically use an NPU if one is available for maximum efficiency & power savings! Setting your own execution providers will override this.This is thanks to the super cool new
SessionBuilder::with_auto_deviceAPI! There's alsoSessionBuilder::with_devicesfor finer control.👁️ CUDA 13
ortnow ships builds for both CUDA 12 & CUDA 13! It should automatically detect which CUDA you're using, but if it gets it wrong, you can override it by setting theORT_CUDA_VERSIONenvironment variable to12or13.🩹
SessionBuildererror recoveryYou can now recover from errors when building a session by calling
.recover()on the error type to get theSessionBuilderback.🛡️ Build attestations
Prebuilt binaries are now attested via GitHub Actions, so you can verify that they are untampered builds of ONNX Runtime coming straight from pyke.io.
To verify, download your binary package of choice and use the
ghCLI to verify:(Also note that the SHA-256 hash lines up with the one defined in
dist.txt.)Moving stuff around
ORT_LIB_LOCATIONenvironment variable has been renamed toORT_LIB_PATH._LOCATION.ort::tensoris now inort::value, because why have atensormodule if theTensor<T>type actually comes from thevaluemodule?IoBindingandAdapterwere moved from their own modules intoort::session. All sub-modules ofort::sessionbesidesbuilderwere collapsed intoort::session.ort::operatorwere collapsed intoort::operator.with_denormal_as_zero->with_flush_to_zerowith_device_allocator_for_initializers->with_device_allocated_initializersFixes
c52bd2aFix MIGraphX registration.374a9d1Fix global environment thread poolsff08428Fix a segfault inTensor::clone.3d6c2a9Use new API to load the DirectML EP.5913ae0Make vcpkg builds work again.079ecb4Fix issues with multiple environment registration.❤️🧡💛💚💙💜
v2.0.0-rc.11Compare Source
💖 If you find
ortuseful, please consider sponsoring us on Open Collective 💖🤔 Need help upgrading? Ask questions in GitHub Discussions or in the pyke.io Discord server!
I'm sorry it took so long to get to this point, but the next big release of
ortshould be, finally, 2.0.0 🎉. I know I said that about one of the old alpha releases (if you can even remember those), but I mean it this time! Also, I would really like to not have to do another major release right after, so if you have any concerns about any APIs, please speak now or forever hold your peace!A huge thank you to all the individuals who have contributed to the Collective over the years: Marius, Urban Pistek, Phu Tran, Haagen, Yunho Cho, Laco Skokan, Noah, Matouš Kučera, mush42, Thomas, Bartek, Kevin Lacker, & Okabintaro. You guys have made these past rc releases possible.
If you are a business using
ort, please consider sponsoring me. Egress bandwidth from pyke.io has quadrupled in the last 4 months, and 90% of that comes from just a handful of businesses. I'm lucky enough that I don't have to pay for egress right now, but I don't expect that arrangement to last forever. pyke &orthave been funded entirely from my own personal savings for years, and (as I'm sure you're well aware 😂) everything is getting more expensive, so that definitely isn't sustainable.Seeing companies that raise tens of millions in funding build large parts of their business on
ort, ask for support, and then not give anything back just... seems kind of unfair, no?ort-webort-weballows you to use the fully-featured ONNX Runtime on the Web! This time, it's hack-free and thus here to stay (it won't be removed, and then added back, and then removed again like last time!)See the crate docs for info on how to port your application to
ort-web; there is a little bit of work involved. For a very barebones sample application, seeort-web-sample.Documentation for
ort-web, like the rest ofort, will improve by the time 2.0.0 comes around. If you ever have any questions, you can always reach out via GitHub Discussions or Discord!Features
5d85209Add WebNN & WASM execution providers forort-web.#430(💖 @jhonboy121) Support statically linking to iOS frameworks.#433(💖 @rMazeiks) Implement more traits forGraphOptimizationLevel.6727c98MakePrepackedWeightsSend + Sync.15bd15cMake the TLS backend configurable with newtls-*Cargo features.f3cd995Allow overriding the cache dir with theORT_CACHE_DIRenvironment variable.8b3a1edLoad the dylib immediately when usingort::init_from.#484(💖 @michael-p) Updatendarrayto v0.17.ndarraydependency to v0.17, too.0084d08Newort::lifetimetracing target tracks when objects are allocated/freed to aid in debugging leaks.Fixes
2ee17aaFix a memory leak inIoBinding.317be20Don't storeEnvironmentas a static.mutex lock failed: Invalid argumentcrash on macOS when exiting the process.466025cFix unexpected CPU usage when copying GPU tensors.ecca246Fix UB when extracting empty tensors.22f71baGate theArrayExtensionstrait behind thestdfeature, fixing#![no_std]builds.af63ceaFix an illegal memory access onno_stdbuilds.#444(💖 @pembem22) Fix Android link.1585268Don't allow sessions to be created with non-CPU allocators#485(💖 @mayocream) Fix load order when usingcuda::preload_dylibs.c5b68a1FixAsyncInferenceFutdrop behavior.Misc
ortin CI, please cache the~/.cache/ort.pyke.iodirectory between runs.ort's dependency tree has shrunk a little bit, so it should build a little faster!b68c928Overhaulbuild.rspkg-configsupport now requires thepkg-configfeature.d269461MakeMetadatamethods returnOption<T>instead ofResult<T>.47e5667Gatepreload_dylibandcuda::preload_dylibsbehind a newpreload-dylibsfeature flag instead ofload-dynamic.3b408b1Shortenexecution_providerstoepandXXXExecutionProvidertoXXX.38573e0SimplifyThreadManagertrait.ONNX Runtime binary changes
x86_64-apple-darwin) has been dropped following upstream changes to ONNX Runtime & Rust.--client_package_build, meaning default options will optimize for low-resource edge inference rather than high throughput.x86-64-v3, aka Intel Haswell/Broadwell and AMD Zen (any Ryzen) or later.ort-tracttractto 0.22.2d40e05ort-tractno longer claims it isort-candleinort::info().ort-candlecandleto 0.9.❤️🧡💛💚💙💜
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.