From 8fec1d56cd7f21950fd437d68670ef0ff3e16df1 Mon Sep 17 00:00:00 2001 From: Alexander Medvedev Date: Tue, 8 Jul 2025 23:58:00 +0200 Subject: [PATCH] Improve compile time by a bit --- Cargo.lock | 463 ++++++++++-------------- Cargo.toml | 9 +- Dockerfile | 2 +- pumpkin-config/Cargo.toml | 2 +- pumpkin-data/build/block.rs | 13 +- pumpkin-data/build/build.rs | 4 - pumpkin-world/Cargo.toml | 2 +- pumpkin/Cargo.toml | 15 +- pumpkin/build.rs | 19 - pumpkin/src/command/commands/pumpkin.rs | 13 +- pumpkin/src/lib.rs | 2 - pumpkin/src/main.rs | 3 +- pumpkin/src/server/connection_cache.rs | 59 ++- 13 files changed, 230 insertions(+), 376 deletions(-) delete mode 100644 pumpkin/build.rs diff --git a/Cargo.lock b/Cargo.lock index e61be3e43..14f5b7086 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -192,12 +192,6 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.9.1" @@ -272,12 +266,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" -[[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.41" @@ -515,7 +503,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ - "bitflags 2.9.1", + "bitflags", "crossterm_winapi", "derive_more", "document-features", @@ -717,17 +705,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] -name = "embed-resource" -version = "3.0.4" +name = "encoding_rs" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0963f530273dc3022ab2bdc3fcd6d488e850256f2284a82b7413cb9481ee85dd" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ - "cc", - "memchr", - "rustc_version", - "toml", - "vswhom", - "winreg", + "cfg-if", ] [[package]] @@ -787,15 +770,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" -[[package]] -name = "fdeflate" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" -dependencies = [ - "simd-adler32", -] - [[package]] name = "file-guard" version = "0.2.0" @@ -828,6 +802,21 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -943,10 +932,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", - "wasm-bindgen", ] [[package]] @@ -956,11 +943,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi", "wasi 0.14.2+wasi-0.2.4", - "wasm-bindgen", ] [[package]] @@ -969,26 +954,6 @@ version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" -[[package]] -name = "git-version" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad568aa3db0fcbc81f2f116137f263d7304f512a1209b35b85150d3ef88ad19" -dependencies = [ - "git-version-macro", -] - -[[package]] -name = "git-version-macro" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "h2" version = "0.4.11" @@ -1139,7 +1104,22 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots", +] + +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", ] [[package]] @@ -1325,7 +1305,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" dependencies = [ - "bitflags 2.9.1", + "bitflags", "cfg-if", "libc", ] @@ -1500,12 +1480,6 @@ dependencies = [ "hashbrown 0.15.4", ] -[[package]] -name = "lru-slab" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" - [[package]] name = "lz4-java-wrc" version = "0.2.0" @@ -1544,6 +1518,12 @@ version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -1551,7 +1531,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", - "simd-adler32", ] [[package]] @@ -1572,6 +1551,23 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -1663,6 +1659,50 @@ version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "parking_lot" version = "0.12.4" @@ -1875,19 +1915,6 @@ dependencies = [ "plotters-backend", ] -[[package]] -name = "png" -version = "0.17.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" -dependencies = [ - "bitflags 1.3.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - [[package]] name = "portable-atomic" version = "1.11.1" @@ -1964,19 +1991,17 @@ version = "0.1.0-dev+1.21.7" dependencies = [ "async-trait", "base64", - "bitflags 2.9.1", + "bitflags", "bytes", "chrono", "crossbeam", "dhat", "flate2", "futures", - "git-version", "hmac", "libloading", "log", "num-bigint", - "png", "pumpkin-config", "pumpkin-data", "pumpkin-inventory", @@ -1998,7 +2023,6 @@ dependencies = [ "sha1", "sha2 0.11.0-rc.0", "simplelog", - "tauri-winres", "tempfile", "thiserror", "time", @@ -2090,7 +2114,7 @@ version = "0.1.0-dev+1.21.7" dependencies = [ "aes", "async-compression", - "bitflags 2.9.1", + "bitflags", "bytes", "cfb8", "flate2", @@ -2145,7 +2169,7 @@ name = "pumpkin-world" version = "0.1.0-dev+1.21.7" dependencies = [ "async-trait", - "bitflags 2.9.1", + "bitflags", "bytes", "criterion", "crossbeam", @@ -2183,61 +2207,6 @@ dependencies = [ "zstd", ] -[[package]] -name = "quinn" -version = "0.11.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" -dependencies = [ - "bytes", - "cfg_aliases", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash 2.1.1", - "rustls", - "socket2", - "thiserror", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" -dependencies = [ - "bytes", - "getrandom 0.3.3", - "lru-slab", - "rand", - "ring", - "rustc-hash 2.1.1", - "rustls", - "rustls-pki-types", - "slab", - "thiserror", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2", - "tracing", - "windows-sys 0.59.0", -] - [[package]] name = "quote" version = "1.0.40" @@ -2308,7 +2277,7 @@ version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ - "bitflags 2.9.1", + "bitflags", ] [[package]] @@ -2348,6 +2317,7 @@ checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ "base64", "bytes", + "encoding_rs", "futures-core", "h2", "http", @@ -2355,20 +2325,21 @@ dependencies = [ "http-body-util", "hyper", "hyper-rustls", + "hyper-tls", "hyper-util", "js-sys", "log", + "mime", + "native-tls", "percent-encoding", "pin-project-lite", - "quinn", - "rustls", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", "tokio", - "tokio-rustls", + "tokio-native-tls", "tower", "tower-http", "tower-service", @@ -2376,7 +2347,6 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", ] [[package]] @@ -2440,22 +2410,13 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - [[package]] name = "rustix" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.9.1", + "bitflags", "errno", "libc", "linux-raw-sys", @@ -2469,7 +2430,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" dependencies = [ "once_cell", - "ring", "rustls-pki-types", "rustls-webpki", "subtle", @@ -2482,7 +2442,6 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ - "web-time", "zeroize", ] @@ -2533,6 +2492,15 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -2540,10 +2508,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] -name = "semver" -version = "1.0.26" +name = "security-framework" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] [[package]] name = "serde" @@ -2590,9 +2575,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.9" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83" dependencies = [ "serde", ] @@ -2698,12 +2683,6 @@ dependencies = [ "rand_core", ] -[[package]] -name = "simd-adler32" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" - [[package]] name = "simple_asn1" version = "0.6.3" @@ -2821,7 +2800,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.1", + "bitflags", "core-foundation", "system-configuration-sys", ] @@ -2842,17 +2821,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" -[[package]] -name = "tauri-winres" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d321dbc6f998d825ab3f0d62673e810c861aac2d0de2cc2c395328f1d113b4" -dependencies = [ - "embed-resource", - "indexmap", - "toml", -] - [[package]] name = "temp-dir" version = "0.1.16" @@ -2979,21 +2947,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "tinyvec" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" -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 = "tokio" version = "1.46.0" @@ -3024,6 +2977,16 @@ dependencies = [ "syn", ] +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.26.2" @@ -3051,44 +3014,42 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.23" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +checksum = "f271e09bde39ab52250160a67e88577e0559ad77e9085de6e9051a2c4353f8f8" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", - "toml_write", + "toml_parser", + "toml_writer", "winnow", ] [[package]] -name = "toml_write" -version = "0.1.2" +name = "toml_datetime" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5c1c469eda89749d2230d8156a5969a69ffe0d6d01200581cdc6110674d293e" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_writer" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b679217f2848de74cabd3e8fc5e6d66f40b7da40f8e1954d92054d9010690fd5" [[package]] name = "tower" @@ -3111,7 +3072,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.1", + "bitflags", "bytes", "futures-util", "http", @@ -3242,32 +3203,18 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "vswhom" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" -dependencies = [ - "libc", - "vswhom-sys", -] - -[[package]] -name = "vswhom-sys" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "walkdir" version = "2.5.0" @@ -3383,25 +3330,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "winapi" version = "0.3.9" @@ -3663,19 +3591,6 @@ name = "winnow" version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.55.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" -dependencies = [ - "cfg-if", - "windows-sys 0.59.0", -] [[package]] name = "wit-bindgen-rt" @@ -3683,7 +3598,7 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.1", + "bitflags", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 066702b75..d39384051 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,10 +17,6 @@ members = [ version = "0.1.0-dev+1.21.7" edition = "2024" - -[profile.dev] -#opt-level = 0 - [profile.release] lto = true codegen-units = 1 @@ -43,6 +39,7 @@ tokio = { version = "1.46", features = [ "signal", "fs", "io-util", + "time", ] } thiserror = "2.0" @@ -50,7 +47,7 @@ thiserror = "2.0" bytes = "1.10" # Concurrency/Parallelism and Synchronization -futures = "0.3" +futures = { version = "0.3", default-features = false, features = ["executor"] } rayon = "1.10" crossbeam = "0.8" @@ -61,5 +58,5 @@ serde_json = "1.0" async-trait = "0.1" -tempfile = "3.20.0" +tempfile = { version = "3.20.0", default-features = false } proc-macro-error2 = "2" diff --git a/Dockerfile b/Dockerfile index e61722747..97a4fed84 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:1-alpine3.21 AS builder +FROM rust:1-alpine3.22 AS builder ENV RUSTFLAGS="-C target-feature=-crt-static" RUN apk add --no-cache musl-dev \ # Required for git-version diff --git a/pumpkin-config/Cargo.toml b/pumpkin-config/Cargo.toml index 65fe6c6fc..a031537c5 100644 --- a/pumpkin-config/Cargo.toml +++ b/pumpkin-config/Cargo.toml @@ -9,7 +9,7 @@ serde.workspace = true log.workspace = true uuid.workspace = true -toml = "0.8" +toml = "0.9" [features] # Adds helper to change the config at runtime diff --git a/pumpkin-data/build/block.rs b/pumpkin-data/build/block.rs index b2e5bd889..c789c0d32 100644 --- a/pumpkin-data/build/block.rs +++ b/pumpkin-data/build/block.rs @@ -18,7 +18,7 @@ fn fill_array(array: Vec<(u16, T)>) -> Vec TokenStream { }; // Many state ids map to single raw block id - const RAW_ID_FROM_STATE_ID: [Option; #max_state_id] = [ + const RAW_ID_FROM_STATE_ID: [u16; #max_state_id] = [ #raw_id_from_state_id ]; - const TYPE_FROM_RAW_ID: [Option<&Block>; #max_type_id] = [ + const TYPE_FROM_RAW_ID: [&Block; #max_type_id] = [ #type_from_raw_id_items ]; @@ -971,7 +971,7 @@ pub(crate) fn build() -> TokenStream { if id as usize >= Self::RAW_ID_FROM_STATE_ID.len() { None } else { - Self::TYPE_FROM_RAW_ID[id as usize] + Some(Self::TYPE_FROM_RAW_ID[id as usize]) } } @@ -980,10 +980,7 @@ pub(crate) fn build() -> TokenStream { if id as usize >= Self::RAW_ID_FROM_STATE_ID.len() { return None; } - match Self::RAW_ID_FROM_STATE_ID[id as usize] { - Some(id) => Self::from_id(id), - None => None, - } + Self::from_id(Self::RAW_ID_FROM_STATE_ID[id as usize]) } #[doc = r" Try to parse a block from an item id."] diff --git a/pumpkin-data/build/build.rs b/pumpkin-data/build/build.rs index b6c9cab98..91c610338 100644 --- a/pumpkin-data/build/build.rs +++ b/pumpkin-data/build/build.rs @@ -110,8 +110,4 @@ pub fn write_generated_file(content: TokenStream, out_file: &str) { // Try to format the output for debugging purposes. // Doesn't matter if rustfmt is unavailable. let _ = Command::new("rustfmt").arg(&path).output(); - // Try to auto optimize using clippy. - let _ = Command::new("cargo clippy --fix --allow-dirty") - .arg(&path) - .output(); } diff --git a/pumpkin-world/Cargo.toml b/pumpkin-world/Cargo.toml index f307d42fc..6ca4f0a52 100644 --- a/pumpkin-world/Cargo.toml +++ b/pumpkin-world/Cargo.toml @@ -34,7 +34,7 @@ num-traits = "0.2" # Compression flate2 = "1.1" lz4-java-wrc = "0.2.0" -zstd = "0.13.3" +zstd = { version = "0.13.3", default-features = false } itertools = "0.14.0" file-guard = "0.2" diff --git a/pumpkin/Cargo.toml b/pumpkin/Cargo.toml index c04eed96d..a4ce1646f 100644 --- a/pumpkin/Cargo.toml +++ b/pumpkin/Cargo.toml @@ -54,11 +54,8 @@ rsa = { version = "=0.10.0-rc.1", features = ["sha1"] } rsa-der = "0.3" # authentication -reqwest = { version = "0.12", default-features = false, features = [ - "http2", +reqwest = { version = "0.12", features = [ "json", - "macos-system-configuration", - "rustls-tls", ] } sha1 = "=0.11.0-rc.0" @@ -69,9 +66,6 @@ sha2 = "=0.11.0-rc.0" base64 = "0.22" -# icon loading -png = "0.17" - # logging simplelog = { version = "0.12.2", features = ["ansi_term"] } @@ -93,16 +87,9 @@ dhat = { version = "0.3.3", optional = true } flate2 = "1.1.2" -[build-dependencies] -git-version = "0.3" - [dev-dependencies] tempfile.workspace = true -# This makes it so the entire project doesn't recompile on each build on linux. -[target.'cfg(target_os = "windows")'.build-dependencies] -tauri-winres = "0.3" - [features] #https://nnethercote.github.io/dh_view/dh_view.html #https://valgrind.org/docs/manual/dh-manual.html diff --git a/pumpkin/build.rs b/pumpkin/build.rs deleted file mode 100644 index c71a81e6e..000000000 --- a/pumpkin/build.rs +++ /dev/null @@ -1,19 +0,0 @@ -use git_version::git_version; -use std::env; - -fn main() { - #[cfg(all(target_os = "windows", not(debug_assertions)))] - { - let mut res = tauri_winres::WindowsResource::new(); - res.set_icon("../assets/icon.ico"); - res.set_language(0x0009); // English - res.compile().unwrap(); - } - - let version = git_version!(fallback = "unknown"); - let git_version = match version { - "unknown" => env::var("GIT_VERSION").unwrap_or("unknown".to_string()), - _ => version.to_string(), - }; - println!("cargo:rustc-env=GIT_VERSION={git_version}"); -} diff --git a/pumpkin/src/command/commands/pumpkin.rs b/pumpkin/src/command/commands/pumpkin.rs index d100fc798..9114c021e 100644 --- a/pumpkin/src/command/commands/pumpkin.rs +++ b/pumpkin/src/command/commands/pumpkin.rs @@ -5,13 +5,10 @@ use pumpkin_util::text::hover::HoverEvent; use pumpkin_util::text::{TextComponent, color::NamedColor}; use std::borrow::Cow; -use crate::server::CURRENT_MC_VERSION; -use crate::{ - GIT_VERSION, - command::{ - CommandError, CommandExecutor, CommandSender, args::ConsumedArgs, tree::CommandTree, - }, +use crate::command::{ + CommandError, CommandExecutor, CommandSender, args::ConsumedArgs, tree::CommandTree, }; +use crate::server::CURRENT_MC_VERSION; const NAMES: [&str; 2] = ["pumpkin", "version"]; @@ -32,12 +29,12 @@ impl CommandExecutor for Executor { ) -> Result<(), CommandError> { sender .send_message( - TextComponent::text(format!("Pumpkin {CARGO_PKG_VERSION} ({GIT_VERSION})\n")) + TextComponent::text(format!("Pumpkin {CARGO_PKG_VERSION}\n")) .hover_event(HoverEvent::show_text(TextComponent::text(Cow::from( "Click to Copy Version", )))) .click_event(ClickEvent::CopyToClipboard { - value: Cow::from(format!("Pumpkin {CARGO_PKG_VERSION} ({GIT_VERSION})")), + value: Cow::from(format!("Pumpkin {CARGO_PKG_VERSION}")), }) .color_named(NamedColor::Green) .add_child( diff --git a/pumpkin/src/lib.rs b/pumpkin/src/lib.rs index ccd68c94f..19f938af9 100644 --- a/pumpkin/src/lib.rs +++ b/pumpkin/src/lib.rs @@ -40,8 +40,6 @@ pub mod plugin; pub mod server; pub mod world; -const GIT_VERSION: &str = env!("GIT_VERSION"); - #[cfg(feature = "dhat-heap")] pub static HEAP_PROFILER: LazyLock>> = LazyLock::new(|| Mutex::new(None)); diff --git a/pumpkin/src/main.rs b/pumpkin/src/main.rs index 0ff1bb445..7762d637f 100644 --- a/pumpkin/src/main.rs +++ b/pumpkin/src/main.rs @@ -96,7 +96,6 @@ pub static PERMISSION_MANAGER: LazyLock>> = LazyLo }); const CARGO_PKG_VERSION: &str = env!("CARGO_PKG_VERSION"); -const GIT_VERSION: &str = env!("GIT_VERSION"); // WARNING: All rayon calls from the tokio runtime must be non-blocking! This includes things // like `par_iter`. These should be spawned in the the rayon pool and then passed to the tokio @@ -127,7 +126,7 @@ async fn main() { .build_global() .expect("Rayon thread pool can only be initialized once"); log::info!( - "Starting Pumpkin {CARGO_PKG_VERSION} ({GIT_VERSION}) for Minecraft {CURRENT_MC_VERSION} (Protocol {CURRENT_MC_PROTOCOL})", + "Starting Pumpkin {CARGO_PKG_VERSION} for Minecraft {CURRENT_MC_VERSION} (Protocol {CURRENT_MC_PROTOCOL})", ); log::debug!( diff --git a/pumpkin/src/server/connection_cache.rs b/pumpkin/src/server/connection_cache.rs index 3716fee34..b8b8cefaa 100644 --- a/pumpkin/src/server/connection_cache.rs +++ b/pumpkin/src/server/connection_cache.rs @@ -9,11 +9,7 @@ use pumpkin_protocol::{ codec::var_int::VarInt, java::client::{config::CPluginMessage, status::CStatusResponse}, }; -use std::{ - fs::File, - io::{Cursor, Read}, - path::Path, -}; +use std::{fs::File, io::Read, path::Path}; const DEFAULT_ICON: &[u8] = include_bytes!("../../../assets/default_icon.png"); @@ -21,21 +17,14 @@ fn load_icon_from_file>(path: P) -> Result Result> { +fn load_icon_from_bytes(png_data: &[u8]) -> String { assert!(!png_data.is_empty(), "PNG data is empty"); - let icon = png::Decoder::new(Cursor::new(&png_data)); - let reader = icon.read_info()?; - let info = reader.info(); - assert!(info.width == 64, "Icon width must be 64"); - assert!(info.height == 64, "Icon height must be 64"); - - // Reader consumes the image. Once we verify dimensions, we want to encode the entire raw image let mut result = "data:image/png;base64,".to_owned(); general_purpose::STANDARD.encode_string(png_data, &mut result); - Ok(result) + result } pub struct CachedStatus { @@ -128,31 +117,29 @@ impl CachedStatus { pub fn build_response(config: &BasicConfiguration) -> StatusResponse { let favicon = if config.use_favicon { let icon_path = &config.favicon_path; - log::debug!("Loading server favicon from '{icon_path}'"); - match load_icon_from_file(icon_path).or_else(|err| { - if let Some(io_err) = err.downcast_ref::() { - if io_err.kind() == std::io::ErrorKind::NotFound { - log::info!("Favicon '{icon_path}' not found; using default icon."); - } else { - log::error!( - "Unable to load favicon at '{icon_path}': I/O error - {io_err}; using default icon.", - ); - } - } else { - log::error!( - "Unable to load favicon at '{icon_path}': other error - {err}; using default icon.", + log::debug!("Attempting to load server favicon from '{icon_path}'"); + + match load_icon_from_file(icon_path) { + Ok(icon) => Some(icon), + Err(e) => { + let error_message = e.downcast_ref::().map_or_else( + || format!("other error: {e}; using default."), + |io_err| { + if io_err.kind() == std::io::ErrorKind::NotFound { + "not found; using default.".to_string() + } else { + format!("I/O error: {io_err}; using default.") + } + }, ); - } - load_icon_from_bytes(DEFAULT_ICON) - }) { - Ok(result) => Some(result), - Err(err) => { - log::warn!("Failed to load default icon: {err}"); - None + log::warn!("Failed to load favicon from '{icon_path}': {error_message}"); + + // Attempt to load default icon + Some(load_icon_from_bytes(DEFAULT_ICON)) } } } else { - log::info!("Not using a server favicon"); + log::info!("Favicon usage is disabled."); None };