How I stopped worrying and learned to love zero-copy deserialization

This commit is contained in:
mdecimus
2025-02-25 17:38:02 +01:00
parent b7c0f8447b
commit 2826ff1548
157 changed files with 3822 additions and 2774 deletions

207
Cargo.lock generated
View File

@@ -932,8 +932,20 @@ version = "0.6.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2"
dependencies = [
"bytecheck_derive",
"ptr_meta",
"bytecheck_derive 0.6.12",
"ptr_meta 0.1.4",
"simdutf8",
]
[[package]]
name = "bytecheck"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50690fb3370fb9fe3550372746084c46f2ac8c9685c583d2be10eefd89d3d1a3"
dependencies = [
"bytecheck_derive 0.8.1",
"ptr_meta 0.3.0",
"rancor",
"simdutf8",
]
@@ -948,6 +960,17 @@ dependencies = [
"syn 1.0.109",
]
[[package]]
name = "bytecheck_derive"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "efb7846e0cb180355c2dec69e721edafa36919850f1a9f52ffba4ebc0393cb71"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.96",
]
[[package]]
name = "bytemuck"
version = "1.21.0"
@@ -987,6 +1010,15 @@ dependencies = [
"pkg-config",
]
[[package]]
name = "calcard"
version = "0.1.0"
dependencies = [
"hashify",
"mail-builder",
"mail-parser",
]
[[package]]
name = "camellia"
version = "0.1.0"
@@ -1250,6 +1282,7 @@ dependencies = [
"regex",
"reqwest 0.12.12",
"ring 0.17.8",
"rkyv 0.8.10",
"rsa",
"rustls 0.23.21",
"rustls-pemfile 2.2.0",
@@ -2071,6 +2104,7 @@ dependencies = [
"rasn",
"rasn-cms",
"rasn-pkix",
"rkyv 0.8.10",
"rsa",
"sequoia-openpgp",
"serde",
@@ -2591,6 +2625,16 @@ dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "gethostname"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fd4b8790c0792e3b11895efdf5f289ebe8b59107a6624f1cce68f24ff8c7035"
dependencies = [
"rustix",
"windows-targets 0.52.6",
]
[[package]]
name = "getrandom"
version = "0.1.16"
@@ -2660,6 +2704,19 @@ dependencies = [
"subtle",
]
[[package]]
name = "groupware"
version = "0.11.5"
dependencies = [
"calcard",
"common",
"directory",
"hashify",
"jmap_proto",
"tokio",
"utils",
]
[[package]]
name = "h2"
version = "0.3.26"
@@ -2741,11 +2798,11 @@ dependencies = [
[[package]]
name = "hashlink"
version = "0.9.1"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af"
checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1"
dependencies = [
"hashbrown 0.14.5",
"hashbrown 0.15.2",
]
[[package]]
@@ -3306,7 +3363,6 @@ dependencies = [
"directory",
"email",
"imap_proto",
"jmap",
"jmap_proto",
"mail-parser",
"mail-send",
@@ -3629,7 +3685,9 @@ version = "0.11.8"
dependencies = [
"ahash 0.8.11",
"fast-float",
"hashify",
"mail-parser",
"rkyv 0.8.10",
"serde",
"serde_json",
"store",
@@ -3841,9 +3899,9 @@ dependencies = [
[[package]]
name = "libsqlite3-sys"
version = "0.30.1"
version = "0.31.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149"
checksum = "ad8935b44e7c13394a179a438e0cebba0fe08fe01b54f152e29a93b5cf993fd4"
dependencies = [
"cc",
"pkg-config",
@@ -3969,11 +4027,11 @@ dependencies = [
[[package]]
name = "mail-builder"
version = "0.4.0"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d75c72a0bf2070b4c2aa384f173439569a9e0e97293b90aad3469b6d9c183ec4"
checksum = "f2d2c992d0b4d0acedb466c5524bb09327f4d0bb5bcfacea13005ec01c09f2ac"
dependencies = [
"gethostname",
"gethostname 1.0.0",
]
[[package]]
@@ -3994,7 +4052,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b12277cdcacfc15af67fe9cf155f31ff68ad8c301304573ea116ed8870f192d5"
dependencies = [
"base64 0.22.1",
"gethostname",
"gethostname 0.5.0",
"md5",
"rustls 0.23.21",
"rustls-pki-types",
@@ -4010,6 +4068,7 @@ version = "0.11.8"
dependencies = [
"common",
"directory",
"email",
"imap",
"jemallocator",
"jmap",
@@ -4035,7 +4094,6 @@ dependencies = [
"email",
"imap",
"imap_proto",
"jmap",
"jmap_proto",
"mail-parser",
"mail-send",
@@ -4181,6 +4239,26 @@ dependencies = [
"windows-sys 0.48.0",
]
[[package]]
name = "munge"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8743b8dfaf66acac79aca9ff2440e8680fef745b6260e6a31d1772b14cfa2862"
dependencies = [
"munge_macro",
]
[[package]]
name = "munge_macro"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "66191390a55bb9830fa8468c12634442ea4199c6e390ddf08ddcace35b3cd5da"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.96",
]
[[package]]
name = "mysql-common-derive"
version = "0.31.2"
@@ -4856,7 +4934,6 @@ dependencies = [
"directory",
"email",
"imap",
"jmap",
"jmap_proto",
"mail-parser",
"mail-send",
@@ -5084,7 +5161,16 @@ version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1"
dependencies = [
"ptr_meta_derive",
"ptr_meta_derive 0.1.4",
]
[[package]]
name = "ptr_meta"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe9e76f66d3f9606f44e45598d155cb13ecf09f4a28199e48daf8c8fc937ea90"
dependencies = [
"ptr_meta_derive 0.3.0",
]
[[package]]
@@ -5098,6 +5184,17 @@ dependencies = [
"syn 1.0.109",
]
[[package]]
name = "ptr_meta_derive"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca414edb151b4c8d125c12566ab0d74dc9cdba36fb80eb7b848c15f495fd32d1"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.96",
]
[[package]]
name = "pwhash"
version = "1.0.0"
@@ -5248,6 +5345,15 @@ dependencies = [
"nibble_vec",
]
[[package]]
name = "rancor"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "caf5f7161924b9d1cea0e4cabc97c372cea92b5f927fc13c6bca67157a0ad947"
dependencies = [
"ptr_meta 0.3.0",
]
[[package]]
name = "rand"
version = "0.7.3"
@@ -5453,28 +5559,24 @@ dependencies = [
[[package]]
name = "redis"
version = "0.27.6"
version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09d8f99a4090c89cc489a94833c901ead69bfbf3877b4867d5482e321ee875bc"
checksum = "9568894e8bdefd16512bca9e286a9d2abc27773609aa4eb7f428497d64df4373"
dependencies = [
"arc-swap",
"async-trait",
"bytes",
"combine",
"crc16",
"futures",
"futures-sink",
"futures-util",
"itertools 0.13.0",
"itoa",
"log",
"num-bigint",
"percent-encoding",
"pin-project-lite",
"rand 0.8.5",
"rand 0.9.0",
"rustls 0.23.21",
"rustls-native-certs 0.7.3",
"rustls-pemfile 2.2.0",
"rustls-pki-types",
"ryu",
"sha1_smol",
"socket2",
@@ -5540,7 +5642,16 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c"
dependencies = [
"bytecheck",
"bytecheck 0.6.12",
]
[[package]]
name = "rend"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a35e8a6bf28cd121053a66aa2e6a2e3eaffad4a60012179f0e864aa5ffeff215"
dependencies = [
"bytecheck 0.8.1",
]
[[package]]
@@ -5710,17 +5821,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b"
dependencies = [
"bitvec",
"bytecheck",
"bytecheck 0.6.12",
"bytes",
"hashbrown 0.12.3",
"ptr_meta",
"rend",
"rkyv_derive",
"ptr_meta 0.1.4",
"rend 0.4.2",
"rkyv_derive 0.7.45",
"seahash",
"tinyvec",
"uuid",
]
[[package]]
name = "rkyv"
version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e147371c75553e1e2fcdb483944a8540b8438c31426279553b9a8182a9b7b65"
dependencies = [
"bytecheck 0.8.1",
"bytes",
"hashbrown 0.15.2",
"indexmap 2.7.1",
"munge",
"ptr_meta 0.3.0",
"rancor",
"rend 0.5.2",
"rkyv_derive 0.8.10",
"tinyvec",
"uuid",
]
[[package]]
name = "rkyv_derive"
version = "0.7.45"
@@ -5732,6 +5862,17 @@ dependencies = [
"syn 1.0.109",
]
[[package]]
name = "rkyv_derive"
version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "246b40ac189af6c675d124b802e8ef6d5246c53e17367ce9501f8f66a81abb7a"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.96",
]
[[package]]
name = "rle-decode-fast"
version = "1.0.3"
@@ -5807,9 +5948,9 @@ checksum = "ad8388ea1a9e0ea807e442e8263a699e7edcb320ecbcd21b4fa8ff859acce3ba"
[[package]]
name = "rusqlite"
version = "0.32.1"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e"
checksum = "1c6d5e5acb6f6129fe3f7ba0a7fc77bca1942cb568535e18e7bc40262baf3110"
dependencies = [
"bitflags 2.8.0",
"fallible-iterator 0.3.0",
@@ -5888,7 +6029,7 @@ dependencies = [
"bytes",
"num-traits",
"rand 0.8.5",
"rkyv",
"rkyv 0.7.45",
"serde",
"serde_json",
]
@@ -6734,6 +6875,7 @@ dependencies = [
"futures",
"lru-cache",
"lz4_flex",
"memchr",
"mysql_async",
"nlp",
"num_cpus",
@@ -6745,6 +6887,7 @@ dependencies = [
"regex",
"reqwest 0.12.12",
"ring 0.17.8",
"rkyv 0.8.10",
"roaring",
"rocksdb",
"rusqlite",
@@ -7371,6 +7514,7 @@ dependencies = [
"mail-parser",
"parking_lot",
"reqwest 0.12.12",
"rkyv 0.8.10",
"rtrb",
"serde",
"serde_json",
@@ -7638,6 +7782,7 @@ dependencies = [
"regex",
"reqwest 0.12.12",
"ring 0.17.8",
"rkyv 0.8.10",
"rustls 0.23.21",
"rustls-pemfile 2.2.0",
"rustls-pki-types",