# For Reference: Roadmap 2021 ### Q1: Release of Solidity 0.8.0 (but we think it will be out before New Year) Conduct the Language Survey Full language coverage of SMTChecker New language features ### Q2: Language Server prototype Complete language coverage in the IR Support for all artefacts via the IR (e.g. various debugging outputs) New language features ### Q3: Release of Solidity 0.9.0 Solving the stack pressure issue with the Yul optimiser First preview/release of a “standard library” New language features In the field you should be at least 75% certain about the achievability of the given milestone. ### Q4: Gas costs of new IR on par with old codegen or better (Prototypal) support of non-mainnet and cross-chain applications (i.e. rollups) New language features In the field you should be at least 50% certain about the achievability of the given milestone. # Milestones Solidity 2022 ### Q1: - Mark IR non-experimental (not default) - IR as efficient as old codegen - [CP] Language Server released (symbolic renaming and syntax highlighting) - [AB] Preview of standard library - [CR] User-defined types and operators and conversion from literals ### Q2: - [CR] SMT+LP solver used in optimizer - [CP] further LSP features ### Q3: - [DK] Compile-time-constant expression evaluation (concept; initial implementation for simple functions - e.g. immediate return + arithmetic and casting; will interact with generics) - [HM] finish / implement memory management / allocation (research on solving this at the codegen or a higher level by introducing something like a mixed IR.) ### Q4: - [DK CR] first experimental implementation of generics (unless it turns out it is not possible) - [CP] code completion for LSP ## Heap Wishlist: - *Doing research on libraries*: if we want to make away with libraries, need to do research on how it's used, and how to convince OZ to switch. - Upstream integration of grammar based fuzzer - Enums with data (plus match) - Catching custom errors and general improvements of error handling. - Optimize the default optimizer sequence using yul phaser (needs corpus of contracts to run on) - LSP: Refactor import wildcards to explicit import statements - Technical debt: Rewrite cli using standard json - Technical debt: Switch to nlohman-json - Find out what additional debug info is needed - *Debug mode from the compiler*. Initial idea for stack traces: using an event or a call to a precompile at the beginning of each internal / external functions. Use tracing in VM to generate a stack trace.