Skip to content

Commit 74a947a

Browse files
Roadmap (#3898)
<!-- Reference any GitHub issues resolved by this PR --> Closes # ## Introduced changes <!-- A brief description of the changes --> - ## Checklist <!-- Make sure all of these are complete --> - [ ] Linked relevant issue - [ ] Updated relevant documentation - [ ] Added relevant tests - [ ] Performed self-review of the code - [ ] Added changes to `CHANGELOG.md` --------- Co-authored-by: Franciszek Job <[email protected]>
1 parent 013369f commit 74a947a

File tree

3 files changed

+162
-5
lines changed

3 files changed

+162
-5
lines changed

.github/images/plot.png

-35.7 KB
Binary file not shown.

README.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,7 @@ Starknet Foundry is under active development! Expect a lot of new features to ap
5353
- [ ] Test coverage reports (check out [cairo-coverage](https://github.com/software-mansion/cairo-coverage)) 🏗️
5454
- [ ] L1 ↔ L2 messaging and cross-chain testing
5555

56-
## Performance
57-
58-
![Performance plot](.github/images/plot.png)
59-
60-
`snforge` achieves performance comparable to the Cairo Test Runner with improved user experience.
56+
See the [whole roadmap](./ROADMAP.md).
6157

6258
## Getting Help
6359

ROADMAP.md

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
# Roadmap
2+
3+
Tentative roadmap for Starknet Foundry. This document reflects the state of the roadmap at the time of writing.
4+
We strive for our roadmap to reflect user needs and feedback, expect changes to this document.
5+
6+
**All feedback and request welcome.**
7+
8+
## Table of Contents
9+
10+
<!-- TOC -->
11+
* [Roadmap](#roadmap)
12+
* [Table of Contents](#table-of-contents)
13+
* [Reference](#reference)
14+
* [Forge](#forge)
15+
* [🏗 Test Partitioning](#-test-partitioning)
16+
* [🏗 Asserting Steps in Execution](#-asserting-steps-in-execution)
17+
* [Reverting Storage Changes in Execution](#reverting-storage-changes-in-execution)
18+
* [🏗 Sierra -> Casm Compilation](#-sierra---casm-compilation)
19+
* [Performance Investigation](#performance-investigation)
20+
* [Advanced Forking / Forking State Asserting](#advanced-forking--forking-state-asserting)
21+
* [Derive Macro for `Fuzzable` Trait](#derive-macro-for-fuzzable-trait)
22+
* [Typesafe Contract "declare"](#typesafe-contract-declare)
23+
* [Research Variant and Differential Testing, Better Fuzzing Algorithms](#research-variant-and-differential-testing-better-fuzzing-algorithms)
24+
* [Cast](#cast)
25+
* [New Cast Scripts](#new-cast-scripts)
26+
* [Transaction Dry Run](#transaction-dry-run)
27+
* [CLI Revamp and Configuration Refactor](#cli-revamp-and-configuration-refactor)
28+
* [Better Accounts Support](#better-accounts-support)
29+
* [New Multicall Interface](#new-multicall-interface)
30+
* [Contract Aliases in `snfoundry.toml`](#contract-aliases-in-snfoundrytoml)
31+
<!-- TOC -->
32+
33+
## Reference
34+
35+
* Item "size" is in the scale 1 to 5 and reflects its relative complexity compared to other items in the roadmap.
36+
* Items marked with 🏗️ are in progress.
37+
* Items marked with ✅ are done.
38+
39+
## Forge
40+
41+
### 🏗 Test Partitioning
42+
43+
_Size: 3_
44+
45+
https://github.com/foundry-rs/starknet-foundry/issues/3548
46+
47+
Partitioning test suite into smaller test suites, to be run on separate machines in CI. Similar to `cargo nextest`.
48+
49+
### 🏗 Asserting Steps in Execution
50+
51+
_Size: 2_
52+
53+
https://github.com/foundry-rs/starknet-foundry/issues/2671
54+
55+
Feature for asserting the number of steps used in test execution.
56+
57+
### Reverting Storage Changes in Execution
58+
59+
_Size: 3_
60+
61+
https://github.com/foundry-rs/starknet-foundry/issues/3837
62+
63+
Change the test execution model to revert storage changes from top-level calls in case of recoverable failure.
64+
65+
### 🏗 Sierra -> Casm Compilation
66+
67+
_Size: 3_
68+
69+
https://github.com/foundry-rs/starknet-foundry/issues/3832
70+
71+
Sierra -> Casm performance investigation and optimization (if viable).
72+
73+
### Performance Investigation
74+
75+
_Size: 3_
76+
77+
https://github.com/foundry-rs/starknet-foundry/issues/3899
78+
79+
Investigate bottlenecks in standard test execution (workspace & package processing, config run, collecting configs, test
80+
execution) using tracing harnesses. Performance report on eventual findings and measurements for future optimizations.
81+
82+
### Advanced Forking / Forking State Asserting
83+
84+
_Size: 5_
85+
86+
New test mechanism for detecting regressions in new contract versions (for upgrades on chain). Forking and asserting
87+
state changes after executing a test scenario.
88+
89+
### Derive Macro for `Fuzzable` Trait
90+
91+
_Size: 2_
92+
93+
https://github.com/foundry-rs/starknet-foundry/issues/2968
94+
95+
Ability to automatically derive `Fuzzable` trait for structs if they contain only `Fuzzable` fields.
96+
97+
### Typesafe Contract "declare"
98+
99+
_Size: 4_
100+
101+
https://github.com/foundry-rs/starknet-foundry/issues/1531
102+
103+
Detect and fail on invalid contract names at compilation time.
104+
105+
### Research Variant and Differential Testing, Better Fuzzing Algorithms
106+
107+
_Size: 5_
108+
109+
https://github.com/foundry-rs/starknet-foundry/issues/2464
110+
111+
Inspired by features from Ethereum's Foundry, research the viability of adding variant and differential testing and
112+
integrating better
113+
fuzzing algorithms.
114+
115+
## Cast
116+
117+
### New Cast Scripts
118+
119+
_Size: 5_
120+
121+
https://github.com/foundry-rs/starknet-foundry/issues/3523
122+
123+
New Cast Scripts with focus on the ease of use, using Scarb plugins, integrated into snforge/scarb tests structure.
124+
125+
### Transaction Dry Run
126+
127+
_Size: 1_
128+
129+
https://github.com/foundry-rs/starknet-foundry/issues/2136
130+
131+
Running `sncast` transaction without executing them through the fee estimation endpoint.
132+
133+
### CLI Revamp and Configuration Refactor
134+
135+
_Size: 4_
136+
137+
Removing non-common arguments that are used as common (e.g. `-account`). Internal changes to how `sncast` loads and
138+
combines configuration.
139+
140+
### Better Accounts Support
141+
142+
_Size: 4_
143+
144+
Support for Ledger wallet, keystore support with encryption, account storage rework.
145+
146+
### New Multicall Interface
147+
148+
_Size: 3_
149+
150+
https://github.com/foundry-rs/starknet-foundry/issues/3810
151+
152+
Native multicall support for invoking transactions in `sncast invoke` or a better dedicated command. Removal of
153+
multicall files.
154+
155+
### Contract Aliases in `snfoundry.toml`
156+
157+
_Size: 1_
158+
159+
https://github.com/foundry-rs/starknet-foundry/issues/2240
160+
161+
Aliases for contracts in `snfoundry.toml` that can be used in commands instead of contract addresses.

0 commit comments

Comments
 (0)