foundry-rs / foundry-rs/foundry
meta(compilers): Vyper support
- 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
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