diff --git a/Cargo.lock b/Cargo.lock index 7d58f12dc9..93adebe660 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -119,7 +119,7 @@ checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -190,9 +190,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.4" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "bit-set" @@ -286,18 +286,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.6" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" +checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.4.6" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" +checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" dependencies = [ "anstream", "anstyle", @@ -308,18 +308,18 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.4.3" +version = "4.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ae8ba90b9d8b007efe66e55e48fb936272f5ca00349b5b0e89877520d35ea7" +checksum = "bffe91f06a11b4b9420f62103854e90867812cd5d01557f853c5ee8e791b12ae" dependencies = [ "clap", ] [[package]] name = "clap_lex" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "colorchoice" @@ -354,9 +354,9 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbc60abd742b35f2492f808e1abbb83d45f72db402e14c55057edc9c7b1e9e4" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" dependencies = [ "libc", ] @@ -500,7 +500,7 @@ dependencies = [ "curl", "env_proxy", "hyper", - "lazy_static", + "once_cell", "reqwest", "tempfile", "thiserror", @@ -559,7 +559,7 @@ checksum = "04d0b288e3bb1d861c4403c1774a6f7a798781dfc519b3647df2a3dd4ae95f25" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -571,7 +571,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -614,7 +614,7 @@ checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall", + "redox_syscall 0.3.5", "windows-sys 0.48.0", ] @@ -674,24 +674,24 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" dependencies = [ "futures-core", "futures-task", @@ -700,38 +700,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" dependencies = [ "futures-core", "futures-io", @@ -789,7 +789,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", "time", ] @@ -921,9 +921,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http", @@ -980,9 +980,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.2" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", "hashbrown 0.14.2", @@ -1020,9 +1020,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" dependencies = [ "wasm-bindgen", ] @@ -1035,9 +1035,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.149" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" [[package]] name = "libm" @@ -1127,9 +1127,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" dependencies = [ "libc", "wasi", @@ -1238,9 +1238,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.57" +version = "0.10.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" +checksum = "7a257ad03cd8fb16ad4172fedf8094451e1af1c4b70097636ef2eac9a5f0cc33" dependencies = [ "bitflags 2.4.1", "cfg-if 1.0.0", @@ -1259,7 +1259,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -1270,18 +1270,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.1.5+3.1.3" +version = "300.1.6+3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "559068e4c12950d7dcaa1857a61725c0d38d4fc03ff8e070ab31a75d6e316491" +checksum = "439fac53e092cd7442a3660c85dde4643ab3b5bd39040912388dcdabf6b88085" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.93" +version = "0.9.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" +checksum = "40a4130519a360279579c2053038317e40eff64d13fd3f004f9e1b72b8a6aaf9" dependencies = [ "cc", "libc", @@ -1427,7 +1427,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -1606,6 +1606,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[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.2" @@ -1730,17 +1739,16 @@ dependencies = [ [[package]] name = "ring" -version = "0.16.20" +version = "0.17.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" dependencies = [ "cc", + "getrandom", "libc", - "once_cell", "spin", "untrusted", - "web-sys", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -1761,9 +1769,9 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.38.20" +version = "0.38.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ce50cb2e16c2903e30d1cbccfd8387a74b9d4c938b6a4c5ec6cc7556f7a8a0" +checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" dependencies = [ "bitflags 2.4.1", "errno", @@ -1774,9 +1782,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.7" +version = "0.21.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" dependencies = [ "log", "ring", @@ -1807,9 +1815,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.101.6" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ "ring", "untrusted", @@ -1834,7 +1842,6 @@ dependencies = [ "fs_at", "git-testament", "home", - "lazy_static", "libc", "once_cell", "opener", @@ -1883,9 +1890,7 @@ version = "0.1.0" dependencies = [ "proc-macro2", "quote", - "regex", - "sha2", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -1938,9 +1943,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ "ring", "untrusted", @@ -1977,29 +1982,29 @@ checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "serde" -version = "1.0.189" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537" +checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.189" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5" +checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -2008,9 +2013,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" dependencies = [ "serde", ] @@ -2127,9 +2132,9 @@ dependencies = [ [[package]] name = "spin" -version = "0.5.2" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "stable_deref_trait" @@ -2156,9 +2161,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.38" +version = "2.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" dependencies = [ "proc-macro2", "quote", @@ -2215,13 +2220,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.8.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if 1.0.0", "fastrand", - "redox_syscall", + "redox_syscall 0.4.1", "rustix", "windows-sys 0.48.0", ] @@ -2262,7 +2267,7 @@ checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -2363,7 +2368,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -2411,9 +2416,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -2425,9 +2430,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.2" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +checksum = "8ff9e3abce27ee2c9a37f9ad37238c1bdd4e789c84ba37df76aa4d528f5072cc" dependencies = [ "serde", "serde_spanned", @@ -2437,20 +2442,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.20.2" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" dependencies = [ - "indexmap 2.0.2", + "indexmap 2.1.0", "serde", "serde_spanned", "toml_datetime", @@ -2536,7 +2541,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", ] [[package]] @@ -2551,12 +2556,12 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" dependencies = [ - "lazy_static", "log", + "once_cell", "tracing-core", ] @@ -2660,9 +2665,9 @@ dependencies = [ [[package]] name = "untrusted" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" @@ -2741,9 +2746,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -2751,24 +2756,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -2778,9 +2783,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2788,28 +2793,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.39", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" dependencies = [ "js-sys", "wasm-bindgen", @@ -2980,9 +2985,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.17" +version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" +checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index 3d265e5f0f..1d9efce9a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,18 +1,14 @@ [package] -authors = [ - "Daniel Silverstone ", - "Diggory Blake ", -] -build = "build.rs" -description = "Manage multiple rust installations with ease" +name = "rustup" +version = "1.26.0" edition = "2021" +description = "Manage multiple rust installations with ease" homepage = "https://github.com/rust-lang/rustup" keywords = ["rustup", "multirust", "install", "proxy"] license = "MIT OR Apache-2.0" -name = "rustup" readme = "README.md" repository = "https://github.com/rust-lang/rustup" -version = "1.26.0" +build = "build.rs" [features] curl-backend = ["download/curl-backend"] @@ -42,7 +38,7 @@ otel = [ ] # Exports code dependent on private interfaces for the integration test suite -test = ["dep:once_cell", "dep:walkdir"] +test = ["dep:walkdir"] # Sorted by alphabetic order [dependencies] @@ -60,16 +56,20 @@ flate2 = "1" fs_at.workspace = true git-testament = "0.2" home = "0.5.4" -lazy_static.workspace = true libc = "0.2" -once_cell = { workspace = true, optional = true } +once_cell.workspace = true opener = "0.6.0" +# `openssl` is used by `curl` or `reqwest` backend although it isn't imported by rustup: this +# allows controlling the vendoring status without exposing the presence of the download crate. +openssl = { version = "0.10", optional = true } opentelemetry = { workspace = true, optional = true } opentelemetry-otlp = { workspace = true, optional = true } pulldown-cmark = { version = "0.9", default-features = false } rand = "0.8" regex = "1" remove_dir_all = { version = "0.8.1", features = ["parallel"] } +retry = { version = "2", default-features = false, features = ["random"] } +rs_tracing = { version = "1.1", features = ["rs_tracing"] } same-file = "1" scopeguard = "1" semver = "1.0" @@ -85,9 +85,7 @@ threadpool = "1" tokio = { workspace = true, optional = true } toml = "0.8" tracing-opentelemetry = { workspace = true, optional = true } -tracing-subscriber = { workspace = true, optional = true, features = [ - "env-filter", -] } +tracing-subscriber = { workspace = true, optional = true, features = ["env-filter"] } tracing.workspace = true url.workspace = true wait-timeout = "0.2" @@ -95,22 +93,6 @@ walkdir = { workspace = true, optional = true } xz2 = "0.1.3" zstd = "0.13" -[dependencies.openssl] -# Used by `curl` or `reqwest` backend although it isn't imported by our rustup : -# this allows controlling the vendoring status without exposing the presence of -# the download crate. -optional = true -version = "0.10" - -[dependencies.retry] -default-features = false -features = ["random"] -version = "2.0.0" - -[dependencies.rs_tracing] -features = ["rs_tracing"] -version = "1.1.0" - [target."cfg(windows)".dependencies] cc = "1" winreg = "0.51" @@ -155,17 +137,15 @@ features = [ ] version = "0.48.0" - [dev-dependencies] enum-map = "2.5.0" -once_cell.workspace = true proptest.workspace = true rustup-macros.workspace = true tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } trycmd = "0.14.13" [build-dependencies] -lazy_static = "1" +once_cell.workspace = true regex = "1" [workspace] @@ -176,7 +156,6 @@ anyhow = "1.0.69" derivative = "2.2.0" enum_dispatch = "0.3.11" fs_at = "0.1.6" -lazy_static = "1" once_cell = "1.18.0" opentelemetry = { version = "0.20.0", features = ["rt-tokio"] } opentelemetry-otlp = { version = "0.13.0" } @@ -185,9 +164,7 @@ rustup-macros = { path = "rustup-macros" } tempfile = "3.8" termcolor = "1.2" thiserror = "1.0" -tokio = { version = "1.26.0", default-features = false, features = [ - "rt-multi-thread", -] } +tokio = { version = "1.26.0", default-features = false, features = ["rt-multi-thread"] } tracing = "0.1" tracing-opentelemetry = { version = "0.21.0" } tracing-subscriber = "0.3.16" diff --git a/download/Cargo.toml b/download/Cargo.toml index f1b7c97dad..b0c2ea0c8d 100644 --- a/download/Cargo.toml +++ b/download/Cargo.toml @@ -1,17 +1,15 @@ [package] - -authors = ["Brian Anderson "] -edition = "2021" -license = "MIT OR Apache-2.0" name = "download" version = "1.26.0" +edition = "2021" +license = "MIT OR Apache-2.0" [features] default = ["reqwest-backend", "reqwest-rustls-tls", "reqwest-default-tls"] curl-backend = ["curl"] -reqwest-backend = ["reqwest", "env_proxy", "lazy_static"] +reqwest-backend = ["reqwest", "env_proxy"] reqwest-default-tls = ["reqwest/default-tls"] reqwest-rustls-tls = ["reqwest/rustls-tls-native-roots"] @@ -19,19 +17,12 @@ reqwest-rustls-tls = ["reqwest/rustls-tls-native-roots"] anyhow.workspace = true curl = { version = "0.4.44", optional = true } env_proxy = { version = "0.4.1", optional = true } -lazy_static = { workspace = true, optional = true } -reqwest = { version = "0.11", default-features = false, features = [ - "blocking", - "gzip", - "socks", -], optional = true } +once_cell.workspace = true +reqwest = { version = "0.11", default-features = false, features = ["blocking", "gzip", "socks"], optional = true } thiserror.workspace = true url.workspace = true [dev-dependencies] -hyper = { version = "0.14", default-features = false, features = [ - "tcp", - "server", -] } +hyper = { version = "0.14", default-features = false, features = ["tcp", "server"] } tempfile.workspace = true tokio = { workspace = true, default-features = false, features = ["sync"] } diff --git a/download/src/lib.rs b/download/src/lib.rs index 0cf20f7994..cc496f7103 100644 --- a/download/src/lib.rs +++ b/download/src/lib.rs @@ -270,7 +270,7 @@ pub mod reqwest_be { use anyhow::{anyhow, Context, Result}; #[cfg(any(feature = "reqwest-rustls-tls", feature = "reqwest-default-tls"))] - use lazy_static::lazy_static; + use once_cell::sync::Lazy; use reqwest::blocking::{Client, ClientBuilder, Response}; use reqwest::{header, Proxy}; use url::Url; @@ -324,40 +324,32 @@ pub mod reqwest_be { .proxy(Proxy::custom(env_proxy)) .timeout(Duration::from_secs(30)) } + #[cfg(feature = "reqwest-rustls-tls")] - lazy_static! { - static ref CLIENT_RUSTLS_TLS: Client = { - let catcher = || { - client_generic().use_rustls_tls() - .build() - }; + static CLIENT_RUSTLS_TLS: Lazy = Lazy::new(|| { + let catcher = || client_generic().use_rustls_tls().build(); + + // woah, an unwrap?! + // It's OK. This is the same as what is happening in curl. + // + // The curl::Easy::new() internally assert!s that the initialized + // Easy is not null. Inside reqwest, the errors here would be from + // the TLS library returning a null pointer as well. + catcher().unwrap() + }); - // woah, an unwrap?! - // It's OK. This is the same as what is happening in curl. - // - // The curl::Easy::new() internally assert!s that the initialized - // Easy is not null. Inside reqwest, the errors here would be from - // the TLS library returning a null pointer as well. - catcher().unwrap() - }; - } #[cfg(feature = "reqwest-default-tls")] - lazy_static! { - static ref CLIENT_DEFAULT_TLS: Client = { - let catcher = || { - client_generic() - .build() - }; + static CLIENT_DEFAULT_TLS: Lazy = Lazy::new(|| { + let catcher = || client_generic().build(); - // woah, an unwrap?! - // It's OK. This is the same as what is happening in curl. - // - // The curl::Easy::new() internally assert!s that the initialized - // Easy is not null. Inside reqwest, the errors here would be from - // the TLS library returning a null pointer as well. - catcher().unwrap() - }; - } + // woah, an unwrap?! + // It's OK. This is the same as what is happening in curl. + // + // The curl::Easy::new() internally assert!s that the initialized + // Easy is not null. Inside reqwest, the errors here would be from + // the TLS library returning a null pointer as well. + catcher().unwrap() + }); fn env_proxy(url: &Url) -> Option { env_proxy::for_url(url).to_url() diff --git a/rustup-macros/Cargo.toml b/rustup-macros/Cargo.toml index c9f8572b0d..886819a511 100644 --- a/rustup-macros/Cargo.toml +++ b/rustup-macros/Cargo.toml @@ -1,8 +1,8 @@ [package] -edition = "2021" name = "rustup-macros" -publish = false version = "0.1.0" +edition = "2021" +publish = false [lib] proc-macro = true @@ -10,6 +10,4 @@ proc-macro = true [dependencies] proc-macro2 = "1.0.63" quote = "1.0.23" -regex = "1.10.0" -sha2 = "0.10.6" syn = { version = "2.0.13", features = ["full"] } diff --git a/src/bin/rustup-init.rs b/src/bin/rustup-init.rs index 19c8dd99e9..c5475e0171 100644 --- a/src/bin/rustup-init.rs +++ b/src/bin/rustup-init.rs @@ -15,7 +15,10 @@ use anyhow::{anyhow, Result}; use cfg_if::cfg_if; -use rs_tracing::*; +// Public macros require availability of the internal symbols +use rs_tracing::{ + close_trace_file, close_trace_file_internal, open_trace_file, trace_to_file_internal, +}; use rustup::cli::common; use rustup::cli::proxy_mode; diff --git a/src/cli/common.rs b/src/cli/common.rs index a0c9ca7b2d..9a85aca25b 100644 --- a/src/cli/common.rs +++ b/src/cli/common.rs @@ -10,7 +10,7 @@ use std::{cmp, env}; use anyhow::{anyhow, Context, Result}; use git_testament::{git_testament, render_testament}; -use lazy_static::lazy_static; +use once_cell::sync::Lazy; use super::self_update; use crate::cli::download_tracker::DownloadTracker; @@ -566,12 +566,10 @@ pub(crate) fn list_overrides(cfg: &Cfg) -> Result { git_testament!(TESTAMENT); pub(crate) fn version() -> &'static str { - lazy_static! { - // Because we trust our `stable` branch given the careful release - // process, we mark it trusted here so that our version numbers look - // right when built from CI before the tag is pushed - static ref RENDERED: String = render_testament!(TESTAMENT, "stable"); - } + // Because we trust our `stable` branch given the careful release + // process, we mark it trusted here so that our version numbers look + // right when built from CI before the tag is pushed + static RENDERED: Lazy = Lazy::new(|| render_testament!(TESTAMENT, "stable")); &RENDERED } diff --git a/src/cli/errors.rs b/src/cli/errors.rs index 5eca75880c..7866db34a2 100644 --- a/src/cli/errors.rs +++ b/src/cli/errors.rs @@ -4,7 +4,7 @@ use std::io; use std::path::PathBuf; -use lazy_static::lazy_static; +use once_cell::sync::Lazy; use regex::Regex; use strsim::damerau_levenshtein; use thiserror::Error as ThisError; @@ -24,10 +24,7 @@ pub enum CLIError { fn maybe_suggest_toolchain(bad_name: &str) -> String { let bad_name = &bad_name.to_ascii_lowercase(); static VALID_CHANNELS: &[&str] = &["stable", "beta", "nightly"]; - lazy_static! { - static ref NUMBERED: Regex = Regex::new(r"^\d+\.\d+$").unwrap(); - } - + static NUMBERED: Lazy = Lazy::new(|| Regex::new(r"^\d+\.\d+$").unwrap()); if NUMBERED.is_match(bad_name) { return format!(". Toolchain numbers tend to have three parts, e.g. {bad_name}.0"); } diff --git a/src/cli/self_update.rs b/src/cli/self_update.rs index 8c21038a4c..5b0709e758 100644 --- a/src/cli/self_update.rs +++ b/src/cli/self_update.rs @@ -1139,12 +1139,10 @@ fn get_new_rustup_version(path: &Path) -> Option { } fn parse_new_rustup_version(version: String) -> String { - use lazy_static::lazy_static; + use once_cell::sync::Lazy; use regex::Regex; - lazy_static! { - static ref RE: Regex = Regex::new(r"\d+.\d+.\d+[0-9a-zA-Z-]*").unwrap(); - } + static RE: Lazy = Lazy::new(|| Regex::new(r"\d+.\d+.\d+[0-9a-zA-Z-]*").unwrap()); let capture = RE.captures(&version); let matched_version = match capture { diff --git a/src/dist/dist.rs b/src/dist/dist.rs index 67d0c6ff15..aca41172d9 100644 --- a/src/dist/dist.rs +++ b/src/dist/dist.rs @@ -9,7 +9,7 @@ use std::str::FromStr; use anyhow::{anyhow, bail, Context, Result}; use chrono::NaiveDate; -use lazy_static::lazy_static; +use once_cell::sync::Lazy; use regex::Regex; use thiserror::Error as ThisError; @@ -34,15 +34,6 @@ pub static DEFAULT_DIST_SERVER: &str = "https://static.rust-lang.org"; // Deprecated pub(crate) static DEFAULT_DIST_ROOT: &str = "https://static.rust-lang.org/dist"; -// The channel patterns we support -static TOOLCHAIN_CHANNELS: &[&str] = &[ - "nightly", - "beta", - "stable", - // Allow from 1.0.0 through to 9.999.99 with optional patch version - r"\d{1}\.\d{1,3}(?:\.\d{1,2})?", -]; - const TOOLSTATE_MSG: &str = "If you require these components, please install and use the latest successful build version,\n\ which you can find at .\n\nAfter determining \ @@ -182,15 +173,23 @@ static TRIPLE_MIPS64_UNKNOWN_LINUX_GNUABI64: &str = "mips64el-unknown-linux-gnua impl FromStr for ParsedToolchainDesc { type Err = anyhow::Error; fn from_str(desc: &str) -> Result { - lazy_static! { - static ref TOOLCHAIN_CHANNEL_PATTERN: String = format!( + // Note this regex gives you a guaranteed match of the channel (1) + // and an optional match of the date (2) and target (3) + static TOOLCHAIN_CHANNEL_RE: Lazy = Lazy::new(|| { + Regex::new(&format!( r"^({})(?:-(\d{{4}}-\d{{2}}-\d{{2}}))?(?:-(.+))?$", - TOOLCHAIN_CHANNELS.join("|") - ); - // Note this regex gives you a guaranteed match of the channel (1) - // and an optional match of the date (2) and target (3) - static ref TOOLCHAIN_CHANNEL_RE: Regex = Regex::new(&TOOLCHAIN_CHANNEL_PATTERN).unwrap(); - } + // The channel patterns we support + [ + "nightly", + "beta", + "stable", + // Allow from 1.0.0 through to 9.999.99 with optional patch version + r"\d{1}\.\d{1,3}(?:\.\d{1,2})?", + ] + .join("|") + )) + .unwrap() + }); let d = TOOLCHAIN_CHANNEL_RE.captures(desc).map(|c| { fn fn_map(s: &str) -> Option { @@ -603,9 +602,8 @@ impl ToolchainDesc { /// date field is empty. pub(crate) fn is_tracking(&self) -> bool { let channels = ["nightly", "beta", "stable"]; - lazy_static! { - static ref TRACKING_VERSION: Regex = Regex::new(r"^\d{1}\.\d{1,3}$").unwrap(); - } + static TRACKING_VERSION: Lazy = + Lazy::new(|| Regex::new(r"^\d{1}\.\d{1,3}$").unwrap()); (channels.iter().any(|x| *x == self.channel) || TRACKING_VERSION.is_match(&self.channel)) && self.date.is_none() } diff --git a/src/dist/triple.rs b/src/dist/triple.rs index db64f6b305..acf9e96b94 100644 --- a/src/dist/triple.rs +++ b/src/dist/triple.rs @@ -1,4 +1,4 @@ -use lazy_static::lazy_static; +use once_cell::sync::Lazy; use regex::Regex; // These lists contain the targets known to rustup, and used to build @@ -68,15 +68,16 @@ impl PartialTargetTriple { // we can count on all triple components being // delineated by it. let name = format!("-{name}"); - lazy_static! { - static ref PATTERN: String = format!( + static RE: Lazy = Lazy::new(|| { + Regex::new(&format!( r"^(?:-({}))?(?:-({}))?(?:-({}))?$", LIST_ARCHS.join("|"), LIST_OSES.join("|"), LIST_ENVS.join("|") - ); - static ref RE: Regex = Regex::new(&PATTERN).unwrap(); - } + )) + .unwrap() + }); + RE.captures(&name).map(|c| { fn fn_map(s: &str) -> Option { if s.is_empty() { diff --git a/src/test/mock/clitools.rs b/src/test/mock/clitools.rs index fe5f834844..65e4b4e40f 100644 --- a/src/test/mock/clitools.rs +++ b/src/test/mock/clitools.rs @@ -15,7 +15,6 @@ use std::{ }; use enum_map::{enum_map, Enum, EnumMap}; -use lazy_static::lazy_static; use once_cell::sync::Lazy; use url::Url; @@ -1501,39 +1500,39 @@ fn build_combined_installer(components: &[&MockInstallerBuilder]) -> MockInstall /// and then we store some associated files next to it which indicate /// the version/version hash information. fn mock_bin(name: &str, version: &str, version_hash: &str) -> Vec { - lazy_static! { - static ref MOCK_BIN: Arc> = { - // Create a temp directory to hold the source and the output - let tempdir = tempfile::Builder::new().prefix("rustup").tempdir().unwrap(); - let source_path = tempdir.path().join("in.rs"); - let dest_path = tempdir.path().join(format!("out{EXE_SUFFIX}")); - - // Write the source - let source = include_bytes!("mock_bin_src.rs"); - fs::write(&source_path, &source[..]).unwrap(); - - // Create the executable - let status = Command::new("rustc") - .arg(&source_path) - .arg("-C").arg("panic=abort") - .arg("-O") - .arg("-o").arg(&dest_path) - .status() - .unwrap(); - assert!(status.success()); - assert!(dest_path.exists()); - - // Remove debug info from std/core which included in every programs, - // otherwise we just ignore the return result here - if cfg!(unix) { - drop(Command::new("strip").arg(&dest_path).status()); - } + static MOCK_BIN: Lazy>> = Lazy::new(|| { + // Create a temp directory to hold the source and the output + let tempdir = tempfile::Builder::new().prefix("rustup").tempdir().unwrap(); + let source_path = tempdir.path().join("in.rs"); + let dest_path = tempdir.path().join(format!("out{EXE_SUFFIX}")); + + // Write the source + let source = include_bytes!("mock_bin_src.rs"); + fs::write(&source_path, &source[..]).unwrap(); + + // Create the executable + let status = Command::new("rustc") + .arg(&source_path) + .arg("-C") + .arg("panic=abort") + .arg("-O") + .arg("-o") + .arg(&dest_path) + .status() + .unwrap(); + assert!(status.success()); + assert!(dest_path.exists()); - // Now load it into memory - let buf = fs::read(dest_path).unwrap(); - Arc::new(buf) - }; - } + // Remove debug info from std/core which included in every programs, + // otherwise we just ignore the return result here + if cfg!(unix) { + drop(Command::new("strip").arg(&dest_path).status()); + } + + // Now load it into memory + let buf = fs::read(dest_path).unwrap(); + Arc::new(buf) + }); let name = format!("bin/{name}{EXE_SUFFIX}"); vec![ diff --git a/src/test/mock/dist.rs b/src/test/mock/dist.rs index 04268abacf..9a92b483a0 100644 --- a/src/test/mock/dist.rs +++ b/src/test/mock/dist.rs @@ -1,13 +1,14 @@ //! Tools for building and working with the filesystem of a mock Rust //! distribution server, with v1 and v2 manifests. -use lazy_static::lazy_static; -use sha2::{Digest, Sha256}; use std::collections::HashMap; use std::fs::{self, File}; use std::io::{self, Read, Write}; use std::path::{Path, PathBuf}; use std::sync::Mutex; + +use once_cell::sync::Lazy; +use sha2::{Digest, Sha256}; use url::Url; use super::clitools::hard_link; @@ -217,9 +218,7 @@ impl MockDistServer { type Tarball = HashMap<(String, MockTargetedPackage, String), (Vec, String)>; // Tarball creation can be super slow, so cache created tarballs // globally to avoid recreating and recompressing tons of tarballs. - lazy_static! { - static ref TARBALLS: Mutex = Mutex::new(HashMap::new()); - } + static TARBALLS: Lazy> = Lazy::new(|| Mutex::new(HashMap::new())); let key = ( installer_name.to_string(), diff --git a/tests/suite/cli_misc.rs b/tests/suite/cli_misc.rs index 37bf1346cc..49982fd223 100644 --- a/tests/suite/cli_misc.rs +++ b/tests/suite/cli_misc.rs @@ -667,7 +667,6 @@ fn rename_rls_remove() { fn toolchain_broken_symlink() { use rustup::utils::raw::symlink_dir; use std::fs; - use std::path::Path; clitools::test(Scenario::None, &|config| { // We artificially create a broken symlink toolchain -- but this can also happen "legitimately"