Skip to content

Draft: Steel Merge #1763

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft

Draft: Steel Merge #1763

wants to merge 2 commits into from

Conversation

gurukamath
Copy link
Contributor

@gurukamath gurukamath commented Jun 17, 2025

🗒️ Description

This PR has some of the changes needed to be able to perform the EEST and EELS merge. Has two distinct components to it

  1. Removing EEST's dependency on EELS. Including copying over some of the State and Trie related code
  2. Using the native t8n implementation when an evm_bin isn't explicitly provided in the command line

This merge unlocks great developer experience features while debugging. It also removes the need for an intermediate eels resolver.

Related EELS PR

🔗 Related Issues

✅ Checklist

  • All: Set appropriate labels for the changes.
  • All: Considered squashing commits to improve commit history.
  • All: Added an entry to CHANGELOG.md.
  • All: Considered updating the online docs in the ./docs/ directory.
  • Tests: All converted JSON/YML tests from ethereum/tests/tests/static have been assigned @ported_from marker.
  • Tests: A PR with removal of converted JSON/YML blockchain tests from ethereum/tests have been opened.
  • Tests: Included the type and version of evm t8n tool used to locally execute test cases: e.g., ref with commit hash or geth 1.13.1-stable-3f40e65.
  • Tests: Ran mkdocs serve locally and verified the auto-generated docs for new tests in the Test Case Reference are correctly formatted.
  • Tests: For PRs implementing a missed test case, update the post-mortem document to add an entry the list.

Copy link
Member

@danceratopz danceratopz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent, thanks so much for this @gurukamath!

I would suggest splitting this into 3 PRs that:

  1. Removes the ethereum-execution dependency.
    • I think this could be insta-merged. Is there any reason we couldn't merge this to main today? cc @marioevz
  2. Adds a new transition tool class for the ethereum-spec-evm and keeps the resolver.
    • This can be insta-merged to main and would allow filling with ./tests located (via git submodule) in EELS (by explicitly specifying the EELS t8n entrypoint).
  3. Removes ethereum-spec-evm-resolver and makes EELS the default.
    • We can't remove this until the ./tests move out of EEST.

Rationale tldr: This allows us to test EEST as a package with ./tests/ in EELS while maintaining filling functionality in EEST until that point.

This also helps avoid accumulating changes into 1 large PR and allows us to get these changes merged incrementally.

Small comment about uv.lock below.

@@ -10,27 +9,27 @@ resolution-markers = [
name = "annotated-types"
version = "0.7.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" }
sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please bump your uv version and replay your upgrade commands to avoid removing the upload-time fields that will be added back by someone updating uv.lock with a newer uv?

If you curl-installed uv, you can do uv self update.

Explanation here:

Comment on lines -51 to -58
else:
# improve behavior of which by resolving the path: ~/relative paths don't work
resolved_path = Path(os.path.expanduser(binary)).resolve()
if resolved_path.exists():
binary = resolved_path
return

# improve behavior of which by resolving the path: ~/relative paths don't work
resolved_path = Path(os.path.expanduser(binary)).resolve()
if resolved_path.exists():
binary = resolved_path
binary = shutil.which(binary) # type: ignore
if not binary:
raise CLINotFoundInPathError(binary=binary)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like it'll give bad ux/unexpected errors for non-eels tools that don't get found in the PATH. Would need to test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants