Skip to content

Commit

Permalink
Release v0.25.0 (#1839)
Browse files Browse the repository at this point in the history
## Version v0.25.0

### Fixed

- [#1821](#1821): Can handle
missing tables in snapshot.
- [#1814](#1814): Bugfix: the
`iter_all_by_prefix` was not working for all tables. The change adds a
`Rust` level filtering.

### Added

- [#1831](#1831): Included the
total gas and fee used by transaction into `TransactionStatus`.
- [#1821](#1821): Propagate
shutdown signal to (re)genesis. Also add progress bar for (re)genesis.
- [#1813](#1813): Added back
support for `/health` endpoint.
- [#1799](#1799): Snapshot
creation is now concurrent.
- [#1811](#1811): Regenesis
now preserves old blocks and transactions for GraphQL API.

### Changed

- [#1833](#1833): Regenesis of
`SpentMessages` and `ProcessedTransactions`.
- [#1830](#1830): Use
versioning enum for WASM executor input and output.
- [#1816](#1816): Updated the
upgradable executor to fetch the state transition bytecode from the
database when the version doesn't match a native one. This change
enables the WASM executor in the "production" build and requires a
`wasm32-unknown-unknown` target.
- [#1812](#1812): Follow-up PR
to simplify the logic around parallel snapshot creation.
- [#1809](#1809): Fetch
`ConsensusParameters` from the database
- [#1808](#1808): Fetch
consensus parameters from the provider.

#### Breaking

- [#1826](#1826): The changes
make the state transition bytecode part of the `ChainConfig`. It
guarantees the state transition's availability for the network's first
blocks.
The change has many minor improvements in different areas related to the
state transition bytecode:
- The state transition bytecode lies in its own
file(`state_transition_bytecode.wasm`) along with the chain config file.
The `ChainConfig` loads it automatically when `ChainConfig::load` is
called and pushes it back when `ChainConfig::write` is called.
- The `fuel-core` release bundle also contains the
`fuel-core-wasm-executor.wasm` file of the corresponding executor
version.
- The regenesis process now considers the last block produced by the
previous network. When we create a (re)genesis block of a new network,
it has the `height = last_block_of_old_netowkr + 1`. It continues the
old network and doesn't overlap blocks(before, we had `old_block.height
== new_genesis_block.hegiht`).
- Along with the new block height, the regenesis process also increases
the state transition bytecode and consensus parameters versions. It
guarantees that a new network doesn't use values from the previous
network and allows us not to migrate `StateTransitionBytecodeVersions`
and `ConsensusParametersVersions` tables.
- Added a new CLI argument, `native-executor-version,` that allows
overriding of the default version of the native executor. It can be
useful for side rollups that have their own history of executor
upgrades.
    - Replaced:
      
      ```rust
               let file = std::fs::File::open(path)?;
               let mut snapshot: Self = serde_json::from_reader(&file)?;
      ```
      
      with a:
      
      ```rust
               let mut json = String::new();
               std::fs::File::open(&path)
.with_context(|| format!("Could not open snapshot file: {path:?}"))?
                   .read_to_string(&mut json)?;
let mut snapshot: Self = serde_json::from_str(json.as_str())?;
      ```
      because it is 100 times faster for big JSON files.
- Updated all tests to use `Config::local_node_*` instead of working
with the `SnapshotReader` directly. It is the preparation of the tests
for the futures bumps of the `Executor::VERSION`. When we increase the
version, all tests continue to use
`GenesisBlock.state_transition_bytecode = 0` while the version is
different, which forces the usage of the WASM executor, while for tests,
we still prefer to test native execution. The `Config::local_node_*`
handles it and forces the executor to use the native version.
- Reworked the `build.rs` file of the upgradable executor. The script
now caches WASM bytecode to avoid recompilation. Also, fixed the issue
with outdated WASM bytecode. The script reacts on any modifications of
the `fuel-core-wasm-executor` and forces recompilation (it is why we
need the cache), so WASM bytecode always is actual now.
- [#1822](#1822): Removed
support of `Create` transaction from debugger since it doesn't have any
script to execute.
- [#1822](#1822): Use `fuel-vm
0.49.0` with new transactions types - `Upgrade` and `Upload`. Also added
`max_bytecode_subsections` field to the `ConsensusParameters` to limit
the number of bytecode subsections in the state transition bytecode.
- [#1816](#1816): Updated the
upgradable executor to fetch the state transition bytecode from the
database when the version doesn't match a native one. This change
enables the WASM executor in the "production" build and requires a
`wasm32-unknown-unknown` target.

### Before requesting review
- [x] I have reviewed the code myself

### After merging, notify other teams

- [x] [Rust SDK](https://github.com/FuelLabs/fuels-rs/)
- [x] [Sway compiler](https://github.com/FuelLabs/sway/)
- [x] DevOps

## What's Changed
* Add PR template by @Dentosal in
#1806
* feat: Parallellize snapshot creation by @segfault-magnet in
#1799
* Follow-up PR to simplify the logic around parallel snapshot creation
by @xgreenx in #1812
* Bugfix: the `iter_all_by_prefix` was not working for all tables by
@xgreenx in #1814
* Added back support for `/health` endpoint by @xgreenx in
#1813
* Fetch consensus parameters from the provider by @xgreenx in
#1808
* Fetch `ConsensusParameters` from the database by @xgreenx in
#1809
* Handle FTI messages in executor by @Voxelot in
#1787
* Use state transition bytecode from the database by @xgreenx in
#1816
* feat: (re)genesis graceful shutdown by @segfault-magnet in
#1821
* Use `fuel-vm 0.49.0` with new transactions types by @xgreenx in
#1822
* Included the total gas and fee into `TransactionStatus` by @xgreenx in
#1831
* Use versioning enum for WASM executor input and output by @xgreenx in
#1830
* Support upgradability of the consensus parameters and state transition
bytecode in genesis by @xgreenx in
#1826
* Store old blocks and txs after regenesis by @Dentosal in
#1811
* Regenesis of `SpentMessages` and `ProcessedTransactions` by @xgreenx
in #1833


**Full Changelog**:
v0.24.2...v0.25.0
  • Loading branch information
xgreenx authored Apr 18, 2024
1 parent 3b862bf commit c9caf5d
Show file tree
Hide file tree
Showing 7 changed files with 252 additions and 238 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).

Description of the upcoming release here.

## [Version 0.25.0]

### Fixed

- [#1821](https://github.com/FuelLabs/fuel-core/pull/1821): Can handle missing tables in snapshot.
Expand Down
Loading

0 comments on commit c9caf5d

Please sign in to comment.