Alexander Medvedev 2025-11-20 19:40:50 +01:00
parent 4d7342122a
commit 2104367d0e
9 changed files with 157 additions and 150 deletions

230
Cargo.lock generated
View File

@ -99,22 +99,22 @@ dependencies = [
[[package]] [[package]]
name = "anstyle-query" name = "anstyle-query"
version = "1.1.4" version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
dependencies = [ dependencies = [
"windows-sys 0.60.2", "windows-sys 0.61.2",
] ]
[[package]] [[package]]
name = "anstyle-wincon" name = "anstyle-wincon"
version = "3.0.10" version = "3.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
dependencies = [ dependencies = [
"anstyle", "anstyle",
"once_cell_polyfill", "once_cell_polyfill",
"windows-sys 0.60.2", "windows-sys 0.61.2",
] ]
[[package]] [[package]]
@ -161,9 +161,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]] [[package]]
name = "axum" name = "axum"
version = "0.8.6" version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a18ed336352031311f4e0b4dd2ff392d4fbb370777c9d18d7fc9d7359f73871" checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425"
dependencies = [ dependencies = [
"axum-core", "axum-core",
"bytes", "bytes",
@ -264,9 +264,9 @@ dependencies = [
[[package]] [[package]]
name = "block-buffer" name = "block-buffer"
version = "0.11.0-rc.5" version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9ef36a6fcdb072aa548f3da057640ec10859eb4e91ddf526ee648d50c76a949" checksum = "96eb4cdd6cf1b31d671e9efe75c5d1ec614776856cefbe109ca373554a6d514f"
dependencies = [ dependencies = [
"hybrid-array", "hybrid-array",
] ]
@ -297,9 +297,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.2.45" version = "1.2.46"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" checksum = "b97463e1064cb1b1c1384ad0a0b9c8abd0988e2a91f52606c80ef14aadb63e36"
dependencies = [ dependencies = [
"find-msvc-tools", "find-msvc-tools",
"shlex", "shlex",
@ -326,6 +326,17 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "chacha20"
version = "0.10.0-rc.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99cbf41c6ec3c4b9eaf7f8f5c11a72cd7d3aa0428125c20d5ef4d09907a0f019"
dependencies = [
"cfg-if",
"cpufeatures",
"rand_core 0.10.0-rc-2",
]
[[package]] [[package]]
name = "ciborium" name = "ciborium"
version = "0.2.2" version = "0.2.2"
@ -359,24 +370,24 @@ version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
dependencies = [ dependencies = [
"crypto-common 0.1.6", "crypto-common 0.1.7",
"inout", "inout",
] ]
[[package]] [[package]]
name = "clap" name = "clap"
version = "4.5.51" version = "4.5.53"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8"
dependencies = [ dependencies = [
"clap_builder", "clap_builder",
] ]
[[package]] [[package]]
name = "clap_builder" name = "clap_builder"
version = "4.5.51" version = "4.5.53"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00"
dependencies = [ dependencies = [
"anstyle", "anstyle",
"clap_lex", "clap_lex",
@ -690,12 +701,12 @@ dependencies = [
[[package]] [[package]]
name = "crypto-bigint" name = "crypto-bigint"
version = "0.7.0-rc.9" version = "0.7.0-rc.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f4b0fda9462026d53a3ef37c5ec283639ee8494a1a5401109c0e2a3fb4d490c" checksum = "6715836b4946e8585016e80b79c7561476aff3b22f7b756778e7b109d86086c6"
dependencies = [ dependencies = [
"num-traits", "num-traits",
"rand_core 0.9.3", "rand_core 0.10.0-rc-2",
"serdect", "serdect",
"subtle", "subtle",
"zeroize", "zeroize",
@ -703,9 +714,9 @@ dependencies = [
[[package]] [[package]]
name = "crypto-common" name = "crypto-common"
version = "0.1.6" version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
dependencies = [ dependencies = [
"generic-array", "generic-array",
"typenum", "typenum",
@ -713,22 +724,22 @@ dependencies = [
[[package]] [[package]]
name = "crypto-common" name = "crypto-common"
version = "0.2.0-rc.4" version = "0.2.0-rc.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8235645834fbc6832939736ce2f2d08192652269e11010a6240f61b908a1c6" checksum = "919bd05924682a5480aec713596b9e2aabed3a0a6022fab6847f85a99e5f190a"
dependencies = [ dependencies = [
"hybrid-array", "hybrid-array",
] ]
[[package]] [[package]]
name = "crypto-primes" name = "crypto-primes"
version = "0.7.0-pre.3" version = "0.7.0-pre.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25f2523fbb68811c8710829417ad488086720a6349e337c38d12fa81e09e50bf" checksum = "fdd9b2855017318a49714c07ee8895b89d3510d54fa6d86be5835de74c389609"
dependencies = [ dependencies = [
"crypto-bigint 0.7.0-rc.9", "crypto-bigint 0.7.0-rc.10",
"libm", "libm",
"rand_core 0.9.3", "rand_core 0.10.0-rc-2",
] ]
[[package]] [[package]]
@ -758,12 +769,12 @@ dependencies = [
[[package]] [[package]]
name = "der" name = "der"
version = "0.8.0-rc.9" version = "0.8.0-rc.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9d8dd2f26c86b27a2a8ea2767ec7f9df7a89516e4794e54ac01ee618dda3aa4" checksum = "02c1d73e9668ea6b6a28172aa55f3ebec38507131ce179051c8033b5c6037653"
dependencies = [ dependencies = [
"const-oid 0.10.1", "const-oid 0.10.1",
"pem-rfc7468 1.0.0-rc.3", "pem-rfc7468 1.0.0",
"zeroize", "zeroize",
] ]
@ -832,19 +843,19 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
dependencies = [ dependencies = [
"block-buffer 0.10.4", "block-buffer 0.10.4",
"const-oid 0.9.6", "const-oid 0.9.6",
"crypto-common 0.1.6", "crypto-common 0.1.7",
"subtle", "subtle",
] ]
[[package]] [[package]]
name = "digest" name = "digest"
version = "0.11.0-rc.3" version = "0.11.0-rc.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dac89f8a64533a9b0eaa73a68e424db0fb1fd6271c74cc0125336a05f090568d" checksum = "ea390c940e465846d64775e55e3115d5dc934acb953de6f6e6360bc232fe2bf7"
dependencies = [ dependencies = [
"block-buffer 0.11.0-rc.5", "block-buffer 0.11.0",
"const-oid 0.10.1", "const-oid 0.10.1",
"crypto-common 0.2.0-rc.4", "crypto-common 0.2.0-rc.5",
"subtle", "subtle",
] ]
@ -957,7 +968,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [ dependencies = [
"libc", "libc",
"windows-sys 0.59.0", "windows-sys 0.61.2",
] ]
[[package]] [[package]]
@ -978,9 +989,9 @@ dependencies = [
[[package]] [[package]]
name = "find-msvc-tools" name = "find-msvc-tools"
version = "0.1.4" version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844"
[[package]] [[package]]
name = "flate2" name = "flate2"
@ -1104,9 +1115,9 @@ dependencies = [
[[package]] [[package]]
name = "generic-array" name = "generic-array"
version = "0.14.9" version = "0.14.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
dependencies = [ dependencies = [
"typenum", "typenum",
"version_check", "version_check",
@ -1191,9 +1202,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
[[package]] [[package]]
name = "hashbrown" name = "hashbrown"
version = "0.16.0" version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
dependencies = [ dependencies = [
"allocator-api2", "allocator-api2",
"equivalent", "equivalent",
@ -1245,11 +1256,11 @@ dependencies = [
[[package]] [[package]]
name = "hmac" name = "hmac"
version = "0.13.0-rc.2" version = "0.13.0-rc.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3fd4dc94c318c1ede8a2a48341c250d6ddecd3ba793da2820301a9f92417ad9" checksum = "f1c597ac7d6cc8143e30e83ef70915e7f883b18d8bec2e2b2bce47f5bbb06d57"
dependencies = [ dependencies = [
"digest 0.11.0-rc.3", "digest 0.11.0-rc.4",
] ]
[[package]] [[package]]
@ -1315,9 +1326,9 @@ dependencies = [
[[package]] [[package]]
name = "hyper" name = "hyper"
version = "1.7.0" version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11"
dependencies = [ dependencies = [
"atomic-waker", "atomic-waker",
"bytes", "bytes",
@ -1351,9 +1362,9 @@ dependencies = [
[[package]] [[package]]
name = "hyper-util" name = "hyper-util"
version = "0.1.17" version = "0.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56"
dependencies = [ dependencies = [
"bytes", "bytes",
"futures-channel", "futures-channel",
@ -1485,7 +1496,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f"
dependencies = [ dependencies = [
"equivalent", "equivalent",
"hashbrown 0.16.0", "hashbrown 0.16.1",
"serde", "serde",
"serde_core", "serde_core",
] ]
@ -1540,22 +1551,22 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]] [[package]]
name = "jiff" name = "jiff"
version = "0.2.15" version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35"
dependencies = [ dependencies = [
"jiff-static", "jiff-static",
"log", "log",
"portable-atomic", "portable-atomic",
"portable-atomic-util", "portable-atomic-util",
"serde", "serde_core",
] ]
[[package]] [[package]]
name = "jiff-static" name = "jiff-static"
version = "0.2.15" version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -1639,7 +1650,7 @@ version = "0.16.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96051b46fc183dc9cd4a223960ef37b9af631b55191852a8274bfef064cda20f" checksum = "96051b46fc183dc9cd4a223960ef37b9af631b55191852a8274bfef064cda20f"
dependencies = [ dependencies = [
"hashbrown 0.16.0", "hashbrown 0.16.1",
] ]
[[package]] [[package]]
@ -1891,9 +1902,9 @@ dependencies = [
[[package]] [[package]]
name = "pem-rfc7468" name = "pem-rfc7468"
version = "1.0.0-rc.3" version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8e58fab693c712c0d4e88f8eb3087b6521d060bcaf76aeb20cb192d809115ba" checksum = "a6305423e0e7738146434843d1694d621cce767262b2a86910beab705e4493d9"
dependencies = [ dependencies = [
"base64ct", "base64ct",
] ]
@ -2028,7 +2039,7 @@ version = "0.8.0-rc.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "986d2e952779af96ea048f160fd9194e1751b4faea78bcf3ceb456efe008088e" checksum = "986d2e952779af96ea048f160fd9194e1751b4faea78bcf3ceb456efe008088e"
dependencies = [ dependencies = [
"der 0.8.0-rc.9", "der 0.8.0-rc.10",
"spki 0.8.0-rc.4", "spki 0.8.0-rc.4",
] ]
@ -2044,11 +2055,11 @@ dependencies = [
[[package]] [[package]]
name = "pkcs8" name = "pkcs8"
version = "0.11.0-rc.7" version = "0.11.0-rc.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93eac55f10aceed84769df670ea4a32d2ffad7399400d41ee1c13b1cd8e1b478" checksum = "77089aec8290d0b7bb01b671b091095cf1937670725af4fd73d47249f03b12c0"
dependencies = [ dependencies = [
"der 0.8.0-rc.9", "der 0.8.0-rc.10",
"spki 0.8.0-rc.4", "spki 0.8.0-rc.4",
] ]
@ -2082,15 +2093,6 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]]
name = "ppv-lite86"
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
dependencies = [
"zerocopy",
]
[[package]] [[package]]
name = "primeorder" name = "primeorder"
version = "0.13.6" version = "0.13.6"
@ -2175,7 +2177,7 @@ dependencies = [
"dhat", "dhat",
"flate2", "flate2",
"futures", "futures",
"hmac 0.13.0-rc.2", "hmac 0.13.0-rc.3",
"libloading", "libloading",
"log", "log",
"num-bigint", "num-bigint",
@ -2197,7 +2199,7 @@ dependencies = [
"serde", "serde",
"serde_json", "serde_json",
"sha1", "sha1",
"sha2 0.11.0-rc.2", "sha2 0.11.0-rc.3",
"signature 2.2.0", "signature 2.2.0",
"simplelog", "simplelog",
"tempfile", "tempfile",
@ -2405,22 +2407,13 @@ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]] [[package]]
name = "rand" name = "rand"
version = "0.9.2" version = "0.10.0-rc.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" checksum = "be866deebbade98028b705499827ad6967c8bb1e21f96a2609913c8c076e9307"
dependencies = [ dependencies = [
"rand_chacha", "chacha20",
"rand_core 0.9.3", "getrandom 0.3.4",
] "rand_core 0.10.0-rc-2",
[[package]]
name = "rand_chacha"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
dependencies = [
"ppv-lite86",
"rand_core 0.9.3",
] ]
[[package]] [[package]]
@ -2434,12 +2427,9 @@ dependencies = [
[[package]] [[package]]
name = "rand_core" name = "rand_core"
version = "0.9.3" version = "0.10.0-rc-2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" checksum = "104a23e4e8b77312a823b6b5613edbac78397e2f34320bc7ac4277013ec4478e"
dependencies = [
"getrandom 0.3.4",
]
[[package]] [[package]]
name = "rayon" name = "rayon"
@ -2525,19 +2515,19 @@ dependencies = [
[[package]] [[package]]
name = "rsa" name = "rsa"
version = "0.10.0-rc.9" version = "0.10.0-rc.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf8955ab399f6426998fde6b76ae27233cce950705e758a6c17afd2f6d0e5d52" checksum = "e499c52862d75a86c0024cc99dcb6d7127d15af3beae7b03573d62fab7ade08a"
dependencies = [ dependencies = [
"const-oid 0.10.1", "const-oid 0.10.1",
"crypto-bigint 0.7.0-rc.9", "crypto-bigint 0.7.0-rc.10",
"crypto-primes", "crypto-primes",
"digest 0.11.0-rc.3", "digest 0.11.0-rc.4",
"pkcs1", "pkcs1",
"pkcs8 0.11.0-rc.7", "pkcs8 0.11.0-rc.8",
"rand_core 0.9.3", "rand_core 0.10.0-rc-2",
"sha1", "sha1",
"signature 3.0.0-rc.4", "signature 3.0.0-rc.5",
"spki 0.8.0-rc.4", "spki 0.8.0-rc.4",
"subtle", "subtle",
"zeroize", "zeroize",
@ -2580,7 +2570,7 @@ dependencies = [
"errno", "errno",
"libc", "libc",
"linux-raw-sys", "linux-raw-sys",
"windows-sys 0.59.0", "windows-sys 0.61.2",
] ]
[[package]] [[package]]
@ -2758,13 +2748,13 @@ dependencies = [
[[package]] [[package]]
name = "sha1" name = "sha1"
version = "0.11.0-rc.2" version = "0.11.0-rc.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c5e046edf639aa2e7afb285589e5405de2ef7e61d4b0ac1e30256e3eab911af9" checksum = "aa1ae819b9870cadc959a052363de870944a1646932d274a4e270f64bf79e5ef"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"cpufeatures", "cpufeatures",
"digest 0.11.0-rc.3", "digest 0.11.0-rc.4",
] ]
[[package]] [[package]]
@ -2780,13 +2770,13 @@ dependencies = [
[[package]] [[package]]
name = "sha2" name = "sha2"
version = "0.11.0-rc.2" version = "0.11.0-rc.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1e3878ab0f98e35b2df35fe53201d088299b41a6bb63e3e34dada2ac4abd924" checksum = "19d43dc0354d88b791216bb5c1bfbb60c0814460cc653ae0ebd71f286d0bd927"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"cpufeatures", "cpufeatures",
"digest 0.11.0-rc.3", "digest 0.11.0-rc.4",
] ]
[[package]] [[package]]
@ -2846,12 +2836,12 @@ dependencies = [
[[package]] [[package]]
name = "signature" name = "signature"
version = "3.0.0-rc.4" version = "3.0.0-rc.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc280a6ff65c79fbd6622f64d7127f32b85563bca8c53cd2e9141d6744a9056d" checksum = "2a0251c9d6468f4ba853b6352b190fb7c1e405087779917c238445eb03993826"
dependencies = [ dependencies = [
"digest 0.11.0-rc.3", "digest 0.11.0-rc.4",
"rand_core 0.9.3", "rand_core 0.10.0-rc-2",
] ]
[[package]] [[package]]
@ -2944,7 +2934,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8baeff88f34ed0691978ec34440140e1572b68c7dd4a495fd14a3dc1944daa80" checksum = "8baeff88f34ed0691978ec34440140e1572b68c7dd4a495fd14a3dc1944daa80"
dependencies = [ dependencies = [
"base64ct", "base64ct",
"der 0.8.0-rc.9", "der 0.8.0-rc.10",
] ]
[[package]] [[package]]
@ -2967,9 +2957,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]] [[package]]
name = "syn" name = "syn"
version = "2.0.109" version = "2.0.110"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f17c7e013e88258aa9543dcbe81aca68a667a9ac37cd69c9fbc07858bfe0e2f" checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -3014,7 +3004,7 @@ dependencies = [
"fastrand", "fastrand",
"once_cell", "once_cell",
"rustix", "rustix",
"windows-sys 0.59.0", "windows-sys 0.61.2",
] ]
[[package]] [[package]]
@ -3589,7 +3579,7 @@ version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [ dependencies = [
"windows-sys 0.59.0", "windows-sys 0.61.2",
] ]
[[package]] [[package]]
@ -3812,18 +3802,18 @@ dependencies = [
[[package]] [[package]]
name = "zerocopy" name = "zerocopy"
version = "0.8.27" version = "0.8.28"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" checksum = "43fa6694ed34d6e57407afbccdeecfa268c470a7d2a5b0cf49ce9fcc345afb90"
dependencies = [ dependencies = [
"zerocopy-derive", "zerocopy-derive",
] ]
[[package]] [[package]]
name = "zerocopy-derive" name = "zerocopy-derive"
version = "0.8.27" version = "0.8.28"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" checksum = "c640b22cd9817fae95be82f0d2f90b11f7605f6c319d16705c459b27ac2cbc26"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",

View File

@ -6,11 +6,15 @@ use serde::{Serialize, ser::Serializer};
#[derive(Clone, Copy)] #[derive(Clone, Copy)]
pub struct Velocity(pub Vector3<f64>); pub struct Velocity(pub Vector3<f64>);
const MAX_VELOCITY_CLAMP: f64 = 1.7179869183E10;
const MIN_VELOCITY_MAGNITUDE: f64 = 3.051944088384301E-5;
const MAX_15_BIT_VALUE: f64 = 32766.0;
fn clamp_value(value: f64) -> f64 { fn clamp_value(value: f64) -> f64 {
if value.is_nan() { if value.is_nan() {
return 0.0; return 0.0;
} }
value.clamp(-1.7179869183E10, 1.7179869183E10) value.clamp(-MAX_VELOCITY_CLAMP, MAX_VELOCITY_CLAMP)
} }
fn abs_max(a: f64, b: f64) -> f64 { fn abs_max(a: f64, b: f64) -> f64 {
@ -18,7 +22,7 @@ fn abs_max(a: f64, b: f64) -> f64 {
} }
fn to_long(value: f64) -> i64 { fn to_long(value: f64) -> i64 {
((value * 0.5 + 0.5) * 32766.0).round() as i64 ((value * 0.5 + 0.5) * MAX_15_BIT_VALUE).round() as i64
} }
impl Serialize for Velocity { impl Serialize for Velocity {
@ -30,35 +34,41 @@ impl Serialize for Velocity {
let f = clamp_value(velocity.z); let f = clamp_value(velocity.z);
let g = abs_max(d, abs_max(e, f)); let g = abs_max(d, abs_max(e, f));
if g < 0.00003051944088384301 { if g < MIN_VELOCITY_MAGNITUDE {
buf.push(0u8); buf.push(0u8);
return serializer.serialize_bytes(&buf); return serializer.serialize_bytes(&buf);
} }
// l is the scale factor
let l = g.ceil() as i64; let l = g.ceil() as i64;
// bl is true if the scale factor is > 3 and needs VarInt extension
let bl = l > 3; let bl = l > 3;
// m is the first byte of the packed data (low 3 bits of l + 4 if bl is true)
let m = if bl { l & 3 | 4 } else { l }; let m = if bl { l & 3 | 4 } else { l };
let n: i64 = to_long(d / l as f64) << 3; // Quantize and shift the velocity components (15 bits each)
let o: i64 = to_long(e / l as f64) << 18; let n: i64 = to_long(d / l as f64) << 3; // X shifted 3
let p: i64 = to_long(f / l as f64) << 33; let o: i64 = to_long(e / l as f64) << 18; // Y shifted 18
let p: i64 = to_long(f / l as f64) << 33; // Z shifted 33
// q is the packed 48-bit value (m + X + Y + Z)
let q: i64 = m | n | o | p; let q: i64 = m | n | o | p;
// 1. Write first byte (low 8 bits)
buf.push(q as u8); buf.push(q as u8);
// 2. Write second byte (bits 8-15)
buf.push((q >> 8) as u8); buf.push((q >> 8) as u8);
// This writes 4 bytes (an i32) for the remaining 48 bits of the i64 (q) // 3. Write remaining 4 bytes (bits 16-47) as a Big Endian i32 (Java's writeInt)
// Note: The Java logic is slightly unusual here, using only 6 bytes total (1+1+4) buf.extend_from_slice(&((q >> 16) as i32).to_be_bytes());
// We write the remaining 32 bits of the 64-bit value 'q' as an i32 (4 bytes).
// Since we already used 2 bytes (0-15), we need 4 more bytes (16-47)
buf.extend_from_slice(&((q >> 16) as i32).to_le_bytes());
// 4. Write VarInt for scale factor tail if needed
if bl { if bl {
VarInt::encode(&VarInt((l >> 2) as i32), &mut buf).unwrap(); VarInt::encode(&VarInt((l >> 2) as i32), &mut buf).unwrap();
} }
serializer.serialize_bytes(&buf) serializer.serialize_bytes(&buf)
} }
} }

View File

@ -9,23 +9,31 @@ use crate::{IdOr, SoundEvent, codec::var_int::VarInt};
#[packet(PLAY_EXPLODE)] #[packet(PLAY_EXPLODE)]
pub struct CExplosion { pub struct CExplosion {
pub center: Vector3<f64>, pub center: Vector3<f64>,
pub radius: f32,
pub block_count: i32,
pub knockback: Option<Vector3<f64>>, pub knockback: Option<Vector3<f64>>,
pub particle: VarInt, pub particle: VarInt,
pub sound: IdOr<SoundEvent>, pub sound: IdOr<SoundEvent>,
pub block_particles_pool_size: VarInt,
} }
impl CExplosion { impl CExplosion {
pub fn new( pub fn new(
center: Vector3<f64>, center: Vector3<f64>,
radius: f32,
block_count: i32,
knockback: Option<Vector3<f64>>, knockback: Option<Vector3<f64>>,
particle: VarInt, particle: VarInt,
sound: IdOr<SoundEvent>, sound: IdOr<SoundEvent>,
) -> Self { ) -> Self {
Self { Self {
center, center,
radius,
block_count,
knockback, knockback,
particle, particle,
sound, sound,
block_particles_pool_size: VarInt(0),
} }
} }
} }

View File

@ -5,8 +5,6 @@ use std::{
task::{Context, Poll}, task::{Context, Poll},
}; };
// TODO: Wait for aes/crypto-common to update generic array
#[expect(deprecated)]
use aes::cipher::{BlockDecryptMut, BlockEncryptMut, BlockSizeUser, generic_array::GenericArray}; use aes::cipher::{BlockDecryptMut, BlockEncryptMut, BlockSizeUser, generic_array::GenericArray};
use bytes::Bytes; use bytes::Bytes;
use codec::var_int::VarInt; use codec::var_int::VarInt;
@ -265,9 +263,6 @@ impl<W: AsyncWrite + Unpin> AsyncWrite for StreamEncryptor<W> {
// This should never panic // This should never panic
out[0] = out_to_use; out[0] = out_to_use;
} else { } else {
// This is a stream cipher, so this value must be used
// TODO: Wait for aes/crypto-common to update generic array
#[expect(deprecated)]
let out_block = GenericArray::from_mut_slice(&mut out); let out_block = GenericArray::from_mut_slice(&mut out);
cipher.encrypt_block_b2b_mut(block.into(), out_block); cipher.encrypt_block_b2b_mut(block.into(), out_block);
} }

View File

@ -45,7 +45,7 @@ thread_local = "1.1.9"
lru = "0.16.2" lru = "0.16.2"
tokio-util = { version = "0.7.17", features = ["rt"] } tokio-util = { version = "0.7.17", features = ["rt"] }
rand = "0.9.2" rand = "=0.10.0-rc.5"
num_cpus = "1.17.0" num_cpus = "1.17.0"
slotmap = "1.0.7" slotmap = "1.0.7"
intrusive-collections = "0.9.7" intrusive-collections = "0.9.7"

View File

@ -490,7 +490,7 @@ impl Level {
block_entities: Vec::new(), block_entities: Vec::new(),
}; };
let mut rng = SmallRng::from_os_rng(); let mut rng = SmallRng::from_rng(&mut rand::rng());
let chunks = self let chunks = self
.loaded_chunks .loaded_chunks
.iter() .iter()

View File

@ -42,7 +42,7 @@ serde_json.workspace = true
bytes.workspace = true bytes.workspace = true
rand = "0.9" rand = "=0.10.0-rc.5"
num-bigint = "0.4" num-bigint = "0.4"
@ -50,7 +50,7 @@ num-bigint = "0.4"
rustyline-async = "0.4.7" rustyline-async = "0.4.7"
# encryption # encryption
rsa = { version = "=0.10.0-rc.9", features = ["sha1"] } rsa = { version = "=0.10.0-rc.10", features = ["sha1"] }
rsa-der = "0.3" rsa-der = "0.3"
# authentication # authentication
@ -58,11 +58,11 @@ ureq = { version = "3.1.4", features = [
"json", "json",
] } ] }
sha1 = "=0.11.0-rc.2" sha1 = "=0.11.0-rc.3"
# velocity en # velocity en
hmac = "=0.13.0-rc.2" hmac = "=0.13.0-rc.3"
sha2 = "=0.11.0-rc.2" sha2 = "=0.11.0-rc.3"
base64 = "0.22.1" base64 = "0.22.1"

View File

@ -73,16 +73,17 @@ impl Explosion {
map map
} }
pub async fn explode(&self, world: &Arc<World>) { /// Returns the removed block count
pub async fn explode(&self, world: &Arc<World>) -> u32 {
let blocks = self.get_blocks_to_destroy(world).await; let blocks = self.get_blocks_to_destroy(world).await;
// TODO: Entity damage, fire // TODO: Entity damage, fire
for (pos, (block, state)) in blocks { for (pos, (block, state)) in &blocks {
if state.is_air() { if state.is_air() {
continue; continue;
} }
let pumpkin_block = world.block_registry.get_pumpkin_block(block); let pumpkin_block = world.block_registry.get_pumpkin_block(block);
world.set_block_state(&pos, 0, BlockFlags::NOTIFY_ALL).await; world.set_block_state(pos, 0, BlockFlags::NOTIFY_ALL).await;
if pumpkin_block.is_none_or(|s| s.should_drop_items_on_explosion()) { if pumpkin_block.is_none_or(|s| s.should_drop_items_on_explosion()) {
let params = LootContextParameters { let params = LootContextParameters {
@ -90,17 +91,18 @@ impl Explosion {
explosion_radius: Some(self.power), explosion_radius: Some(self.power),
..Default::default() ..Default::default()
}; };
drop_loot(world, block, &pos, false, params).await; drop_loot(world, block, pos, false, params).await;
} }
if let Some(pumpkin_block) = pumpkin_block { if let Some(pumpkin_block) = pumpkin_block {
pumpkin_block pumpkin_block
.explode(ExplodeArgs { .explode(ExplodeArgs {
world, world,
block, block,
position: &pos, position: pos,
}) })
.await; .await;
} }
} }
blocks.len() as u32
} }
} }

View File

@ -1768,7 +1768,7 @@ impl World {
pub async fn explode(self: &Arc<Self>, position: Vector3<f64>, power: f32) { pub async fn explode(self: &Arc<Self>, position: Vector3<f64>, power: f32) {
let explosion = Explosion::new(power, position); let explosion = Explosion::new(power, position);
explosion.explode(self).await; let block_count = explosion.explode(self).await;
let particle = if power < 2.0 { let particle = if power < 2.0 {
Particle::Explosion Particle::Explosion
} else { } else {
@ -1783,6 +1783,8 @@ impl World {
.client .client
.enqueue_packet(&CExplosion::new( .enqueue_packet(&CExplosion::new(
position, position,
power,
block_count as i32,
None, None,
VarInt(particle as i32), VarInt(particle as i32),
sound.clone(), sound.clone(),