[][src]Crate fe

Fe is an emerging smart contract language for the Ethereum blockchain.

Build Status Coverage

Getting started

Overview

Fe is inspired by Vyper and aims to achieve the goals of the existing Vyper project along with the following additional goals:

Inherited goals

Fe aims to achieve most of the goals of the existing Vyper project. Those goals are described in that project's documentation though we include a summary of them here:

The following is a list of goals or aspects of the existing Vyper project that we do not necessarily wish to duplicate:

Additional goals

Stricter development practices

We wish to promote the following development practices:

Support for eWASM and EVM and the use of YUL

We wish to leverage the YUL IR format as a means of targeting both the eWASM and EVM platforms. YUL is actively developed by the Solidity community and we see a great opportunity for synergy with the Solidity project through shared use of YUL.

Use of Rust as an implementation language

The Rust programming language has been a rising star in the PL community for a number of years. We believe it provides a reasonable balance between the following factors:

The Rust project and Mozilla foundation are also some of the primary drivers behind the WASM project, which will likely end up playing a central role in the Ethereum community. The Rust compiler is one of the premier compilers to target the WASM platform.

The use of a compiled language in general, and Rust in particular, will facilitate improvements in the compiler release process. New compiler versions could be offered as statically compiled binaries (removing dependence on existing Python binaries) or as WASM binaries (opening up the possibility to run Fe in-browser or, in the distant future, on-chain).

Language specification and formal methods

We wish to provide a complete language specification with the following parts:

A work in progress draft of the specification can be found here.

A secondary goal to providing a specification document could be to also provide an executable specification via tools such as the K framework. Providing such an executable specification may become a primary goal if it can be achieved without too much effort and without hampering the achievement of other goals.

Through the application of rigorous development practices and the availability of a complete language specification, we hope to apply formal verification methods to the Fe compiler and also to programs generated by it.

Progress and roadmap

Development of Fe is currently in its early stages. Here's a rough overview of recently completed work as well as some short and long-term goals. None of these lists should be considered exhaustive and should also not be considered to represent the exact prioritization of work items.

Recently achieved goals

Short-term goals

Long-term goals

Community

Functions

main