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
- Publish
rain-error-decoding; release/align wasm-bindgen-utils.
- Remove
alloy-ethers-typecast from the rain-metadata cli, publish rain-metadata 0.1.x.
- Publish
rainlang_bindings, rainlang_dispair, then rainlang_parser.
- Resolve
foundry-evm for rainlang-eval and publish it to crates.io (hardest item — track as needed).
- Land the typecast removal (already drafted) + Cargo.lock regen.
- Swap raindex root
Cargo.toml: every dep → crates.io versions (Solidity → soldeer).
- 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.
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)alloy-ethers-typecastProviderprimitives)rain-ercrain-erc 0.1.1published — swap readyrain-error-decodingwasm-bindgen-utils0.0.12-alpha.20on crates.io — needs a release / version alignmentSubmodule path-deps (
lib/rain.interpreter/…)rain-math-float0.1.4rain-metadata-bindings0.1.1rain-metaboard-subgraphrain-metadata(cli)alloy-ethers-typecastgit dep → remove it, then publish a clean0.1.xrain_interpreter_bindingsrain_interpreter_dispairrain_interpreter_parserrain-interpreter-evalfoundry-evm(git-only) — must be resolved, see belowThe foundry-evm blocker (must be resolved, NOT accepted)
rainlang-evalis a runtime dependency of raindex (crates/commonfuzz/replays/add_order,crates/quotequote_debug) and currently depends onfoundry-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.:rainlang-evalto a crates.io-published EVM (e.g.revmdirectly) instead offoundry-evm, orfoundry-evmusage with registry-published equivalents.Interim milestone (optional, to delete the submodule sooner): raindex may temporarily consume
rainlang-evalas a rev-pinned git dep pointing atgithub.com/rainlanguage/rain.interpreterso the submodule can be dropped ahead of the foundry-evm work. This is a stepping stone only — the final state still requiresrainlang-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
rain-error-decoding; release/alignwasm-bindgen-utils.alloy-ethers-typecastfrom therain-metadatacli, publishrain-metadata0.1.x.rainlang_bindings,rainlang_dispair, thenrainlang_parser.foundry-evmforrainlang-evaland publish it to crates.io (hardest item — track as needed).Cargo.toml: every dep → crates.io versions (Solidity → soldeer).Done when
Cargo.tomlhas zerogit = …deps (includingrainlang-eval), no submodule path-deps, and the git submodules are removed.