From 24f57174b5324a54d16e9d9fbc7484ba8983d708 Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Tue, 13 Apr 2021 23:19:33 +0200 Subject: [PATCH 1/7] #73 WIP WASM plugin support --- Cargo.lock | 596 +++++++++++++++++++++++++++++++++++ lib/Cargo.toml | 3 +- lib/src/endpoints.rs | 2 + lib/src/plugins/mod.rs | 1 + lib/src/plugins/wasm_demo.rs | 54 ++++ 5 files changed, 655 insertions(+), 1 deletion(-) create mode 100644 lib/src/plugins/wasm_demo.rs diff --git a/Cargo.lock b/Cargo.lock index be23185a3..afe09cb3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -323,9 +323,13 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d44b8fee1ced9671ba043476deddef739dd0959bf77030b26b738cc591737a7" dependencies = [ +<<<<<<< master "proc-macro2", "quote", "syn", +======= + "gimli 0.23.0", +>>>>>>> #73 WIP WASM plugin support ] [[package]] @@ -624,7 +628,11 @@ dependencies = [ "tracing", "ureq", "url", +<<<<<<< master "urlencoding", +======= + "wasmer", +>>>>>>> #73 WIP WASM plugin support ] [[package]] @@ -903,6 +911,7 @@ version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ +<<<<<<< master "ansi_term", "atty", "bitflags", @@ -910,6 +919,11 @@ dependencies = [ "textwrap 0.11.0", "unicode-width", "vec_map", +======= + "glob", + "libc", + "libloading 0.5.2", +>>>>>>> #73 WIP WASM plugin support ] [[package]] @@ -920,6 +934,7 @@ checksum = "c7843ae7a539bef687e018bf9edf7e87728024b29d02b0f8409726be8880ae1a" dependencies = [ "atty", "bitflags", +<<<<<<< master "clap_derive", "indexmap", "lazy_static", @@ -1100,6 +1115,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" dependencies = [ "libc", +======= + "strsim 0.8.0", + "textwrap", + "unicode-width", + "vec_map", +>>>>>>> #73 WIP WASM plugin support ] [[package]] @@ -1231,8 +1252,78 @@ dependencies = [ ] [[package]] +<<<<<<< master name = "csv" version = "1.1.6" +======= +name = "cranelift-bforest" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9221545c0507dc08a62b2d8b5ffe8e17ac580b0a74d1813b496b8d70b070fbd0" +dependencies = [ + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9936ea608b6cd176f107037f6adbb4deac933466fc7231154f96598b2d3ab1" +dependencies = [ + "byteorder", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-entity", + "gimli 0.22.0", + "log", + "regalloc", + "smallvec", + "target-lexicon", + "thiserror", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef2b2768568306540f4c8db3acce9105534d34c4a1e440529c1e702d7f8c8d7" +dependencies = [ + "cranelift-codegen-shared", + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen-shared" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6759012d6d19c4caec95793f052613e9d4113e925e7f14154defbac0f1d4c938" + +[[package]] +name = "cranelift-entity" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86badbce14e15f52a45b666b38abe47b204969dd7f8fb7488cb55dd46b361fa6" +dependencies = [ + "serde", +] + +[[package]] +name = "cranelift-frontend" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b608bb7656c554d0a4cf8f50c7a10b857e80306f6ff829ad6d468a7e2323c8d8" +dependencies = [ + "cranelift-codegen", + "log", + "smallvec", + "target-lexicon", +] + +[[package]] +name = "crc32fast" +version = "1.2.1" +>>>>>>> #73 WIP WASM plugin support source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" dependencies = [ @@ -1244,8 +1335,34 @@ dependencies = [ ] [[package]] +<<<<<<< master name = "csv-core" version = "0.1.10" +======= +name = "crossbeam-channel" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.1" +>>>>>>> #73 WIP WASM plugin support source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" dependencies = [ @@ -1262,6 +1379,41 @@ dependencies = [ "syn", ] +[[package]] +name = "darling" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9d6ddad5866bb2170686ed03f6839d31a76e5407d80b1c334a2c24618543ffa" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9ced1fd13dc386d5a8315899de465708cf34ee2a6d9394654515214e67bb846" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a7a1445d54b2f9792e3b31a3e715feabbace393f38dc4ffd49d94ee9bc487d5" +dependencies = [ + "darling_core", + "quote", + "syn", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -1409,6 +1561,7 @@ dependencies = [ ] [[package]] +<<<<<<< master name = "fastdivide" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1417,6 +1570,31 @@ checksum = "4a99a2d53cf90642500986ad22e5083b09e42d44c408f5f112e2a4a0925a643c" [[package]] name = "fastfield_codecs" version = "0.1.0" +======= +name = "enumset" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbd795df6708a599abf1ee10eacc72efd052b7a5f70fdf0715e4d5151a6db9c3" +dependencies = [ + "enumset_derive", +] + +[[package]] +name = "enumset_derive" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19c52f9ec503c8a68dc04daf71a04b07e690c32ab1a8b68e33897f255269d47" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "env_logger" +version = "0.7.1" +>>>>>>> #73 WIP WASM plugin support source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb0e8bfa31546b4ace05092c9db8d251d7bbc298a384875a08c945a473de4f1f" dependencies = [ @@ -1444,10 +1622,17 @@ dependencies = [ ] [[package]] +<<<<<<< master name = "firestorm" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d6188b8804df28032815ea256b6955c9625c24da7525f387a7af02fbb8f01" +======= +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" +>>>>>>> #73 WIP WASM plugin support [[package]] name = "flate2" @@ -1707,6 +1892,26 @@ dependencies = [ ] [[package]] +<<<<<<< master +======= +name = "gimli" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" +dependencies = [ + "fallible-iterator", + "indexmap", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" + +[[package]] +>>>>>>> #73 WIP WASM plugin support name = "gio" version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1953,6 +2158,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71a816c97c42258aa5834d07590b718b4c9a598944cd39a52dc25b351185d678" +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "0.2.3" @@ -1972,6 +2183,7 @@ checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" dependencies = [ "autocfg", "hashbrown", + "serde", ] [[package]] @@ -2055,6 +2267,12 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25" +[[package]] +name = "leb128" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" + [[package]] name = "libappindicator" version = "0.6.1" @@ -2097,8 +2315,23 @@ dependencies = [ ] [[package]] +<<<<<<< master name = "local-waker" version = "0.1.2" +======= +name = "libloading" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" +dependencies = [ + "cfg-if 1.0.0", + "winapi 0.3.9", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.3" +>>>>>>> #73 WIP WASM plugin support source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "902eb695eb0591864543cbfbf6d742510642a605a61fc5e97fe6ceb5a30ac4fb" @@ -2139,6 +2372,15 @@ dependencies = [ "twox-hash", ] +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + [[package]] name = "malloc_buf" version = "0.0.6" @@ -2187,6 +2429,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memmap2" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397d1a6d6d0563c0f5462bbdae662cf6c784edf5e828e40c7257f85d82bf56dd" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.6.5" @@ -2258,8 +2509,19 @@ dependencies = [ ] [[package]] +<<<<<<< master name = "murmurhash32" version = "0.2.0" +======= +name = "more-asserts" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" + +[[package]] +name = "net2" +version = "0.2.37" +>>>>>>> #73 WIP WASM plugin support source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d736ff882f0e85fe9689fb23db229616c4c00aee2b3ac282f666d8f20eb25d4a" dependencies = [ @@ -2387,6 +2649,19 @@ dependencies = [ ] [[package]] +<<<<<<< master +======= +name = "object" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397" +dependencies = [ + "crc32fast", + "indexmap", +] + +[[package]] +>>>>>>> #73 WIP WASM plugin support name = "once_cell" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2709,6 +2984,30 @@ dependencies = [ "version_check", ] +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check 0.9.2", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check 0.9.2", +] + [[package]] name = "proc-macro-hack" version = "0.5.19" @@ -2867,6 +3166,31 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "rayon" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" +dependencies = [ + "autocfg", + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "lazy_static", + "num_cpus", +] + [[package]] name = "redox_syscall" version = "0.2.10" @@ -2886,6 +3210,17 @@ dependencies = [ "redox_syscall", ] +[[package]] +name = "regalloc" +version = "0.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "571f7f397d61c4755285cd37853fe8e03271c243424a907415909379659381c5" +dependencies = [ + "log", + "rustc-hash", + "smallvec", +] + [[package]] name = "regex" version = "1.5.4" @@ -2913,8 +3248,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e931c58b93d86f080c734bfd2bce7dd0079ae2331235818133c8be7f422e20e" [[package]] +<<<<<<< master name = "regex-syntax" version = "0.6.25" +======= +name = "region" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0" +dependencies = [ + "bitflags", + "libc", + "mach", + "winapi 0.3.9", +] + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +>>>>>>> #73 WIP WASM plugin support source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" @@ -3149,12 +3501,20 @@ dependencies = [ ] [[package]] +<<<<<<< master name = "serde_cbor" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" dependencies = [ "half", +======= +name = "serde_bytes" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" +dependencies = [ +>>>>>>> #73 WIP WASM plugin support "serde", ] @@ -3251,9 +3611,15 @@ dependencies = [ [[package]] name = "smallvec" +<<<<<<< master version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" +======= +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" +>>>>>>> #73 WIP WASM plugin support [[package]] name = "socket2" @@ -3480,8 +3846,19 @@ dependencies = [ ] [[package]] +<<<<<<< master name = "tantivy-fst" version = "0.3.0" +======= +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "syn" +version = "1.0.64" +>>>>>>> #73 WIP WASM plugin support source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb20cdc0d83e9184560bdde9cd60142dbb4af2e0f770e88fce45770495224205" dependencies = [ @@ -3499,6 +3876,12 @@ dependencies = [ "combine", ] +[[package]] +name = "target-lexicon" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "422045212ea98508ae3d28025bc5aaa2bd4a9cdaecd442a08da2ee620ee9ea95" + [[package]] name = "tempfile" version = "3.2.0" @@ -3721,12 +4104,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d8d93354fe2a8e50d5953f5ae2e47a3fc2ef03292e7ea46e3cc38f549525fb9" dependencies = [ "cfg-if 1.0.0", +<<<<<<< master "pin-project-lite", +======= + "log", + "pin-project-lite 0.2.4", +>>>>>>> #73 WIP WASM plugin support "tracing-attributes", "tracing-core", ] [[package]] +<<<<<<< master name = "tracing-actix-web" version = "0.5.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3744,6 +4133,12 @@ name = "tracing-attributes" version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8276d9a4a3a558d7b7ad5303ad50b53d58264641b82914b7ada36bd762e7a716" +======= +name = "tracing-attributes" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" +>>>>>>> #73 WIP WASM plugin support dependencies = [ "proc-macro2", "quote", @@ -3751,6 +4146,7 @@ dependencies = [ ] [[package]] +<<<<<<< master name = "tracing-chrome" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3762,6 +4158,8 @@ dependencies = [ ] [[package]] +======= +>>>>>>> #73 WIP WASM plugin support name = "tracing-core" version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4117,6 +4515,204 @@ version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc" +[[package]] +name = "wasmer" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a70cfae554988d904d64ca17ab0e7cd652ee5c8a0807094819c1ea93eb9d6866" +dependencies = [ + "cfg-if 0.1.10", + "indexmap", + "more-asserts", + "target-lexicon", + "thiserror", + "wasmer-compiler", + "wasmer-compiler-cranelift", + "wasmer-derive", + "wasmer-engine", + "wasmer-engine-jit", + "wasmer-engine-native", + "wasmer-types", + "wasmer-vm", + "wat", + "winapi 0.3.9", +] + +[[package]] +name = "wasmer-compiler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b7732a9cab472bd921d5a0c422f45b3d03f62fa2c40a89e0770cef6d47e383e" +dependencies = [ + "enumset", + "serde", + "serde_bytes", + "smallvec", + "target-lexicon", + "thiserror", + "wasmer-types", + "wasmer-vm", + "wasmparser", +] + +[[package]] +name = "wasmer-compiler-cranelift" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48cb9395f094e1d81534f4c5e330ed4cdb424e8df870d29ad585620284f5fddb" +dependencies = [ + "cranelift-codegen", + "cranelift-frontend", + "gimli 0.22.0", + "more-asserts", + "rayon", + "serde", + "smallvec", + "tracing", + "wasmer-compiler", + "wasmer-types", + "wasmer-vm", +] + +[[package]] +name = "wasmer-derive" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b86dcd2c3efdb8390728a2b56f762db07789aaa5aa872a9dc776ba3a7912ed" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "wasmer-engine" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efe4667d6bd888f26ae8062a63a9379fa697415b4b4e380f33832e8418fd71b5" +dependencies = [ + "backtrace", + "bincode", + "lazy_static", + "memmap2", + "more-asserts", + "rustc-demangle", + "serde", + "serde_bytes", + "target-lexicon", + "thiserror", + "wasmer-compiler", + "wasmer-types", + "wasmer-vm", +] + +[[package]] +name = "wasmer-engine-jit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26770be802888011b4a3072f2a282fc2faa68aa48c71b3db6252a3937a85f3da" +dependencies = [ + "bincode", + "cfg-if 0.1.10", + "region", + "serde", + "serde_bytes", + "wasmer-compiler", + "wasmer-engine", + "wasmer-types", + "wasmer-vm", + "winapi 0.3.9", +] + +[[package]] +name = "wasmer-engine-native" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bb4083a6c69f2cd4b000b82a80717f37c6cc2e536aee3a8ffe9af3edc276a8b" +dependencies = [ + "bincode", + "cfg-if 0.1.10", + "leb128", + "libloading 0.6.7", + "serde", + "tempfile", + "tracing", + "wasmer-compiler", + "wasmer-engine", + "wasmer-object", + "wasmer-types", + "wasmer-vm", + "which 4.1.0", +] + +[[package]] +name = "wasmer-object" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf8e0c12b82ff81ebecd30d7e118be5fec871d6de885a90eeb105df0a769a7b" +dependencies = [ + "object", + "thiserror", + "wasmer-compiler", + "wasmer-types", +] + +[[package]] +name = "wasmer-types" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f4ac28c2951cd792c18332f03da523ed06b170f5cf6bb5b1bdd7e36c2a8218" +dependencies = [ + "cranelift-entity", + "serde", + "thiserror", +] + +[[package]] +name = "wasmer-vm" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7635ba0b6d2fd325f588d69a950ad9fa04dddbf6ad08b6b2a183146319bf6ae" +dependencies = [ + "backtrace", + "cc", + "cfg-if 0.1.10", + "indexmap", + "libc", + "memoffset", + "more-asserts", + "region", + "serde", + "thiserror", + "wasmer-types", + "winapi 0.3.9", +] + +[[package]] +name = "wasmparser" +version = "0.65.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc2fe6350834b4e528ba0901e7aa405d78b89dc1fa3145359eb4de0e323fcf" + +[[package]] +name = "wast" +version = "35.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ef140f1b49946586078353a453a1d28ba90adfc54dde75710bc1931de204d68" +dependencies = [ + "leb128", +] + +[[package]] +name = "wat" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ec280a739b69173e0ffd12c1658507996836ba4e992ed9bc1e5385a0bd72a02" +dependencies = [ + "wast", +] + [[package]] name = "web-sys" version = "0.3.55" diff --git a/lib/Cargo.toml b/lib/Cargo.toml index ad4c17998..a0baa326c 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -31,6 +31,7 @@ tracing = "0.1.29" ureq = "1.5.4" url = "2.2.1" urlencoding = "2.1.0" +wasmer = {version="1.0.2", optional = true} [dev-dependencies] criterion = "0.3" @@ -40,5 +41,5 @@ ntest = "0.7.3" [features] config = ["dirs", "toml"] -db = ["sled", "bincode"] +db = ["sled", "bincode", "wasmer"] rdf = ["rio_api", "rio_turtle"] diff --git a/lib/src/endpoints.rs b/lib/src/endpoints.rs index c5e15355e..8e6ecc1f6 100644 --- a/lib/src/endpoints.rs +++ b/lib/src/endpoints.rs @@ -10,6 +10,7 @@ use crate::{ path::path_endpoint, search::search_endpoint, versioning::{all_versions_endpoint, version_endpoint}, + wasm_demo::wasm_demo_endpoint, }, urls, Db, Resource, Storelike, Value, }; @@ -58,5 +59,6 @@ pub fn default_endpoints() -> Vec { path_endpoint(), search_endpoint(), upload_endpoint(), + wasm_demo_endpoint(), ] } diff --git a/lib/src/plugins/mod.rs b/lib/src/plugins/mod.rs index 46d2928b0..5523029fc 100644 --- a/lib/src/plugins/mod.rs +++ b/lib/src/plugins/mod.rs @@ -7,3 +7,4 @@ pub mod files; pub mod path; pub mod search; pub mod versioning; +pub mod wasm_demo; diff --git a/lib/src/plugins/wasm_demo.rs b/lib/src/plugins/wasm_demo.rs new file mode 100644 index 000000000..0d1742415 --- /dev/null +++ b/lib/src/plugins/wasm_demo.rs @@ -0,0 +1,54 @@ +use crate::{endpoints::Endpoint, errors::AtomicResult, urls, Resource, Storelike}; +use wasmer::{Store, Module, Instance, Value, imports}; + +pub fn wasm_demo_endpoint() -> Endpoint { + Endpoint { + path: "/wasm".to_string(), + params: [urls::SHORTNAME.to_string()].into(), + description: "A WASM demo ".to_string(), + shortname: "wasm".to_string(), + handle: handle_wasm_demo_request, + } +} + +fn handle_wasm_demo_request(url: url::Url, store: &impl Storelike) -> AtomicResult { + let params = url.query_pairs(); + let mut var = None; + for (k, v) in params { + if let "shortname" = k.as_ref() { + var = Some(v.to_string()) + }; + } + if var.is_none() { + wasm_demo_endpoint().to_resource(store) + } else { + let result = run_wasm()?; + let mut resource = Resource::new("sub".into()); + resource.set_propval_string(urls::DESCRIPTION.into(), &result, store)?; + Ok(resource) + } +} + + +fn run_wasm() -> AtomicResult{ + let module_wat = r#" + (module + (type $t0 (func (param i32) (result i32))) + (func $add_one (export "add_one") (type $t0) (param $p0 i32) (result i32) + get_local $p0 + i32.const 1 + i32.add)) + "#; + + let store = Store::default(); + let module = Module::new(&store, &module_wat)?; + // The module doesn't import anything, so we create an empty import object. + let import_object = imports! {}; + let instance = Instance::new(&module, &import_object)?; + + let add_one = instance.exports.get_function("add_one")?; + let result = add_one.call(&[Value::I32(42)])?; + assert_eq!(result[0], Value::I32(43)); + + Ok(result[0].to_string()) +} From 0723a3f3f25d68e850265f56591692dbca8ca65b Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Wed, 14 Apr 2021 11:37:59 +0200 Subject: [PATCH 2/7] Parse NT accept header --- server/src/content_types.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/src/content_types.rs b/server/src/content_types.rs index 3ccd5b233..b853faf1b 100644 --- a/server/src/content_types.rs +++ b/server/src/content_types.rs @@ -80,6 +80,9 @@ pub fn parse_accept_header(header: &str) -> ContentType { if mimepart.contains(MIME_NT) { return ContentType::NTriples; } + if mimepart.contains(MIME_NT) { + return ContentType::NT + } } tracing::info!("Unknown Accept header, defaut to HTML: {}", header); ContentType::Html From a285d6c1d925c4bf9c15b4e2e07a12bcbad0517c Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Mon, 19 Apr 2021 21:29:23 +0200 Subject: [PATCH 3/7] #73 Add WASM atomic-plugin-example --- Cargo.lock | 4 +++ Cargo.toml | 7 ++--- lib/src/plugins/wasm_demo.rs | 50 ++++++++++++++++++++++-------------- plugin-example/Cargo.lock | 5 ++++ plugin-example/Cargo.toml | 13 ++++++++++ plugin-example/README.md | 21 +++++++++++++++ plugin-example/src/lib.rs | 12 +++++++++ 7 files changed, 90 insertions(+), 22 deletions(-) create mode 100644 plugin-example/Cargo.lock create mode 100644 plugin-example/Cargo.toml create mode 100644 plugin-example/README.md create mode 100644 plugin-example/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index afe09cb3a..f13bee8b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -557,6 +557,10 @@ dependencies = [ "regex", ] +[[package]] +name = "atomic-plugin-example" +version = "0.1.0" + [[package]] name = "atomic-server" version = "0.31.0" diff --git a/Cargo.toml b/Cargo.toml index c1e10a3af..b2dabe3cf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,8 @@ # Tantivy does not build in the CI, so we exclude it exclude = ["src-tauri"] members = [ - "server", - "cli", - "lib", + "server", + "cli", + "lib", + "plugin-example" ] diff --git a/lib/src/plugins/wasm_demo.rs b/lib/src/plugins/wasm_demo.rs index 0d1742415..579ac14a2 100644 --- a/lib/src/plugins/wasm_demo.rs +++ b/lib/src/plugins/wasm_demo.rs @@ -1,9 +1,10 @@ use crate::{endpoints::Endpoint, errors::AtomicResult, urls, Resource, Storelike}; -use wasmer::{Store, Module, Instance, Value, imports}; +use wasmer::{imports, Instance, Module, Value}; pub fn wasm_demo_endpoint() -> Endpoint { Endpoint { path: "/wasm".to_string(), + // Ideally, these params are fully dynamic and constructed from the arguments for the WASM function params: [urls::SHORTNAME.to_string()].into(), description: "A WASM demo ".to_string(), shortname: "wasm".to_string(), @@ -15,6 +16,7 @@ fn handle_wasm_demo_request(url: url::Url, store: &impl Storelike) -> AtomicResu let params = url.query_pairs(); let mut var = None; for (k, v) in params { + // This check for arguments specific to this function if let "shortname" = k.as_ref() { var = Some(v.to_string()) }; @@ -22,7 +24,23 @@ fn handle_wasm_demo_request(url: url::Url, store: &impl Storelike) -> AtomicResu if var.is_none() { wasm_demo_endpoint().to_resource(store) } else { - let result = run_wasm()?; + // Requires compiling atomic-plugin-demo + let module_u8 = include_bytes!("../../../target/wasm32-unknown-unknown/release/atomic_plugin_example.wasm"); + // let module_string = r#" + // (module + // (type $t0 (func (param i32) (result i32))) + // (func $add_one (export "add_one") (type $t0) (param $p0 i32) (result i32) + // get_local $p0 + // i32.const 1 + // i32.add)) + // "#; + + let fn_name = "fibonacci"; + let arguments = &[Value::I32(10)]; + let wasm_store = wasmer::Store::default(); + // Creating this module can be costly, so it should probably be done earlier (server init) + let module = Module::new(&wasm_store, module_u8)?; + let result = run_wasm(&module, arguments, fn_name)?; let mut resource = Resource::new("sub".into()); resource.set_propval_string(urls::DESCRIPTION.into(), &result, store)?; Ok(resource) @@ -30,25 +48,19 @@ fn handle_wasm_demo_request(url: url::Url, store: &impl Storelike) -> AtomicResu } -fn run_wasm() -> AtomicResult{ - let module_wat = r#" - (module - (type $t0 (func (param i32) (result i32))) - (func $add_one (export "add_one") (type $t0) (param $p0 i32) (result i32) - get_local $p0 - i32.const 1 - i32.add)) - "#; - - let store = Store::default(); - let module = Module::new(&store, &module_wat)?; +/// Executes a single function from a WASM application. +/// Returns the first result as a String. +fn run_wasm( + // Wasm string representation of executable code + module: &Module, + // Vector of arguments for the function + arguments: &[wasmer::Val], + // Name of the function + fn_name: &str, +) -> AtomicResult { // The module doesn't import anything, so we create an empty import object. let import_object = imports! {}; let instance = Instance::new(&module, &import_object)?; - - let add_one = instance.exports.get_function("add_one")?; - let result = add_one.call(&[Value::I32(42)])?; - assert_eq!(result[0], Value::I32(43)); - + let result = instance.exports.get_function(fn_name)?.call(arguments)?; Ok(result[0].to_string()) } diff --git a/plugin-example/Cargo.lock b/plugin-example/Cargo.lock new file mode 100644 index 000000000..e09b1016c --- /dev/null +++ b/plugin-example/Cargo.lock @@ -0,0 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "atomic-plugin-example" +version = "0.1.0" diff --git a/plugin-example/Cargo.toml b/plugin-example/Cargo.toml new file mode 100644 index 000000000..2c6028c5a --- /dev/null +++ b/plugin-example/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "atomic-plugin-example" +version = "0.1.0" +authors = ["Joep Meindertsma "] +edition = "2018" + +[lib] +name = "atomic_plugin_example" +crate-type = ["cdylib"] + +# Make wasm size smaller: https://rustwasm.github.io/docs/book/reference/code-size.html#optimizing-builds-for-code-size +[profile.release] +lto = true diff --git a/plugin-example/README.md b/plugin-example/README.md new file mode 100644 index 000000000..3c11b23f0 --- /dev/null +++ b/plugin-example/README.md @@ -0,0 +1,21 @@ +# Atomic Data Plugin Example + +A minimal example of an Atomic Plugin, written in Rust, compiled to WASM. + +## How Atomic Plugins work + +Atomic Plugins are WASM (WebAssembly) applications that are executed in a Sandbox in an Atomic Server. +This makes them safe, performant, and very easy to install - no need to reboot the Server. +Check this issue: https://github.com/joepio/atomic/issues/73. + +## How to run + +```bash +# Compile to WASM +cargo build --target wasm32-unknown-unknown --release +# Run it using Wasmer, see https://wasmer.io/ +wasmer ./target/wasm32-unknown-unknown/release/atomic_plugin_example.wasm -i fibonacci 20 +# Or start a server and open it on http://localhost/show?subject=http%3A%2F%2Flocalhost%2Fwasm +``` + +Inspired by https://codeburst.io/webassembly-and-rust-there-and-back-again-9ad76f61d616 diff --git a/plugin-example/src/lib.rs b/plugin-example/src/lib.rs new file mode 100644 index 000000000..9b77f2f59 --- /dev/null +++ b/plugin-example/src/lib.rs @@ -0,0 +1,12 @@ +#[no_mangle] +pub fn fibonacci(n: u32) -> u32 { + match n { + 0 | 1 => n, + _ => fibonacci(n - 1) + fibonacci(n - 2), + } +} + +#[no_mangle] +pub fn author() -> String { + String::from("Hello from Rust") +} From 49d3fb2eb4b20d5561bd642dd60373c137553e09 Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Mon, 19 Apr 2021 21:29:55 +0200 Subject: [PATCH 4/7] Docs & clippy improvements --- server/src/main.rs | 151 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 server/src/main.rs diff --git a/server/src/main.rs b/server/src/main.rs new file mode 100644 index 000000000..f60138abf --- /dev/null +++ b/server/src/main.rs @@ -0,0 +1,151 @@ +mod appstate; +mod config; +mod content_types; +mod errors; +mod handlers; +mod helpers; +mod https; +mod jsonerrors; +mod routes; +#[cfg(feature = "desktop")] +mod tray_icon; + +use actix_cors::Cors; +use actix_web::{middleware, web, App, HttpServer}; +use atomic_lib::{errors::AtomicResult, Storelike}; +use clap::{crate_version, Arg, SubCommand}; +use std::{fs::File, sync::Mutex}; + +#[actix_web::main] +async fn main() -> AtomicResult<()> { + let matches = clap::App::new("atomic-server") + .version(crate_version!()) + .author("Joep Meindertsma ") + .about("Store and share Atomic Data! Visit https://atomicdata.dev for more info") + .subcommand( + SubCommand::with_name("run") + .about("Starts the server (also runs without any arguments)") + ) + .subcommand( + SubCommand::with_name("export") + .about("Create a JSON-AD backup of the store.") + .arg(Arg::with_name("path") + .help("Where the file should be saved. Defaults to `~/.config/atomic/backups/{current_date}.jsonld`.") + .required(false) + ) + ) + .subcommand( + SubCommand::with_name("import") + .about("Import a JSON-AD backup to the store. Overwrites Resources with same @id.") + .arg(Arg::with_name("path") + .help("where the file should be imported from") + .required(true) + ) + ) + .get_matches(); + + // Enable all logging + std::env::set_var("RUST_LOG", "info"); + env_logger::init(); + + const VERSION: &str = env!("CARGO_PKG_VERSION"); + log::info!("Atomic-server {}. Visit https://atomicdata.dev and https://github.com/joepio/atomic for more information.", VERSION); + + // Read .env vars, https certs + let config = config::init().expect("Error setting config"); + // Initialize DB and HTML templating engine + let appstate = match appstate::init(config.clone()) { + Ok(state) => state, + Err(e) => { + panic!("Error during appstate setup. {}", e) + } + }; + + match matches.subcommand_name() { + Some("export") => { + let path = match matches.subcommand_matches("export").unwrap().value_of("path") { + Some(p) => std::path::Path::new(p).to_path_buf(), + None => { + let date = chrono::Local::now().to_rfc3339(); + let pathstr = format!("backups/{}.jsonld", date); + let mut pt = config.config_dir; + pt.push(&pathstr); + pt + }, + }; + let outstr = appstate.store.export(true)?; + std::fs::create_dir_all(path.parent().unwrap()) + .map_err(|e| format!("Failed to create directory {:?}. {}", path, e))?; + let mut file = File::create(&path).map_err(|e| format!("Failed to write file to {:?}. {}", path, e))?; + use std::io::Write; + write!(file, "{}", outstr)?; + println!("Succesfully exported data to {}", path.to_str().unwrap()); + std::process::exit(0); + } + Some("import") => { + let pathstr = matches.subcommand_matches("import").unwrap().value_of("path").unwrap(); + let path = std::path::Path::new(pathstr); + let readstring = std::fs::read_to_string(path)?; + + appstate.store.import(&readstring)?; + + println!("Sucesfully imported {} to store.", pathstr); + std::process::exit(0); + } + Some("run") => { + // continue, start server + } + Some(unkown) => { + panic!("Unkown command: {}", unkown); + } + None => { + // Start server if no command is found + }, + }; + + let server = HttpServer::new(move || { + let data = web::Data::new(Mutex::new(appstate.clone())); + // Allow requests from other domains + let cors = Cors::permissive(); + + App::new() + .app_data(data) + .wrap(cors) + .wrap(middleware::Logger::default()) + .wrap(middleware::Compress::default()) + .configure(routes::config_routes) + .app_data( + web::JsonConfig::default() + // register error_handler for JSON extractors. + .error_handler(jsonerrors::json_error_handler), + ) + }); + + #[cfg(feature = "desktop")] + tray_icon::tray_icon_process(config.clone()); + + if config.https { + // If there is no certificate file, or the certs are too old, start HTTPS initialization + if std::fs::File::open(&config.cert_path).is_err() || crate::https::check_expiration_certs() + { + https::cert_init_server(&config).await.unwrap(); + } + let https_config = crate::https::get_https_config(&config) + .expect("HTTPS TLS Configuration with Let's Encrypt failed."); + let endpoint = format!("{}:{}", config.ip, config.port_https); + server + .bind_rustls(&endpoint, https_config) + .expect(&*format!("Cannot bind to endpoint {}", &endpoint)) + .run() + .await?; + Ok(()) + } else { + let endpoint = format!("{}:{}", config.ip, config.port); + server + .bind(&format!("{}:{}", config.ip, config.port)) + .expect(&*format!("Cannot bind to endpoint {}", &endpoint)) + .run() + .await?; + Ok(()) + } +} From 939b2a6f6fadbd3ce532ff75013c299ce73ba07d Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Fri, 11 Feb 2022 16:48:44 +0100 Subject: [PATCH 5/7] #73 wasmer running --- Cargo.lock | 905 ++++++++++++++++------------------- lib/src/errors.rs | 33 ++ lib/src/plugins/wasm_demo.rs | 18 +- server/src/content_types.rs | 3 - 4 files changed, 453 insertions(+), 506 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f13bee8b9..2528f2793 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -44,9 +44,9 @@ dependencies = [ [[package]] name = "actix-codec" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13895df506faee81e423febbae3a33b27fca71831b96bb3d60adf16ebcfea952" +checksum = "a36c014a3e811624313b51a227b775ecba55d36ef9462bbaac7d4f13e54c9271" dependencies = [ "bitflags", "bytes", @@ -61,9 +61,9 @@ dependencies = [ [[package]] name = "actix-cors" -version = "0.6.0-beta.9" +version = "0.6.0-beta.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ae8f8bb995121a390d61c23fb15a314ebf9a116559494a7e3bcfeca379c473d" +checksum = "8debd30414af03e9411186aac95e0230b0bb1e91146f48015dfab5c049940223" dependencies = [ "actix-service", "actix-utils", @@ -100,9 +100,9 @@ dependencies = [ [[package]] name = "actix-http" -version = "3.0.0-rc.1" +version = "3.0.0-rc.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08aac516b88cb8cfbfa834c76b58607ffac75946d947dcb6a9ffc5673e1e875d" +checksum = "fb0185d65352deeea60d92231708068c04dc64f1ab307a1a307206a47d5a45d3" dependencies = [ "actix-codec", "actix-rt", @@ -220,22 +220,21 @@ dependencies = [ [[package]] name = "actix-tls" -version = "3.0.0" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5ef5760747cdfb108a1f35e6911a7a40939da893f95e035f9eee0c18b4b4025" +checksum = "a31ab31563b611fa822480b4255e8750cf0af9ce1b8b7bde298afe8447ef9333" dependencies = [ "actix-codec", "actix-rt", "actix-service", "actix-utils", - "derive_more", "futures-core", "http", "log", "pin-project-lite", "tokio-rustls", "tokio-util", - "webpki-roots 0.22.1", + "webpki-roots 0.22.2", ] [[package]] @@ -250,9 +249,9 @@ dependencies = [ [[package]] name = "actix-web" -version = "4.0.0-rc.2" +version = "4.0.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73170d019de2d82c0d826c1f315c3106134bd764e9247505ba6f0d78d22dfe9e" +checksum = "83e3c85bc4116b69913b03f16cff8cade1212508fcd321847d9cfe3d3e41f991" dependencies = [ "actix-codec", "actix-http", @@ -284,7 +283,7 @@ dependencies = [ "serde_urlencoded", "smallvec", "socket2", - "time 0.3.5", + "time 0.3.7", "url", ] @@ -323,13 +322,18 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d44b8fee1ced9671ba043476deddef739dd0959bf77030b26b738cc591737a7" dependencies = [ -<<<<<<< master "proc-macro2", "quote", "syn", -======= - "gimli 0.23.0", ->>>>>>> #73 WIP WASM plugin support +] + +[[package]] +name = "addr2line" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +dependencies = [ + "gimli 0.26.1", ] [[package]] @@ -344,7 +348,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.4", "once_cell", "version_check", ] @@ -384,9 +388,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.52" +version = "1.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84450d0b4a8bd1ba4144ce8ce718fbc5d071358b1e5384bace6536b3d1f2d5b3" +checksum = "94a45b455c14666b85fc40a019e8ab9eb75e3a124e05494f5397122bc9eb06e0" [[package]] name = "askama_escape" @@ -515,9 +519,9 @@ dependencies = [ [[package]] name = "async-task" -version = "4.0.3" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" +checksum = "677d306121baf53310a3fd342d88dc0824f6bbeace68347593658525565abee8" [[package]] name = "atk" @@ -577,7 +581,7 @@ dependencies = [ "atomic_lib", "awc", "chrono", - "clap 3.0.0-rc.9", + "clap 3.0.14", "dirs 3.0.2", "dotenv", "futures", @@ -632,11 +636,8 @@ dependencies = [ "tracing", "ureq", "url", -<<<<<<< master "urlencoding", -======= "wasmer", ->>>>>>> #73 WIP WASM plugin support ] [[package]] @@ -652,9 +653,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "awc" @@ -690,6 +691,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "backtrace" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object 0.27.1", + "rustc-demangle", +] + [[package]] name = "base-x" version = "0.2.8" @@ -734,9 +750,9 @@ checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] name = "block-buffer" -version = "0.10.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1d36a02058e76b040de25a4464ba1c80935655595b661505c8b39b664828b95" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" dependencies = [ "generic-array", ] @@ -790,9 +806,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.8.0" +version = "3.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c" +checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" [[package]] name = "byteorder" @@ -915,7 +931,6 @@ version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ -<<<<<<< master "ansi_term", "atty", "bitflags", @@ -923,22 +938,16 @@ dependencies = [ "textwrap 0.11.0", "unicode-width", "vec_map", -======= - "glob", - "libc", - "libloading 0.5.2", ->>>>>>> #73 WIP WASM plugin support ] [[package]] name = "clap" -version = "3.0.0-rc.9" +version = "3.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7843ae7a539bef687e018bf9edf7e87728024b29d02b0f8409726be8880ae1a" +checksum = "b63edc3f163b3c71ec8aa23f9bd6070f77edbf3d1d198b164afa90ff00e4ec62" dependencies = [ "atty", "bitflags", -<<<<<<< master "clap_derive", "indexmap", "lazy_static", @@ -950,11 +959,11 @@ dependencies = [ [[package]] name = "clap_derive" -version = "3.0.0-rc.9" +version = "3.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae3cc2f259ea636871f5da15b0ac033f1821d7a5506c3d1bfbdde201f14c803" +checksum = "9a1132dc3944b31c20dd8b906b3a9f0a5d0243e092d59171414969657ac6aa85" dependencies = [ - "heck", + "heck 0.4.0", "proc-macro-error", "proc-macro2", "quote", @@ -1005,9 +1014,9 @@ dependencies = [ [[package]] name = "combine" -version = "4.6.2" +version = "4.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b2f5d0ee456f3928812dfc8c6d9a1d592b98678f6d56db9b0cd2b7bc6c8db5" +checksum = "50b727aacc797f9fc28e355d21f34709ac4fc9adecfe470ad07b8f4464f53062" dependencies = [ "memchr", ] @@ -1023,9 +1032,9 @@ dependencies = [ [[package]] name = "const_fn" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7" +checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" [[package]] name = "convert_case" @@ -1051,7 +1060,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94d4706de1b0fa5b132270cddffa8585166037822e260a944fe161acd137ca05" dependencies = [ "percent-encoding", - "time 0.3.5", + "time 0.3.7", "version_check", ] @@ -1073,9 +1082,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" dependencies = [ "core-foundation-sys", "libc", @@ -1119,19 +1128,78 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" dependencies = [ "libc", -======= - "strsim 0.8.0", - "textwrap", - "unicode-width", - "vec_map", ->>>>>>> #73 WIP WASM plugin support +] + +[[package]] +name = "cranelift-bforest" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9221545c0507dc08a62b2d8b5ffe8e17ac580b0a74d1813b496b8d70b070fbd0" +dependencies = [ + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9936ea608b6cd176f107037f6adbb4deac933466fc7231154f96598b2d3ab1" +dependencies = [ + "byteorder", + "cranelift-bforest", + "cranelift-codegen-meta", + "cranelift-codegen-shared", + "cranelift-entity", + "gimli 0.22.0", + "log", + "regalloc", + "smallvec", + "target-lexicon", + "thiserror", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef2b2768568306540f4c8db3acce9105534d34c4a1e440529c1e702d7f8c8d7" +dependencies = [ + "cranelift-codegen-shared", + "cranelift-entity", +] + +[[package]] +name = "cranelift-codegen-shared" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6759012d6d19c4caec95793f052613e9d4113e925e7f14154defbac0f1d4c938" + +[[package]] +name = "cranelift-entity" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86badbce14e15f52a45b666b38abe47b204969dd7f8fb7488cb55dd46b361fa6" +dependencies = [ + "serde", +] + +[[package]] +name = "cranelift-frontend" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b608bb7656c554d0a4cf8f50c7a10b857e80306f6ff829ad6d468a7e2323c8d8" +dependencies = [ + "cranelift-codegen", + "log", + "smallvec", + "target-lexicon", ] [[package]] name = "crc32fast" -version = "1.3.0" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "738c290dfaea84fc1ca15ad9c168d083b05a714e1efddd8edaab678dc28d2836" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if 1.0.0", ] @@ -1188,9 +1256,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" +checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -1209,9 +1277,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.5" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" +checksum = "c00d6d2ea26e8b151d99093005cb442fb9a37aeaca582a03ec70946f49ab5ed9" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -1222,9 +1290,9 @@ dependencies = [ [[package]] name = "crossbeam-queue" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b10ddc024425c88c2ad148c1b0fd53f4c6d38db9697c9f1588381212fa657c9" +checksum = "4dd435b205a4842da59efd07628f921c096bc1cc0a156835b4fa0bcb9a19bcce" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -1232,9 +1300,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.5" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" +checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6" dependencies = [ "cfg-if 1.0.0", "lazy_static", @@ -1248,86 +1316,16 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-common" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d6b536309245c849479fba3da410962a43ed8e51c26b729208ec0ac2798d0" +checksum = "a4600d695eb3f6ce1cd44e6e291adceb2cc3ab12f20a33777ecd0bf6eba34e06" dependencies = [ "generic-array", ] [[package]] -<<<<<<< master name = "csv" version = "1.1.6" -======= -name = "cranelift-bforest" -version = "0.68.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9221545c0507dc08a62b2d8b5ffe8e17ac580b0a74d1813b496b8d70b070fbd0" -dependencies = [ - "cranelift-entity", -] - -[[package]] -name = "cranelift-codegen" -version = "0.68.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9936ea608b6cd176f107037f6adbb4deac933466fc7231154f96598b2d3ab1" -dependencies = [ - "byteorder", - "cranelift-bforest", - "cranelift-codegen-meta", - "cranelift-codegen-shared", - "cranelift-entity", - "gimli 0.22.0", - "log", - "regalloc", - "smallvec", - "target-lexicon", - "thiserror", -] - -[[package]] -name = "cranelift-codegen-meta" -version = "0.68.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef2b2768568306540f4c8db3acce9105534d34c4a1e440529c1e702d7f8c8d7" -dependencies = [ - "cranelift-codegen-shared", - "cranelift-entity", -] - -[[package]] -name = "cranelift-codegen-shared" -version = "0.68.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6759012d6d19c4caec95793f052613e9d4113e925e7f14154defbac0f1d4c938" - -[[package]] -name = "cranelift-entity" -version = "0.68.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86badbce14e15f52a45b666b38abe47b204969dd7f8fb7488cb55dd46b361fa6" -dependencies = [ - "serde", -] - -[[package]] -name = "cranelift-frontend" -version = "0.68.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b608bb7656c554d0a4cf8f50c7a10b857e80306f6ff829ad6d468a7e2323c8d8" -dependencies = [ - "cranelift-codegen", - "log", - "smallvec", - "target-lexicon", -] - -[[package]] -name = "crc32fast" -version = "1.2.1" ->>>>>>> #73 WIP WASM plugin support source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" dependencies = [ @@ -1339,34 +1337,8 @@ dependencies = [ ] [[package]] -<<<<<<< master name = "csv-core" version = "0.1.10" -======= -name = "crossbeam-channel" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.1" ->>>>>>> #73 WIP WASM plugin support source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" dependencies = [ @@ -1385,9 +1357,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9d6ddad5866bb2170686ed03f6839d31a76e5407d80b1c334a2c24618543ffa" +checksum = "d0d720b8683f8dd83c65155f0530560cba68cd2bf395f6513a483caee57ff7f4" dependencies = [ "darling_core", "darling_macro", @@ -1395,9 +1367,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ced1fd13dc386d5a8315899de465708cf34ee2a6d9394654515214e67bb846" +checksum = "7a340f241d2ceed1deb47ae36c4144b2707ec7dd0b649f894cb39bb595986324" dependencies = [ "fnv", "ident_case", @@ -1409,9 +1381,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a7a1445d54b2f9792e3b31a3e715feabbace393f38dc4ffd49d94ee9bc487d5" +checksum = "72c41b3b7352feb3211a0d743dc5700a4e3b60f51bd2b368892d1e0f9a95f44b" dependencies = [ "darling_core", "quote", @@ -1439,13 +1411,12 @@ checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" [[package]] name = "digest" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b697d66081d42af4fba142d56918a3cb21dc8eb63372c6b85d14f44fb9c5979b" +checksum = "8cb780dce4f9a8f5c087362b3a4595936b2019e7c8b30f2c3e9a7e94e6ae9837" dependencies = [ "block-buffer", "crypto-common", - "generic-array", ] [[package]] @@ -1547,11 +1518,32 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "enumset" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6216d2c19a6fb5f29d1ada1dc7bc4367a8cbf0fa4af5cf12e07b5bbdde6b5b2c" +dependencies = [ + "enumset_derive", +] + +[[package]] +name = "enumset_derive" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6451128aa6655d880755345d085494cf7561a6bee7c8dc821e5d77e6d267ecd4" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "event-listener" -version = "2.5.1" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" +checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" [[package]] name = "fail" @@ -1565,7 +1557,12 @@ dependencies = [ ] [[package]] -<<<<<<< master +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] name = "fastdivide" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1574,31 +1571,6 @@ checksum = "4a99a2d53cf90642500986ad22e5083b09e42d44c408f5f112e2a4a0925a643c" [[package]] name = "fastfield_codecs" version = "0.1.0" -======= -name = "enumset" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbd795df6708a599abf1ee10eacc72efd052b7a5f70fdf0715e4d5151a6db9c3" -dependencies = [ - "enumset_derive", -] - -[[package]] -name = "enumset_derive" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19c52f9ec503c8a68dc04daf71a04b07e690c32ab1a8b68e33897f255269d47" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "env_logger" -version = "0.7.1" ->>>>>>> #73 WIP WASM plugin support source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb0e8bfa31546b4ace05092c9db8d251d7bbc298a384875a08c945a473de4f1f" dependencies = [ @@ -1608,9 +1580,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779d043b6a0b90cc4c0ed7ee380a6504394cee7efd7db050e3774eee387324b2" +checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" dependencies = [ "instant", ] @@ -1626,17 +1598,10 @@ dependencies = [ ] [[package]] -<<<<<<< master name = "firestorm" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d6188b8804df28032815ea256b6955c9625c24da7525f387a7af02fbb8f01" -======= -name = "fallible-iterator" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" ->>>>>>> #73 WIP WASM plugin support [[package]] name = "flate2" @@ -1693,9 +1658,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28560757fe2bb34e79f907794bb6b22ae8b0e5c669b638a1132f2592b19035b4" +checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" dependencies = [ "futures-channel", "futures-core", @@ -1708,9 +1673,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3dda0b6588335f360afc675d0564c17a77a2bda81ca178a4b6081bd86c7f0b" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" dependencies = [ "futures-core", "futures-sink", @@ -1718,15 +1683,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c8ff0461b82559810cdccfde3215c3f373807f5e5232b71479bff7bb2583d7" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" [[package]] name = "futures-executor" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29d6d2ff5bb10fb95c85b8ce46538a2e5f5e7fdc755623a7d4529ab8a4ed9d2a" +checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" dependencies = [ "futures-core", "futures-task", @@ -1736,9 +1701,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f9d34af5a1aac6fb380f735fe510746c38067c5bf16c7fd250280503c971b2" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" [[package]] name = "futures-lite" @@ -1757,9 +1722,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbd947adfffb0efc70599b3ddcf7b5597bb5fa9e245eb99f62b3a5f7bb8bd3c" +checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" dependencies = [ "proc-macro2", "quote", @@ -1768,21 +1733,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3055baccb68d74ff6480350f8d6eb8fcfa3aa11bdc1a1ae3afdd0514617d508" +checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" [[package]] name = "futures-task" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee7c6485c30167ce4dfb83ac568a849fe53274c831081476ee13e0dce1aad72" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" [[package]] name = "futures-util" -version = "0.3.19" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b5cf40b47a271f77a8b1bec03ca09044d99d2372c0de244e66430761127164" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" dependencies = [ "futures-channel", "futures-core", @@ -1865,9 +1830,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.4" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" dependencies = [ "typenum", "version_check", @@ -1886,9 +1851,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "418d37c8b1d42553c93648be529cb70f920d3baf8ef469b74b9638df426e0b4c" dependencies = [ "cfg-if 1.0.0", "libc", @@ -1896,8 +1861,6 @@ dependencies = [ ] [[package]] -<<<<<<< master -======= name = "gimli" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1910,12 +1873,11 @@ dependencies = [ [[package]] name = "gimli" -version = "0.23.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" +checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" [[package]] ->>>>>>> #73 WIP WASM plugin support name = "gio" version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1971,7 +1933,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2aad66361f66796bfc73f530c51ef123970eb895ffba991a234fcf7bea89e518" dependencies = [ "anyhow", - "heck", + "heck 0.3.3", "proc-macro-crate 1.1.0", "proc-macro-error", "proc-macro2", @@ -1991,15 +1953,14 @@ dependencies = [ [[package]] name = "gloo-timers" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f16c88aa13d2656ef20d1c042086b8767bbe2bdb62526894275a1b062161b2e" +checksum = "4d12a7f4e95cfe710f1d624fb1210b7d961a5fb05c4fd942f4feab06e61f590e" dependencies = [ "futures-channel", "futures-core", "js-sys", "wasm-bindgen", - "web-sys", ] [[package]] @@ -2061,7 +2022,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21de1da96dc117443fb03c2e270b2d34b7de98d0a79a19bbb689476173745b79" dependencies = [ "anyhow", - "heck", + "heck 0.3.3", "proc-macro-crate 1.1.0", "proc-macro-error", "proc-macro2", @@ -2071,9 +2032,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f072413d126e57991455e0a922b31e4c8ba7c2ffbebf6b78b4f8521397d65cd" +checksum = "d9f1f717ddc7b2ba36df7e871fd88db79326551d3d6f1fc406fbfd28b582ff8e" dependencies = [ "bytes", "fnv", @@ -2112,6 +2073,12 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -2129,13 +2096,13 @@ checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163" [[package]] name = "http" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b" +checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" dependencies = [ "bytes", "fnv", - "itoa 0.4.8", + "itoa 1.0.1", ] [[package]] @@ -2146,9 +2113,9 @@ checksum = "eee9694f83d9b7c09682fdb32213682939507884e5bcf227be9aff5d644b90dc" [[package]] name = "httparse" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" +checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" [[package]] name = "httpdate" @@ -2181,9 +2148,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" dependencies = [ "autocfg", "hashbrown", @@ -2231,9 +2198,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.55" +version = "0.3.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84" +checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" dependencies = [ "wasm-bindgen", ] @@ -2266,16 +2233,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] -name = "levenshtein_automata" -version = "0.2.1" +name = "leb128" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25" +checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] -name = "leb128" -version = "0.2.4" +name = "levenshtein_automata" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" +checksum = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25" [[package]] name = "libappindicator" @@ -2302,9 +2269,19 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.112" +version = "0.2.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e74d72e0f9b65b5b4ca49a346af3976df0f9c61d550727f349ecd559f251a26c" + +[[package]] +name = "libloading" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" +checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] [[package]] name = "local-channel" @@ -2319,31 +2296,16 @@ dependencies = [ ] [[package]] -<<<<<<< master name = "local-waker" version = "0.1.2" -======= -name = "libloading" -version = "0.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" -dependencies = [ - "cfg-if 1.0.0", - "winapi 0.3.9", -] - -[[package]] -name = "linked-hash-map" -version = "0.5.3" ->>>>>>> #73 WIP WASM plugin support source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "902eb695eb0591864543cbfbf6d742510642a605a61fc5e97fe6ceb5a30ac4fb" [[package]] name = "lock_api" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109" +checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" dependencies = [ "scopeguard", ] @@ -2426,18 +2388,18 @@ checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "memmap2" -version = "0.3.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b6c2ebff6180198788f5db08d7ce3bc1d0b617176678831a7510825973e357" +checksum = "723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4" dependencies = [ "libc", ] [[package]] name = "memmap2" -version = "0.2.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397d1a6d6d0563c0f5462bbdae662cf6c784edf5e828e40c7257f85d82bf56dd" +checksum = "00b6c2ebff6180198788f5db08d7ce3bc1d0b617176678831a7510825973e357" dependencies = [ "libc", ] @@ -2513,19 +2475,14 @@ dependencies = [ ] [[package]] -<<<<<<< master -name = "murmurhash32" -version = "0.2.0" -======= name = "more-asserts" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" +checksum = "7843ec2de400bcbc6a6328c958dc38e5359da6e93e72e37bc5246bf1ae776389" [[package]] -name = "net2" -version = "0.2.37" ->>>>>>> #73 WIP WASM plugin support +name = "murmurhash32" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d736ff882f0e85fe9689fb23db229616c4c00aee2b3ac282f666d8f20eb25d4a" dependencies = [ @@ -2546,9 +2503,9 @@ dependencies = [ [[package]] name = "ntapi" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" dependencies = [ "winapi", ] @@ -2623,6 +2580,15 @@ dependencies = [ "libc", ] +[[package]] +name = "num_threads" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ba99ba6393e2c3734791401b66902d981cb03bf190af674ca69949b6d5fb15" +dependencies = [ + "libc", +] + [[package]] name = "objc" version = "0.2.7" @@ -2653,8 +2619,6 @@ dependencies = [ ] [[package]] -<<<<<<< master -======= name = "object" version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2665,7 +2629,15 @@ dependencies = [ ] [[package]] ->>>>>>> #73 WIP WASM plugin support +name = "object" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +dependencies = [ + "memchr", +] + +[[package]] name = "once_cell" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2740,9 +2712,9 @@ checksum = "c59b4fef9c3c51e25835de30fe78e570d0ef42dceca0d514c66dca413d505316" [[package]] name = "oxiri" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e54fb37480ffa01a9af93f991ba229b3091f2e6ac84c8f6df2c509356cc473" +checksum = "a8a8821a5332e388ab8d6436ab703c5744516c11976e2c08702fbc93fe4b3f51" [[package]] name = "padlock" @@ -2835,18 +2807,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1622113ce508488160cff04e6abc60960e676d330e1ca0f77c0b8df17c81438f" +checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b95af56fee93df76d721d356ac1ca41fccf168bc448eb14049234df764ba3e76" +checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" dependencies = [ "proc-macro2", "quote", @@ -2855,9 +2827,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" +checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" [[package]] name = "pin-utils" @@ -2914,15 +2886,15 @@ dependencies = [ [[package]] name = "ppv-lite86" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "predicates" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95e5a7689e456ab905c22c2b48225bb921aba7c8dfa58440d68ba13f6222a715" +checksum = "a5aab5be6e4732b473071984b3164dbbfb7a3674d30ea5ff44410b6bcd960c3c" dependencies = [ "difflib", "itertools", @@ -2931,15 +2903,15 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57e35a3326b75e49aa85f5dc6ec15b41108cf5aee58eabb1f274dd18b73c2451" +checksum = "da1c2388b1513e1b605fcec39a95e0a9e8ef088f71443ef37099fa9ae6673fcb" [[package]] name = "predicates-tree" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "338c7be2905b732ae3984a2f40032b5e94fd8f52505b186c7d4d68d193445df7" +checksum = "4d86de6de25020a36c6d3643a86d9a6a9f552107c0559c60ea03551b5e16c032" dependencies = [ "predicates-core", "termtree", @@ -2988,30 +2960,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn", - "version_check 0.9.2", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check 0.9.2", -] - [[package]] name = "proc-macro-hack" version = "0.5.19" @@ -3057,9 +3005,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d" +checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" dependencies = [ "proc-macro2", ] @@ -3124,7 +3072,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.4", ] [[package]] @@ -3170,31 +3118,6 @@ dependencies = [ "num_cpus", ] -[[package]] -name = "rayon" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" -dependencies = [ - "autocfg", - "crossbeam-deque", - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "lazy_static", - "num_cpus", -] - [[package]] name = "redox_syscall" version = "0.2.10" @@ -3210,7 +3133,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.4", "redox_syscall", ] @@ -3252,10 +3175,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e931c58b93d86f080c734bfd2bce7dd0079ae2331235818133c8be7f422e20e" [[package]] -<<<<<<< master name = "regex-syntax" version = "0.6.25" -======= +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" + +[[package]] name = "region" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3264,16 +3189,9 @@ dependencies = [ "bitflags", "libc", "mach", - "winapi 0.3.9", + "winapi", ] -[[package]] -name = "remove_dir_all" -version = "0.5.3" ->>>>>>> #73 WIP WASM plugin support -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" - [[package]] name = "remove_dir_all" version = "0.5.3" @@ -3300,15 +3218,15 @@ dependencies = [ [[package]] name = "rio_api" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d56fef74f659212c3eed41c8d17cfe3f633d482524893736ed6857e8cdbf99" +checksum = "6ed96d73ad4e0de59e667b26c899930c90912cad3fec5f0291fc3171c90dacae" [[package]] name = "rio_turtle" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "896e6e63b744436510f2cd4bdc1d236e3f2a5d0cbbe0468f75cdce45c60172e7" +checksum = "1945ea5cf5f489bd2cbafeb705686abdc94edfa9dd88a63a25e8c5c0d38f9cc2" dependencies = [ "oxilangtag", "oxiri", @@ -3325,6 +3243,18 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "rustc-demangle" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc_version" version = "0.2.3" @@ -3349,7 +3279,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.4", + "semver 1.0.5", ] [[package]] @@ -3476,9 +3406,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" +checksum = "0486718e92ec9a68fbed73bb5ef687d71103b142595b406835649bebd33f72c7" [[package]] name = "semver-parser" @@ -3497,36 +3427,37 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.132" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9875c23cf305cd1fd7eb77234cbb705f21ea6a72c637a5c6db5fe4b8e7f008" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" dependencies = [ "serde_derive", ] [[package]] -<<<<<<< master +name = "serde_bytes" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" +dependencies = [ + "serde", +] + +[[package]] name = "serde_cbor" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" dependencies = [ "half", -======= -name = "serde_bytes" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" -dependencies = [ ->>>>>>> #73 WIP WASM plugin support "serde", ] [[package]] name = "serde_derive" -version = "1.0.132" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc0db5cb2556c0e558887d9bbdcf6ac4471e83ff66cf696e5419024d1606276" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" dependencies = [ "proc-macro2", "quote", @@ -3535,9 +3466,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.73" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcbd0344bc6533bc7ec56df11d42fb70f1b912351c0825ccb7211b59d8af7cf5" +checksum = "d23c1ba4cf0efd44be32017709280b32d1cea5c3f1275c3b6d9e8bc54f758085" dependencies = [ "itoa 1.0.1", "ryu", @@ -3546,12 +3477,12 @@ dependencies = [ [[package]] name = "serde_urlencoded" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 0.4.8", + "itoa 1.0.1", "ryu", "serde", ] @@ -3569,9 +3500,18 @@ dependencies = [ [[package]] name = "sha1" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" [[package]] name = "sharded-slab" @@ -3615,21 +3555,15 @@ dependencies = [ [[package]] name = "smallvec" -<<<<<<< master -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" -======= -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" ->>>>>>> #73 WIP WASM plugin support +checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" [[package]] name = "socket2" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" dependencies = [ "libc", "winapi", @@ -3735,7 +3669,7 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" dependencies = [ - "heck", + "heck 0.3.3", "proc-macro2", "quote", "syn", @@ -3743,9 +3677,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.84" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecb2e6da8ee5eb9a61068762a32fa9619cc591ceb055b3687f4cd4051ec2e06b" +checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" dependencies = [ "proc-macro2", "quote", @@ -3775,7 +3709,7 @@ checksum = "480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6" dependencies = [ "anyhow", "cfg-expr", - "heck", + "heck 0.3.3", "itertools", "pkg-config", "strum", @@ -3812,7 +3746,7 @@ dependencies = [ "lru", "lz4_flex", "measure_time", - "memmap2", + "memmap2 0.3.1", "murmurhash32", "num_cpus", "once_cell", @@ -3850,19 +3784,8 @@ dependencies = [ ] [[package]] -<<<<<<< master name = "tantivy-fst" version = "0.3.0" -======= -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "syn" -version = "1.0.64" ->>>>>>> #73 WIP WASM plugin support source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb20cdc0d83e9184560bdde9cd60142dbb4af2e0f770e88fce45770495224205" dependencies = [ @@ -3888,13 +3811,13 @@ checksum = "422045212ea98508ae3d28025bc5aaa2bd4a9cdaecd442a08da2ee620ee9ea95" [[package]] name = "tempfile" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ "cfg-if 1.0.0", + "fastrand", "libc", - "rand 0.8.4", "redox_syscall", "remove_dir_all", "winapi", @@ -3911,9 +3834,9 @@ dependencies = [ [[package]] name = "termtree" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13a4ec180a2de59b57434704ccfad967f789b12737738798fa08798cd5824c16" +checksum = "507e9898683b6c43a9aa55b64259b721b52ba226e0f3779137e50ad114a4c90b" [[package]] name = "textwrap" @@ -3952,9 +3875,9 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" dependencies = [ "once_cell", ] @@ -3987,12 +3910,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41effe7cfa8af36f439fac33861b66b049edc6f9a32331e2312660529c1c24ad" +checksum = "004cbc98f30fa233c61a38bc77e96a9106e65c88f2d3bef182ae952027e5753d" dependencies = [ - "itoa 0.4.8", + "itoa 1.0.1", "libc", + "num_threads", "time-macros 0.2.3", ] @@ -4052,9 +3976,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.15.0" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbf1c778ec206785635ce8ad57fe52b3009ae9e0c9f574a728f3049d3e55838" +checksum = "0c27a64b625de6d309e8c57716ba93021dccf1b3b5c97edd6d3dd2d2135afc0a" dependencies = [ "bytes", "libc", @@ -4108,22 +4032,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d8d93354fe2a8e50d5953f5ae2e47a3fc2ef03292e7ea46e3cc38f549525fb9" dependencies = [ "cfg-if 1.0.0", -<<<<<<< master "pin-project-lite", -======= - "log", - "pin-project-lite 0.2.4", ->>>>>>> #73 WIP WASM plugin support "tracing-attributes", "tracing-core", ] [[package]] -<<<<<<< master name = "tracing-actix-web" -version = "0.5.0-rc.2" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eba9ba7b978b6fd2838d47cd459cd4e23451bdd571448509e71476531b9306f2" +checksum = "c7890da8dde042f5248aeab89e3de570039ad5ecc9dbe492bf3222355e102086" dependencies = [ "actix-web", "pin-project", @@ -4137,12 +4055,6 @@ name = "tracing-attributes" version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8276d9a4a3a558d7b7ad5303ad50b53d58264641b82914b7ada36bd762e7a716" -======= -name = "tracing-attributes" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" ->>>>>>> #73 WIP WASM plugin support dependencies = [ "proc-macro2", "quote", @@ -4150,7 +4062,6 @@ dependencies = [ ] [[package]] -<<<<<<< master name = "tracing-chrome" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4162,8 +4073,6 @@ dependencies = [ ] [[package]] -======= ->>>>>>> #73 WIP WASM plugin support name = "tracing-core" version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4196,9 +4105,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d81bfa81424cc98cb034b837c985b7a290f592e5b4322f353f94a0ab0f9f594" +checksum = "74786ce43333fcf51efe947aed9718fbe46d5c7328ec3f1029e818083966d9aa" dependencies = [ "ansi_term", "lazy_static", @@ -4294,9 +4203,9 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" +checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" [[package]] name = "unicode-width" @@ -4371,7 +4280,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.4", "serde", ] @@ -4455,9 +4364,9 @@ checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasm-bindgen" -version = "0.2.78" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" +checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -4465,9 +4374,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.78" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b" +checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" dependencies = [ "bumpalo", "lazy_static", @@ -4480,9 +4389,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39" +checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -4492,9 +4401,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.78" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9" +checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4502,9 +4411,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.78" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab" +checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" dependencies = [ "proc-macro2", "quote", @@ -4515,9 +4424,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.78" +version = "0.2.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc" +checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" [[package]] name = "wasmer" @@ -4539,7 +4448,7 @@ dependencies = [ "wasmer-types", "wasmer-vm", "wat", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -4599,7 +4508,7 @@ dependencies = [ "backtrace", "bincode", "lazy_static", - "memmap2", + "memmap2 0.2.3", "more-asserts", "rustc-demangle", "serde", @@ -4626,7 +4535,7 @@ dependencies = [ "wasmer-engine", "wasmer-types", "wasmer-vm", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -4638,7 +4547,7 @@ dependencies = [ "bincode", "cfg-if 0.1.10", "leb128", - "libloading 0.6.7", + "libloading", "serde", "tempfile", "tracing", @@ -4647,7 +4556,7 @@ dependencies = [ "wasmer-object", "wasmer-types", "wasmer-vm", - "which 4.1.0", + "which", ] [[package]] @@ -4656,7 +4565,7 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abf8e0c12b82ff81ebecd30d7e118be5fec871d6de885a90eeb105df0a769a7b" dependencies = [ - "object", + "object 0.22.0", "thiserror", "wasmer-compiler", "wasmer-types", @@ -4690,7 +4599,7 @@ dependencies = [ "serde", "thiserror", "wasmer-types", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -4701,27 +4610,29 @@ checksum = "87cc2fe6350834b4e528ba0901e7aa405d78b89dc1fa3145359eb4de0e323fcf" [[package]] name = "wast" -version = "35.0.2" +version = "39.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ef140f1b49946586078353a453a1d28ba90adfc54dde75710bc1931de204d68" +checksum = "e9bbbd53432b267421186feee3e52436531fa69a7cfee9403f5204352df3dd05" dependencies = [ "leb128", + "memchr", + "unicode-width", ] [[package]] name = "wat" -version = "1.0.37" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ec280a739b69173e0ffd12c1658507996836ba4e992ed9bc1e5385a0bd72a02" +checksum = "ab98ed25494f97c69f28758617f27c3e92e5336040b5c3a14634f2dd3fe61830" dependencies = [ "wast", ] [[package]] name = "web-sys" -version = "0.3.55" +version = "0.3.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb" +checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" dependencies = [ "js-sys", "wasm-bindgen", @@ -4758,9 +4669,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.22.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c475786c6f47219345717a043a37ec04cb4bc185e28853adcc4fa0a947eba630" +checksum = "552ceb903e957524388c4d3475725ff2c8b7960922063af6ce53c9a43da07449" dependencies = [ "webpki 0.22.0", ] @@ -4776,9 +4687,9 @@ dependencies = [ [[package]] name = "which" -version = "4.2.2" +version = "4.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea187a8ef279bc014ec368c27a920da2024d2a711109bfbe3440585d5cf27ad9" +checksum = "2a5a7e487e921cf220206864a94a89b6c6905bfc19f1057fa26a4cb360e5c1d2" dependencies = [ "either", "lazy_static", @@ -4818,18 +4729,18 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "zstd" -version = "0.9.1+zstd.1.5.1" +version = "0.10.0+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "538b8347df9257b7fbce37677ef7535c00a3c7bf1f81023cc328ed7fe4b41de8" +checksum = "3b1365becbe415f3f0fcd024e2f7b45bacfb5bdd055f0dc113571394114e7bdd" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "4.1.2+zstd.1.5.1" +version = "4.1.4+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb4cfe2f6e6d35c5d27ecd9d256c4b6f7933c4895654917460ec56c29336cc1" +checksum = "2f7cd17c9af1a4d6c24beb1cc54b17e2ef7b593dc92f19e9d9acad8b182bbaee" dependencies = [ "libc", "zstd-sys", @@ -4837,9 +4748,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "1.6.2+zstd.1.5.1" +version = "1.6.3+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f" +checksum = "fc49afa5c8d634e75761feda8c592051e7eeb4683ba827211eb0d731d3402ea8" dependencies = [ "cc", "libc", diff --git a/lib/src/errors.rs b/lib/src/errors.rs index 7f2ee2227..e91713479 100644 --- a/lib/src/errors.rs +++ b/lib/src/errors.rs @@ -200,6 +200,8 @@ impl From for AtomicError { } } +// LIBRARY ERRORS + #[cfg(feature = "db")] impl From for AtomicError { fn from(error: sled::Error) -> Self { @@ -219,3 +221,34 @@ impl From> for AtomicError { } } } + +// WASMER ERRORS + +#[cfg(feature = "db")] +impl From for AtomicError { + fn from(error: wasmer::RuntimeError) -> Self { + AtomicError { + message: error.to_string(), + error_type: AtomicErrorType::OtherError, + } + } +} + +#[cfg(feature = "db")] +impl From for AtomicError { + fn from(error: wasmer::InstantiationError) -> Self { + AtomicError { + message: error.to_string(), + error_type: AtomicErrorType::OtherError, + } + } +} +#[cfg(feature = "db")] +impl From for AtomicError { + fn from(error: wasmer::ExportError) -> Self { + AtomicError { + message: error.to_string(), + error_type: AtomicErrorType::OtherError, + } + } +} diff --git a/lib/src/plugins/wasm_demo.rs b/lib/src/plugins/wasm_demo.rs index 579ac14a2..1899f13ec 100644 --- a/lib/src/plugins/wasm_demo.rs +++ b/lib/src/plugins/wasm_demo.rs @@ -8,11 +8,15 @@ pub fn wasm_demo_endpoint() -> Endpoint { params: [urls::SHORTNAME.to_string()].into(), description: "A WASM demo ".to_string(), shortname: "wasm".to_string(), - handle: handle_wasm_demo_request, + handle: Some(handle_wasm_demo_request), } } -fn handle_wasm_demo_request(url: url::Url, store: &impl Storelike) -> AtomicResult { +fn handle_wasm_demo_request( + url: url::Url, + store: &impl Storelike, + _for_agent: Option<&str>, +) -> AtomicResult { let params = url.query_pairs(); let mut var = None; for (k, v) in params { @@ -25,7 +29,9 @@ fn handle_wasm_demo_request(url: url::Url, store: &impl Storelike) -> AtomicResu wasm_demo_endpoint().to_resource(store) } else { // Requires compiling atomic-plugin-demo - let module_u8 = include_bytes!("../../../target/wasm32-unknown-unknown/release/atomic_plugin_example.wasm"); + let module_u8 = include_bytes!( + "../../../target/wasm32-unknown-unknown/release/atomic_plugin_example.wasm" + ); // let module_string = r#" // (module // (type $t0 (func (param i32) (result i32))) @@ -39,7 +45,8 @@ fn handle_wasm_demo_request(url: url::Url, store: &impl Storelike) -> AtomicResu let arguments = &[Value::I32(10)]; let wasm_store = wasmer::Store::default(); // Creating this module can be costly, so it should probably be done earlier (server init) - let module = Module::new(&wasm_store, module_u8)?; + let module = + Module::new(&wasm_store, module_u8).map_err(|e| format!("module error: {}", e))?; let result = run_wasm(&module, arguments, fn_name)?; let mut resource = Resource::new("sub".into()); resource.set_propval_string(urls::DESCRIPTION.into(), &result, store)?; @@ -47,7 +54,6 @@ fn handle_wasm_demo_request(url: url::Url, store: &impl Storelike) -> AtomicResu } } - /// Executes a single function from a WASM application. /// Returns the first result as a String. fn run_wasm( @@ -60,7 +66,7 @@ fn run_wasm( ) -> AtomicResult { // The module doesn't import anything, so we create an empty import object. let import_object = imports! {}; - let instance = Instance::new(&module, &import_object)?; + let instance = Instance::new(module, &import_object)?; let result = instance.exports.get_function(fn_name)?.call(arguments)?; Ok(result[0].to_string()) } diff --git a/server/src/content_types.rs b/server/src/content_types.rs index b853faf1b..3ccd5b233 100644 --- a/server/src/content_types.rs +++ b/server/src/content_types.rs @@ -80,9 +80,6 @@ pub fn parse_accept_header(header: &str) -> ContentType { if mimepart.contains(MIME_NT) { return ContentType::NTriples; } - if mimepart.contains(MIME_NT) { - return ContentType::NT - } } tracing::info!("Unknown Accept header, defaut to HTML: {}", header); ContentType::Html From 94d2e7cd6e7b6ca13495b33a4aa53d9b3b345b8f Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Mon, 14 Feb 2022 19:25:15 +0100 Subject: [PATCH 6/7] Readme typos --- README.md | 2 +- server/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 76f39f516..dc665f8b8 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ The easiest way to share [Atomic Data](https://docs.atomicdata.dev/) on the web. `atomic-server` is a graph database server for storing and sharing typed linked data. Demo on [atomicdata.dev](https://atomicdata.dev) -- âš›ī¸ **Dynamic schema validation** / type checking using [Atomic Schema](https://docs.atomicdata.dev/schema/intro.html). Combines safety of structured data with the +- âš›ī¸ **Dynamic schema validation** / type checking using [Atomic Schema](https://docs.atomicdata.dev/schema/intro.html), combining the best of RDF, JSON and type safety. - 🚀 **Fast** (1ms responses on my laptop) - đŸĒļ **Lightweight** (15MB binary, no runtime dependencies) - đŸ’ģ **Runs everywhere** (linux, windows, mac, arm) diff --git a/server/README.md b/server/README.md index 3cd82d662..60ed7f05b 100644 --- a/server/README.md +++ b/server/README.md @@ -12,7 +12,7 @@ _Status: Beta. [Breaking changes](../CHANGELOG.md) are expected until 1.0._ **Atomic-server is a graph database server for storing and sharing [Atomic Data](https://docs.atomicdata.dev/). Demo on [atomicdata.dev](https://atomicdata.dev)** -- âš›ī¸ **Dynamic schema validation** / type checking using [Atomic Schema](https://docs.atomicdata.dev/schema/intro.html). Combines safety of structured data with the +- âš›ī¸ **Dynamic schema validation** / type checking using [Atomic Schema](https://docs.atomicdata.dev/schema/intro.html), combining the best of RDF, JSON and type safety. - 🚀 **Fast** (1ms responses on my laptop) - đŸĒļ **Lightweight** (15MB binary, no runtime dependencies) - đŸ’ģ **Runs everywhere** (linux, windows, mac, arm) From 0b9a736679aa2c25850302fc2468a9d9285438ab Mon Sep 17 00:00:00 2001 From: Joep Meindertsma Date: Wed, 16 Feb 2022 16:04:48 +0100 Subject: [PATCH 7/7] WIP --- Cargo.lock | 323 +++++++++++++++++++++++++---------- lib/Cargo.toml | 47 +++-- lib/src/plugins/plugin.rs | 1 + lib/src/plugins/wasm_demo.rs | 8 +- plugin-example/Cargo.toml | 11 +- plugin-example/src/lib.rs | 10 ++ 6 files changed, 294 insertions(+), 106 deletions(-) create mode 100644 lib/src/plugins/plugin.rs diff --git a/Cargo.lock b/Cargo.lock index 2528f2793..74315e583 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -564,6 +564,9 @@ dependencies = [ [[package]] name = "atomic-plugin-example" version = "0.1.0" +dependencies = [ + "reqwasm", +] [[package]] name = "atomic-server" @@ -702,7 +705,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "miniz_oxide", - "object 0.27.1", + "object", "rustc-demangle", ] @@ -810,6 +813,27 @@ version = "3.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" +[[package]] +name = "bytecheck" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "314889ea31cda264cb7c3d6e6e5c9415a987ecb0e72c17c00d36fbb881d34abe" +dependencies = [ + "bytecheck_derive", + "ptr_meta", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a2b3b92c135dae665a6f760205b89187638e83bed17ef3e44e83c712cf30600" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "byteorder" version = "1.4.3" @@ -1132,37 +1156,35 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.68.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9221545c0507dc08a62b2d8b5ffe8e17ac580b0a74d1813b496b8d70b070fbd0" +checksum = "7e6bea67967505247f54fa2c85cf4f6e0e31c4e5692c9b70e4ae58e339067333" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.68.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9936ea608b6cd176f107037f6adbb4deac933466fc7231154f96598b2d3ab1" +checksum = "48194035d2752bdd5bdae429e3ab88676e95f52a2b1355a5d4e809f9e39b1d74" dependencies = [ - "byteorder", "cranelift-bforest", "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-entity", - "gimli 0.22.0", + "gimli 0.25.0", "log", "regalloc", "smallvec", "target-lexicon", - "thiserror", ] [[package]] name = "cranelift-codegen-meta" -version = "0.68.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef2b2768568306540f4c8db3acce9105534d34c4a1e440529c1e702d7f8c8d7" +checksum = "976efb22fcab4f2cd6bd4e9913764616a54d895c1a23530128d04e03633c555f" dependencies = [ "cranelift-codegen-shared", "cranelift-entity", @@ -1170,24 +1192,21 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.68.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6759012d6d19c4caec95793f052613e9d4113e925e7f14154defbac0f1d4c938" +checksum = "9dabb5fe66e04d4652e434195b45ae65b5c8172d520247b8f66d8df42b2b45dc" [[package]] name = "cranelift-entity" -version = "0.68.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86badbce14e15f52a45b666b38abe47b204969dd7f8fb7488cb55dd46b361fa6" -dependencies = [ - "serde", -] +checksum = "3329733e4d4b8e91c809efcaa4faee80bf66f20164e3dd16d707346bd3494799" [[package]] name = "cranelift-frontend" -version = "0.68.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b608bb7656c554d0a4cf8f50c7a10b857e80306f6ff829ad6d468a7e2323c8d8" +checksum = "279afcc0d3e651b773f94837c3d581177b348c8d69e928104b2e9fccb226f921" dependencies = [ "cranelift-codegen", "log", @@ -1862,9 +1881,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" +checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7" dependencies = [ "fallible-iterator", "indexmap", @@ -1963,6 +1982,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "gloo-utils" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05c77af6f96a4f9e27c8ac23a88407381a31f4a74c3fb985c85aa79b8d898136" +dependencies = [ + "js-sys", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "gobject-sys" version = "0.14.0" @@ -2275,9 +2305,9 @@ checksum = "e74d72e0f9b65b5b4ca49a346af3976df0f9c61d550727f349ecd559f251a26c" [[package]] name = "libloading" -version = "0.6.7" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" dependencies = [ "cfg-if 1.0.0", "winapi", @@ -2320,6 +2350,27 @@ dependencies = [ "value-bag", ] +[[package]] +name = "loupe" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6a72dfa44fe15b5e76b94307eeb2ff995a8c5b283b55008940c02e0c5b634d" +dependencies = [ + "indexmap", + "loupe-derive", + "rustversion", +] + +[[package]] +name = "loupe-derive" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fbfc88337168279f2e9ae06e157cfed4efd3316e14dc96ed074d4f2e6c5952" +dependencies = [ + "quote", + "syn", +] + [[package]] name = "lru" version = "0.6.6" @@ -2388,18 +2439,18 @@ checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "memmap2" -version = "0.2.3" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4" +checksum = "00b6c2ebff6180198788f5db08d7ce3bc1d0b617176678831a7510825973e357" dependencies = [ "libc", ] [[package]] name = "memmap2" -version = "0.3.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b6c2ebff6180198788f5db08d7ce3bc1d0b617176678831a7510825973e357" +checksum = "057a3db23999c867821a7a59feb06a578fcb03685e983dff90daf9e7d24ac08f" dependencies = [ "libc", ] @@ -2618,22 +2669,14 @@ dependencies = [ "objc", ] -[[package]] -name = "object" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397" -dependencies = [ - "crc32fast", - "indexmap", -] - [[package]] name = "object" version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" dependencies = [ + "crc32fast", + "indexmap", "memchr", ] @@ -2984,6 +3027,26 @@ dependencies = [ "rustyline", ] +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "publicsuffix" version = "1.5.6" @@ -3182,9 +3245,9 @@ checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" [[package]] name = "region" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0" +checksum = "76e189c2369884dce920945e2ddf79b3dff49e071a167dd1817fa9c4c00d512e" dependencies = [ "bitflags", "libc", @@ -3201,6 +3264,35 @@ dependencies = [ "winapi", ] +[[package]] +name = "rend" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79af64b4b6362ffba04eef3a4e10829718a4896dac19daa741851c86781edf95" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "reqwasm" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee625fb8e28ee1dac344e1d135c3b9815ddd5b44b3062cb69fe83168e5225a10" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "ring" version = "0.16.20" @@ -3233,6 +3325,31 @@ dependencies = [ "rio_api", ] +[[package]] +name = "rkyv" +version = "0.7.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439655b8d657bcb28264da8e5380d55549e34ffc4149bea9e3521890a122a7bd" +dependencies = [ + "bytecheck", + "hashbrown", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cded413ad606a80291ca84bedba137093807cf4f5b36be8c60f57a7e790d48f6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "rust-stemmers" version = "1.2.0" @@ -3316,6 +3433,12 @@ dependencies = [ "base64", ] +[[package]] +name = "rustversion" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" + [[package]] name = "rustyline" version = "6.3.0" @@ -3386,6 +3509,12 @@ dependencies = [ "untrusted", ] +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + [[package]] name = "semver" version = "0.9.0" @@ -3805,9 +3934,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.11.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422045212ea98508ae3d28025bc5aaa2bd4a9cdaecd442a08da2ee620ee9ea95" +checksum = "d7fa7e55043acb85fca6b3c01485a2eeb6b69c5d21002e273c79e465f43b7ac1" [[package]] name = "tempfile" @@ -4032,6 +4161,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d8d93354fe2a8e50d5953f5ae2e47a3fc2ef03292e7ea46e3cc38f549525fb9" dependencies = [ "cfg-if 1.0.0", + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -4369,6 +4499,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" dependencies = [ "cfg-if 1.0.0", + "serde", + "serde_json", "wasm-bindgen-macro", ] @@ -4430,21 +4562,24 @@ checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" [[package]] name = "wasmer" -version = "1.0.2" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a70cfae554988d904d64ca17ab0e7cd652ee5c8a0807094819c1ea93eb9d6866" +checksum = "23f0188c23fc1b7de9bd7f8b834d0b1cd5edbe66e287452e8ce36d24418114f7" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "indexmap", + "js-sys", + "loupe", "more-asserts", "target-lexicon", "thiserror", + "wasm-bindgen", "wasmer-compiler", "wasmer-compiler-cranelift", "wasmer-derive", "wasmer-engine", - "wasmer-engine-jit", - "wasmer-engine-native", + "wasmer-engine-dylib", + "wasmer-engine-universal", "wasmer-types", "wasmer-vm", "wat", @@ -4453,11 +4588,13 @@ dependencies = [ [[package]] name = "wasmer-compiler" -version = "1.0.2" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b7732a9cab472bd921d5a0c422f45b3d03f62fa2c40a89e0770cef6d47e383e" +checksum = "88c51cc589772c5f90bd329244c2416976d6cb2ee00d59429aaa8f421d9fe447" dependencies = [ "enumset", + "loupe", + "rkyv", "serde", "serde_bytes", "smallvec", @@ -4470,17 +4607,19 @@ dependencies = [ [[package]] name = "wasmer-compiler-cranelift" -version = "1.0.2" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48cb9395f094e1d81534f4c5e330ed4cdb424e8df870d29ad585620284f5fddb" +checksum = "09691e3e323b4e1128d2127f60f9cd988b66ce49afc8184b071c2b5ab16793f2" dependencies = [ "cranelift-codegen", + "cranelift-entity", "cranelift-frontend", - "gimli 0.22.0", + "gimli 0.25.0", + "loupe", "more-asserts", "rayon", - "serde", "smallvec", + "target-lexicon", "tracing", "wasmer-compiler", "wasmer-types", @@ -4489,9 +4628,9 @@ dependencies = [ [[package]] name = "wasmer-derive" -version = "1.0.2" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b86dcd2c3efdb8390728a2b56f762db07789aaa5aa872a9dc776ba3a7912ed" +checksum = "93f5cb7b09640e09f1215da95d6fb7477d2db572f064b803ff705f39ff079cc5" dependencies = [ "proc-macro-error", "proc-macro2", @@ -4501,14 +4640,15 @@ dependencies = [ [[package]] name = "wasmer-engine" -version = "1.0.2" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efe4667d6bd888f26ae8062a63a9379fa697415b4b4e380f33832e8418fd71b5" +checksum = "ab20311c354fe2c12bc766417e0a1a45f399c1cd8ff262127d1dc86d0588971a" dependencies = [ "backtrace", - "bincode", + "enumset", "lazy_static", - "memmap2 0.2.3", + "loupe", + "memmap2 0.5.3", "more-asserts", "rustc-demangle", "serde", @@ -4521,51 +4661,54 @@ dependencies = [ ] [[package]] -name = "wasmer-engine-jit" -version = "1.0.2" +name = "wasmer-engine-dylib" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26770be802888011b4a3072f2a282fc2faa68aa48c71b3db6252a3937a85f3da" +checksum = "8dd5b7a74731e1dcccaf10a8ff5f72216c82f12972ce17cc81c6caa1afff75ea" dependencies = [ - "bincode", - "cfg-if 0.1.10", - "region", + "cfg-if 1.0.0", + "enumset", + "leb128", + "libloading", + "loupe", + "rkyv", "serde", - "serde_bytes", + "tempfile", + "tracing", "wasmer-compiler", "wasmer-engine", + "wasmer-object", "wasmer-types", "wasmer-vm", - "winapi", + "which", ] [[package]] -name = "wasmer-engine-native" -version = "1.0.2" +name = "wasmer-engine-universal" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb4083a6c69f2cd4b000b82a80717f37c6cc2e536aee3a8ffe9af3edc276a8b" +checksum = "dfeae8d5b825ad7abcf9a34e66eb11e1507b21020efe7bbf9897e3dd8d7869e2" dependencies = [ - "bincode", - "cfg-if 0.1.10", + "cfg-if 1.0.0", + "enumset", "leb128", - "libloading", - "serde", - "tempfile", - "tracing", + "loupe", + "region", + "rkyv", "wasmer-compiler", "wasmer-engine", - "wasmer-object", "wasmer-types", "wasmer-vm", - "which", + "winapi", ] [[package]] name = "wasmer-object" -version = "1.0.2" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf8e0c12b82ff81ebecd30d7e118be5fec871d6de885a90eeb105df0a769a7b" +checksum = "c3d4714e4f3bdc3b2157c24284417d19cd99de036da31d00ec5664712dcb72f7" dependencies = [ - "object 0.22.0", + "object", "thiserror", "wasmer-compiler", "wasmer-types", @@ -4573,29 +4716,33 @@ dependencies = [ [[package]] name = "wasmer-types" -version = "1.0.2" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f4ac28c2951cd792c18332f03da523ed06b170f5cf6bb5b1bdd7e36c2a8218" +checksum = "434e1c0177da0a74ecca90b2aa7d5e86198260f07e8ba83be89feb5f0a4aeead" dependencies = [ - "cranelift-entity", + "indexmap", + "loupe", + "rkyv", "serde", "thiserror", ] [[package]] name = "wasmer-vm" -version = "1.0.2" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7635ba0b6d2fd325f588d69a950ad9fa04dddbf6ad08b6b2a183146319bf6ae" +checksum = "cc8f964ebba70d9f81340228b98a164782591f00239fc7f01e1b67afcf0e0156" dependencies = [ "backtrace", "cc", - "cfg-if 0.1.10", + "cfg-if 1.0.0", "indexmap", "libc", + "loupe", "memoffset", "more-asserts", "region", + "rkyv", "serde", "thiserror", "wasmer-types", @@ -4604,9 +4751,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.65.0" +version = "0.78.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc2fe6350834b4e528ba0901e7aa405d78b89dc1fa3145359eb4de0e323fcf" +checksum = "52144d4c78e5cf8b055ceab8e5fa22814ce4315d6002ad32cfd914f37c12fd65" [[package]] name = "wast" diff --git a/lib/Cargo.toml b/lib/Cargo.toml index a0baa326c..ed36f839c 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -7,31 +7,56 @@ name = "atomic_lib" readme = "README.md" repository = "https://github.com/joepio/atomic-data-rust" version = "0.31.0" - [[bench]] all-features = true harness = false name = "benchmarks" -# path = "src/db/benchmarks.rs" [dependencies] base64 = "0.13.0" -bincode = {version = "1.3.2", optional = true} -dirs = {version = "4.0.0", optional = true} -rand = {version = "0.8.3"} regex = "1.4.5" ring = "0.16.20" -rio_api = {version = "0.6.1", optional = true} -rio_turtle = {version = "0.6.1", optional = true} -serde = {version = "1.0.125", features = ["derive"]} serde_json = "1.0.64" -sled = {version = "0.34.6", optional = true, features = ["no_logs"]} -toml = {version = "0.5.8", optional = true} tracing = "0.1.29" ureq = "1.5.4" url = "2.2.1" urlencoding = "2.1.0" -wasmer = {version="1.0.2", optional = true} + +[dependencies.bincode] +optional = true +version = "1.3.2" + +[dependencies.dirs] +optional = true +version = "4.0.0" + +[dependencies.rand] +version = "0.8.3" + +[dependencies.rio_api] +optional = true +version = "0.6.1" + +[dependencies.rio_turtle] +optional = true +version = "0.6.1" + +[dependencies.serde] +features = ["derive"] +version = "1.0.125" + +[dependencies.sled] +features = ["no_logs"] +optional = true +version = "0.34.6" + +[dependencies.toml] +optional = true +version = "0.5.8" + +[dependencies.wasmer] +optional = true +version = "2.1.1" [dev-dependencies] criterion = "0.3" diff --git a/lib/src/plugins/plugin.rs b/lib/src/plugins/plugin.rs new file mode 100644 index 000000000..ed78d8669 --- /dev/null +++ b/lib/src/plugins/plugin.rs @@ -0,0 +1 @@ +//! The Plugin Trait should be implemented by Plugins that use WASM. diff --git a/lib/src/plugins/wasm_demo.rs b/lib/src/plugins/wasm_demo.rs index 1899f13ec..70d0076a1 100644 --- a/lib/src/plugins/wasm_demo.rs +++ b/lib/src/plugins/wasm_demo.rs @@ -41,13 +41,15 @@ fn handle_wasm_demo_request( // i32.add)) // "#; - let fn_name = "fibonacci"; - let arguments = &[Value::I32(10)]; let wasm_store = wasmer::Store::default(); // Creating this module can be costly, so it should probably be done earlier (server init) let module = Module::new(&wasm_store, module_u8).map_err(|e| format!("module error: {}", e))?; - let result = run_wasm(&module, arguments, fn_name)?; + + let fib_name = "fibonacci"; + let fib_args = &[Value::I32(10)]; + + let result = run_wasm(&module, &[], "author")?; let mut resource = Resource::new("sub".into()); resource.set_propval_string(urls::DESCRIPTION.into(), &result, store)?; Ok(resource) diff --git a/plugin-example/Cargo.toml b/plugin-example/Cargo.toml index 2c6028c5a..d51652056 100644 --- a/plugin-example/Cargo.toml +++ b/plugin-example/Cargo.toml @@ -1,13 +1,16 @@ [package] -name = "atomic-plugin-example" -version = "0.1.0" authors = ["Joep Meindertsma "] edition = "2018" +name = "atomic-plugin-example" +version = "0.1.0" +[dependencies] +reqwasm = "0.4.1" [lib] -name = "atomic_plugin_example" crate-type = ["cdylib"] +name = "atomic_plugin_example" -# Make wasm size smaller: https://rustwasm.github.io/docs/book/reference/code-size.html#optimizing-builds-for-code-size +[profile] [profile.release] +# Make wasm size smaller: https://rustwasm.github.io/docs/book/reference/code-size.html#optimizing-builds-for-code-size lto = true diff --git a/plugin-example/src/lib.rs b/plugin-example/src/lib.rs index 9b77f2f59..8e9eefbde 100644 --- a/plugin-example/src/lib.rs +++ b/plugin-example/src/lib.rs @@ -1,11 +1,21 @@ #[no_mangle] pub fn fibonacci(n: u32) -> u32 { + // let resp = reqwasm::Request::get("/path").send().await.unwrap(); + // assert_eq!(resp.status(), 200); + match n { 0 | 1 => n, _ => fibonacci(n - 1) + fibonacci(n - 2), } } +// #[no_mangle] +// pub async fn fetch() -> String { +// let resp = reqwasm::http::Request::get("/path").send().await.unwrap(); +// assert_eq!(resp.status(), 200); +// resp.text().await.unwrap() +// } + #[no_mangle] pub fn author() -> String { String::from("Hello from Rust")