Bump rain-solmem 0.1.3 -> 0.1.26 (and the dep chain pinning it) - #560
Conversation
recursive_deps=false means vendored dep src resolves through this repo's remappings, and three reachable deps hard-pin rain-solmem-0.1.3/ in src, so the bump carries its minimum chain to keep one solmem tree: - rain-solmem 0.1.3 -> 0.1.26 - rain-interpreter-interface 0.1.0 (orphaned name) -> rainlang-interface 0.2.5 (successor package; src delta vs 0.1.0 is only the solmem and rain-math-binary import pins) - rain-datacontract 0.1.0 -> 0.1.3 - rain-extrospection 0.1.1 -> 0.1.13 - rain-math-binary 0.1.1 -> 0.1.4 (required by rainlang-interface 0.2.x) solmem 0.1.26 deleted LibStackPointer; its only two rainlang imports were dead (using-directive never invoked) and are removed, not substituted. Regenerated src/generated pointers to fixpoint via script/Build.sol: RainlangParser, RainlangExpressionDeployer and Rainlang bytecode moved (solmem LibBytes32Array codegen changes plus embedded address cascade); RainlangInterpreter, RainlangStore, RainlangReferenceExtern unchanged. Pruned stale remappings by hand (soldeer appends, never prunes), including two pre-existing dangling lines (rain-deploy-0.1.2, rain-extrospection-0.1.0). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Important Review skippedToo many files! This PR contains 274 files, which is 174 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (5)
📒 Files selected for processing (274)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
copy-artifacts flagged the four committed ABI JSONs that embed the moved
bytecode (crates/bindings/abi/Rainlang.json and crates/test_fixtures/abi/
{Rainlang,RainlangExpressionDeployer,RainlangParser}.json); regenerated
via script/CopyArtifacts.sol.
rainix@main now enforces the 4096-byte agent-context cap in static and
rs-static; CLAUDE.md was 8587 bytes and failed both on every push. Cut
under the cap per the check's heuristic: kept the non-recoverable
rulings (jidoka process, NatSpec tagging, generated-pointers regen
cascade), cut what is discoverable from the repo (architecture tour,
dependency lists, command inventory).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
@coderabbitai assess this PR size classification for the totality of the PR with the following criterias and report it in your comment: S/M/L PR Classification Guidelines:This guide helps classify merged pull requests by effort and complexity rather than just line count. The goal is to assess the difficulty and scope of changes after they have been completed. Small (S)Characteristics:
Review Effort: Would have taken 5-10 minutes Examples:
Medium (M)Characteristics:
Review Effort: Would have taken 15-30 minutes Examples:
Large (L)Characteristics:
Review Effort: Would have taken 45+ minutes Examples:
Additional Factors to ConsiderWhen deciding between sizes, also consider:
Notes:
|
Bumps
rain-solmem0.1.3 → 0.1.26 (latest published), plus the minimum dependency chain required for the whole compile graph to sit on a single solmem version.Why more than solmem moved
recursive_deps = falsemeans vendored dependency sources resolve their imports through this repo's remappings. Three dependencies hard-pinrain-solmem-0.1.3/inside their reachablesrc/, so bumping solmem alone cannot build (and remapping-aliasingrain-solmem-0.1.3/onto the 0.1.26 tree would silently compile 0.1.3-written code against 0.1.26 — not done):rain-solmemrain-interpreter-interfacerainlang-interface. ItsLibBytecode.solpins solmem.rainlang-interfacerain-interpreter-interface; 0.2.5 pins solmem 0.1.26. Source delta vs the old 0.1.0 package is only the solmem + rain-math-binary import pins — every file this repo imports is otherwise byte-identical, so the migration is purely import-path renames.rain-datacontractrain-math-float's un-importedscript/does), so the dropped write API in 0.1.3 is irrelevant here.rain-extrospectionLibExtrospectBytecode.sol(imported by tests) pins solmem; 0.1.13 pins 0.1.26.rain-math-binaryrainlang-interface0.2.x'sLibParseMeta.sol/LibGenParseMeta.solpinrain-math-binary-0.1.4/.LibCtPop.sol(the only file this repo imports) is unchanged.rain-math-floatstays at 0.1.1 deliberately — 0.2.0 exists but is out of scope for the solmem chain.What the 23 solmem revisions removed
LibStackPointer.solwas deleted from solmem (verified dead org-wide before deletion). rainlang imported it in exactly two test files (test/src/lib/op/evm/LibOpBlockNumber.t.sol,LibOpBlockTimestamp.t.sol), each with ausing LibStackPointer for Pointer;directive whose members were never invoked. Both dead import + using lines are removed; no substitution was needed. Everything else rainlang imports from solmem (LibPointer,LibBytes,LibBytes32Array,LibUint256Array,LibMemCpy) still ships in 0.1.26 with compatible signatures.Generated bytecode moved — deploy impact
solmem 0.1.26 changes compiled-in library code (
LibBytes32Array: cached tail-length loads and a hardened in-placeunsafeExtendguard against scratch-space bases and self-extension), soscript/Build.solwas iterated to a fixpoint and the regeneratedsrc/generated/*.pointers.solare committed with the bump:RainlangParser(bytecode +14 bytes; newBYTECODE_HASH, new Zoltu address0x21608dad4827eE7C9Bf413B958258F14140Bb052), and — because they embed the parser/each other's deterministic addresses —RainlangExpressionDeployer(now0xb90c299a8321fbdd8D0F367e560f5341F840dA3F) andRainlang(now0x820FB8ae43350f6F4F60117955751b0a6777aC54).RainlangInterpreter,RainlangStore,RainlangReferenceExtern— their compiled bytecode is byte-identical under solmem 0.1.26, so their deterministic addresses hold.For the next deploy this means parser, expression deployer and Rainlang land at new addresses; interpreter/store/reference-extern stay where they are. Parse meta inputs are untouched (
meta/unchanged). The committed ABI artifacts that embed bytecode (crates/bindings/abi/Rainlang.json,crates/test_fixtures/abi/{Rainlang,RainlangExpressionDeployer,RainlangParser}.json) are regenerated viascript/CopyArtifacts.solfor the same reason.Known-red until deploy: the five
LibInterpreterDeployProdTestfork tests assert the current pointer addresses are live on Arbitrum/Base/Base-Sepolia/Flare/Polygon. Any bytecode-moving PR fails them until the new suite is deployed via the manual deploy workflow (pre-existing: main's own CI, run 29477065455, fails the identical five with "Interpreter not deployed" — prod already lags main — and #557 shows the same red). They are deliberately not touched here — deploying is a human-gated release action, and weakening the parity test would defeat its point. Everything else in the suite (1589 tests) passes.CI-forced side fix
rainix@mainnow enforces the org agent-context cap (4096 bytes) instaticandrs-static; this repo'sCLAUDE.mdwas 8587 bytes, so both jobs fail on every push regardless of content. TrimmedCLAUDE.mdto 2629 bytes per the check's own heuristic — kept the non-recoverable rulings (jidoka process, NatSpec tagging rule, the generated-pointers regen cascade), cut what is discoverable from the repo (architecture tour, dependency lists, command inventory).Remappings
soldeerappends but never prunes, so stale lines were removed by hand: the oldrain-solmem-0.1.3,rain-datacontract-0.1.0,rain-extrospection-0.1.1,rain-interpreter-interface-0.1.0,rain-math-binary-0.1.1lines, plus two pre-existing dangling entries (rain-deploy-0.1.2,rain-extrospection-0.1.0) that pointed at directories soldeer no longer installs and that nothing reachable imports.QA
LibInterpreterDeployTestfails against the base pointers (the parser/expression-deployer/RainlangBYTECODE_HASH/DEPLOYED_ADDRESSconstants moved — see diff), and the fullforge testrun is the CI gate.soldeer.lock) for dependency content, andscript/Build.sol's deterministic local-EVM deploy for every regenerated constant — iterated to a fixpoint (run until output stops changing), never hand-edited.🤖 Generated with Claude Code