reconverge-driver 0.1.1

Compiler driver that runs reconverge analyses and emits versioned artifacts
reconverge-driver-0.1.1 is not a library.

The reconverge rustc driver binary.

Invoked by cargo as RUSTC_WORKSPACE_WRAPPER: argv[1] is the path to the real rustc, followed by ordinary rustc arguments. The driver runs the full compilation through rustc_driver and, once analysis is done, walks the crate through rustc_public (Stable MIR). Compilation then continues normally, so a wrapped cargo check behaves exactly like an unwrapped one. Without any RECONVERGE_* variable set the wrapper is a pure passthrough.

Environment interface (set by cargo reconverge, or by hand):

  • RECONVERGE_ARTIFACTS_OUT=<dir> — run the lint passes over every detected kernel and write a findings-<crate>.json artifact (findings.v1).
  • RECONVERGE_CC=<X.Y> — target compute capability for RC004 capacity context; must be in the dialect's table.
  • RECONVERGE_MIR_OUT=<dir> — dump <kernel>.mir per detected kernel plus a detection.txt manifest.

Kernel detection (strategies in order): the post-expansion #[kernel] attribute does not survive — upstream's proc macro consumes it and re-emits the function renamed under its reserved naming contract with #[unsafe(no_mangle)] (verified against cuda-macros at the pinned rev). That renamed item is the marker the macro leaves AND the symbol name, so the marker-item and symbol-name strategies coincide; both are implemented by reconverge_dialect_oxide::kernel_base_name.

Unstable-internals justification (CONTRIBUTING.md): analysis uses rustc_public exclusively. rustc_driver, rustc_interface, and rustc_middle appear only because rustc_public::run! needs them in scope to instantiate the compiler — there is no stable driver entry point yet.