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<T>, 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 GitHub issue https://github.com/apache/tvm-ffi/issues/775 --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
