Releases: apache/tvm-ffi
Releases · apache/tvm-ffi
Release list
v0.1.13-rc0
What's Changed
- [TEST] Relax test_shared_dag_hash_scaling_not_exponential ratio to 4x by @tqchen in #612
- chore(release): Version bump after release v0.1.12 by @MasterJH5574 in #617
- [FEAT] Add structural visitor and typed structural walk APIs by @Kathryn-cat in #601
- Robustify FromJSONGraph by @tqchen in #619
- [REFACTOR][STUBGEN] refactor the stubgen logic. by @Seven-Streams in #608
- Adopt AGENTS.md for agent guidance by @tqchen in #620
- [DOCS] Document Python FFI conversion protocols by @tqchen in #622
- [CI] Update astral-sh/setup-uv to allowed ref v8.2.0 by @cyx-6 in #624
- [DOCS] Clarify CStrParts error handling usage by @tqchen in #625
- [CI] Bump pinned GitHub Action hashes by @tqchen in #626
- [BUILD] Hide symbols from linked static libraries by @tqchen in #627
- [CMake] Format static symbol helper condition by @tqchen in #628
- Avoid unused type_index local in structural visit by @tqchen in #629
- [FIX] Avoid -Wassume error in structural visit VisitImpl by @cyx-6 in #632
- [CI] Update Jimver/cuda-toolkit to allowed ref v0.2.35 by @cyx-6 in #631
- [CI] Phase out Python 3.8 wheel builds by @tqchen in #633
- [CI] Ignore existing DLLs in Windows wheel repair by @tqchen in #635
- [OBJECT] Optimize dynamic RuntimeTypeIndex loads by @tqchen in #634
- [OBJECT] Make object info macro compatible with CRTP by @tqchen in #636
- [CORE] Invert object/type_traits dependency layering by @tqchen in #638
- [API] Add type index query mode by @tqchen in #640
- [FFI] Add ref-qualified strict ObjectRef casts by @tqchen in #639
- [PY] Distinguish FFI input and output annotations by @Ubospica in #621
- [PY] Support pickling FFI String and Bytes by @Ubospica in #643
- [FFI] Make StructuralEqual functor compare tensor content by @pisarev in #646
- [CORE] Add type subsumption and object-ref containment relations by @tqchen in #647
- Include torch build/ABI in torch C-DLPack addon cache key by @tugot17 in #644
- [FEAT][RUST]Add tvm_ffi::Map in Rust by @Seven-Streams in #623
- [FIX] Make object construction exception-safe by @tqchen in #650
- [FEAT][RUST]Add tvm_ffi::optional in Rust by @Seven-Streams in #630
- [FIX] Resolve JIT GPU backend by explicit signals, not stray /opt/rocm by @tqchen in #652
- [TEST] Run the Python test suite in parallel with a shared GPU lock by @tqchen in #654
- [FIX] Mark ObjectRef throw-only paths unreachable by @tqchen in #656
- [FFI] Back Optional and Variant by TVMFFIAny for a stable ABI layout by @tqchen in #657
- [ORCJIT] Reinject contexts on first function lookup by @tqchen in #655
- [ORCJIT] Add shared session and high-level load_module by @cyx-6 in #658
- [ORCJIT] Embed liborc_rt into the extension and add orc_rt selector by @cyx-6 in #660
- build(python)!: require CMake 3.26 for ABI-aware builds by @junrushao in #661
- refactor(dataclasses)!: separate field resolution and native lifetimes by @junrushao in #663
- refactor(enum)!: unify native enum state and singleton conversion by @junrushao in #664
- feat(core): support ObjectPtr in FFI type traits by @junrushao in #665
- feat(dtype): expand parsing and introspection by @junrushao in #668
- ci(lint): run hooks through the uv development environment by @junrushao in #669
- feat(abi): generate layout-compatible C++ object declarations by @junrushao in #670
- [FEAT][Python] Tie Python wrapper lifetime to underlying C++ FFI object by @cyx-6 in #593
- fix(device): require canonical Python device names by @tqchen in #671
- fix(packaging): tag core wheels per-version instead of abi3 by @cyx-6 in #672
- [FEAT] Add Expected specialization by @Kathryn-cat in #673
- fix(reflection): require exact field and method name matches by @Kathryn-cat in #674
New Contributors
- @Seven-Streams made their first contribution in #608
- @pisarev made their first contribution in #646
- @tugot17 made their first contribution in #644
Full Changelog: v0.1.12...v0.1.13-rc0
v0.1.12
What's Changed
- chore(doc): Temp workaround missing pytorch docs by @junrushao in #577
- fix(dataclass): collect py_class fields from plain bases by @junrushao in #575
- chore(release): Version bump after release v0.1.11 by @yongwww in #579
- Update ML infrastructure section with XGrammar link by @Ubospica in #581
- [FEAT][REFLECTION] Add tvm::ffi::reflection::overload_cast to pick overloaded function by @tqchen in #582
- [FEAT] Split SEqHashDef into recursive and non-recursive variants by @tqchen in #583
- [REFACTOR][OrcJIT] Per-session slab-pool memory manager by @cyx-6 in #574
- [BugFix][ROCm] Prefer upstream PyTorch DLPack API in torch extension loader by @zihaomu in #585
- [Minor] log ninja result by @DarkSharpness in #584
- [BUILD] TVM_FFI_COLD_CODE / TVM_FFI_PREDICT_FALSE macros and cold-marking of error paths by @tqchen in #589
- [FIX][RUST] use
$crate::in tvm_ffi_dll_export_typed_func! and ensure! by @lucifer1004 in #590 - [EXTRA][FEAT] VisitErrorContext for visit-context-aware error reporting by @tqchen in #587
- [FEAT][FFI] Add ostream operator<< for Any/ObjectRef/Variant/Optional by @tqchen in #596
- [FEAT] Optimize Expected for minimal compiled code and efficiency by @tqchen in #599
- [FEAT] Streamline AccessPath/AccessStep print format by @tqchen in #598
- [CI] Use uv tool run for sdist build instead of pipx by @tqchen in #600
- [CORE] Make AnyView trivially copyable — match C-ABI struct passing by @tqchen in #602
- feat(python): add tensor methods to align with C++ APIs by @kainzhong in #604
- [FIX] Drop test_empty_tensor_attributes (numpy dlpack stride change) by @tqchen in #607
New Contributors
- @zihaomu made their first contribution in #585
- @kainzhong made their first contribution in #604
Full Changelog: v0.1.11...v0.1.12
v0.1.11
What's Changed
- [FEAT] Recursive DLPack container conversion for auto torch.Tensor return by @Kathryn-cat in #517
- [fix] Move container stream scanning from Cython to C++ for efficiency by @Kathryn-cat in #521
- chore(release): Version bump after release v0.1.10 by @junrushao in #522
- build(deps): replace cmake version exclusion with uv exclude-newer by @junrushao in #524
- Revert "build(deps): replace cmake version exclusion with uv exclude-newer" by @junrushao in #525
- build(deps): replace cmake version exclusion with uv exclude-newer by @junrushao in #526
- fix(cython): Segfault in free-threaded Py_DecRef Cleanup by @junrushao in #529
- feat(c_class): warn when reflected fields lack Python type annotations by @junrushao in #531
- fix(py_class): support
super().__init__()ininit=Falsesubclasses by @junrushao in #532 - fix(py_class): propagate parent total_size through empty intermediate classes by @junrushao in #539
- fix(py_class): support
tvm_ffi.dtypeandtvm_ffi.Deviceas field type annotations by @junrushao in #540 - refactor(dataclass): consolidate dunder method installation into _dunder.py by @junrushao in #541
- fix(c_class): restore
__init__installation from__ffi_init__TypeAttrColumn by @junrushao in #543 - feat(py_class): support
frozen=Truefor immutable instances by @junrushao in #542 - feat(container): add structural
__eq__/__ne__/__hash__to Array, List, Map, Dict by @junrushao in #545 - fix(init): register ffi_init as TypeMethod and use MISSING sentinel by @junrushao in #546
- perf(container): use iterator lookup instead of exception handling in Map/Dict by @junrushao in #548
- feat(dataclass): emit ffi_init stubs, harden field registration, and support Python 3.14 by @junrushao in #549
- feat(string): add String::Split, EscapedStringPy, and rename EscapeString by @junrushao in #550
- fix(py_class): remove ffi_init_inplace to fix memory leak by @junrushao in #551
- feat(dataclass): Introduce more utility methods in
tvm_ffi.dataclasses.*by @junrushao in #555 - feat(dataclass): add asdict, astuple, and match_args support by @junrushao in #556
- feat(core): Introduce Attribute-Carrying Language-Agnostic Enums by @junrushao in #554
- fix(enum): add class iteration and len by @junrushao in #558
- fix(dataclass): resolve cross-module forward refs by @junrushao in #559
- [FEAT] Enhance map_dataclass_to_tuple with JIT unpack_dataclass_to_tuple by @tqchen in #563
- fix(dataclass): distinguish containers from dataclasses by @junrushao in #557
- fix(container): align sequence equality and contains by @junrushao in #560
- refactor(enum)!: hide identity fields, add IntEnum/StrEnum, consolidate accessors by @junrushao in #564
- doc: clarify structural_eq semantics and py_class eq/hash interaction by @yaoyaoding in #566
- feat: Added typed method registration for py_class by @Kathryn-cat in #567
- feat(enum): add payload enum compatibility behavior by @junrushao in #568
- [REFACTOR] Optimized Python callback path via TVMFFIPyCallbackArgSetter by @tqchen in #569
- [REFACTOR] libinfo: add extra_lib_paths parameter for foreign-caller support by @tqchen in #570
- [FIX] Handle kTVMFFIRawStr / kTVMFFIByteArrayPtr in callback args path by @tqchen in #573
- [OrcJIT] Arena JITLinkMemoryManager with GOTPCRELX fix (Linux) by @cyx-6 in #527
Full Changelog: v0.1.10...v0.1.11
v0.1.10
What's Changed
- chore(release): Add GPG Key from Yong Wu by @yongwww in #474
- [FIX] Prevent integer overflow in GetDataSize on 32-bit platforms by @gnguralnick in #475
- refactor(dataclasses)!: remove Python-side field descriptor infrastructure by @junrushao in #478
- feat: add cuLaunchKernelEx support by @lucifer1004 in #476
- chore(release): Version bump after release v0.1.9 by @yongwww in #481
- feat(python)!: enforce slots=() for Object subclasses via _ObjectSlotsMeta by @junrushao in #480
- refactor!: consolidate repr_print/deep_copy into dataclass.cc with recursive hash/compare APIs by @junrushao in #482
- feat(python): expose recursive compare to Python with comprehensive tests by @junrushao in #484
- test(python): add comprehensive RecursiveHash test suite by @junrushao in #485
- [FEAT] Add CMake namespace aliases for source dependency builds by @ctuu in #479
- feat(python): wire C++ auto-generated ffi_init to Python init by @junrushao in #486
- feat(python): reimplement c_class as register_object + structural dunders by @junrushao in #488
- [FEAT] Skip imports in config mode by @tqchen in #489
- [FIX] Fix the config loading in windows case by @tqchen in #490
- feat(python): wire init from C++ reflection in register_object and stubgen by @junrushao in #491
- test(python): add regression test for register_object init wiring by @junrushao in #493
- doc: add dataclass reflection guide and update related docs by @junrushao in #494
- [FIX] Fix 3 deny-level clippy lints in Rust bindings by @Aphoh in #496
- fix(python): remove broken instancecheck/subclasscheck from _ObjectSlotsMeta by @junrushao in #498
- feat(c_api)!: extend TVMFFIFieldInfo setter to support FunctionObj dispatch by @junrushao in #500
- feat(ffi)!: centralize object creation with CreateEmptyObject/HasCreator by @junrushao in #501
- feat(cython): expose additional C API symbols in base.pxi by @junrushao in #502
- feat(ffi)!: add ffi_convert type attribute and Python-defined type support by @junrushao in #503
- feat(cython): add TypeSchema type conversion with function-pointer dispatch by @junrushao in #504
- feat(python): add field registration, _register_py_class, and Field descriptor by @junrushao in #505
- feat(python): add
@py_classdecorator for Python-defined FFI dataclasses by @junrushao in #506 - feat(python): add structural equality/hashing support to
py_classandfieldby @junrushao in #507 - feat(python): auto-register _ffi* dunder methods in @py_class as TypeMethod by @junrushao in #508
- refactor(python)!: rename
structure=tostructural_eq=by @junrushao in #509 - fix(build): resolve type ambiguity and macro redefinition in unity builds by @junrushao in #512
- [FEAT] Add map_dataclass_to_tuple to make_kwargs_wrapper by @tqchen in #515
- [OrcJIT] Add LLVM ORC JIT v2 dynamic object loader addon by @yaoyaoding in #254
- fix(ci): pin pypa/gh-action-pypi-publish to SHA for Apache allowlist by @junrushao in #518
- [FFI][Reflection] Lazily resolve KWARGS sentinel in auto-init by @akaashrp in #519
New Contributors
- @yongwww made their first contribution in #474
- @gnguralnick made their first contribution in #475
- @lucifer1004 made their first contribution in #476
- @ctuu made their first contribution in #479
- @Aphoh made their first contribution in #496
- @akaashrp made their first contribution in #519
Full Changelog: v0.1.9...v0.1.10
v0.1.9
What's Changed
- chore(release): Version bump after release v0.1.8 by @junrushao in #404
- fix: add unified_api.h include to device_guard.h by @cyx-6 in #405
- Revert "feat: Add
tvm_ffi.Function.__init__" by @junrushao in #406 - [CUDA] Isolate unified api to only in cubin launcher by @tqchen in #408
- [FIX] Fix the error propagation in the case of tensor arguments by @tqchen in #409
- doc: abi overview by @junrushao in #402
- [Feat] Support lower PyTorch versions in dtype handling by @nan2088 in #414
- feat: Add repr generation support for @c_class dataclasses by @Dayuxiaoshui in #411
- docs: add PaddlePaddle quickstart and load example by @SigureMo in #415
- feat: add kw_only support for dataclass init generation by @guan404ming in #384
- [DLPack] bump to latest version by @guan404ming in #420
- fix: handle empty metadata in get_global_func_metadata by @guan404ming in #417
- Update the logic of checking
#embedby @oraluben in #418 - feat: add Rust binding for
Array<T>by @khj809 in #348 - Fix two issues that undefined behavior sanitizer caught by @henrylhtsang in #419
- [Error] Unify EnvErrorAlreadySet to error.kind by @tqchen in #425
- doc: Standalone Stub Generation Doc by @junrushao in #427
- doc: Standalone Exception Handling by @junrushao in #428
- doc: Merge C++ tooling and C++ packaging by @junrushao in #429
- feat: add ffi::Expected for exception-free error handling by @guan404ming in #399
- doc: Update Kernel Library Guide by @junrushao in #431
- chore: Switch from mypy to ty by @junrushao in #432
- Reliability update by @oraluben in #435
- doc: Export Functions and Classes by @junrushao in #436
- doc: More Developer Manuals by @junrushao in #437
- refactor: Get
compiled_kernelfrom Triton Call Directly by @sgjzfzzf in #423 - chore: Run ty in dev environment by @junrushao in #441
- fix(build): Broken Wheel Testing by @junrushao in #444
- fix: handle UTF-8 bytes correctly in JSON parser control character check by @MasterJH5574 in #442
- feat: Introduce List as Mutable Sequence by @junrushao in #443
- fix: Suppress GCC warning for array bounds in String class by @oraluben in #439
- Add Support for NVIDIA Ampere GPUs in _get_cuda_target by @guoyuhong in #440
- feat: add
__copy__,__deepcopy__, and__replace__for FFI objects by @junrushao in #438 - feat: Claude Skill for TVM-FFI Development by @junrushao in #445
- feat: add
DefaultFactorysupport to field reflection by @junrushao in #446 - feat: add
ffi.GetInvalidObjectglobal function for MISSING singleton by @junrushao in #447 - [CORE] Enable customized AnyHash/Equal in Object Type attr by @tqchen in #451
- [TEST] Addback missing test for init once by @tqchen in #452
- [EXTRA] Introduce StructuralKey by @tqchen in #453
- doc: Properly document
field_static_type_indexand add more tests by @junrushao in #456 - [Feature] Support AMD HIP for cpp extension by @DarkSharpness in #460
- feat: add DFS-based ffi.ReprPrint for unified object repr by @junrushao in #454
- [REACTOR] Cleanup and improve map array containers by @tqchen in #462
- [FEAT] Introduce mutable Dict by @tqchen in #463
- [ERROR] Complete support of CHECK macros by @tqchen in #465
- [COMPACT][TEMP] Array compact temp fix by @tqchen in #467
- ROCm: fix DLPack current_work_stream and force addon override for Torch exchange API by @hubertlu-tw in #466
- feat: add CLAUDE.md and dev server launch config by @junrushao in #468
- feat(stub): use distinct container type origins in type schema and stub generation by @junrushao in #469
- [ABI] Add begin_index to TypeAttrColumn by @tqchen in #471
New Contributors
- @Dayuxiaoshui made their first contribution in #411
- @SigureMo made their first contribution in #415
- @henrylhtsang made their first contribution in #419
- @sgjzfzzf made their first contribution in #423
- @guoyuhong made their first contribution in #440
- @hubertlu-tw made their first contribution in #466
Full Changelog: v0.1.8...v0.1.9
v0.1.8-post2
What's Changed
Full Changelog: v0.1.8-post1...v0.1.8-post2
v0.1.8-post1
What's Changed
Full Changelog: v0.1.8-post0...v0.1.8-post1
v0.1.8-post0
What's Changed
- chore(release): Version bump after release v0.1.8 by @junrushao in #404
- fix: add unified_api.h include to device_guard.h by @cyx-6 in #405
- Revert "feat: Add
tvm_ffi.Function.__init__" by @junrushao in #406
Full Changelog: v0.1.8...v0.1.8-post0
v0.1.8
What's Changed
- [Feature] Support dynamic-style overload for FFI object types by @DarkSharpness in #286
- fix(lint): Suppress latest clang-tidy warnings by @junrushao in #361
- [Enhancement] Refactor cubin launcher by @oraluben in #300
- fix(build): Link dl and pthread dependencies for tvm_ffi by @junrushao in #360
- chore(release): Version bump after v0.1.7 release by @junrushao in #367
- doc: Add release_process.rst by @junrushao in #368
- [Feature] support C++ dtype_trait and Python-side mapping to C++ dtype by @DarkSharpness in #374
- fix: add bounds checking for size() and stride() methods by @guan404ming in #375
- feat: add array contains support by @guan404ming in #377
- chore: fix compiler warnings by @guan404ming in #378
- fix: add negative index bounds check in ArrayObj by @guan404ming in #376
- feat: Introduce
<tvm/ffi/tvm_ffi.h>by @junrushao in #369 - doc: c++ toolchain by @junrushao in #373
- doc: Tensor and DLPack by @junrushao in #363
- doc: Reorder Sections in Python Packaging by @junrushao in #372
- feat: add bool support for Array and Map by @guan404ming in #380
- Fix TVMFFIEnvSetDLPackManagedTensorAllocator to correctly return the original allocator by @nan2088 in #371
- [ADDONS] Add licence and notice for torch-c-dlpack-ext by @cyx-6 in #385
- feat: add find and substr methods to String by @guan404ming in #383
- chore: replace C-style cast with static_cast in String::substr by @guan404ming in #386
- [feat] Add overflow check for uint64_t/size_t in TypeTraits::CopyToAnyView by @nan2088 in #370
- doc: Any and AnyView by @junrushao in #382
- doc: Tensor Usage by @junrushao in #390
- fix: out-of-bounds read in
StringViewToDLDataType_with non-null-terminated strings by @khj809 in #387 - ci: add clang-tidy to ci_test by @guan404ming in #389
- feat: add starts_with and ends_with to String by @guan404ming in #388
- doc: Object and Class by @junrushao in #392
- docs: document structural_equal and structural_hash for Array and Map by @guan404ming in #379
- fix: TypeStr support for Any type in reflection Init by @guan404ming in #393
- feat: Add
tvm_ffi.Function.__init__by @junrushao in #395 - doc: Function, Exception and Module by @junrushao in #394
- [ADDONS] Update torch-c-dlpack-ext to 0.1.5 by @cyx-6 in #398
- [RFC][Error][ABI] Update Error to enable future compact to cause chaining by @tqchen in #396
- [CMAKE] Allow threads to be not found for cross compilation by @tqchen in #397
- [CMAKE] Allow explicit turning threads off by @tqchen in #400
- [CMAKE] Allow explcitly turning dl off by @tqchen in #401
New Contributors
- @guan404ming made their first contribution in #375
- @nan2088 made their first contribution in #371
- @khj809 made their first contribution in #387
Full Changelog: v0.1.7...v0.1.8-rc0
v0.1.7
What's Changed
- chore(release): Bump version after v0.1.6 release by @junrushao in #346
- Allow
tvm_ffi.device(..., id)where id is numpy or torch scalar by @wrongtest-intellif in #347 - feat(stubgen): Package generation with
--init-*flags by @junrushao in #295 - feat(cmake): Introduce
tvm_ffi_configure_targetandtvm_ffi_installby @junrushao in #351 - chore: Run examples on
maincommits by @junrushao in #353 - doc: Revamp Python Packaging by @junrushao in #349
- doc: Update README.md by @junrushao in #352
- doc: Improve python packaging doc by @junrushao in #355
- build: Rename Import Targets by @junrushao in #354
- doc: Final tweaks on Python Packaging by @junrushao in #358
New Contributors
- @wrongtest-intellif made their first contribution in #347
Full Changelog: v0.1.6...v0.1.7-rc0