26.2.0 (2026-06-23) Features Contract fields are now immutable by default unless declared with mut . Immutable fields must be initialized before every successful init exit and are embedded into contract code; declare fields as mut to keep using storage-backed mutable contract state. During init , immutable field reads before assignment observe the zero/default value, reassignment is allowed, and…
Real-world demo of Fe's CTFE: ports Uniswap V3's getSqrtRatioAtTick to Fe as pub const fn , with bit-exact MIN_SQRT_RATIO / MAX_SQRT_RATIO bounds matching the canonical Solidity implementation.
Real-world demo of Fe's CTFE: ports Uniswap V3's getSqrtRatioAtTick to Fe as pub const fn , with bit-exact MIN_SQRT_RATIO / MAX_SQRT_RATIO bounds matching the canonical Solidity implementation.
The original fixtures spot-checked i8/i32/i256 (and u8/u32/u256 for Bounded) on the assumption that the per-type impls were mechanical copy-paste. Adding the remaining types (u16, u64, u128, usize, i16, i64, i128, isize) so that any typo in the per-type literals — wrong type name, wrong constant — would fail loudly. For Bounded: each type asserts both T::min() and T::max() . For UnsignedAbs: each…
Port the official mainnet deposit contract (0x00000000219ab540356cBB839Cbe05303d7705Fa) to Fe and verify byte-for-byte equivalence against the Solidity reference. Each test vector: Pre-computes the expected deposit_data_root in Rust so both contracts accept the deposit. Calls deposit(...) on the Fe and Solidity contracts with matching value. Asserts get_deposit_root() / get_deposit_count() agree…
Changelog 26.1.0 (2026-04-30) Features Update the core ABI helper traits and APIs. Custom ABI implementations now use AbiSize::HEAD_SIZE , payload_size , Decode::decode_payload , and AbiSpan::payload_end ; encoders are created with a fixed output size, and root versus field encoding is split into explicit helpers such as encode_alloc and encode_single_root_alloc . ( #1404-abi ) Added…
Changelog 26.0.1 (2026-04-13) Bugfixes Suppress downstream type mismatch diagnostics when the underlying type is already invalid. This reduces cascading error noise and makes compiler output easier to read. ( #1386 ) Fix chained method call type inference (e.g. result.map(fn1).map(fn2) ). The compiler now correctly unifies types through canonicalized receivers, resolving incorrect type mismatch…