foundry-rs / foundry-rs/foundry

meta(compilers): Vyper support

Open
#8,113 1 comment 6 reactions 0 assignees View on GitHub
A-compiler T-meta
Dominant language
Rust
Stars
10.6k
Forks
2.6k
Avg merge
16h 38m
Merged PRs (30d)
511

Description

### Component

Forge

### Describe the feature you would like

Tracking issue for Vyper support improvements. For now just a list of things to consider.

- [ ] Standard library. First `Vm.vy` draft is in https://github.com/foundry-rs/forge-std/pull/567, need to figure out a way to distribute
- [ ] Better debugger support. Due to https://github.com/foundry-rs/foundry/issues/2704 we have conflicts of `source_id`s between Vyper and Solc. Need to keep track of them separately.
- [x] Verification etherscan #10702 and blockscout [supports](https://docs.blockscout.com/for-users/verifying-a-smart-contract/blockscout-smart-contract-verification-api#vyper-contracts) automated Vyper verifcation for now
- [ ] https://github.com/foundry-rs/foundry/issues/7612. `vm.deployCode` would be very useful to allow deploying arbitrary contracts from Vyper tests and making them much more powerful. Need to figure out a clean way to execute EVM frames from inside `Cheatcodes`.
- [ ] Version manager? UX with Vyper is a bit less smooth then with solc because we require users to have Vyper pre-installed. There is a version manager in https://github.com/crypdoughdoteth/vyper-rs, however it initializes and uses Python venv which is a bit different to how svm-rs works.
- [ ] https://github.com/foundry-rs/foundry/issues/5411 Currently coverage relies on Solidity AST. We can either analyze Vyper AST separately or only rely on source maps to display line coverage.
- [x] Vyper templates: https://github.com/foundry-rs/foundry/pull/9930

### Additional context

_No response_

Contributor guide

Open the contributing guide

Research direction

The issue is a tracking list rather than a scoped task; start by reviewing the unchecked items and their linked issues, including #2704, #7612, #5411, forge-std PR #567, and the Vyper version-manager link. A contribution is not defined here; completion would need a chosen item and agreed acceptance criteria.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.