diff --git a/Cargo.lock b/Cargo.lock index 6c03e4f..1555929 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,12 +1,29 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-tzdata" @@ -23,6 +40,12 @@ dependencies = [ "libc", ] +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + [[package]] name = "async-channel" version = "1.9.0" @@ -48,14 +71,14 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.1.0", - "futures-lite 2.3.0", + "fastrand 2.3.0", + "futures-lite 2.5.0", "slab", ] @@ -93,18 +116,18 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.4" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ "async-lock 3.4.0", "cfg-if 1.0.0", "concurrent-queue", "futures-io", - "futures-lite 2.3.0", + "futures-lite 2.5.0", "parking", - "polling 3.7.3", - "rustix 0.38.34", + "polling 3.7.4", + "rustix 0.38.42", "slab", "tracing", "windows-sys 0.59.0", @@ -154,7 +177,7 @@ dependencies = [ "cfg-if 1.0.0", "event-listener 3.1.0", "futures-lite 1.13.0", - "rustix 0.38.34", + "rustix 0.38.42", "windows-sys 0.48.0", ] @@ -164,13 +187,13 @@ version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" dependencies = [ - "async-io 2.3.4", + "async-io 2.4.0", "async-lock 3.4.0", "atomic-waker", "cfg-if 1.0.0", "futures-core", "futures-io", - "rustix 0.38.34", + "rustix 0.38.42", "signal-hook-registry", "slab", "windows-sys 0.59.0", @@ -184,13 +207,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.93", ] [[package]] @@ -201,9 +224,15 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bincode" @@ -216,9 +245,9 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.4" +version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ "bitflags 2.6.0", "cexpr", @@ -233,7 +262,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.74", + "syn 2.0.93", "which", ] @@ -249,6 +278,18 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + [[package]] name = "blocking" version = "1.6.1" @@ -258,10 +299,34 @@ dependencies = [ "async-channel 2.3.1", "async-task", "futures-io", - "futures-lite 2.3.0", + "futures-lite 2.5.0", "piper", ] +[[package]] +name = "borsh" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e3f7359eeed8d454c38bbb25eb89d98b888b1060bbfeed2cda71cb013ff2dc2" +dependencies = [ + "borsh-derive", + "cfg_aliases 0.1.1", +] + +[[package]] +name = "borsh-derive" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "318d18ba283f9aa5bfef1405996ce66c584127f401be1403729ec88b10adc772" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.93", + "syn_derive", +] + [[package]] name = "bumpalo" version = "3.16.0" @@ -270,19 +335,48 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byte-unit" -version = "4.0.19" +version = "5.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da78b32057b8fdfc352504708feeba7216dcd65a2c9ab02978cbd288d1279b6c" +checksum = "e1cd29c3c585209b0cbc7309bfe3ed7efd8c84c21b7af29c8bfae908f8777174" dependencies = [ + "rust_decimal", "serde", "utf8-width", ] +[[package]] +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "bytes" -version = "1.7.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "cassowary" @@ -290,11 +384,20 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" +[[package]] +name = "castaway" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" +dependencies = [ + "rustversion", +] + [[package]] name = "cc" -version = "1.1.13" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" +checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333" dependencies = [ "shlex", ] @@ -326,11 +429,17 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", @@ -348,7 +457,21 @@ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading 0.8.5", + "libloading", +] + +[[package]] +name = "compact_str" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6050c3a16ddab2e412160b31f2c871015704239bca62f72f6e5f0be631d3f644" +dependencies = [ + "castaway", + "cfg-if 1.0.0", + "itoa", + "rustversion", + "ryu", + "static_assertions", ] [[package]] @@ -370,6 +493,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -387,9 +520,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -406,21 +539,21 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crossterm" -version = "0.27.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ "bitflags 2.6.0", "crossterm_winapi", - "libc", "mio", "parking_lot", + "rustix 0.38.42", "signal-hook", "signal-hook-mio", "winapi", @@ -456,7 +589,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.74", + "syn 2.0.93", ] [[package]] @@ -467,7 +600,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.74", + "syn 2.0.93", ] [[package]] @@ -490,6 +623,21 @@ dependencies = [ "libc", ] +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + [[package]] name = "dirs-next" version = "2.0.0" @@ -523,23 +671,39 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +[[package]] +name = "env_filter" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +dependencies = [ + "log", +] + [[package]] name = "env_logger" -version = "0.10.2" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +checksum = "dcaee3d8e3cfc3fd92428d477bc97fc29ec8716d180c0d74c643bb26166660e0" dependencies = [ + "env_filter", "log", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -572,9 +736,9 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" dependencies = [ "event-listener 5.3.1", "pin-project-lite", @@ -591,15 +755,15 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "flate2" -version = "1.0.31" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -611,11 +775,23 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -628,9 +804,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -638,15 +814,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -655,9 +831,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" @@ -676,11 +852,11 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ - "fastrand 2.1.0", + "fastrand 2.3.0", "futures-core", "futures-io", "parking", @@ -689,26 +865,26 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.93", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-timer" @@ -718,9 +894,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -747,9 +923,9 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "gumdrop" @@ -771,11 +947,31 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "heim" @@ -800,7 +996,7 @@ version = "0.1.0-rc.1" source = "git+https://github.com/bvaisvil/heim.git?branch=zenith_changes#509c858dce58e2de0b1b772170ee2be21a58149b" dependencies = [ "cfg-if 1.0.0", - "core-foundation", + "core-foundation 0.9.4", "futures-core", "futures-util", "lazy_static", @@ -837,7 +1033,7 @@ source = "git+https://github.com/bvaisvil/heim.git?branch=zenith_changes#509c858 dependencies = [ "bitflags 1.3.2", "cfg-if 1.0.0", - "core-foundation", + "core-foundation 0.9.4", "heim-common", "heim-runtime", "libc", @@ -964,18 +1160,18 @@ checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1000,12 +1196,36 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +[[package]] +name = "indexmap" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +dependencies = [ + "equivalent", + "hashbrown 0.15.2", +] + [[package]] name = "indoc" version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" +[[package]] +name = "instability" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "898e106451f7335950c9cc64f8ec67b5f65698679ac67ed00619aeef14e1cf75" +dependencies = [ + "darling", + "indoc", + "pretty_assertions", + "proc-macro2", + "quote", + "syn 2.0.93", +] + [[package]] name = "instant" version = "0.1.13" @@ -1028,28 +1248,35 @@ dependencies = [ [[package]] name = "itertools" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] [[package]] name = "itertools" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] +[[package]] +name = "itoa" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1067,25 +1294,15 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.156" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if 1.0.0", - "winapi", -] - -[[package]] -name = "libloading" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ "cfg-if 1.0.0", "windows-targets 0.52.6", @@ -1115,9 +1332,9 @@ checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "linux-taskstats" -version = "0.5.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced563164e6cf093308728858ac54a04c957c5e820e6452e19801102f72a847c" +checksum = "7654233c9c0108ce2ccb37b8b24d8fc950e70740392c1a1051ec287ff1e9827c" dependencies = [ "bindgen", "libc", @@ -1142,6 +1359,15 @@ version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown 0.15.2", +] + [[package]] name = "macaddr" version = "1.0.1" @@ -1189,30 +1415,30 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ - "adler", + "adler2", ] [[package]] name = "mio" -version = "0.8.11" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", "log", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "netlink-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416060d346fbaf1f23f9512963e3e878f1a78e707cb699ba9215761754244307" +checksum = "16c903aa70590cb93691bf97a767c8d1d6122d2cc9070433deb3bbf36ce8bd23" dependencies = [ "bytes", "libc", @@ -1234,13 +1460,13 @@ dependencies = [ [[package]] name = "nix" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ "bitflags 2.6.0", "cfg-if 1.0.0", - "cfg_aliases", + "cfg_aliases 0.2.1", "libc", ] @@ -1263,6 +1489,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-derive" version = "0.4.2" @@ -1271,7 +1503,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.93", ] [[package]] @@ -1305,12 +1537,12 @@ dependencies = [ [[package]] name = "nvml-wrapper" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd21b9f5a1cce3c3515c9ffa85f5c7443e07162dae0ccf4339bb7ca38ad3454" +checksum = "0c9bff0aa1d48904a1385ea2a8b97576fbdcbc9a3cfccd0d31fe978e1c4038c5" dependencies = [ - "bitflags 1.3.2", - "libloading 0.7.4", + "bitflags 2.6.0", + "libloading", "nvml-wrapper-sys", "static_assertions", "thiserror", @@ -1319,18 +1551,18 @@ dependencies = [ [[package]] name = "nvml-wrapper-sys" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c961a2ea9e91c59a69b78e69090f6f5b867bb46c0c56de9482da232437c4987e" +checksum = "698d45156f28781a4e79652b6ebe2eaa0589057d588d3aec1333f6466f13fcb5" dependencies = [ - "libloading 0.7.4", + "libloading", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "ordered-float" @@ -1343,9 +1575,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" @@ -1378,9 +1610,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -1395,7 +1627,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.1.0", + "fastrand 2.3.0", "futures-io", ] @@ -1405,6 +1637,19 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "989d43012e2ca1c4a02507c67282691a0a3207f9dc67cec596b43fe925b3d325" +[[package]] +name = "plist" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" +dependencies = [ + "base64", + "indexmap", + "quick-xml", + "serde", + "time", +] + [[package]] name = "polling" version = "2.8.0" @@ -1423,62 +1668,189 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.3" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ "cfg-if 1.0.0", "concurrent-queue", "hermit-abi 0.4.0", "pin-project-lite", - "rustix 0.38.34", + "rustix 0.38.42", "tracing", "windows-sys 0.59.0", ] [[package]] -name = "prettyplease" +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "pretty_assertions" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" +dependencies = [ + "diff", + "yansi", +] + +[[package]] +name = "prettyplease" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.74", + "syn 2.0.93", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[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", + "version_check", +] + +[[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", ] [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] +[[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 1.0.109", +] + +[[package]] +name = "quick-xml" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" +dependencies = [ + "memchr", +] + [[package]] name = "quote" -version = "1.0.36" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + [[package]] name = "ratatui" -version = "0.23.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e2e4cd95294a85c3b4446e63ef054eea43e0205b1fd60120c16b74ff7ff96ad" +checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ "bitflags 2.6.0", "cassowary", + "compact_str", "crossterm", "indoc", - "itertools 0.11.0", + "instability", + "itertools 0.13.0", + "lru", "paste", "strum", "unicode-segmentation", - "unicode-width", + "unicode-truncate", + "unicode-width 0.2.0", ] [[package]] @@ -1512,18 +1884,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", @@ -1545,6 +1917,60 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "rkyv" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rust_decimal" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" +dependencies = [ + "arrayvec", + "borsh", + "bytes", + "num-traits", + "rand", + "rkyv", + "serde", + "serde_json", +] + [[package]] name = "rustc-hash" version = "1.1.0" @@ -1567,22 +1993,28 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ "bitflags 2.6.0", "errno", "libc", "linux-raw-sys 0.4.14", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "scopeguard" @@ -1590,24 +2022,42 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + [[package]] name = "serde" -version = "1.0.208" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.208" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.93", +] + +[[package]] +name = "serde_json" +version = "1.0.134" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", ] [[package]] @@ -1646,6 +2096,12 @@ dependencies = [ "libc", ] +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "slab" version = "0.4.9" @@ -1690,19 +2146,20 @@ dependencies = [ [[package]] name = "starship-battery" -version = "0.8.3" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "725bc1c7374f435ef65746eb1a5789cb7d02b8e997f9a3edf979bfb42da68311" +checksum = "9017a937879cf3db80807fa7c28f09eafd4981c998265233028ee7b75f898ed2" dependencies = [ "cfg-if 1.0.0", - "core-foundation", + "core-foundation 0.10.0", "lazycell", "libc", "mach2", - "nix 0.28.0", + "nix 0.29.0", "num-traits", + "plist", "uom 0.36.0", - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -1719,24 +2176,24 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.25.0" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.25.3" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ "heck", "proc-macro2", "quote", "rustversion", - "syn 2.0.74", + "syn 2.0.93", ] [[package]] @@ -1752,15 +2209,27 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.74" +version = "2.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" +checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.93", +] + [[package]] name = "sysinfo" version = "0.15.1" @@ -1775,31 +2244,100 @@ dependencies = [ "winapi", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.93", +] + +[[package]] +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.19.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c500344a19072298cd05a7224b3c0c629348b78692bf48466c5238656e315a78" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", ] [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-core", @@ -1807,9 +2345,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" [[package]] name = "typenum" @@ -1819,21 +2357,38 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-truncate" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" +dependencies = [ + "itertools 0.13.0", + "unicode-segmentation", + "unicode-width 0.1.14", +] [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "uom" @@ -1862,16 +2417,28 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" +[[package]] +name = "uuid" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" + [[package]] name = "uzers" -version = "0.11.3" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d283dc7e8c901e79e32d077866eaf599156cbf427fffa8289aecc52c5c3f63" +checksum = "4df81ff504e7d82ad53e95ed1ad5b72103c11253f39238bcc0235b90768a97dd" dependencies = [ "libc", "log", ] +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + [[package]] name = "waker-fn" version = "1.2.0" @@ -1886,9 +2453,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if 1.0.0", "once_cell", @@ -1897,24 +2464,23 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.93", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1922,22 +2488,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.93", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "which" @@ -1948,7 +2514,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.34", + "rustix 0.38.42", ] [[package]] @@ -2136,6 +2702,15 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "winnow" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" +dependencies = [ + "memchr", +] + [[package]] name = "wrapcenum-derive" version = "0.4.1" @@ -2145,9 +2720,24 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.93", ] +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "zenith" version = "0.14.1" @@ -2174,6 +2764,27 @@ dependencies = [ "signal-hook", "starship-battery", "sysinfo", - "unicode-width", + "unicode-width 0.2.0", "uzers", ] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] diff --git a/Cargo.toml b/Cargo.toml index 7a0f9ed..00c9bab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,28 +15,32 @@ default = [] nvidia = ["nvml-wrapper"] [dependencies] -ratatui = { version = "0.23.*", features = ["crossterm"], default-features = false } -crossterm = "0.27.*" -byte-unit = "~4.0.19" -uzers = "0.11.3" -num-derive = "0.4.1" +ratatui = { version = "0.29.*", features = [ + "crossterm", +], default-features = false } +crossterm = "0.28.*" +byte-unit = "~5.1.6" +uzers = "0.12.1" +num-derive = "0.4.2" num-traits = "0.2" -heim = {git = "https://github.com/bvaisvil/heim.git", branch="zenith_changes", features = ["full"]} -futures = "0.3.28" +heim = { git = "https://github.com/bvaisvil/heim.git", branch = "zenith_changes", features = [ + "full", +] } +futures = "0.3.31" gumdrop = { version = "~0.8.1", features = ["default_expr"] } -chrono = "~0.4.31" -sysinfo = {git = "https://github.com/bvaisvil/sysinfo.git", branch="zenith_changes_15.1"} +chrono = "~0.4.39" +sysinfo = { git = "https://github.com/bvaisvil/sysinfo.git", branch = "zenith_changes_15.1" } dirs-next = "2.0.0" -serde = { version = "~1.0.189", features = ["derive"] } -serde_derive = "~1.0.189" -flate2 = "1.0.28" +serde = { version = "~1.0.217", features = ["derive"] } +serde_derive = "~1.0.217" +flate2 = "1.0.35" bincode = "1.3.3" -starship-battery = "0.8.*" +starship-battery = "0.10.*" signal-hook = "~0.3.17" -log = "~0.4.20" -env_logger = { version = "~0.10.0", default-features = false } +log = "~0.4.22" +env_logger = { version = "~0.11.6", default-features = false } libc = "0.2" -nvml-wrapper = { version = "0.9.0", optional = true } -unicode-width = "0.1.11" +nvml-wrapper = { version = "0.10.0", optional = true } +unicode-width = "0.2.0" [target.'cfg(target_os = "linux")'.dependencies] -linux-taskstats = { version = "0.5.0", default-features = false } +linux-taskstats = { version = "0.7.0", default-features = false } diff --git a/src/metrics/histogram.rs b/src/metrics/histogram.rs index 6b78ce1..04c6603 100644 --- a/src/metrics/histogram.rs +++ b/src/metrics/histogram.rs @@ -220,55 +220,50 @@ impl HistogramMap { } pub(crate) fn save_histograms(&mut self) { - match &self.db { - Some(db) => { - debug!("Saving Histograms..."); - self.previous_stop = Some(SystemTime::now()); - let dbfile = db.join("store"); - let database_open = fs::OpenOptions::new() - .create(true) - .write(true) - .truncate(true) - .open(dbfile); - match database_open { - Ok(database) => { - let mut gz = GzEncoder::new(database, Compression::default()); - gz.write_all(&bincode::serialize(self).expect(SER_ERROR)) - .expect("Failed to compress/write to file."); - match gz.finish() { - Ok(_r) => { - debug!("Write Finished."); - } - Err(_e) => { - error!("Couldn't complete database write."); - } - }; - let configuration = db.join(".configuration"); - let mut configuration = fs::OpenOptions::new() - .create(true) - .write(true) - .truncate(true) - .open(configuration) - .expect("Couldn't open Configuration"); - configuration - .write_all( - format!("version={:}\n", env!("CARGO_PKG_VERSION")).as_bytes(), - ) - .expect("Failed to write file."); - } - Err(e) => { - exit_with_message!( - format!( - "Couldn't write to {}, error: {}", - db.join("store").to_string_lossy(), - e.to_string() - ), - 1 - ); - } + if let Some(db) = &self.db { + debug!("Saving Histograms..."); + self.previous_stop = Some(SystemTime::now()); + let dbfile = db.join("store"); + let database_open = fs::OpenOptions::new() + .create(true) + .write(true) + .truncate(true) + .open(dbfile); + match database_open { + Ok(database) => { + let mut gz = GzEncoder::new(database, Compression::default()); + gz.write_all(&bincode::serialize(self).expect(SER_ERROR)) + .expect("Failed to compress/write to file."); + match gz.finish() { + Ok(_r) => { + debug!("Write Finished."); + } + Err(_e) => { + error!("Couldn't complete database write."); + } + }; + let configuration = db.join(".configuration"); + let mut configuration = fs::OpenOptions::new() + .create(true) + .write(true) + .truncate(true) + .open(configuration) + .expect("Couldn't open Configuration"); + configuration + .write_all(format!("version={:}\n", env!("CARGO_PKG_VERSION")).as_bytes()) + .expect("Failed to write file."); + } + Err(e) => { + exit_with_message!( + format!( + "Couldn't write to {}, error: {}", + db.join("store").to_string_lossy(), + e.to_string() + ), + 1 + ); } } - None => {} } } diff --git a/src/metrics/zprocess.rs b/src/metrics/zprocess.rs index b6929ed..acca621 100644 --- a/src/metrics/zprocess.rs +++ b/src/metrics/zprocess.rs @@ -202,26 +202,23 @@ impl ZProcess { #[cfg(target_os = "linux")] pub fn update_delay(&mut self, client: &Option) { debug!("Getting Task Stats for {}", self.pid); - match client { - Some(c) => { - let stats_result = c.pid_stats(self.pid as u32); - match stats_result { - Ok(s) => { - self.prev_io_delay = self.io_delay; - self.prev_swap_delay = self.swap_delay; - self.io_delay = s.delays.blkio.delay_total; - self.swap_delay = s.delays.swapin.delay_total; - debug!( - "Pid: {} io_delay: {} swap_delay: {}", - self.pid, - self.io_delay.as_secs(), - self.swap_delay.as_secs() - ); - } - Err(_) => debug!("Couldn't get stats for {}", self.pid), + if let Some(c) = client { + let stats_result = c.pid_stats(self.pid as u32); + match stats_result { + Ok(s) => { + self.prev_io_delay = self.io_delay; + self.prev_swap_delay = self.swap_delay; + self.io_delay = s.delays.blkio.delay_total; + self.swap_delay = s.delays.swapin.delay_total; + debug!( + "Pid: {} io_delay: {} swap_delay: {}", + self.pid, + self.io_delay.as_secs(), + self.swap_delay.as_secs() + ); } + Err(_) => debug!("Couldn't get stats for {}", self.pid), } - None => {} } } diff --git a/src/renderer/cpu.rs b/src/renderer/cpu.rs index 2c1a131..c7ae102 100644 --- a/src/renderer/cpu.rs +++ b/src/renderer/cpu.rs @@ -5,8 +5,8 @@ use super::style::{max_style, ok_style, MAX_COLOR, OK_COLOR}; use crate::float_to_byte_string; use crate::metrics::histogram::{HistogramKind, View}; use crate::metrics::CPUTimeApp; -use crate::renderer::{percent_of, split_left_right_pane, Render, ZBackend}; -use byte_unit::{Byte, ByteUnit}; +use crate::renderer::{percent_of, split_left_right_pane, Render}; +use byte_unit::{Byte, Unit}; use ratatui::layout::{Constraint, Direction, Layout, Rect}; use ratatui::style::{Color, Modifier, Style}; use ratatui::text::{Line, Span}; @@ -92,8 +92,8 @@ fn mem_title(app: &CPUTimeApp) -> Line { Span::styled( format!( "{} / {} - {:}%", - float_to_byte_string!(app.mem_utilization as f64, ByteUnit::KB), - float_to_byte_string!(app.mem_total as f64, ByteUnit::KB), + float_to_byte_string!(app.mem_utilization as f64, Unit::KB), + float_to_byte_string!(app.mem_total as f64, Unit::KB), mem ), if mem > 95 { max_style() } else { ok_style() }, @@ -102,8 +102,8 @@ fn mem_title(app: &CPUTimeApp) -> Line { Span::styled( format!( "{} / {} - {:}%", - float_to_byte_string!(app.swap_utilization as f64, ByteUnit::KB), - float_to_byte_string!(app.swap_total as f64, ByteUnit::KB), + float_to_byte_string!(app.swap_utilization as f64, Unit::KB), + float_to_byte_string!(app.swap_total as f64, Unit::KB), swp, ), if swp > 20 { max_style() } else { ok_style() }, @@ -113,7 +113,7 @@ fn mem_title(app: &CPUTimeApp) -> Line { ]) } -fn render_cpu_histogram(app: &CPUTimeApp, area: Rect, f: &mut Frame<'_, ZBackend>, view: &View) { +fn render_cpu_histogram(app: &CPUTimeApp, area: Rect, f: &mut Frame<'_>, view: &View) { let h = match app.histogram_map.get_zoomed(&HistogramKind::Cpu, view) { Some(h) => h, None => return, @@ -127,7 +127,7 @@ fn render_cpu_histogram(app: &CPUTimeApp, area: Rect, f: &mut Frame<'_, ZBackend .render(f, area); } -fn render_memory_histogram(app: &CPUTimeApp, area: Rect, f: &mut Frame<'_, ZBackend>, view: &View) { +fn render_memory_histogram(app: &CPUTimeApp, area: Rect, f: &mut Frame<'_>, view: &View) { let h = match app.histogram_map.get_zoomed(&HistogramKind::Mem, view) { Some(h) => h, None => return, @@ -141,7 +141,7 @@ fn render_memory_histogram(app: &CPUTimeApp, area: Rect, f: &mut Frame<'_, ZBack .render(f, area); } -fn render_cpu_bars(app: &CPUTimeApp, area: Rect, f: &mut Frame<'_, ZBackend>, style: &Style) { +fn render_cpu_bars(app: &CPUTimeApp, area: Rect, f: &mut Frame<'_>, style: &Style) { let cpus = app.cpus.to_owned(); if cpus.is_empty() { return; @@ -176,7 +176,7 @@ fn render_cpu_bars(app: &CPUTimeApp, area: Rect, f: &mut Frame<'_, ZBackend>, st let cols = 4; - let nrows = ((cpus.len() as u16 + cols - 1) / cols) as usize; + let nrows = (cpus.len() as u16).div_ceil(cols) as usize; let mut items = vec![]; for i in 0..nrows { @@ -269,7 +269,7 @@ fn render_cpu_bars(app: &CPUTimeApp, area: Rect, f: &mut Frame<'_, ZBackend>, st pub fn render_cpu( app: &CPUTimeApp, area: Rect, - f: &mut Frame<'_, ZBackend>, + f: &mut Frame<'_>, view: View, border_style: Style, ) { diff --git a/src/renderer/disk.rs b/src/renderer/disk.rs index 90b61ac..6b8b5b9 100644 --- a/src/renderer/disk.rs +++ b/src/renderer/disk.rs @@ -2,11 +2,11 @@ use super::style::{max_style, ok_style}; /** * Copyright 2019-2022, Benjamin Vaisvil and the zenith contributors */ -use super::{split_left_right_pane, FileSystemDisplay, Render, ZBackend}; +use super::{split_left_right_pane, FileSystemDisplay, Render}; use crate::float_to_byte_string; use crate::metrics::histogram::{HistogramKind, View}; use crate::metrics::CPUTimeApp; -use byte_unit::{Byte, ByteUnit}; +use byte_unit::{Byte, Unit}; use ratatui::layout::{Constraint, Direction, Layout, Rect}; use ratatui::style::{Color, Style}; use ratatui::text::{Line, Span}; @@ -17,7 +17,7 @@ use std::borrow::Cow; pub fn render_disk( app: &CPUTimeApp, layout: Rect, - f: &mut Frame<'_, ZBackend>, + f: &mut Frame<'_>, view: View, border_style: Style, file_system_index: &usize, @@ -82,7 +82,7 @@ pub fn render_disk( } fn disk_activity_histogram( app: &CPUTimeApp, - f: &mut Frame<'_, ZBackend>, + f: &mut Frame<'_>, view: View, area: &[Rect], file_system_index: &usize, @@ -91,7 +91,7 @@ fn disk_activity_histogram( disk_list.sort_by(|a, b| b.mount_point.cmp(&a.mount_point)); if let Some(fs) = disk_list.get(*file_system_index) { let read_up = - float_to_byte_string!(fs.get_read_bytes_sec(&app.histogram_map.tick), ByteUnit::B); + float_to_byte_string!(fs.get_read_bytes_sec(&app.histogram_map.tick), Unit::B); let h_read = match app .histogram_map .get_zoomed(&HistogramKind::IoRead(fs.name.to_string()), &view) @@ -104,7 +104,7 @@ fn disk_activity_histogram( Some(x) => *x, None => 1, }; - let read_max_bytes = float_to_byte_string!(read_max as f64, ByteUnit::B); + let read_max_bytes = float_to_byte_string!(read_max as f64, Unit::B); let top_reader = match app.top_pids.read.pid { Some(pid) => match app.process_map.get(&pid) { @@ -115,7 +115,7 @@ fn disk_activity_histogram( }; let write_down = - float_to_byte_string!(fs.get_write_bytes_sec(&app.histogram_map.tick), ByteUnit::B); + float_to_byte_string!(fs.get_write_bytes_sec(&app.histogram_map.tick), Unit::B); let h_write = match app .histogram_map .get_zoomed(&HistogramKind::IoWrite(fs.name.to_string()), &view) @@ -128,7 +128,7 @@ fn disk_activity_histogram( Some(x) => *x, None => 1, }; - let write_max_bytes = float_to_byte_string!(write_max as f64, ByteUnit::B); + let write_max_bytes = float_to_byte_string!(write_max as f64, Unit::B); let top_writer = match app.top_pids.write.pid { Some(pid) => match app.process_map.get(&pid) { @@ -196,7 +196,7 @@ fn disk_activity_histogram( fn disk_usage( app: &CPUTimeApp, - f: &mut Frame<'_, ZBackend>, + f: &mut Frame<'_>, view: View, area: &[Rect], file_system_index: &usize, @@ -211,9 +211,9 @@ fn disk_usage( Some(h) => h, None => return, }; - let free = float_to_byte_string!(fs.available_bytes as f64, ByteUnit::B); - let used = float_to_byte_string!(fs.get_used_bytes() as f64, ByteUnit::B); - let size = float_to_byte_string!(fs.size_bytes as f64, ByteUnit::B); + let free = float_to_byte_string!(fs.available_bytes as f64, Unit::B); + let used = float_to_byte_string!(fs.get_used_bytes() as f64, Unit::B); + let size = float_to_byte_string!(fs.size_bytes as f64, Unit::B); Sparkline::default() .block( Block::default().title( @@ -259,9 +259,9 @@ fn disk_usage( "{:} /s ({:})", float_to_byte_string!( fs.get_read_bytes_sec(&app.histogram_map.tick), - ByteUnit::B + Unit::B ), - float_to_byte_string!(fs.current_io.read_bytes as f64, ByteUnit::B), + float_to_byte_string!(fs.current_io.read_bytes as f64, Unit::B), ), rhs_style, ), @@ -288,9 +288,9 @@ fn disk_usage( "{:} /s ({:})", float_to_byte_string!( fs.get_write_bytes_sec(&app.histogram_map.tick), - ByteUnit::B + Unit::B ), - float_to_byte_string!(fs.current_io.write_bytes as f64, ByteUnit::B), + float_to_byte_string!(fs.current_io.write_bytes as f64, Unit::B), ), rhs_style, ), diff --git a/src/renderer/graphics.rs b/src/renderer/graphics.rs index 28198fe..f46de6c 100644 --- a/src/renderer/graphics.rs +++ b/src/renderer/graphics.rs @@ -2,11 +2,11 @@ use super::style::{max_style, ok_style}; /** * Copyright 2019-2022, Benjamin Vaisvil and the zenith contributors */ -use super::{percent_of, Render, ZBackend, LEFT_PANE_WIDTH}; +use super::{percent_of, Render, LEFT_PANE_WIDTH}; use crate::float_to_byte_string; use crate::metrics::histogram::{HistogramKind, View}; use crate::metrics::CPUTimeApp; -use byte_unit::{Byte, ByteUnit}; +use byte_unit::{Byte, Unit}; use ratatui::layout::{Constraint, Direction, Layout, Rect}; use ratatui::style::{Color, Style}; use ratatui::text::{Line, Span}; @@ -17,7 +17,7 @@ use std::borrow::Cow; pub fn render_graphics( app: &CPUTimeApp, layout: Rect, - f: &mut Frame<'_, ZBackend>, + f: &mut Frame<'_>, view: View, gfx_device_index: &usize, border_style: Style, @@ -107,16 +107,16 @@ pub fn render_graphics( format!( "AVG FB [{:3.0}%] AVG MEM [{:} / {:} - {:}%]", gd.mem_utilization, - float_to_byte_string!(gd.used_memory as f64, ByteUnit::B), - float_to_byte_string!(gd.total_memory as f64, ByteUnit::B), + float_to_byte_string!(gd.used_memory as f64, Unit::B), + float_to_byte_string!(gd.total_memory as f64, Unit::B), percent_of(gd.used_memory, gd.total_memory) as u64, ) } else { format!( "FB [{:3.0}%] MEM [{:} / {:} - {:}%] {:}", gd.mem_utilization, - float_to_byte_string!(gd.used_memory as f64, ByteUnit::B), - float_to_byte_string!(gd.total_memory as f64, ByteUnit::B), + float_to_byte_string!(gd.used_memory as f64, Unit::B), + float_to_byte_string!(gd.total_memory as f64, Unit::B), percent_of(gd.used_memory, gd.total_memory) as u64, fan, ) diff --git a/src/renderer/help.rs b/src/renderer/help.rs index 81a7354..2e77fd1 100644 --- a/src/renderer/help.rs +++ b/src/renderer/help.rs @@ -2,7 +2,7 @@ * Copyright 2019-2022, Benjamin Vaisvil and the zenith contributors */ use crate::metrics::*; -use crate::renderer::{HistoryRecording, Render, ZBackend}; +use crate::renderer::{HistoryRecording, Render}; #[cfg(all(target_os = "linux", feature = "nvidia"))] use nvml::error::NvmlError; use ratatui::layout::{Alignment, Constraint, Direction, Layout, Rect}; @@ -14,7 +14,7 @@ use ratatui::Frame; pub fn render_help( _app: &CPUTimeApp, area: Rect, - f: &mut Frame<'_, ZBackend>, + f: &mut Frame<'_>, history_recording: HistoryRecording, ) { let header_style = Style::default().fg(Color::Green); diff --git a/src/renderer/macros.rs b/src/renderer/macros.rs index c343f9a..8c344a3 100644 --- a/src/renderer/macros.rs +++ b/src/renderer/macros.rs @@ -4,9 +4,13 @@ #[macro_export] macro_rules! float_to_byte_string { ($x:expr, $unit:expr) => { - match Byte::from_unit($x, $unit) { - Ok(b) => b.get_appropriate_unit(false).to_string().replace(" ", ""), - Err(_) => String::from("Err"), + match Byte::from_f64_with_unit($x, $unit) { + Some(b) => format!( + "{:.2}", + b.get_appropriate_unit(byte_unit::UnitType::Decimal) + ) + .replace(" ", ""), + None => String::from("Err"), } }; } diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs index a2368fc..9733fe8 100644 --- a/src/renderer/mod.rs +++ b/src/renderer/mod.rs @@ -31,7 +31,6 @@ use std::path::PathBuf; use std::rc::Rc; use std::time::{Duration, Instant}; -use ratatui::backend::Backend; use ratatui::layout::{Constraint, Direction, Layout, Rect}; use ratatui::style::{Color, Style}; use ratatui::widgets::{Block, Borders}; @@ -40,24 +39,18 @@ use ratatui::Frame; const PROCESS_SELECTION_GRACE: Duration = Duration::from_millis(2000); const LEFT_PANE_WIDTH: u16 = 34u16; -type ZBackend = CrosstermBackend; - /// Compatibility trait, that preserves an older method from tui 0.6.5 /// Exists mostly to keep the caller code idiomatic for the use cases in this file /// May be refactored out later if the widget usage patterns change -trait Render -where - B: Backend, -{ - fn render(self, f: &mut Frame, area: Rect); +trait Render { + fn render(self, f: &mut Frame, area: Rect); } -impl Render for T +impl Render for T where T: ratatui::widgets::Widget, - B: Backend, { - fn render(self, f: &mut Frame, area: Rect) { + fn render(self, f: &mut Frame, area: Rect) { f.render_widget(self, area) } } @@ -83,7 +76,7 @@ pub enum FileSystemDisplay { fn split_left_right_pane( title: &str, area: Rect, - f: &mut Frame<'_, ZBackend>, + f: &mut Frame<'_>, view: View, border_style: Style, ) -> (Rc<[Rect]>, View) { @@ -367,13 +360,13 @@ impl<'a> TerminalRenderer<'_> { self.terminal .draw(|f| { - width = f.size().width; + width = f.area().width; if show_help { let v_sections = Layout::default() .direction(Direction::Vertical) .margin(0) .constraints([Constraint::Length(1), Constraint::Length(40)].as_ref()) - .split(f.size()); + .split(f.area()); title::render_top_title_bar(app, v_sections[0], f, zf, offset); let history_recording = match (app.writes_db_store(), disable_history) { @@ -387,7 +380,7 @@ impl<'a> TerminalRenderer<'_> { .direction(Direction::Vertical) .margin(0) .constraints([Constraint::Length(1), Constraint::Length(40)].as_ref()) - .split(f.size()); + .split(f.area()); title::render_top_title_bar(app, v_sections[0], f, zf, offset); section::render_section_mgr(section_manager_options, v_sections[1], f); } else { @@ -397,7 +390,7 @@ impl<'a> TerminalRenderer<'_> { .direction(Direction::Vertical) .margin(0) .constraints(constraints.as_slice()) - .split(f.size()); + .split(f.area()); title::render_top_title_bar(app, v_sections[0], f, zf, offset); let view = View { @@ -599,7 +592,7 @@ impl<'a> TerminalRenderer<'_> { None => self.section_manager_options.state.select(Some(0)), } } else if selected == Section::Graphics { - if self.app.gfx_devices.len() == 0 { + if self.app.gfx_devices.is_empty() { self.gfx_device_index = 0; } else if self.gfx_device_index > 0 { self.gfx_device_index -= 1; @@ -640,7 +633,7 @@ impl<'a> TerminalRenderer<'_> { None => self.section_manager_options.state.select(Some(0)), } } else if selected == Section::Graphics { - if self.app.gfx_devices.len() == 0 { + if self.app.gfx_devices.is_empty() { self.gfx_device_index = 0; } else if self.gfx_device_index < self.app.gfx_devices.len() - 1 { self.gfx_device_index += 1; diff --git a/src/renderer/network.rs b/src/renderer/network.rs index 3603567..29ca294 100644 --- a/src/renderer/network.rs +++ b/src/renderer/network.rs @@ -1,11 +1,11 @@ /** * Copyright 2019-2022, Benjamin Vaisvil and the zenith contributors */ -use super::{split_left_right_pane, Render, ZBackend}; +use super::{split_left_right_pane, Render}; use crate::float_to_byte_string; use crate::metrics::histogram::{HistogramKind, View}; use crate::metrics::CPUTimeApp; -use byte_unit::{Byte, ByteUnit}; +use byte_unit::{Byte, Unit}; use ratatui::layout::{Constraint, Direction, Layout, Rect}; use ratatui::style::{Color, Style}; use ratatui::text::Span; @@ -16,7 +16,7 @@ use std::borrow::Cow; pub fn render_net( app: &CPUTimeApp, area: Rect, - f: &mut Frame<'_, ZBackend>, + f: &mut Frame<'_>, view: View, border_style: Style, ) { @@ -29,7 +29,7 @@ pub fn render_net( let net_up = float_to_byte_string!( app.net_out as f64 / app.histogram_map.tick.as_secs_f64(), - ByteUnit::B + Unit::B ); let h_out = match app.histogram_map.get_zoomed(&HistogramKind::NetTx, &view) { Some(h) => h, @@ -40,7 +40,7 @@ pub fn render_net( Some(x) => *x, None => 1, }; - let up_max_bytes = float_to_byte_string!(up_max as f64, ByteUnit::B); + let up_max_bytes = float_to_byte_string!(up_max as f64, Unit::B); Sparkline::default() .block( @@ -54,7 +54,7 @@ pub fn render_net( let net_down = float_to_byte_string!( app.net_in as f64 / app.histogram_map.tick.as_secs_f64(), - ByteUnit::B + Unit::B ); let h_in = match app.histogram_map.get_zoomed(&HistogramKind::NetRx, &view) { Some(h) => h, @@ -65,7 +65,7 @@ pub fn render_net( Some(x) => *x, None => 1, }; - let down_max_bytes = float_to_byte_string!(down_max as f64, ByteUnit::B); + let down_max_bytes = float_to_byte_string!(down_max as f64, Unit::B); Sparkline::default() .block( Block::default() diff --git a/src/renderer/process.rs b/src/renderer/process.rs index 518de42..ab1fcfd 100644 --- a/src/renderer/process.rs +++ b/src/renderer/process.rs @@ -1,11 +1,11 @@ /** * Copyright 2019-2022, Benjamin Vaisvil and the zenith contributors */ -use super::{percent_of, Render, ZBackend}; +use super::{percent_of, Render}; use crate::float_to_byte_string; use crate::metrics::zprocess::{ProcessStatusExt, ZProcess}; use crate::metrics::{CPUTimeApp, ProcessTableSortOrder}; -use byte_unit::{Byte, ByteUnit}; +use byte_unit::{Byte, Unit}; use chrono::prelude::DateTime; use chrono::Local; use ratatui::layout::{Constraint, Direction, Layout, Rect}; @@ -21,7 +21,7 @@ pub fn render_process_table( process_table: &[i32], area: Rect, process_table_start: usize, - f: &mut Frame<'_, ZBackend>, + f: &mut Frame<'_>, border_style: Style, show_paths: bool, show_find: bool, @@ -72,13 +72,10 @@ pub fn render_process_table( }; let mut cpu_usage = set_process_row_style(p.pid, app.top_pids.cpu.pid, format!("{:>5.1}", p.cpu_usage)); - match &app.cum_cpu_process { - Some(top) => { - if top.pid == p.pid { - cpu_usage = cpu_usage.style(Style::default().fg(Color::Magenta)); - } + if let Some(top) = &app.cum_cpu_process { + if top.pid == p.pid { + cpu_usage = cpu_usage.style(Style::default().fg(Color::Magenta)); } - None => (), }; let mut row = vec![ @@ -97,7 +94,7 @@ pub fn render_process_table( app.top_pids.mem.pid, format!( "{:>8}", - float_to_byte_string!(p.memory as f64, ByteUnit::KB).replace('B', "") + float_to_byte_string!(p.memory as f64, Unit::KB).replace('B', "") ), ), set_process_row_style( @@ -105,8 +102,7 @@ pub fn render_process_table( app.top_pids.virt.pid, format!( "{:>8}", - float_to_byte_string!(p.virtual_memory as f64, ByteUnit::KB) - .replace('B', "") + float_to_byte_string!(p.virtual_memory as f64, Unit::KB).replace('B', "") ), ), Cell::from(format!("{:1}", p.status.to_single_char())), @@ -117,7 +113,7 @@ pub fn render_process_table( "{:>8}", float_to_byte_string!( p.get_read_bytes_sec(&app.histogram_map.tick), - ByteUnit::B + Unit::B ) .replace('B', "") ), @@ -129,7 +125,7 @@ pub fn render_process_table( "{:>8}", float_to_byte_string!( p.get_write_bytes_sec(&app.histogram_map.tick), - ByteUnit::B + Unit::B ) .replace('B', "") ), @@ -199,7 +195,7 @@ pub fn render_process_table( widths.push(Constraint::Length(len)); used_width += len; } - let cmd_width = f.size().width.saturating_sub(used_width).saturating_sub(3); + let cmd_width = f.area().width.saturating_sub(used_width).saturating_sub(3); let cmd_header = format!("{:, + f: &mut Frame<'_>, border_style: Style, process_message: &Option, p: &ZProcess, @@ -275,7 +270,7 @@ pub fn render_process( .constraints([Constraint::Length(2), Constraint::Min(1)].as_ref()) .split(layout); - let title = format!("(b)ack (n)ice (p)riority 0 (s)uspend (r)esume (k)ill [SIGKILL] (t)erminate [SIGTERM] {:} {: >width$}", + let title = format!("(b)ack (n)ice (p)riority 0 (s)uspend (r)esume (k)ill [SIGKILL] (t)erminate [SIGTERM] {:} {: >width$}", process_message.as_ref().unwrap_or(&String::from("")), "", width = layout.width as usize); Block::default() @@ -368,10 +363,7 @@ pub fn render_process( Line::from(vec![ Span::raw("Total Memory: "), Span::styled( - format!( - "{:>10}", - float_to_byte_string!(p.memory as f64, ByteUnit::KB) - ), + format!("{:>10}", float_to_byte_string!(p.memory as f64, Unit::KB)), rhs_style, ), ]), @@ -380,11 +372,8 @@ pub fn render_process( Span::styled( format!( "{:>10} {:}/s", - float_to_byte_string!(p.read_bytes as f64, ByteUnit::B), - float_to_byte_string!( - p.get_read_bytes_sec(&app.histogram_map.tick), - ByteUnit::B - ) + float_to_byte_string!(p.read_bytes as f64, Unit::B), + float_to_byte_string!(p.get_read_bytes_sec(&app.histogram_map.tick), Unit::B) ), rhs_style, ), @@ -394,11 +383,8 @@ pub fn render_process( Span::styled( format!( "{:>10} {:}/s", - float_to_byte_string!(p.write_bytes as f64, ByteUnit::B), - float_to_byte_string!( - p.get_write_bytes_sec(&app.histogram_map.tick), - ByteUnit::B - ) + float_to_byte_string!(p.write_bytes as f64, Unit::B), + float_to_byte_string!(p.get_write_bytes_sec(&app.histogram_map.tick), Unit::B) ), rhs_style, ), diff --git a/src/renderer/section.rs b/src/renderer/section.rs index 6334fad..22f2308 100644 --- a/src/renderer/section.rs +++ b/src/renderer/section.rs @@ -7,7 +7,7 @@ use ratatui::text::{Line, Span}; use ratatui::widgets::{Block, Borders, List, ListItem, ListState, Paragraph, Wrap}; use ratatui::Frame; -use super::{FromPrimitive, Render, ZBackend}; +use super::{FromPrimitive, Render}; use std::collections::HashSet; use std::fmt; @@ -88,7 +88,7 @@ impl<'a> SectionMGRList<'a> { } } -pub fn render_section_mgr(list: &mut SectionMGRList<'_>, area: Rect, f: &mut Frame<'_, ZBackend>) { +pub fn render_section_mgr(list: &mut SectionMGRList<'_>, area: Rect, f: &mut Frame<'_>) { debug!("Rendering Section Manager"); let layout = Layout::default() diff --git a/src/renderer/title.rs b/src/renderer/title.rs index 0a9587f..31ff912 100644 --- a/src/renderer/title.rs +++ b/src/renderer/title.rs @@ -1,7 +1,7 @@ /** * Copyright 2019-2022, Benjamin Vaisvil and the zenith contributors */ -use super::{Render, ZBackend}; +use super::Render; use crate::metrics::*; use chrono::prelude::DateTime; use chrono::Duration as CDuration; @@ -48,7 +48,7 @@ fn render_battery_widget( ) -> (Span<'_>, Span<'_>, Span<'_>, Span<'_>) { let default_style = Style::default().bg(Color::DarkGray).fg(Color::White); if !batteries.is_empty() { - let b: &starship_battery::Battery = batteries.get(0).expect("no battery"); + let b: &starship_battery::Battery = batteries.first().expect("no battery"); let charge_state = match b.state() { starship_battery::State::Unknown => " ", starship_battery::State::Charging => "⚡︎", @@ -115,7 +115,7 @@ fn render_battery_widget( pub fn render_top_title_bar( app: &CPUTimeApp, area: Rect, - f: &mut Frame<'_, ZBackend>, + f: &mut Frame<'_>, zf: &u32, offset: &usize, ) {