// the find
tqchen/ffi-navigator
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.'