|
| 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