diff --git a/Cargo.lock b/Cargo.lock index f65f3968b2..c98921c10a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,11 +2,26 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -82,9 +97,24 @@ checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" + +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] [[package]] name = "base64" @@ -120,7 +150,7 @@ version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "cexpr", "clang-sys", "itertools", @@ -133,7 +163,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.53", + "syn 2.0.55", "which", ] @@ -160,9 +190,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "bitmaps" @@ -179,6 +209,12 @@ version = "3.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" + [[package]] name = "cc" version = "1.0.90" @@ -206,15 +242,15 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.35" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" +checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets", + "windows-targets 0.52.4", ] [[package]] @@ -238,9 +274,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.3" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" dependencies = [ "clap_builder", "clap_derive", @@ -260,14 +296,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.3" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ "heck 0.5.0", "proc-macro2", "quote 1.0.35", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -308,11 +344,13 @@ dependencies = [ "conjure_rules", "itertools", "linkme", + "log", "minion_rs", "regex", "serde", "serde_json", "serde_with", + "structured-logger", "strum", "strum_macros", "thiserror", @@ -338,7 +376,7 @@ dependencies = [ "conjure_core", "proc-macro2", "quote 1.0.35", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -368,7 +406,7 @@ dependencies = [ "proc-macro2", "quote 1.0.35", "strsim 0.10.0", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -379,7 +417,7 @@ checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ "darling_core", "quote 1.0.35", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -426,7 +464,7 @@ version = "0.1.0" dependencies = [ "itertools", "quote 1.0.35", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -435,6 +473,15 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "erased-serde" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b73807008a3c7f171cc40312f37d95ef0396e048b5848d775f54b1a4dd4a0d3" +dependencies = [ + "serde", +] + [[package]] name = "errno" version = "0.3.8" @@ -468,6 +515,12 @@ dependencies = [ "wasi", ] +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + [[package]] name = "glob" version = "0.3.1" @@ -579,9 +632,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.5" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", "hashbrown 0.14.3", @@ -599,9 +652,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" @@ -672,7 +725,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-targets", + "windows-targets 0.52.4", ] [[package]] @@ -698,7 +751,7 @@ checksum = "adf157a4dc5a29b7b464aa8fe7edeff30076e07e13646a1c3874f58477dc99f8" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -707,11 +760,25 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + [[package]] name = "log" version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +dependencies = [ + "serde", + "value-bag", +] [[package]] name = "memchr" @@ -735,6 +802,15 @@ dependencies = [ "thiserror", ] +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + [[package]] name = "nom" version = "7.1.3" @@ -761,18 +837,56 @@ dependencies = [ "libm", ] +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.48.5", +] + [[package]] name = "peeking_take_while" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + [[package]] name = "powerfmt" version = "0.2.0" @@ -787,12 +901,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" +checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7" dependencies = [ "proc-macro2", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -812,7 +926,7 @@ checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.2", + "bitflags 2.5.0", "lazy_static", "num-traits", "rand", @@ -904,11 +1018,20 @@ dependencies = [ "rand_core", ] +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "regex" -version = "1.10.3" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", @@ -929,9 +1052,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" + +[[package]] +name = "rustc-demangle" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustc-hash" @@ -941,11 +1070,11 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.5.0", "errno", "libc", "linux-raw-sys", @@ -985,6 +1114,12 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + [[package]] name = "serde" version = "1.0.197" @@ -1002,14 +1137,23 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.53", + "syn 2.0.55", +] + +[[package]] +name = "serde_fmt" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d4ddca14104cd60529e8c7f7ba71a2c8acd8f7f5cfcdc2faf97eeb7c3010a4" +dependencies = [ + "serde", ] [[package]] name = "serde_json" -version = "1.0.114" +version = "1.0.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" dependencies = [ "itoa", "ryu", @@ -1026,7 +1170,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.5", + "indexmap 2.2.6", "serde", "serde_derive", "serde_json", @@ -1043,7 +1187,7 @@ dependencies = [ "darling", "proc-macro2", "quote 1.0.35", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -1062,6 +1206,12 @@ dependencies = [ "typenum", ] +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + [[package]] name = "strsim" version = "0.10.0" @@ -1074,6 +1224,19 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +[[package]] +name = "structured-logger" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16524b1ef57fd2e253216ab20ec44f0dc32b29155a4b3e6bef0a857d8c9f5f08" +dependencies = [ + "log", + "parking_lot", + "serde", + "serde_json", + "tokio", +] + [[package]] name = "strum" version = "0.26.2" @@ -1090,7 +1253,85 @@ dependencies = [ "proc-macro2", "quote 1.0.35", "rustversion", - "syn 2.0.53", + "syn 2.0.55", +] + +[[package]] +name = "sval" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38a2b3c2dc4e86741e7631ad50ff798c0df4a37b81366f2072f8948805e706e9" + +[[package]] +name = "sval_buffer" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "787c386d99b431292aab95054c555899b259cf069a358dee1b252a76ca8785e3" +dependencies = [ + "sval", + "sval_ref", +] + +[[package]] +name = "sval_dynamic" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "584324174c3c6191a15e0f732b1b34352a87da1a82645644854494f018279ca1" +dependencies = [ + "sval", +] + +[[package]] +name = "sval_fmt" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0ab125b30b0d250c8821d39e697f073a0e52bca1159c8a14333fdc1e82ab6ef" +dependencies = [ + "itoa", + "ryu", + "sval", +] + +[[package]] +name = "sval_json" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3937398726f8368bcd42d5a18a9b885668e3f183e07f2b845d5a6a52613c0de2" +dependencies = [ + "itoa", + "ryu", + "sval", +] + +[[package]] +name = "sval_nested" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71c1d35fcbcf0927417de2d558e2b17287eebfd0f1d1e4cd58728b76402428f8" +dependencies = [ + "sval", + "sval_buffer", + "sval_ref", +] + +[[package]] +name = "sval_ref" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82694f1a7b53e7765dfe1e9ff1719a05148b647bbac334f8de648b2cd4cd74c5" +dependencies = [ + "sval", +] + +[[package]] +name = "sval_serde" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf83cd41641c035f9f341bac7c465f5a553dec3b5b06d7691bfd633ab9b05106" +dependencies = [ + "serde", + "sval", + "sval_nested", ] [[package]] @@ -1117,9 +1358,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.53" +version = "2.0.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" +checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" dependencies = [ "proc-macro2", "quote 1.0.35", @@ -1164,7 +1405,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -1198,6 +1439,18 @@ dependencies = [ "time-core", ] +[[package]] +name = "tokio" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +dependencies = [ + "backtrace", + "bytes", + "parking_lot", + "pin-project-lite", +] + [[package]] name = "typenum" version = "1.17.0" @@ -1245,7 +1498,7 @@ dependencies = [ "log", "proc-macro2", "quote 1.0.35", - "syn 2.0.53", + "syn 2.0.55", "uniplate", ] @@ -1255,6 +1508,42 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +[[package]] +name = "value-bag" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74797339c3b98616c009c7c3eb53a0ce41e85c8ec66bd3db96ed132d20cfdee8" +dependencies = [ + "value-bag-serde1", + "value-bag-sval2", +] + +[[package]] +name = "value-bag-serde1" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc35703541cbccb5278ef7b589d79439fc808ff0b5867195a3230f9a47421d39" +dependencies = [ + "erased-serde", + "serde", + "serde_fmt", +] + +[[package]] +name = "value-bag-sval2" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "285b43c29d0b4c0e65aad24561baee67a1b69dc9be9375d4a85138cbf556f7f8" +dependencies = [ + "sval", + "sval_buffer", + "sval_dynamic", + "sval_fmt", + "sval_json", + "sval_ref", + "sval_serde", +] + [[package]] name = "version_check" version = "0.9.4" @@ -1317,7 +1606,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote 1.0.35", - "syn 2.0.53", + "syn 2.0.55", "wasm-bindgen-shared", ] @@ -1339,7 +1628,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote 1.0.35", - "syn 2.0.53", + "syn 2.0.55", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1399,7 +1688,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets", + "windows-targets 0.52.4", ] [[package]] @@ -1408,7 +1697,22 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -1417,51 +1721,93 @@ version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[package]] name = "windows_aarch64_msvc" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + [[package]] name = "windows_i686_gnu" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + [[package]] name = "windows_i686_msvc" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + [[package]] name = "windows_x86_64_gnu" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + [[package]] name = "windows_x86_64_msvc" version = "0.52.4" diff --git a/conjure_oxide/Cargo.toml b/conjure_oxide/Cargo.toml index f6eabd054d..e3cff3f39e 100644 --- a/conjure_oxide/Cargo.toml +++ b/conjure_oxide/Cargo.toml @@ -9,16 +9,16 @@ default-run = "conjure_oxide" walkdir = "2.5.0" [dependencies] -conjure_core = {path = "../crates/conjure_core" } -conjure_rules = {path = "../crates/conjure_rules" } -uniplate = {path = "../crates/uniplate"} -uniplate_derive = {path = "../crates/uniplate_derive" } +conjure_core = { path = "../crates/conjure_core" } +conjure_rules = { path = "../crates/conjure_rules" } +uniplate = { path = "../crates/uniplate" } +uniplate_derive = { path = "../crates/uniplate_derive" } serde = { version = "1.0.197", features = ["derive"] } serde_json = "1.0.114" serde_with = "3.7.0" thiserror = "1.0.58" -minion_rs = {path = "../solvers/minion" } +minion_rs = { path = "../solvers/minion" } anyhow = "1.0.81" clap = { version = "4.5.3", features = ["derive"] } strum_macros = "0.26.2" @@ -28,6 +28,8 @@ linkme = "0.3.22" walkdir = "2.5.0" itertools = "0.12.1" regex = "1.10.3" +log = "0.4.21" +structured-logger = "1.0.3" [features] diff --git a/conjure_oxide/src/main.rs b/conjure_oxide/src/main.rs index b13c11ac93..2e773b4502 100644 --- a/conjure_oxide/src/main.rs +++ b/conjure_oxide/src/main.rs @@ -1,9 +1,10 @@ -// (niklasdewally): temporary, gut this if you want! - use anyhow::Result as AnyhowResult; use anyhow::{anyhow, bail}; use clap::{arg, command, Parser}; use conjure_oxide::find_conjure::conjure_executable; +use serde_json::json; +use serde_json::to_string_pretty; +use structured_logger::{json::new_writer, unix_ms, Builder}; use conjure_oxide::parse::model_from_json; use conjure_oxide::rule_engine::resolve_rules::{ @@ -11,6 +12,8 @@ use conjure_oxide::rule_engine::resolve_rules::{ }; use conjure_oxide::rule_engine::rewrite::rewrite_model; use conjure_oxide::utils::conjure::{get_minion_solutions, minion_solutions_to_json}; +use std::fs::File; +use std::io::stdout; use std::path::PathBuf; use std::process::exit; @@ -28,32 +31,43 @@ struct Cli { } pub fn main() -> AnyhowResult<()> { + let log_file = File::options() + .create(true) + .append(true) + .open("conjure_oxide.log") + .unwrap(); + + Builder::new() + .with_target_writer("info", new_writer(stdout())) + .with_target_writer("file", new_writer(log_file)) + .init(); + let rule_sets = match resolve_rule_sets(vec!["Minion", "Constant"]) { Ok(rs) => rs, Err(e) => { - eprintln!("Error resolving rule sets: {}", e); + log::error!("Error resolving rule sets: {}", e); exit(1); } }; - println!("Rule sets:"); - print!("{{ "); - rule_sets.iter().for_each(|rule_set| { - print!("{}, ", rule_set.name); - }); - print!("}}\n\n"); + log::info!( + target: "info", + "Rule sets: {}", + rule_sets.iter().map(|rule_set| rule_set.name).collect::>().join(", ") + ); let rule_priorities = get_rule_priorities(&rule_sets)?; let rules_vec = get_rules_vec(&rule_priorities); - println!("Rules and priorities:"); - rules_vec.iter().for_each(|rule| { - println!("{}: {}", rule.name, rule_priorities.get(rule).unwrap_or(&0)); - }); - println!(); + log::info!(target: "info", + "Rules and priorities: {}", + rules_vec.iter() + .map(|rule| format!("{}: {}", rule.name, rule_priorities.get(rule).unwrap_or(&0))) + .collect::>() + .join(", ")); let cli = Cli::parse(); - println!("Input file: {}", cli.input_file.display()); + log::info!("Input file: {}", cli.input_file.display()); let input_file: &str = cli.input_file.to_str().ok_or(anyhow!( "Given input_file could not be converted to a string" ))?; @@ -64,6 +78,7 @@ pub fn main() -> AnyhowResult<()> { conjure_executable() .map_err(|e| anyhow!("Could not find correct conjure executable: {}", e))?; + let mut cmd = std::process::Command::new("conjure"); let output = cmd .arg("pretty") @@ -80,17 +95,15 @@ pub fn main() -> AnyhowResult<()> { let mut model = model_from_json(&astjson)?; - println!("Initial model:"); - println!("{:#?}", model); + log::info!("Initial model: {}", to_string_pretty(&json!(model))?); - println!("Rewriting model..."); + log::info!("Rewriting model..."); model = rewrite_model(&model, &rule_sets)?; - println!("\nRewritten model:"); - println!("{:#?}", model); + log::info!("Rewritten model: {}", to_string_pretty(&json!(model))?); let solutions = get_minion_solutions(model)?; - println!("Solutions: {:#}", minion_solutions_to_json(&solutions)); + log::info!("Solutions: {}", minion_solutions_to_json(&solutions)); Ok(()) } diff --git a/conjure_oxide/src/rule_engine/rewrite.rs b/conjure_oxide/src/rule_engine/rewrite.rs index efe8a463ab..a4a58e8dec 100644 --- a/conjure_oxide/src/rule_engine/rewrite.rs +++ b/conjure_oxide/src/rule_engine/rewrite.rs @@ -10,7 +10,6 @@ use uniplate::uniplate::Uniplate; #[derive(Debug)] struct RuleResult<'a> { - #[allow(dead_code)] // Not used yet, but will be useful to have rule: &'a Rule<'a>, reduction: Reduction, } @@ -49,7 +48,7 @@ pub fn rewrite_model<'a>( let mut new_model = model.clone(); while let Some(step) = rewrite_iteration(&new_model.constraints, &new_model, &rules) { - step.apply(&mut new_model); // Apply side-effects (e.g. symbol table updates + step.apply(&mut new_model); // Apply side-effects (e.g. symbol table updates) } Ok(new_model) } @@ -96,8 +95,12 @@ fn apply_all_rules<'a>( rule, reduction: red, }); + log::trace!(target: "file", "Rule applied: {:?}", rule); + } + Err(_) => { + log::trace!(target: "file", "Rule attempted but not applied: {:?}", rule); + continue; } - Err(_) => continue, } } results @@ -111,6 +114,5 @@ fn choose_rewrite(results: &Vec) -> Option { return None; } // Return the first result for now - // println!("Applying rule: {:?}", results[0].rule); Some(results[0].reduction.clone()) }