finds.dev← search

// the find

tqchen/ffi-navigator

★ 248 · Python · Apache-2.0 · updated Jul 2025

FFI Navigator is a language server that adds cross-language goto-definition and find-references between Python and C++, built specifically around Apache TVM's PackedFunc registration macros, with partial support for PyTorch, MXNet, DGL, and Taichi. It's for people working in these specific C++/Python hybrid codebases who are tired of grepping for the C++ side of a Python FFI call.

Sidesteps the hard general problem (cross-language analysis) by pattern-matching known FFI registration macros per project — a pragmatic, narrow solution instead of an over-engineered one. It's a real LSP implementation, so it plugs into VSCode and Emacs lsp-mode without a bespoke client. The dialect system (python/ffi_navigator/dialect) isolates per-project pattern logic cleanly, so adding a new FFI convention doesn't mean touching the core resolver. Tests include full dummy repo trees mimicking TVM/PyTorch/MXNet/DGL/Taichi layouts, which is closer to integration testing than typical unit-test coverage for a tool like this.

Small and quiet project (248 stars, 25 forks) that reads as maintenance-only — last push mid-2025, no changelog, no sign of new dialects being added. It's entirely dependent on regex-style pattern matching of specific macros (TVM_REGISTER_GLOBAL, c10::RegisterOperators, pybind m.def); if a host project changes its FFI registration convention, navigation breaks silently with no error surfaced. Eglot users don't get first-class support — the README just points to a stale third-party PR and branch as a workaround for the multi-server-per-language limitation. Single maintainer (TVM's creator) and a scope limited to five hardcoded dialects means adopting it for any other FFI-heavy project requires writing a new dialect from scratch with minimal documentation beyond 'look at the existing ones.'

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →