Skip to content

Commit 38d83a2

Browse files
authored
Update FVM, Deps & Rust (#484)
* chore: update rust version to 1.78 and fix lints This updates us to 1.78, the version the FVM is currently tested against. * chore: update fvm & deps
1 parent 5bbf775 commit 38d83a2

File tree

10 files changed

+656
-1239
lines changed

10 files changed

+656
-1239
lines changed

rust/Cargo.lock

Lines changed: 619 additions & 1191 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/Cargo.toml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ rayon = "1.2.1"
3333
anyhow = "1.0.23"
3434
serde_json = "1.0.46"
3535
rust-gpu-tools = { version = "0.7", optional = true, default-features = false }
36-
fvm4 = { package = "fvm", version = "~4.3.3", default-features = false, features = ["verify-signature"] }
37-
fvm4_shared = { package = "fvm_shared", version = "~4.3.3" }
38-
fvm3 = { package = "fvm", version = "~3.10.0", default-features = false }
39-
fvm3_shared = { package = "fvm_shared", version = "~3.10.0" }
40-
fvm2 = { package = "fvm", version = "~2.8", default-features = false }
41-
fvm2_shared = { package = "fvm_shared", version = "~2.7" }
36+
fvm4 = { package = "fvm", version = "~4.4.3", default-features = false, features = ["verify-signature"] }
37+
fvm4_shared = { package = "fvm_shared", version = "~4.4.3" }
38+
fvm3 = { package = "fvm", version = "~3.11.1", default-features = false }
39+
fvm3_shared = { package = "fvm_shared", version = "~3.11.1" }
40+
fvm2 = { package = "fvm", version = "~2.9.1", default-features = false }
41+
fvm2_shared = { package = "fvm_shared", version = "~2.9.1" }
4242
fvm_ipld_encoding = "0.4.0"
4343
fvm_ipld_blockstore = "0.2.1"
4444
num-traits = "0.2.14"
@@ -51,8 +51,8 @@ filecoin-proofs-api = { version = "18.1", default-features = false }
5151
yastl = "0.1.2"
5252

5353
[dev-dependencies]
54-
memmap2 = "0.5"
55-
tempfile = "3.0.8"
54+
memmap2 = "0.9"
55+
tempfile = "3.12.0"
5656

5757
[features]
5858
default = ["cuda", "multicore-sdr"]

rust/rust-toolchain.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
[toolchain]
2-
channel = "1.73.0"
2+
channel = "1.78.0"
33
components = ["clippy", "rustfmt"]

rust/src/bls/api.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ pub type BLSDigest = [u8; DIGEST_BYTES];
2525
/// Unwraps or returns the passed in value.
2626
macro_rules! try_ffi {
2727
($res:expr, $val:expr) => {{
28+
#[allow(clippy::blocks_in_conditions)]
2829
match $res {
2930
Ok(res) => res,
3031
Err(_) => return $val,

rust/src/fvm/engine.rs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ impl MultiEngineContainer {
109109

110110
// fvm v4 implementation
111111
mod v4 {
112-
use anyhow::anyhow;
113112
use cid::Cid;
114113
use std::sync::Mutex;
115114

@@ -158,11 +157,7 @@ mod v4 {
158157
blockstore: CgoBlockstore,
159158
externs: CgoExterns,
160159
) -> anyhow::Result<InnerFvmMachine> {
161-
let mut network_config = NetworkConfig::new(
162-
cfg.network_version
163-
.try_into()
164-
.map_err(|nv| anyhow!("network version {nv} not supported"))?,
165-
);
160+
let mut network_config = NetworkConfig::new(cfg.network_version.into());
166161
network_config.chain_id(ChainID::from(cfg.chain_id));
167162

168163
if cfg.actor_debugging {
@@ -194,7 +189,7 @@ mod v4 {
194189

195190
// fvm v3 implementation
196191
mod v3 {
197-
use anyhow::{anyhow, Context};
192+
use anyhow::Context;
198193
use cid::Cid;
199194
use fvm4_shared::event::{self, ActorEvent, Entry, StampedEvent};
200195
use num_traits::FromPrimitive;
@@ -434,11 +429,7 @@ mod v3 {
434429
blockstore: CgoBlockstore,
435430
externs: CgoExterns,
436431
) -> anyhow::Result<InnerFvmMachine> {
437-
let mut network_config = NetworkConfig3::new(
438-
cfg.network_version
439-
.try_into()
440-
.map_err(|nv| anyhow!("network version {nv} not supported"))?,
441-
);
432+
let mut network_config = NetworkConfig3::new(cfg.network_version.into());
442433
network_config.chain_id(ChainID3::from(cfg.chain_id));
443434

444435
if cfg.actor_debugging {

rust/src/fvm/machine.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ mod test {
629629

630630
assert_eq!(lotus_trace.gas_charges.len(), 1);
631631
assert_eq!(
632-
*lotus_trace.gas_charges.get(0).unwrap(),
632+
*lotus_trace.gas_charges.first().unwrap(),
633633
LotusGasCharge {
634634
name: initial_gas_charge.clone().name,
635635
total_gas: initial_gas_charge.total().round_up(),

rust/src/fvm/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ mod externs;
44

55
pub mod engine;
66
pub mod machine;
7-
#[allow(clippy::incorrect_clone_impl_on_copy_type)]
87
pub mod types;
98

109
pub use cgo::FvmError;

rust/src/fvm/types.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#![allow(clippy::non_canonical_clone_impl)]
2+
13
use std::sync::Mutex;
24

35
use safer_ffi::prelude::*;

rust/src/proofs/api.rs

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2068,7 +2068,6 @@ pub mod tests {
20682068
let f_new_sealed_sector = OpenOptions::new()
20692069
.read(true)
20702070
.write(true)
2071-
.create(true)
20722071
.open(&new_sealed_path)?;
20732072
f_new_sealed_sector.set_len(new_sealed_target_len)?;
20742073

@@ -2185,7 +2184,6 @@ pub mod tests {
21852184
let f_decoded_sector = OpenOptions::new()
21862185
.read(true)
21872186
.write(true)
2188-
.create(true)
21892187
.open(&decoded_path)?;
21902188
f_decoded_sector.set_len(new_sealed_target_len)?;
21912189

@@ -2212,7 +2210,6 @@ pub mod tests {
22122210
let f_removed_data_sector = OpenOptions::new()
22132211
.read(true)
22142212
.write(true)
2215-
.create(true)
22162213
.open(&removed_data_path)?;
22172214
f_removed_data_sector.set_len(new_sealed_target_len)?;
22182215

@@ -2352,7 +2349,7 @@ pub mod tests {
23522349
panic!("generate_candidates produced no results");
23532350
}
23542351

2355-
let private_replicas = vec![PrivateReplicaInfo {
2352+
let private_replicas = [PrivateReplicaInfo {
23562353
registered_proof: registered_proof_winning_post,
23572354
cache_dir_path: cache_dir_path_ref.to_vec().into_boxed_slice().into(),
23582355
comm_r: resp_b2.comm_r,
@@ -2369,12 +2366,11 @@ pub mod tests {
23692366
let msg = str::from_utf8(&resp_h.error_msg).unwrap();
23702367
panic!("generate_winning_post failed: {:?}", msg);
23712368
}
2372-
let public_replicas = vec![PublicReplicaInfo {
2369+
let public_replicas = [PublicReplicaInfo {
23732370
registered_proof: registered_proof_winning_post,
23742371
sector_id,
23752372
comm_r: resp_b2.comm_r,
2376-
}]
2377-
.into_boxed_slice();
2373+
}];
23782374

23792375
let resp_i = verify_winning_post(
23802376
&randomness,
@@ -2475,7 +2471,7 @@ pub mod tests {
24752471

24762472
// window post
24772473

2478-
let private_replicas = vec![PrivateReplicaInfo {
2474+
let private_replicas = [PrivateReplicaInfo {
24792475
registered_proof: registered_proof_window_post,
24802476
cache_dir_path: cache_dir_path_ref.to_vec().into_boxed_slice().into(),
24812477
comm_r: resp_b2.comm_r,
@@ -2490,7 +2486,7 @@ pub mod tests {
24902486
panic!("generate_window_post failed: {:?}", msg);
24912487
}
24922488

2493-
let public_replicas = vec![PublicReplicaInfo {
2489+
let public_replicas = [PublicReplicaInfo {
24942490
registered_proof: registered_proof_window_post,
24952491
sector_id,
24962492
comm_r: resp_b2.comm_r,
@@ -2514,7 +2510,7 @@ pub mod tests {
25142510

25152511
// Generate a legacy WindowPoSt for later use.
25162512
let legacy_registered_proof_window_post = RegisteredPoStProof::StackedDrgWindow2KiBV1;
2517-
let legacy_private_replicas = vec![PrivateReplicaInfo {
2513+
let legacy_private_replicas = [PrivateReplicaInfo {
25182514
registered_proof: legacy_registered_proof_window_post,
25192515
cache_dir_path: cache_dir_path_ref.to_vec().into_boxed_slice().into(),
25202516
comm_r: resp_b2.comm_r,
@@ -2530,7 +2526,7 @@ pub mod tests {
25302526
panic!("generate_window_post failed: {:?}", msg);
25312527
}
25322528

2533-
let public_replicas = vec![PublicReplicaInfo {
2529+
let public_replicas = [PublicReplicaInfo {
25342530
registered_proof: legacy_registered_proof_window_post, // legacy registered proofs type
25352531
sector_id,
25362532
comm_r: resp_b2.comm_r,
@@ -2554,7 +2550,7 @@ pub mod tests {
25542550

25552551
// Lastly ensure that the legacy WindowPoSt generated proof
25562552
// does not verify with the new proof version
2557-
let public_replicas = vec![PublicReplicaInfo {
2553+
let public_replicas = [PublicReplicaInfo {
25582554
registered_proof: registered_proof_window_post, // new registered proof type/version
25592555
sector_id,
25602556
comm_r: resp_b2.comm_r,
@@ -2585,7 +2581,7 @@ pub mod tests {
25852581
//////////////////////////////////////////////
25862582

25872583
let sectors = [sector_id, sector_id2];
2588-
let private_replicas = vec![
2584+
let private_replicas = [
25892585
PrivateReplicaInfo {
25902586
registered_proof: registered_proof_window_post,
25912587
cache_dir_path: cache_dir_path_ref.to_vec().into_boxed_slice().into(),
@@ -2601,7 +2597,7 @@ pub mod tests {
26012597
sector_id: sector_id2,
26022598
},
26032599
];
2604-
let public_replicas = vec![
2600+
let public_replicas = [
26052601
PublicReplicaInfo {
26062602
registered_proof: registered_proof_window_post,
26072603
sector_id,
@@ -2764,7 +2760,7 @@ pub mod tests {
27642760
let resp_k3 = verify_window_post(
27652761
&randomness,
27662762
public_replicas[..].into(),
2767-
vec![merged_proof_resp.value.clone()][..].into(),
2763+
[merged_proof_resp.value.clone()][..].into(),
27682764
&prover_id,
27692765
);
27702766

@@ -2909,7 +2905,7 @@ pub mod tests {
29092905
panic!("write_with_alignment failed: {:?}", msg);
29102906
}
29112907

2912-
let pieces = vec![
2908+
let pieces = [
29132909
PublicPieceInfo {
29142910
num_bytes: 127,
29152911
comm_p: resp_a1.comm_p,
@@ -2959,7 +2955,7 @@ pub mod tests {
29592955
let faulty_sealed_file = tempfile::NamedTempFile::new()?;
29602956
let faulty_sealed_path_ref = as_bytes(faulty_sealed_file.path());
29612957

2962-
let private_replicas = vec![PrivateReplicaInfo {
2958+
let private_replicas = [PrivateReplicaInfo {
29632959
registered_proof: registered_proof_window_post,
29642960
cache_dir_path: cache_dir_path_ref.to_vec().into_boxed_slice().into(),
29652961
comm_r: resp_b2.comm_r,
@@ -3002,7 +2998,7 @@ pub mod tests {
30022998
#[test]
30032999
#[ignore]
30043000
fn test_sealing_aggregation_versions() -> Result<()> {
3005-
let versions = vec![
3001+
let versions = [
30063002
(
30073003
RegisteredSealProof::StackedDrg2KiBV1,
30083004
RegisteredAggregationProof::SnarkPackV1,
@@ -3098,7 +3094,7 @@ pub mod tests {
30983094
panic!("write_with_alignment failed: {:?}", msg);
30993095
}
31003096

3101-
let pieces = vec![
3097+
let pieces = [
31023098
PublicPieceInfo {
31033099
num_bytes: 127,
31043100
comm_p: resp_a1.comm_p,
@@ -3239,7 +3235,7 @@ pub mod tests {
32393235
);
32403236
}
32413237

3242-
let inputs: Vec<AggregationInputs> = vec![
3238+
let inputs = [
32433239
AggregationInputs {
32443240
comm_r: resp_b2.comm_r,
32453241
comm_d: resp_b2.comm_d,

rust/src/util/types.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -210,13 +210,15 @@ where
210210
T: Sized,
211211
F: FnOnce() -> anyhow::Result<T> + std::panic::UnwindSafe,
212212
{
213-
let result = match panic::catch_unwind(|| {
213+
let result = panic::catch_unwind(|| {
214214
init_log();
215215
log::debug!("{}: start", name);
216216
let res = callback();
217217
log::debug!("{}: end", name);
218218
res
219-
}) {
219+
});
220+
221+
repr_c::Box::new(match result {
220222
Ok(t) => match t {
221223
Ok(t) => Result::ok(t),
222224
Err(err) => Result::err_no_default(format!("{err:?}").into_bytes().into_boxed_slice()),
@@ -233,9 +235,7 @@ where
233235
.into_boxed_slice(),
234236
)
235237
}
236-
};
237-
238-
repr_c::Box::new(result)
238+
})
239239
}
240240

241241
/// Generate a destructor for the given type wrapped in a `repr_c::Box`.

0 commit comments

Comments
 (0)