chore: remove revm/portable from default feature set#159
Merged
Conversation
2f4c7f7 to
2f9a693
Compare
prestwich
approved these changes
May 24, 2026
Member
prestwich
left a comment
There was a problem hiding this comment.
yeah this makes sense to me
Evalir
approved these changes
May 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

[Claude Code]
Summary
Remove
revm/portablefrom trevm's default features. Bump to0.34.3.The
portablefeature only affectsblstandc-kzg: it forces blst's BLS12-381 Fp arithmetic onto a generic code path instead of the hand-tuned ADX/BMI2 assembly. It does not affectsecp256k1(ecrecover), and on aarch64 it is a no-op entirely (__BLST_PORTABLE__is only read by the x86_64 branch of blst'sassembly.S).In return for keeping
portableon by default, trevm-using binaries paid:BLS12-381(EIP-2537) andKZG point eval(EIP-4844) precompiles on the rollup EVM. Rarely-called in practice, so small impact.(crate, version), enablingrevm/c-kzg+revm/blst+revm/portablein trevm's defaults also forcedc-kzg/portable+blst/portableonto the samec-kzg/blstlinked viaalloyfor blob sidecar building. This is a hot per-block path in builders.The
portablefeature is still available as an opt-in for anyone deploying to pre-Broadwell x86 CPUs without ADX/MULX:Also fixes pre-existing breakage of the
--lib --bins --no-default-featuresbuild, which CI surfaced but the--all-targetspre-push hook masked (dev-deps re-enabletest-utils, which transitively pullstracingin via the defaultestimate_gasfeature):tracinga non-optional dep.src/inspectors/spanning.rs,src/test_utils.rs, and the exporteddiscard_if!macro all assumetracingis in scope unconditionally; gating it behindestimate_gaswas the wrong shape. Droppeddep:tracingfrom theestimate_gasfeature accordingly.evm/need_tx.rs,evm/ready.rs,evm/transacted.rs,evm/has_tx.rs, andfill/fillers.rsthat were only consumed inside#[cfg(feature = "call")]/#[cfg(feature = "estimate_gas")]blocks.Migration
Anyone who was implicitly relying on portable mode (rare - it's a fallback for old CPUs) needs to add
features = ["portable"]to their trevm dependency. Modern x86_64 (Broadwell+/Ryzen+) and all aarch64 builds are unaffected by the default switch.