mirror of
https://github.com/fluencelabs/marine.git
synced 2025-06-24 12:11:38 +00:00
Lexicographical sort record types before topological sort (#94)
This commit is contained in:
28
Cargo.lock
generated
28
Cargo.lock
generated
@ -1496,7 +1496,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "marine"
|
||||
version = "0.6.7"
|
||||
version = "0.6.8"
|
||||
dependencies = [
|
||||
"Inflector",
|
||||
"anyhow",
|
||||
@ -1505,7 +1505,7 @@ dependencies = [
|
||||
"clap",
|
||||
"exitfailure",
|
||||
"marine-it-generator 0.5.3",
|
||||
"marine-it-parser 0.6.4",
|
||||
"marine-it-parser 0.6.5",
|
||||
"marine-module-info-parser 0.1.0",
|
||||
"semver 0.11.0",
|
||||
"serde",
|
||||
@ -1539,7 +1539,7 @@ version = "0.5.3"
|
||||
dependencies = [
|
||||
"cargo_toml",
|
||||
"it-lilo",
|
||||
"marine-it-parser 0.6.4",
|
||||
"marine-it-parser 0.6.5",
|
||||
"marine-macro-impl",
|
||||
"once_cell",
|
||||
"serde",
|
||||
@ -1586,7 +1586,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "marine-it-parser"
|
||||
version = "0.6.4"
|
||||
version = "0.6.5"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"itertools 0.10.1",
|
||||
@ -1656,7 +1656,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "marine-module-interface"
|
||||
version = "0.1.3"
|
||||
version = "0.1.4"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"itertools 0.10.1",
|
||||
@ -1717,7 +1717,7 @@ dependencies = [
|
||||
"log",
|
||||
"marine-it-generator 0.5.3",
|
||||
"marine-it-interfaces 0.4.0",
|
||||
"marine-it-parser 0.6.4",
|
||||
"marine-it-parser 0.6.5",
|
||||
"marine-module-info-parser 0.1.0",
|
||||
"marine-module-interface",
|
||||
"marine-utils 0.2.0",
|
||||
@ -2403,9 +2403,9 @@ checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.2.8"
|
||||
version = "0.2.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc"
|
||||
checksum = "5ab49abadf3f9e1c4bc499e8845e152ad87d2ad2d30371841171169e9d75feee"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
]
|
||||
@ -2416,7 +2416,7 @@ version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8440d8acb4fd3d277125b4bd01a6f38aee8d814b3b5fc09b3f2b825d37d3fe8f"
|
||||
dependencies = [
|
||||
"redox_syscall 0.2.8",
|
||||
"redox_syscall 0.2.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -2437,7 +2437,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
|
||||
dependencies = [
|
||||
"getrandom 0.2.3",
|
||||
"redox_syscall 0.2.8",
|
||||
"redox_syscall 0.2.9",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -2886,7 +2886,7 @@ dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"libc",
|
||||
"rand",
|
||||
"redox_syscall 0.2.8",
|
||||
"redox_syscall 0.2.9",
|
||||
"remove_dir_all",
|
||||
"winapi 0.3.9",
|
||||
]
|
||||
@ -2919,7 +2919,7 @@ checksum = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"numtoa",
|
||||
"redox_syscall 0.2.8",
|
||||
"redox_syscall 0.2.9",
|
||||
"redox_termios",
|
||||
]
|
||||
|
||||
@ -3278,9 +3278,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "vcpkg"
|
||||
version = "0.2.13"
|
||||
version = "0.2.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "025ce40a007e1907e58d5bc1a594def78e5573bb0b1160bc389634e8f12e4faa"
|
||||
checksum = "70455df2fdf4e9bf580a92e443f1eb0303c390d682e2ea817312c9e81f8c3399"
|
||||
|
||||
[[package]]
|
||||
name = "vec_map"
|
||||
|
@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "marine-it-parser"
|
||||
description = "Fluence Marine interface types parser"
|
||||
version = "0.6.4"
|
||||
version = "0.6.5"
|
||||
authors = ["Fluence Labs"]
|
||||
license = "Apache-2.0"
|
||||
edition = "2018"
|
||||
@ -12,7 +12,7 @@ path = "src/lib.rs"
|
||||
|
||||
[dependencies]
|
||||
marine-it-interfaces = { path = "../it-interfaces", version = "0.4.0" }
|
||||
marine-module-interface = { path = "../module-interface", version = "0.1.3" }
|
||||
marine-module-interface = { path = "../module-interface", version = "0.1.4" }
|
||||
|
||||
anyhow = "1.0.31"
|
||||
walrus = "0.18.0"
|
||||
|
@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "marine-module-interface"
|
||||
description = "Fluence Marine module interface"
|
||||
version = "0.1.3"
|
||||
version = "0.1.4"
|
||||
authors = ["Fluence Labs"]
|
||||
license = "Apache-2.0"
|
||||
edition = "2018"
|
||||
|
@ -25,6 +25,7 @@ use wasmer_it::IType;
|
||||
|
||||
use std::collections::HashSet;
|
||||
use std::rc::Rc;
|
||||
use itertools::Itertools;
|
||||
|
||||
pub(crate) struct RecordsTransformer {
|
||||
used: HashSet<u64>,
|
||||
@ -48,7 +49,8 @@ impl RecordsTransformer {
|
||||
}
|
||||
|
||||
fn topological_sort(&mut self, exported_records: &IRecordTypes) -> InterfaceResult<()> {
|
||||
for (id, record) in exported_records {
|
||||
// sort records types inside HashMap to achieve their deterministic order
|
||||
for (id, record) in exported_records.iter().sorted_by_key(|(_, v)| &v.name) {
|
||||
self.dfs(*id, record, exported_records)?;
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@ edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
marine-runtime = { path = "../runtime", version = "0.5.1" }
|
||||
marine-module-interface = { path = "../crates/module-interface", version = "0.1.3" }
|
||||
marine-module-interface = { path = "../crates/module-interface", version = "0.1.4" }
|
||||
marine-utils = { path = "../crates/utils", version = "0.2.0" }
|
||||
marine-rs-sdk-main = { version = "0.6.10", features = ["logger"] }
|
||||
marine-rs-sdk = { version = "0.6.10", features = ["logger"] }
|
||||
|
@ -15,7 +15,7 @@ marine-module-info-parser = { path = "../crates/module-info-parser", version = "
|
||||
marine-it-interfaces = { path = "../crates/it-interfaces", version = "0.4.0" }
|
||||
marine-it-parser = { path = "../crates/it-parser", version = "0.6.4" }
|
||||
marine-it-generator = { path = "../crates/it-generator", version = "0.5.3" }
|
||||
marine-module-interface = { path = "../crates/module-interface", version = "0.1.3" }
|
||||
marine-module-interface = { path = "../crates/module-interface", version = "0.1.4" }
|
||||
marine-utils = { path = "../crates/utils", version = "0.2.0" }
|
||||
|
||||
wasmer-runtime = { package = "wasmer-runtime-fl", version = "0.17.0" }
|
||||
|
@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "marine"
|
||||
description = "Fluence Marine command line tool"
|
||||
version = "0.6.7"
|
||||
version = "0.6.8"
|
||||
authors = ["Fluence Labs"]
|
||||
repository = "https://github.com/fluencelabs/marine/tools/cli"
|
||||
license = "Apache-2.0"
|
||||
@ -13,7 +13,7 @@ path = "src/main.rs"
|
||||
|
||||
[dependencies]
|
||||
marine-it-generator = { path = "../../crates/it-generator", version = "0.5.3" }
|
||||
marine-it-parser = { path = "../../crates/it-parser", version = "0.6.4" }
|
||||
marine-it-parser = { path = "../../crates/it-parser", version = "0.6.5" }
|
||||
marine-module-info-parser = { path = "../../crates/module-info-parser", version = "0.1.0" }
|
||||
|
||||
semver = "0.11.0"
|
||||
|
Reference in New Issue
Block a user