Skip to content

Releases: argotorg/fe

v26.0.0-alpha.8

26 Feb 12:17

Choose a tag to compare

v26.0.0-alpha.8 Pre-release
Pre-release
Cutting new release

v26.0.0-alpha.7

25 Feb 14:18

Choose a tag to compare

v26.0.0-alpha.7 Pre-release
Pre-release
Cutting new release

v26.0.0-alpha.6

25 Feb 08:45

Choose a tag to compare

v26.0.0-alpha.6 Pre-release
Pre-release
Cutting new release

v26.0.0-alpha.5

19 Feb 23:00

Choose a tag to compare

v26.0.0-alpha.5 Pre-release
Pre-release
Cutting new release

v26.0.0-alpha.4

19 Feb 21:47

Choose a tag to compare

v26.0.0-alpha.4 Pre-release
Pre-release
Produce releases for various architectures

v26.0.0-alpha.3

19 Feb 14:21

Choose a tag to compare

v26.0.0-alpha.3 Pre-release
Pre-release
Produce releases for various architectures

v26.0.0-alpha.2

19 Feb 12:17

Choose a tag to compare

v26.0.0-alpha.2 Pre-release
Pre-release
WIP

v0.26.0

03 Nov 10:53

Choose a tag to compare

0.26.0 "Zircon" (2023-11-03)

Features

  • Give option to produce runtime bytecode as compilation artifact

    Previously, the compiler could only produce the bytecode that is used
    for the deployment of the contract. Now it can also produce the runtime
    bytecode which is the bytecode that is saved to storage.

    Being able to obtain the runtime bytecode is useful for contract
    verification.

    To obtain the runtime bytecode use the runtime-bytecode option
    of the --emit flag (multiple options allowed).

    Example Output:

    • mycontract.bin (bytecode for deployment)
    • mycontract.runtime.bin (runtime bytecode) (#947)
  • New verify command to verify onchain contracts against local source code.

    People need to be able to verify that a deployed contract matches the source code
    that the author claims was used to deploy it. Previously, there was no simple
    way to achieve this.

    These are the steps to verify a contract with the verify command:

    1. Obtain the project's source code locally.
    2. Ensure it is the same source code that was used to deploy the contract. (e.g. check out a specific tag)
    3. From the project directory run fe verify <contract-address> <json-rpc-url>

    Example:

    $ fe verify 0xf0adbb9ed4135d1509ad039505bada942d18755f https://example-eth-mainnet-rpc.com
    It's a match!✨
    
    Onchain contract:
    Address: 0xf0adbb9ed4135d1509ad039505bada942d18755f
    Bytecode: 0x60008..76b90
    
    Local contract:
    Contract name: SimpleDAO
    Source file: /home/work/ef/simple_dao/fe_contracts/simpledao/src/main.fe
    Bytecode: 0x60008..76b90
    
    Hint: Run with --verbose to see the contract's source code.

    (#948)

    Improved Documentation

  • Added a new page on EVM precompiles (#944)

v0.25.0

26 Oct 10:36

Choose a tag to compare

0.25.0 "Yoshiokaite" (2023-10-26)

Features

  • Use the project root as default path for fe test

    Just run fe test from any directory of the project. (#913)

  • Completed std::buf::MemoryBuffer refactor. (#917)

  • Allow filtering tests to run via fe test --filter <some-filter

    E.g. Running fe test --filter foo will run all tests that contain foo in their name. (#919)

  • Logs for successfully ran tests can be printed with the --logs parameter.

    example:

    // test_log.fe
    
    use std::evm::log0
    use std::buf::MemoryBuffer
    
    struct MyEvent {
      pub foo: u256
      pub baz: bool
      pub bar: u256
    }
    
    #test
    fn test_log(mut ctx: Context) {
      ctx.emit(MyEvent(foo: 42, baz: false, bar: 26))
      unsafe { log0(buf: MemoryBuffer::new(len: 42)) }
    }
    
    
    $ fe test --logs test_log.fe
    executing 1 test in test_log:
      test_log ... passed
    
    test_log produced the following logs:
      MyEvent emitted by 0x0000…002a with the following parameters [foo: 2a, baz: false, bar: 1a]
      Log { address: 0x000000000000000000000000000000000000002a, topics: [], data: b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1a\0\0\0\0\0\0\0\0\0\0" }
    
    
    1 test passed; 0 tests failed; 1 test executed
    

    Note: Logs are not collected for failing tests. (#933)

  • Adds 'functions' section to docs with information on self and Context. (#937)

Bugfixes

  • Yul codegen was failing to include string literals used in test assertions. This resulted in a compiler error.

    Example:

    #test
    fn foo() {
        assert false, "oops"
    }
    

    The example code above was failing to compile, but now it compiles and executes as expected. (#926)

Improved Documentation

  • Added a new tutorial: Open Auction (#930)

v0.24.0

10 Aug 19:04

Choose a tag to compare

0.24.0 "Xenotime" (2023-08-10)

Features

  • Added support for project manifests and project dependencies.

    Example:

    my_project
    ├── fe.toml
    └── src
        └── main.fe
    
    # fe.toml
    name = "my_project"
    version = "1.0"
    
    [dependencies]
    my_lib = { path = "../path/to/my_lib", version = "1.0" }
    my_other_lib = "../path/to/my_other_lib"
    

    Note: The current implementation supports circular dependencies. (#908)

Performance improvements

  • MemoryBuffer now allocates an extra 31 bytes. This removes the need for runtime checks and bitshifting needed to ensure safe writing to a MemoryBuffer's region. (#898)

Improved Documentation

  • Link to vs-code extension in Quickstart Guide (#910)