Fe is a Rust-like language for the EVM, with explicit effects, message-passing contracts, and an integrated toolchain.

Joined September 2020
67 Photos and videos
Fe Language retweeted
Jun 5
my source inventory script has found this, i couldn't believe my eyes
12
5
121
49,665
While I have your attention, go checkout bountiful.fe-lang.org Hack the contracts, steal the ETH!

Jun 5
my source inventory script has found this, i couldn't believe my eyes
1
9
67
13,486
Fe Language retweeted
Replying to @rayoo_eth
ไธๅฆ‚Fe๏ผŒๆˆ‘ๆ›ดๅ–œๆฌขrust้ฃŽๆ ผ๏ผŒ้™ๆ€ๅผบ็ฑปๅž‹็ณป็ปŸใ€‚@official_fe
1
2
305
Fe Language retweeted
Armรฉ el PRIMER tutorial en espaรฑol sobre @official_fe ๐Ÿ› ๏ธ Si vienes de Solidity, te interesa: vemos setup, tu primer "Hola Mundo" y sus conceptos clave. Mรญralo acรก ๐Ÿ‘‡ youtu.be/f2CL5jAgTKM #FeLang #EVM #Web3
1
2
3
622
Amigos, ยกaquรญ tenรฉis el primer tutorial en espaรฑol sobre los conceptos mรกs importantes de Fe! ๐Ÿ‡ช๐Ÿ‡ธ
Armรฉ el PRIMER tutorial en espaรฑol sobre @official_fe ๐Ÿ› ๏ธ Si vienes de Solidity, te interesa: vemos setup, tu primer "Hola Mundo" y sus conceptos clave. Mรญralo acรก ๐Ÿ‘‡ youtu.be/f2CL5jAgTKM #FeLang #EVM #Web3
2
250
Solady's LibMap/LibBitMap is beautifully hand-tuned assembly. It also shouldn't have to exist. Every line works around one missing Solidity feature: const generics. In Fe the same thing is ~60 lines, no assembly, same gas. ๐Ÿงต
1
3
8
1,483
Can you look at this and not like it? ๐Ÿคญ
Replying to @cburgdorf
Enter Fe: Both problems collapse into a single compile-time solution. Since bit-width is a const generic parameter, there is zero code duplication. One `StoragePackedArray<BITS>` covers every width we want to support. Because BITS is known at compile time, the slot derivation, lane width, and bitmasks fold into immediate constants. The high-level Fe code compiles down to the same gas as the assembly Solady writes by hand. No assembly needed.
1
1
327
Trait bounds are among my favorite toys ๐Ÿช€
Replying to @cburgdorf
Only eight widths compile: 1, 2, 4, 8, 16, 32, 64, 128. The rule: BITS has to divide 256 evenly. Since 256 is a power of two, those eight are exactly the widths at or below 128 that pack a slot with zero leftover bits. Enforced by a marker trait implemented exactly eight times. Every method carries `where PackedBits<BITS>: ValidPackedBits`, so `StoragePackedArray<7>` is a compile-time type error, not a runtime surprise.
1
1
247
Little known Fe feature ๐Ÿ‘‡
Replying to @cburgdorf
Storage layout is part of the type. `StoragePackedArray<const BITS, const SALT = _>` has a second const generic: `SALT`, the layout seed. The `= _` default tells the compiler to infer it per field. Each field's lanes live in a distinct keccak-derived slot region. For upgradeable contracts that need a stable layout across versions, pin the salt explicitly: `StoragePackedArray<8, core::keccak("v1.tiers")>`.
1
1
264
Fe Language retweeted
This is the big mindset change, PL are here to help you, not to be a whiteboard design jerk off
Solady's LibMap/LibBitMap is beautifully hand-tuned assembly. It also shouldn't have to exist. Every line works around one missing Solidity feature: const generics. In Fe the same thing is ~60 lines, no assembly, same gas. ๐Ÿงต
1
2
3
671
โ™ฅ๏ธๆˆ‘ๅ€‘ไนŸๆ˜ฏ
Replying to @rayoo_eth
ไธๅฆ‚Fe๏ผŒๆˆ‘ๆ›ดๅ–œๆฌขrust้ฃŽๆ ผ๏ผŒ้™ๆ€ๅผบ็ฑปๅž‹็ณป็ปŸใ€‚@official_fe
1
162
Enter Fe: Both problems collapse into a single compile-time solution. Since bit-width is a const generic parameter, there is zero code duplication. One `StoragePackedArray<BITS>` covers every width we want to support. Because BITS is known at compile time, the slot derivation, lane width, and bitmasks fold into immediate constants. The high-level Fe code compiles down to the same gas as the assembly Solady writes by hand. No assembly needed.
1
2
3
858
Solady's LibMap is hundreds of lines of hand-tuned assembly. The same thing in Fe: ~60 lines, no assembly, same gas. @cburgdorf breaks it down for us ๐Ÿ‘‡
Solady's LibMap/LibBitMap is beautifully hand-tuned assembly. It also shouldn't have to exist. Every line works around one missing Solidity feature: const generics. In Fe the same thing is ~60 lines, no assembly, same gas. ๐Ÿงต
1
4
208
Anon. What's your excuse for not hacking the ETH that's been sitting on Fe written contracts on the Ethereum Mainnet already? Are your agents to weak or is Fe too strong?
Bountiful is back. Following the public release of Fe 26.1.0, we've put the new compiler to work on a real-world project that's now live on Ethereum mainnet: a permissionless bug bounty platform with real ETH on the line. ๐Ÿ”— bountiful.fe-lang.org
1
3
342
Fe Language retweeted
Fe has been turning heads recently. Check out this example showcasing what it can do ๐Ÿ‘‡
Every smart contract dev knows them: the 32-byte magic numbers at the top of files. Storage slots. Type hashes. Selectors. Fancy math. Returned as constants from build scripts, or copy-pasted from somewhere. Taking @Uniswap 's tick math as an example. Fe has a different answer ๐Ÿงต
2
9
501
Fe Language retweeted
Replying to @recmo @newmichwill
ps - If you like Rust langs, check @official_fe and @plankevm they will want help and PRs :)
2
4
204
๐Ÿ‘‡
May 25
hardcoded constants usually hide years of accumulated pain
2
421
Zig got there via comptime. Rust got there via const fn. Fe got there too. Different paths, same answer: the bytecode doesn't care, but humans do.
May 25
Replying to @official_fe
looks very similar to how comptime in zig works. it's a good idea that allows you to show how the sausage is made and makes the code more auditable, while the bytecode stays is the same optimized shape as if you had hardcoded the magic values.
1
255
Every smart contract dev knows them: the 32-byte magic numbers at the top of files. Storage slots. Type hashes. Selectors. Fancy math. Returned as constants from build scripts, or copy-pasted from somewhere. Taking @Uniswap 's tick math as an example. Fe has a different answer ๐Ÿงต
3
2
23
5,522
The strict rules make this safe: A `const fn` can have mutable state, loops with break/continue, match, operator overloads but no effects, no with and only const-to-const calls. Pure by construction. You can't accidentally make your constant non-constant.
1
4
396
Same idea runs deeper than user code. Fe's compiler doesn't actually know what "Solidity ABI" is. The mapping that says u256 encodes as the string "uint256" is stdlib. Event topic0 hashes, 4-byte selectors, ABI sizes are all derived from these stdlib const fns. No compiler magic. The std library is the source of truth.
5
332