[VOTE] Release Apache TVM FFI v0.1.14-rc5
- Dominant language
- C++
- Stars
- 462
- Forks
- 99
- Avg merge
- 8h 37m
- Merged PRs (30d)
- 73
Description
Dear community:
This is a call for vote to release apache-tvm-ffi version v0.1.14. The main highlights of this release are
* Structural transformation APIs — `StructuralMutator` recursively transforms reflected object graphs, with `structural_map` providing a typed callback interface for compiler passes, alongside `maybe_inplace_mutate` and `var_remap`. C++ `StructuralMap` callbacks accept a replacement value, `Expected`, `Error`/`Unexpected`, or a thrown `Error`. `StructuralVisit` and `StructuralMutate` expose lower-level engines where the callback owns descent and traversal order.
* Rust structural, object, and stubgen support — all four structural operations (walk, visit, map, mutate) gain typed callbacks and a `#[dispatch(...)]` frontend; the object binding runtime adds zero-copy upcasts, identity comparison, and reflection-table method lookup; and `tvm-ffi-stubgen --target rust` generates opaque bindings for every reflected object, reading fields through the C ABI getter so object bytes are never reproduced.
* Opaque pointer handler map — third-party extension types that cannot define or accept monkey-patching of `__tvm_ffi_opaque_ptr__` can now participate in opaque-pointer conversion via `tvm_ffi.core._OPAQUE_PTR_HANDLERS`, without changing their owning package.
* Stronger static typing through `Any` — static object type bounds are now propagated across `ObjectPtr`, `ObjectRef`, and raw-object conversions into `Any` and `AnyView`, while runtime validation for unconstrained values is unchanged.
* Safer copy-on-write through `unique()` — `Object::unique()` now requires one strong reference *and* no external weak references, since a live `WeakObjectPtr` can still upgrade while a strong owner exists. `use_count()` keeps its strong-only semantics.
* Performance and platform fixes — hot-path inlining across `ObjectPtr`, `Optional`, and `Any`, a leaner structural-mutation engine, Windows backtraces serialized around DbgHelp so a concurrent trace no longer kills the process, and Python discovery split between host and target so 3.14t wheels build on cross-compiled platforms such as Linux PPC64LE and macOS ARM64.
* Correctness fixes — Python annotation metadata is stabilized across versions, and `ffi.Error` is now picklable so FFI-originated exceptions survive round-tripping.
* Def-region terminology renamed in the C ABI — `kTVMFFIDefRegionKindRecursive`/`NonRecursive` become `Pattern`/`Simple`, and the matching `kTVMFFIFieldFlagBitMaskSEqHashDef*` flags follow. Every enum value keeps its number, so binaries stay compatible, but source naming these constants needs the new spellings. A new `kTVMFFIUnchanged` marker is also added for structural mutation.
Link to draft release notes:
https://github.com/apache/tvm-ffi/releases/tag/v0.1.14-rc5
Link to release candidate:
https://dist.apache.org/repos/dist/dev/tvm/tvm-ffi-v0.1.14-rc5/
Everyone is welcomed to vote. Please vote by replying to this thread explicitly. The vote will last at least 72 hours, please vote
+1 = approve
+0 = no opinion
-1 = disapprove (provide reason)
NOTE: this thread is being mirrored in dev@
Contributor guide
Research direction
Read the draft release notes linked in the issue and inspect the v0.1.14-rc5 release candidate at the provided distribution link. This is a release vote rather than a coding task; it is done when you reply explicitly with +1, +0, or -1 and provide a reason for -1.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, python, rust
- Domain
- release
- Issue type
- Documentation
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 25/100