|
7 | 7 |
|
8 | 8 | Fe is moving fast. Read up on all the latest improvements.
|
9 | 9 |
|
10 |
| -**WARNING: All Fe releases are alpha releases and only meant to share the development progress with developers and enthusiasts. It is NOT yet ready for production usage.** |
11 |
| - |
12 | 10 | [//]: # (towncrier release notes start)
|
| 11 | +## 0.22.0 "Vulcanite" (2023-04-05) |
| 12 | + |
| 13 | +This is the first non-alpha release of Fe. Read our [announcement](https://blog.fe-lang.org/posts/beyond-alpha-preparing-fe-for-the-future/) for more details. |
| 14 | + |
| 15 | +### Features |
| 16 | + |
| 17 | + |
| 18 | +- Support for tests. |
| 19 | + |
| 20 | + example: |
| 21 | + |
| 22 | + ``` |
| 23 | + #test |
| 24 | + fn my_test() { |
| 25 | + assert 26 + 16 == 42 |
| 26 | + } |
| 27 | + ``` |
| 28 | + |
| 29 | + Tests can be executed using the `test` subcommand. |
| 30 | + |
| 31 | + example: |
| 32 | + |
| 33 | + `$ fe test foo.fe` ([#807](https://github.com/ethereum/fe/issues/807)) |
| 34 | +- Fixed broken trait orphan rule |
| 35 | + |
| 36 | + Fe has an orphan rule for Traits similar to Rust's that requires |
| 37 | + that either the trait or the type that we are implementing the trait for |
| 38 | + are located in the same ingot as the `impl`. This rule was implemented |
| 39 | + incorrectly so that instead of requiring them to be in the same ingot, |
| 40 | + they were required to be in the same module. This change fixes this |
| 41 | + so that the orphan rule is enforced correctly. |
| 42 | + ([#863](https://github.com/ethereum/fe/issues/863)) |
| 43 | + |
| 44 | +- `address` values can now be specified with a number literal, with no explicit |
| 45 | + cast. So instead of `let t: address = address(0xfe)`, one can now write |
| 46 | + `let t: address = 0xfe`. This also means that it's possible to define `const` |
| 47 | + addresses: `const SOME_KNOWN_CONTRACT: address = 0xfefefefe` |
| 48 | + ([#864](https://github.com/ethereum/fe/issues/864)) |
| 49 | + |
| 50 | + |
| 51 | +### Bugfixes |
| 52 | + |
| 53 | + |
| 54 | +- Fixed resolving of generic arguments to associated functions. |
| 55 | + |
| 56 | + For example, this code would previously crash the compiler: |
| 57 | + |
| 58 | + ```rust |
| 59 | + ... |
| 60 | + // This function doesn't take self |
| 61 | + pub fn run_static<T: Computable>(_ val: T) -> u256 { |
| 62 | + return val.compute(val: 1000) |
| 63 | + } |
| 64 | + ... |
| 65 | + |
| 66 | + // Invoking it would previously crash the compiler |
| 67 | + Runner::run_static(Mac()) |
| 68 | + ... |
| 69 | + ``` |
| 70 | + ([#861](https://github.com/ethereum/fe/issues/861)) |
| 71 | + |
| 72 | + |
| 73 | +### Improved Documentation |
| 74 | + |
| 75 | + |
| 76 | +- Changed the Deployment tutorial to use foundry and the Sepolia network ([#853](https://github.com/ethereum/fe/issues/853)) |
| 77 | + |
| 78 | + |
13 | 79 | ## 0.21.0-alpha (2023-02-28)
|
14 | 80 |
|
15 | 81 |
|
|
0 commit comments