Skip to content

Commit 0f45da4

Browse files
committed
Compile release notes
1 parent f2dc404 commit 0f45da4

5 files changed

Lines changed: 67 additions & 49 deletions

File tree

docs/src/release_notes.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,73 @@ Fe is moving fast. Read up on all the latest improvements.
1010
**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.**
1111

1212
[//]: # (towncrier release notes start)
13+
## 0.12.0-alpha (2021-12-31)## 0.12.0-alpha (2021-12-31)
14+
15+
16+
### Features
17+
18+
19+
- Added unsafe low-level "intrinsic" functions, that perform raw evm operations.
20+
For example:
21+
22+
```
23+
fn foo():
24+
unsafe:
25+
__mtore(0, 5000)
26+
assert __mload(0) == 5000
27+
```
28+
29+
The functions available are exactly those defined in yul's "evm dialect":
30+
https://docs.soliditylang.org/en/v0.8.11/yul.html#evm-dialect
31+
but with a double-underscore prefix. Eg `selfdestruct` -> `__selfdestruct`.
32+
33+
These are intended to be used for implementing basic standard library functionality,
34+
and shouldn't typically be needed in normal contract code.
35+
36+
Note: some intrinsic functions don't return a value (eg `__log0`); using these
37+
functions in a context that assumes a return value of unit type (eg `let x: () = __log0(a, b)`)
38+
will currently result in a compiler panic in the yul compilation phase. ([#603](https://github.com/ethereum/fe/issues/603))
39+
- Added an out of bounds check for accessing array items.
40+
If an array index is retrieved at an index that is not within
41+
the bounds of the array it now reverts with `Panic(0x32)`. ([#606](https://github.com/ethereum/fe/issues/606))
42+
43+
44+
### Bugfixes
45+
46+
47+
- Ensure ternary expression short circuit.
48+
49+
Example:
50+
51+
```
52+
contract Foo:
53+
54+
pub fn bar(input: u256) -> u256:
55+
return 1 if input > 5 else revert_me()
56+
57+
fn revert_me() -> u256:
58+
revert
59+
return 0
60+
```
61+
62+
Previous to this change, the code above would **always** revert no matter
63+
which branch of the ternary expressions it would resolve to. That is because
64+
both sides were evaluated and then one side was discarded. With this change,
65+
only the branch that doesn't get picked won't get evaluated at all.
66+
67+
The same is true for the boolean operations `and` and `or`. ([#488](https://github.com/ethereum/fe/issues/488))
68+
69+
70+
### Internal Changes - for Fe Contributors
71+
72+
73+
- Added a globally available *dummy* std lib.
74+
75+
This library contains a single `get_42` function, which can be called using `std::get_42()`. Once
76+
low-level intrinsics have been added to the language, we can delete `get_42` and start adding
77+
useful code. ([#601](https://github.com/ethereum/fe/issues/601))
78+
79+
1380
## 0.11.0-alpha "Karlite" (2021-12-02)
1481

1582

newsfragments/488.bugfix.md

Lines changed: 0 additions & 21 deletions
This file was deleted.

newsfragments/601.internal.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

newsfragments/603.feature.md

Lines changed: 0 additions & 20 deletions
This file was deleted.

newsfragments/606.feature.md

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)