Lexicographical sort record types before topological sort (#94)

This commit is contained in:
Mike Voronov
2021-06-17 14:06:01 +03:00
committed by GitHub
parent fb67fc0c91
commit beaa118b1e
7 changed files with 24 additions and 22 deletions

28
Cargo.lock generated
View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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)?;
}

View File

@ -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"] }

View File

@ -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" }

View File

@ -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"