The GitHub Actions job "CI" on tvm-ffi.git/main has succeeded.
Run started by GitHub user tqchen (triggered by tqchen).

Head commit for run:
de93d564a13c7f4d74255b907dd2370ad9874cd8 / Tianqi Chen 
<[email protected]>
[FEAT] Split SEqHashDef into recursive and non-recursive variants (#583)

The single SEqHashDef flag treated every nested free var inside a
def-region field as a fresh def. That conflates two different binding
shapes:

- Recursive (function parameters): the value var and any free vars
  inside its sub-fields are co-introduced at the same binding site.

- Non-recursive (normal binding): only the immediate value var binds;
  free vars in the var's sub-fields are use references that must
  resolve against an outer-scope binding.

This PR splits the flag in two so each binding shape can be expressed
directly, and updates the structural-equal / structural-hash machinery
to distinguish them when descending into a FreeVar's own sub-fields.
The custom `__ffi_s_equal__` / `__ffi_s_hash__` callback signature
gains a typed kind for the def-mode argument; legacy callers passing
a bool continue to compile and preserve their meaning via the standard
bool->int coercion (true -> 1 = Recursive, false -> 0 = None).

The Cython / Python bindings mirror the rename and add the new
non-recursive flag to the dataclass field vocabulary. Regression tests
cover the four recursive / non-recursive corner cases on a new
`TDefHolder` test type whose `def_recursive` and `def_non_recursive`
fields hold a FreeVar with a nested FreeVar sub-field.

Report URL: https://github.com/apache/tvm-ffi/actions/runs/25684583439

With regards,
GitHub Actions via GitBox


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to