Skip to content

Commit

Permalink
Bump module serialization format to v2
Browse files Browse the repository at this point in the history
  • Loading branch information
webmaster128 committed Feb 8, 2022
1 parent c2d807b commit 4ffa110
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Expand Up @@ -21,6 +21,8 @@ and this project adheres to
### Fixed

- cosmwasm-vm: Fix `AddAssign` implementation of `GasInfo`.
- cosmwasm-vm: Bump `MODULE_SERIALIZATION_VERSION` to "v2" because the module
serialization format changed between Wasmer 2.0.0 and 2.1.x.

## [1.0.0-beta4] - 2021-12-23

Expand Down
20 changes: 18 additions & 2 deletions packages/vm/src/modules/file_system_cache.rs
Expand Up @@ -14,7 +14,23 @@ use crate::errors::{VmError, VmResult};
/// The string is used as a folder and should be named in a way that is
/// easy to interprete for system admins. It should allow easy clearing
/// of old versions.
const MODULE_SERIALIZATION_VERSION: &str = "v1";
///
/// See https://github.com/wasmerio/wasmer/issues/2781 for more information
/// on Wasmer's module stability concept.
///
/// ## Version history:
/// - **v1**:<br>
/// cosmwasm_vm < 1.0.0-beta5. This is working well up to Wasmer 2.0.0 as
/// [in wasmvm 1.0.0-beta2](https://github.com/CosmWasm/wasmvm/blob/v1.0.0-beta2/libwasmvm/Cargo.lock#L1412-L1413)
/// and [wasmvm 0.16.3](https://github.com/CosmWasm/wasmvm/blob/v0.16.3/libwasmvm/Cargo.lock#L1408-L1409).
/// Versions that ship with Wasmer 2.1.x such [as wasmvm 1.0.0-beta3](https://github.com/CosmWasm/wasmvm/blob/v1.0.0-beta3/libwasmvm/Cargo.lock#L1534-L1535)
/// to [wasmvm 1.0.0-beta5](https://github.com/CosmWasm/wasmvm/blob/v1.0.0-beta5/libwasmvm/Cargo.lock#L1530-L1531)
/// are broken, i.e. they will crash when reading older v1 modules.
/// - **v2**:<br>
/// Version for cosmwasm_vm 1.0.0-beta5 / wasmvm 1.0.0-beta6 that ships with Wasmer 2.1.1.
/// - **v3**:<br>
/// Version for Wasmer 2.2.0 which contains a [module breaking change to 2.1.x](https://github.com/wasmerio/wasmer/pull/2747).
const MODULE_SERIALIZATION_VERSION: &str = "v2";

/// Representation of a directory that contains compiled Wasm artifacts.
pub struct FileSystemCache {
Expand Down Expand Up @@ -173,7 +189,7 @@ mod tests {
let module = compile(&wasm, None, &[]).unwrap();
cache.store(&checksum, &module).unwrap();

let file_path = format!("{}/v1/{}", tmp_dir.path().to_string_lossy(), checksum);
let file_path = format!("{}/v2/{}", tmp_dir.path().to_string_lossy(), checksum);
let serialized_module = fs::read(file_path).unwrap();
assert_eq!(serialized_module.len(), 1040);
}
Expand Down

0 comments on commit 4ffa110

Please sign in to comment.