diff --git a/README.md b/README.md index a644e86a7..79a642ef2 100644 --- a/README.md +++ b/README.md @@ -6,40 +6,15 @@ Fe is an emerging smart contract language for the Ethereum blockchain. [![Build Status](https://github.com/ethereum/fe/workflows/CI/badge.svg)](https://github.com/ethereum/fe/actions) [![Coverage](https://codecov.io/gh/ethereum/fe/branch/master/graph/badge.svg)](https://codecov.io/gh/ethereum/fe) - -NOTE: **The larger part of the `master` branch will be replaced with the brand-new implementation, which is currently under development in the [fe-v2](https://github.com/ethereum/fe/tree/fe-v2) branch. Please refer to the branch if you kindly contribute to Fe** +NOTE: **Most of the `master` branch will be replaced with a new implementation, which is currently under development in the [fe-v2](https://github.com/ethereum/fe/tree/fe-v2) branch. Please refer to the branch if you kindly contribute to Fe** ## Overview -Fe is a statically typed language for the Ethereum Virtual Machine (EVM). It is inspired by Rust and easy to learn -- especially for new developers entering the Ethereum ecosystem. - -## Features & Goals - -* Bounds and overflow checking -* Decidability by limitation of dynamic program behavior -* More precise gas estimation (as a consequence of decidability) -* Static typing -* Pure function support -* Restrictions on reentrancy -* Static looping -* Module imports -* Standard library -* Usage of [YUL](https://docs.soliditylang.org/en/latest/yul.html) IR to target both EVM and eWASM -* WASM compiler binaries for enhanced portability and in-browser compilation of - Fe contracts -* Implementation in a powerful, systems-oriented language (Rust) with strong safety guarantees to reduce risk of compiler bugs - -Additional information about design goals and background can be found in the [official announcement](https://snakecharmers.ethereum.org/fe-a-new-language-for-the-ethereum-ecosystem/). - -## Language Specification - -We aim to provide a full language specification that should eventually be used to formally verify the correctness of the compiler. A work in progress draft of the specification can be found [here](http://fe-lang.org/docs/spec/index.html). +Fe is a statically typed language for the Ethereum Virtual Machine (EVM). The type system is similar to rust's, with the addition of higher-kinded types (on the `fe-v2` branch). We're exploring additional type system, syntax, and semantic changes. Please note that the current docs reflect the status of the language on the `master` branch. ## Progress -Fe development is still in its early stages. We have a basic [Roadmap for 2021](https://notes.ethereum.org/LVhaTF30SJOpkbG1iVw1jg) that we want to follow. We generally try to drive the development by working through real world use cases. Our next goal is to provide a working Uniswap implementation in Fe which will help us to advance and form the language. - -Fe had its first alpha release January 2021 and is now following a monthly release cycle. +Fe has had several early releases which can be used today, though these releases are lacking some features and don't reflect our complete vision for the language. The current focus is on finishing the `fe-v2` branch, and development of the [sonatina](https://github.com/fe-lang/sonatina) compiler backend which Fe will use. ## Getting started @@ -76,15 +51,16 @@ contract GuestBook { } ``` -A lot more working examples can be found in our [test fixtures directory](https://github.com/ethereum/fe/tree/master/crates/test-files/fixtures/demos). +More examples can be found in our [test fixtures directory](https://github.com/ethereum/fe/tree/master/crates/test-files/fixtures/demos). The most advanced example that we can provide at this point is an implementation of the [Uniswap-V2 core contracts](https://github.com/ethereum/fe/blob/master/crates/test-files/fixtures/demos/uniswap.fe). ## Community - Twitter: [@official_fe](https://twitter.com/official_fe) -- Chat: [Discord](https://discord.gg/ywpkAXFjZH) - +- Chat: + - We've recently moved to [Zulip](https://fe-lang.zulipchat.com/join/dqvssgylulrmjmp2dx7vcbrq/) + - The [Discord](https://discord.gg/ywpkAXFjZH) server is still live, but our preference is zulip. ## License