owned this note
owned this note
Published
Linked with GitHub
# Fe 2021 Goals
Fe aims to achieve the following:
- reliability through language safety and compiler correctness
- usability through syntactic familiarity and tightly-integrated tooling
- quick delivery made possible by the use of the intermediate language, Yul, which is being developed by the Solidity team
Within the next year we would like to deliver a production-ready compiler. The general focus of the first half of 2021 will be to continue implementing basic language features. These features are the most relevant to an audit, so it makes sense for us to tackle them first. Once we begin the audit process, we will shift focus from core language features to tooling.
*Updated September 29, 2021*
See the [release notes](https://github.com/ethereum/fe/blob/master/docs/src/release_notes.md) for recent changes.
**Q1** (definite)
- Demo:
- [x] Basic implementation of the Uniswap protocol
- Features:
- [x] All basic features that are needed for the Uniswap demo
*Update:* see https://github.com/ethereum/fe/blob/master/crates/test-files/fixtures/demos/uniswap.fe
There are a few small TODOs to make this perfect:
- [ ] const support (in progress: [#536](https://github.com/ethereum/fe/pull/536))
- [ ] allow arithmetic without overflow checks (this could be done inside an `unsafe` block, support for which is in progress)
- [ ] support solidity's static byte array encoding for small arrays. Currently all byte arrays are encoded using solidity's dynamic encoding.
- Docs:
- Partial language specification that describes the following:
- [x] Grammar and semantics of Fe
- [ ] Compiler's transformation of Fe to Yul
*Update:* the docs don't cover Yul translation yet
- Website
*Update:* https://fe-lang.org
- [x] basic guides
*Update:* https://fe-lang.org/docs/quickstart/index.html
- [ ] online playground
*Update:* there's been some proof-of-concept work (eg [#344](https://github.com/ethereum/fe/pull/344), but nothing usable yet.
**Q2** (likely)
- Features:
- [x] Support for all language features currently defined within the grammar
- [x] Integration of SafeMath features into the core language
- [x] Implement error message system that allows great context-aware messages
- Docs:
- [ ] Complete language specification in preparation for an audit
*Update:* lots of work has been done here, but it's not yet complete.
See note about audit below.
- [ ] More guides and tutorials
**Q3** (potentially)
- Features:
- [x] Implement a basic module system
- [x] Begin work on standard library
*Update:* in progress (see [#601](https://github.com/ethereum/fe/pull/601)).
- Tooling:
- [ ] Create a lightweight integration testing framework using existing Rust libraries
**Q4** (maybe)
- Begin audit and address any concerns
- Coordinate with Solidity team since they also plan to have a YUL audit at some point.
*Update:* we've decided to postpone an audit until the language is more feature-complete.
The implementation will likely see many large changes to support new features, and we
think it would be most useful if the codebase is audited when it's more stable.
- Features:
- Begin working on advanced language features
- [ ] Generics
- [ ] Interfaces
- [ ] Enums
- [x] Structs
- [ ] Payable/Non-payable addresses
- Tooling:
- [ ] Integrate with EthPM and other existing tooling