Skip to content

Commit

Permalink
Merge pull request #1021 from sbillig/update-readme
Browse files Browse the repository at this point in the history
update readme
  • Loading branch information
g-r-a-n-t authored Dec 2, 2024
2 parents a58b65a + b5fe468 commit c2dc82d
Showing 1 changed file with 7 additions and 31 deletions.
38 changes: 7 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down

0 comments on commit c2dc82d

Please sign in to comment.