Releases: barakugav/executorch-rs
v0.3.0
A release that address some bugs around non-trivially moveable Cpp objects, causes a change in API.
For most structs it has no effect as most Cpp structs of executorch are trivially moveable. For those who are not, such as Tensor
and EValue
, the default constructor method, aka new
, will allocate the underlying Cpp object on the heap using a Box
. On systems were allocations are not available, a new Storage
struct is introduced allowing pinned allocations on the stack.
What's Changed
- Update ndarray requirement from 0.15.6 to 0.16.0
- Enforce Cpp objects are not moved for non-trivially movable structs
- Remove some deps for real
no_std
by, still not fully supported due to the Cpp lib requiring the Cpp standard library. See pytorch/executorch#4561 - The library is now tested on both Ubuntu and MacOS. Windows is not supported.
v0.2.0
The crate will now compile with C++ ExecuTorch version 0.3.0
, bumped from 0.2.1
.
Added
f16
feature flag, support input/output Tensors of half precision floating points using thehalf
crate. Note that if half precision floats are used in the inner calculations of your model, the feature is not required, only if they are used as input or output Tensors. In the future the crate may use the standardf16
once its stable, and the feature may be removed.complex
feature flag, support input/output Tensors of complex floating points (f32
,f64
, orhalf::f16
iff16
is enabled) using thenum-complex
crate. Note that if complex floats are used in the inner calculations of your model, the feature is not required, only if they are used as input or output Tensors.std
feature flag, enabled by default, that can be disabled to use the crate without the Rust standard library. Unfortunately, the C++ underlying library still require the C++ standard library, but hopefully that will change in the near future.alloc
feature flag, enabled by thestd
feature flag that is enabled by default. If the feature is disabled, all methods and structs requiring allocations will not be compiled. Ifstd
is enabled, allocations are performed regularly using the standard library. When disabling thestd
flag and enablingalloc
, the crate will use thealloc
API to allocate objects, requiring a global allocator to be set by the user beforehand.
v0.1.0
First release of executorch-rs
!
The crate provides a high-level Rust API for executing PyTorch models on mobile, embedded and edge devices using the ExecuTorch library, specifically the C++ API. PyTorch models are created and exported in Python, and then loaded and executed on-device using the ExecuTorch library.
The first release contains support for the core of ExecuTorch, allowing loading and executing models with either the Program
or the Module
APIs.
In addition all the necessary structs and classes such as TensorImpl
, Tensor
, EValue
, DataLoader
, ect, have a matching struct in Rust with zero additional memory overhead.
The supported C++ version is 0.2.1
, and the user must build it manually, which is less convenient but allow for greater flexibility, matching the library use case: each compilation matches a specific hardware with specific constraints, allowing to run in embedded systems, while paying only for what you use.
The next release will come in the following weeks bumping the Cpp library to version 0.3.x
.
v0.1.0-rc.2
What's Changed
- Include cpp headers in repo, don't relay on the internet by @barakugav in #12
Full Changelog: v0.1.0-rc.1...v0.1.0-rc.2
0.1.0-rc.1
What's Changed
- README.md by @barakugav in #3
- Call cpp structs destructors by @barakugav in #4
- Support all
Module
,Program
,MethodMeta
andTensorInfo
functions by @barakugav in #5 - Docs, data loaders, Tensor/base/Mut by @barakugav in #6
- Tensor and TensorMut using templates by @barakugav in #7
- TensorImpl::from_array by @barakugav in #8
- Separate to crates, executorch-sys by @barakugav in #9
- Support all Evalue variants by @barakugav in #10
- Prepare for release
0.1.0-rc.1
by @barakugav in #11
Full Changelog: https://github.com/barakugav/executorch-rs/commits/v0.1.0-rc.1