Skip to content

Remove ALL git dependencies + submodule path-deps from raindex (zero exceptions) #2593

Description

@thedavidmeister

Tracking issue: get raindex's Rust workspace off all git dependencies and submodule path-deps — no exceptions. End state: every dep resolves from crates.io (Solidity from soldeer), there are zero git = … entries, and the git submodules are deleted.

Direct git deps (root Cargo.toml)

dep current source target status
alloy-ethers-typecast git rainlanguage/alloy-ethers-typecast remove entirely (replaced by alloy Provider primitives) refactor done in working tree (soldeer branch); needs commit + lockfile regen
rain-erc git rain.erc @rev crates.io rain-erc 0.1.1 published — swap ready
rain-error-decoding git rain.error @rev crates.io ❌ not published — publish first
wasm-bindgen-utils git rain.wasm @rev crates.io ⚠️ only 0.0.12-alpha.20 on crates.io — needs a release / version alignment

Submodule path-deps (lib/rain.interpreter/…)

path-dep crate target status
rain-math-float rain-math-float crates.io 0.1.4
rain-metadata-bindings rain-metadata-bindings crates.io 0.1.1
rain-metaboard-subgraph rain-metaboard-subgraph crates.io 🔄 publishing (see rain.metadata#120 push-race)
rain-metadata (cli) rain-metadata crates.io ❌ cli still has its own alloy-ethers-typecast git dep → remove it, then publish a clean 0.1.x
rain_interpreter_bindings rainlang_bindings crates.io ❌ publish (rainlang autopublish)
rain_interpreter_dispair rainlang_dispair crates.io ❌ publish
rain_interpreter_parser rainlang_parser crates.io ❌ publish (needs bindings + dispair on crates.io first for version coord)
rain-interpreter-eval rainlang-eval crates.io blocked by foundry-evm (git-only) — must be resolved, see below

The foundry-evm blocker (must be resolved, NOT accepted)

rainlang-eval is a runtime dependency of raindex (crates/common fuzz/replays/add_order, crates/quote quote_debug) and currently depends on foundry-evm, which is git-only and cannot be published to crates.io. This is the hardest blocker, but it is not an accepted exception — to reach zero git deps it must be resolved, e.g.:

  • migrate rainlang-eval to a crates.io-published EVM (e.g. revm directly) instead of foundry-evm, or
  • vendor / replace the foundry-evm usage with registry-published equivalents.

Interim milestone (optional, to delete the submodule sooner): raindex may temporarily consume rainlang-eval as a rev-pinned git dep pointing at github.com/rainlanguage/rain.interpreter so the submodule can be dropped ahead of the foundry-evm work. This is a stepping stone only — the final state still requires rainlang-eval (and therefore foundry-evm) on crates.io with no git deps remaining.

Solidity submodules → soldeer (raindex#2586)

sushixswap-v2, rain.deploy, rain.raindex.interface, rain.interpreter (contracts) factor out via the soldeer migration, not crates.io.

Sequenced plan

  1. Publish rain-error-decoding; release/align wasm-bindgen-utils.
  2. Remove alloy-ethers-typecast from the rain-metadata cli, publish rain-metadata 0.1.x.
  3. Publish rainlang_bindings, rainlang_dispair, then rainlang_parser.
  4. Resolve foundry-evm for rainlang-eval and publish it to crates.io (hardest item — track as needed).
  5. Land the typecast removal (already drafted) + Cargo.lock regen.
  6. Swap raindex root Cargo.toml: every dep → crates.io versions (Solidity → soldeer).
  7. Delete the now-unused submodules.

Done when

  • raindex root Cargo.toml has zero git = … deps (including rainlang-eval), no submodule path-deps, and the git submodules are removed.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions