diff --git a/Cargo.lock b/Cargo.lock index 0c881e308d..4b19cc5afd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -45,14 +45,13 @@ dependencies = [ [[package]] name = "aes" -version = "0.7.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ "cfg-if", - "cipher 0.3.0", + "cipher 0.4.4", "cpufeatures", - "opaque-debug", ] [[package]] @@ -95,7 +94,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "once_cell", "version_check", ] @@ -107,6 +106,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ "cfg-if", + "getrandom 0.2.10", "once_cell", "version_check", ] @@ -120,6 +120,27 @@ dependencies = [ "memchr", ] +[[package]] +name = "aho-corasick" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56fc6cf8dc8c4158eed8649f9b8b0ea1518eb62b544fe9490d66fa0b349eafe9" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -137,49 +158,58 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.2.6" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "342258dd14006105c2b75ab1bd7543a03bdf0cfc94383303ac212a04939dff6f" +checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" dependencies = [ "anstyle", "anstyle-parse", + "anstyle-query", "anstyle-wincon", - "concolor-override", - "concolor-query", + "colorchoice", "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "0.3.5" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ea9e81bd02e310c216d080f6223c179012256e5151c41db88d12c88a1684d2" +checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" [[package]] name = "anstyle-parse" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7d1bb534e9efed14f3e5f44e7dd1a4f709384023a4165199a4241e18dff0116" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" dependencies = [ "utf8parse", ] +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys 0.48.0", +] + [[package]] name = "anstyle-wincon" -version = "0.2.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3127af6145b149f3287bb9a0d10ad9c5692dba8c53ad48285e5bec4063834fa" +checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" dependencies = [ "anstyle", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] name = "anyhow" -version = "1.0.70" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" +checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" [[package]] name = "arc-swap" @@ -220,7 +250,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" dependencies = [ "bytes 0.5.6", - "flate2", "futures-core", "memchr", "pin-project-lite 0.2.9", @@ -228,6 +257,19 @@ dependencies = [ "xz2", ] +[[package]] +name = "async-compression" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0122885821398cc923ece939e24d1056a2384ee719432397fa9db87230ff11" +dependencies = [ + "flate2", + "futures-core", + "memchr", + "pin-project-lite 0.2.9", + "tokio", +] + [[package]] name = "async-dup" version = "1.2.2" @@ -390,7 +432,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.14", + "syn 2.0.22", ] [[package]] @@ -420,7 +462,7 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.14", + "syn 2.0.22", ] [[package]] @@ -494,9 +536,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "aws-config" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd62464d1c4ad70f8b6cd693e7f30229f36bebdcdf3fce8c11803e1bdc0bc052" +checksum = "bcdcf0d683fe9c23d32cf5b53c9918ea0a500375a9fb20109802552658e576c9" dependencies = [ "aws-credential-types", "aws-http", @@ -515,7 +557,7 @@ dependencies = [ "http", "hyper", "ring", - "time 0.3.20", + "time 0.3.22", "tokio", "tower", "tracing", @@ -524,9 +566,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4232d3729eefc287adc0d5a8adc97b7d94eefffe6bbe94312cc86c7ab6b06ce" +checksum = "1fcdb2f7acbc076ff5ad05e7864bdb191ca70a6fd07668dc3a1a8bcd051de5ae" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -538,9 +580,9 @@ dependencies = [ [[package]] name = "aws-endpoint" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f04ab03b3f1cca91f7cccaa213056d732accb14e2e65debfacc1d28627d162" +checksum = "8cce1c41a6cfaa726adee9ebb9a56fcd2bbfd8be49fd8a04c5e20fd968330b04" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -552,9 +594,9 @@ dependencies = [ [[package]] name = "aws-http" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ad8c53f7560baaf635b6aa811f3213d39b50555d100f83e43801652d4e318e" +checksum = "aadbc44e7a8f3e71c8b374e03ecd972869eb91dd2bc89ed018954a52ba84bc44" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -604,9 +646,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "0.26.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143953d46f77a0b18480e7d8bb1a651080b9484e0bb94c27b8645eaeb3c3e231" +checksum = "c8b812340d86d4a766b2ca73f740dfd47a97c2dff0c06c8517a16d88241957e4" dependencies = [ "aws-credential-types", "aws-endpoint", @@ -629,9 +671,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "0.26.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7255c0d8053b89e8b5cdabb52e1dbf596e9968b1f45dce7a56b2cd57038fcfc9" +checksum = "265fac131fbfc188e5c3d96652ea90ecc676a934e3174eaaee523c6cec040b3b" dependencies = [ "aws-credential-types", "aws-endpoint", @@ -655,9 +697,9 @@ dependencies = [ [[package]] name = "aws-sig-auth" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d77d879ab210e958ba65a6d3842969a596738c024989cd3e490cf9f9b560ec" +checksum = "3b94acb10af0c879ecd5c7bdf51cda6679a0a4f4643ce630905a77673bfa3c61" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -670,9 +712,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ab4eebc8ec484fb9eab04b15a5d1e71f3dc13bee8fdd2d9ed78bcd6ecbd7192" +checksum = "9d2ce6f507be68e968a33485ced670111d1cbad161ddbbab1e313c03d37d8f4c" dependencies = [ "aws-smithy-eventstream", "aws-smithy-http", @@ -684,16 +726,16 @@ dependencies = [ "once_cell", "percent-encoding", "regex", - "sha2 0.10.6", - "time 0.3.20", + "sha2 0.10.7", + "time 0.3.22", "tracing", ] [[package]] name = "aws-smithy-async" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88573bcfbe1dcfd54d4912846df028b42d6255cbf9ce07be216b1bbfd11fc4b9" +checksum = "13bda3996044c202d75b91afeb11a9afae9db9a721c6a7a427410018e286b880" dependencies = [ "futures-util", "pin-project-lite 0.2.9", @@ -703,9 +745,9 @@ dependencies = [ [[package]] name = "aws-smithy-checksums" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71a63d4f1c04b3abb7603001e4513f19617427bf27ca185b2ac663a1e342d39e" +checksum = "07ed8b96d95402f3f6b8b57eb4e0e45ee365f78b1a924faf20ff6e97abf1eae6" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -718,15 +760,15 @@ dependencies = [ "md-5", "pin-project-lite 0.2.9", "sha1 0.10.5", - "sha2 0.10.6", + "sha2 0.10.7", "tracing", ] [[package]] name = "aws-smithy-client" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2f52352bae50d3337d5d6151b695d31a8c10ebea113eca5bead531f8301b067" +checksum = "0a86aa6e21e86c4252ad6a0e3e74da9617295d8d6e374d552be7d3059c41cedd" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -748,9 +790,9 @@ dependencies = [ [[package]] name = "aws-smithy-eventstream" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168f08f8439c8b317b578a695e514c5cd7b869e73849a2d6b71ced4de6ce193d" +checksum = "460c8da5110835e3d9a717c61f5556b20d03c32a1dec57f8fc559b360f733bb8" dependencies = [ "aws-smithy-types", "bytes 1.4.0", @@ -759,9 +801,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03bcc02d7ed9649d855c8ce4a735e9848d7b8f7568aad0504c158e3baa955df8" +checksum = "2b3b693869133551f135e1f2c77cb0b8277d9e3e17feaf2213f735857c4f0d28" dependencies = [ "aws-smithy-eventstream", "aws-smithy-types", @@ -776,15 +818,15 @@ dependencies = [ "pin-project-lite 0.2.9", "pin-utils", "tokio", - "tokio-util 0.7.7", + "tokio-util 0.7.8", "tracing", ] [[package]] name = "aws-smithy-http-tower" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da88b3a860f65505996c29192d800f1aeb9480440f56d63aad33a3c12045017a" +checksum = "3ae4f6c5798a247fac98a867698197d9ac22643596dc3777f0c76b91917616b9" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -798,18 +840,18 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b0c1e87d75cac889dca2a7f5ba280da2cde8122448e7fec1d614194dfa00c70" +checksum = "23f9f42fbfa96d095194a632fbac19f60077748eba536eb0b9fecc28659807f8" dependencies = [ "aws-smithy-types", ] [[package]] name = "aws-smithy-query" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6b50d15f446c19e088009ecb00e2fb2d13133d6fe1db702e9aa67ad135bf6a6" +checksum = "98819eb0b04020a1c791903533b638534ae6c12e2aceda3e6e6fba015608d51d" dependencies = [ "aws-smithy-types", "urlencoding", @@ -817,31 +859,31 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0afc731fd1417d791f9145a1e0c30e23ae0beaab9b4814017708ead2fc20f1" +checksum = "16a3d0bf4f324f4ef9793b86a1701d9700fbcdbd12a846da45eed104c634c6e8" dependencies = [ "base64-simd", "itoa 1.0.6", "num-integer", "ryu", - "time 0.3.20", + "time 0.3.22", ] [[package]] name = "aws-smithy-xml" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b5398c1c25dfc6f8c282b1552a66aa807c9d6e15e1b3a84b94aa44e7859bec3" +checksum = "b1b9d12875731bd07e767be7baad95700c3137b56730ec9ddeedb52a5e5ca63b" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "0.55.1" +version = "0.55.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9b082e329d9a304d39e193ad5c7ab363a0d6507aca6965e0673a746686fb0cc" +checksum = "6dd209616cc8d7bfb82f87811a5c655dc97537f592689b18743bddf5dc5c4829" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -863,7 +905,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.6.2", "object", "rustc-demangle", ] @@ -894,9 +936,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.0" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" [[package]] name = "base64-simd" @@ -999,9 +1041,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09" +checksum = "a246e68bb43f6cd9db24bea052a53e40405417c5fb372e3d1a8a7f770a564ef5" dependencies = [ "memchr", "serde", @@ -1009,9 +1051,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "byteorder" @@ -1077,7 +1119,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "sha2 0.10.6", + "sha2 0.10.7", "tar", "tempfile", "thiserror", @@ -1107,13 +1149,13 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.24" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" dependencies = [ + "android-tzdata", "iana-time-zone", "js-sys", - "num-integer", "num-traits", "serde", "time 0.1.45", @@ -1167,9 +1209,9 @@ dependencies = [ [[package]] name = "ciborium" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" +checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" dependencies = [ "ciborium-io", "ciborium-ll", @@ -1178,15 +1220,15 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369" +checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" [[package]] name = "ciborium-ll" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" +checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" dependencies = [ "ciborium-io", "half 1.8.2", @@ -1216,30 +1258,31 @@ dependencies = [ [[package]] name = "cipher" -version = "0.3.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "generic-array", + "crypto-common", + "inout", ] [[package]] name = "clap" -version = "3.2.23" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "bitflags", "clap_lex 0.2.4", - "indexmap", + "indexmap 1.9.3", "textwrap", ] [[package]] name = "clap" -version = "4.2.1" +version = "4.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046ae530c528f252094e4a77886ee1374437744b2bff1497aa898bbddbbb29b3" +checksum = "d9394150f5b4273a1763355bd1c2ec54cc5a2593f790587bcd6b2c947cfa9211" dependencies = [ "clap_builder", "clap_derive", @@ -1248,36 +1291,36 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.2.1" +version = "4.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "223163f58c9a40c3b0a43e1c4b50a9ce09f007ea2cb1ec258a687945b4b7929f" +checksum = "9a78fbdd3cc2914ddf37ba444114bc7765bbdcb55ec9cbe6fa054f0137400717" dependencies = [ "anstream", "anstyle", "bitflags", - "clap_lex 0.4.1", + "clap_lex 0.5.0", "strsim", ] [[package]] name = "clap_complete" -version = "4.2.0" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01c22dcfb410883764b29953103d9ef7bb8fe21b3fa1158bc99986c2067294bd" +checksum = "7f6b5c519bab3ea61843a7923d074b04245624bb84a64a8c150f5deb014e388b" dependencies = [ - "clap 4.2.1", + "clap 4.3.8", ] [[package]] name = "clap_derive" -version = "4.2.0" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9644cd56d6b87dbe899ef8b053e331c0637664e9e21a33dfcdc36093f5c5c4" +checksum = "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f" dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.14", + "syn 2.0.22", ] [[package]] @@ -1291,9 +1334,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1" +checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" [[package]] name = "clickhouse-rs" @@ -1358,6 +1401,12 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + [[package]] name = "combine" version = "4.6.6" @@ -1368,21 +1417,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "concolor-override" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a855d4a1978dc52fb0536a04d384c2c0c1aa273597f08b77c8c4d3b2eec6037f" - -[[package]] -name = "concolor-query" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d11d52c3d7ca2e6d0040212be9e4dbbcd78b6447f535b6b561f449427944cf" -dependencies = [ - "windows-sys 0.45.0", -] - [[package]] name = "concurrent-queue" version = "2.2.0" @@ -1399,7 +1433,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b076e143e1d9538dde65da30f8481c2a6c44040edb8e02b9bf1351edb92ce3" dependencies = [ "lazy_static", - "nom 5.1.2", + "nom 5.1.3", "serde", ] @@ -1420,14 +1454,14 @@ checksum = "e763eef8846b13b380f37dfecda401770b0ca4e56e95170237bd7c25c7db3582" [[package]] name = "console" -version = "0.15.5" +version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d79fbe8970a77e3e34151cc13d3b3e248aa0faaecb9f6091fa07ebefe5ad60" +checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" dependencies = [ "encode_unicode", "lazy_static", "libc", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -1477,9 +1511,9 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" +checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" dependencies = [ "libc", ] @@ -1518,7 +1552,7 @@ dependencies = [ "atty", "cast", "ciborium", - "clap 3.2.23", + "clap 3.2.25", "criterion-plot", "itertools", "lazy_static", @@ -1592,9 +1626,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.14" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", @@ -1615,9 +1649,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] @@ -1650,9 +1684,9 @@ dependencies = [ [[package]] name = "csv" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b015497079b9a9d69c02ad25de6c0a6edef051ea6360a327d0bd05802ef64ad" +checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" dependencies = [ "csv-core", "itoa 1.0.6", @@ -1688,50 +1722,6 @@ dependencies = [ "cipher 0.2.5", ] -[[package]] -name = "cxx" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn 2.0.14", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.14", -] - [[package]] name = "darling" version = "0.13.4" @@ -1777,15 +1767,15 @@ dependencies = [ "hashbrown 0.12.3", "lock_api", "once_cell", - "parking_lot_core 0.9.7", + "parking_lot_core 0.9.8", "serde", ] [[package]] name = "data-encoding" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" [[package]] name = "deadpool" @@ -1847,9 +1837,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", "crypto-common", @@ -1905,12 +1895,11 @@ checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" [[package]] name = "dissect" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d8e66fa61149320a0aeade50b6d7c3becbeebae7106b9d6dda9d4fcb5de9581" +checksum = "a5a455a9f5318b6b5a0e7637ef105a4aef43093b67b4d2e127eae8c8af294bdf" dependencies = [ - "halfbrown", - "simd-json 0.8.0", + "simd-json", ] [[package]] @@ -2015,6 +2004,21 @@ dependencies = [ "termcolor", ] +[[package]] +name = "equivalent" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" + +[[package]] +name = "erased-serde" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2b0c2380453a92ea8b6c8e5f64ecaafccddde8ceab55ff7a8ac1029f894569" +dependencies = [ + "serde", +] + [[package]] name = "errno" version = "0.3.1" @@ -2090,12 +2094,12 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.7.1", ] [[package]] @@ -2130,9 +2134,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ "percent-encoding", ] @@ -2218,7 +2222,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.14", + "syn 2.0.22", ] [[package]] @@ -2303,9 +2307,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", @@ -2324,9 +2328,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" [[package]] name = "glob" @@ -2340,7 +2344,7 @@ version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" dependencies = [ - "aho-corasick", + "aho-corasick 0.7.20", "bstr", "fnv", "log", @@ -2407,9 +2411,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.17" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b91535aa35fea1523ad1b86cb6b53c28e0ae566ba4a460f4457e936cad7c6f" +checksum = "d357c7ae988e7d2182f7d7871d0b963962420b0678b0997ce7de72001aeab782" dependencies = [ "bytes 1.4.0", "fnv", @@ -2417,10 +2421,10 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.3", "slab", "tokio", - "tokio-util 0.7.7", + "tokio-util 0.7.8", "tracing", ] @@ -2432,20 +2436,20 @@ checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "half" -version = "2.2.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" +checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872" dependencies = [ + "cfg-if", "crunchy", ] [[package]] name = "halfbrown" -version = "0.1.18" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e2a3c70a9c00cc1ee87b54e89f9505f73bb17d63f1b25c9a462ba8ef885444f" +checksum = "5681137554ddff44396e5f149892c769d45301dd9aa19c51602a89ee214cb0ec" dependencies = [ - "fxhash", "hashbrown 0.13.2", "serde", ] @@ -2466,6 +2470,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ "ahash 0.8.3", +] + +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +dependencies = [ + "ahash 0.8.3", + "allocator-api2", "serde", ] @@ -2554,7 +2568,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -2651,9 +2665,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.25" +version = "0.14.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899" +checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" dependencies = [ "bytes 1.4.0", "futures-channel", @@ -2697,10 +2711,10 @@ dependencies = [ "http", "hyper", "log", - "rustls 0.21.0", + "rustls 0.21.2", "rustls-native-certs", "tokio", - "tokio-rustls 0.24.0", + "tokio-rustls 0.24.1", ] [[package]] @@ -2730,9 +2744,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.56" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2744,12 +2758,11 @@ dependencies = [ [[package]] name = "iana-time-zone-haiku" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "cxx", - "cxx-build", + "cc", ] [[package]] @@ -2771,9 +2784,9 @@ dependencies = [ [[package]] name = "idna" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -2807,6 +2820,16 @@ dependencies = [ "serde", ] +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + [[package]] name = "indicatif" version = "0.16.2" @@ -2825,6 +2848,15 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "instant" version = "0.1.12" @@ -2836,9 +2868,9 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ "hermit-abi 0.3.1", "libc", @@ -2847,14 +2879,14 @@ dependencies = [ [[package]] name = "ipconfig" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd302af1b90f2463a98fa5ad469fc212c8e3175a41c3068601bfa2727591c5be" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.4.9", + "socket2 0.5.3", "widestring", - "winapi", - "winreg", + "windows-sys 0.48.0", + "winreg 0.50.0", ] [[package]] @@ -2907,9 +2939,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -2949,9 +2981,9 @@ dependencies = [ [[package]] name = "lalrpop" -version = "0.19.9" +version = "0.19.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f34313ec00c2eb5c3c87ca6732ea02dcf3af99c3ff7a8fb622ffb99c9d860a87" +checksum = "0a1cbf952127589f2851ab2046af368fd20645491bb4b376f04b7f94d7a9837b" dependencies = [ "ascii-canvas", "bit-set", @@ -2961,9 +2993,8 @@ dependencies = [ "itertools", "lalrpop-util", "petgraph", - "pico-args", "regex", - "regex-syntax", + "regex-syntax 0.6.29", "string_cache", "term", "tiny-keccak", @@ -2972,9 +3003,9 @@ dependencies = [ [[package]] name = "lalrpop-util" -version = "0.19.9" +version = "0.19.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c1f7869c94d214466c5fd432dfed12c379fd87786768d36455892d46b18edd" +checksum = "d3c48237b9604c5a4702de6b824e02006c3214327564636aef27c1028a8fa0ed" dependencies = [ "regex", ] @@ -3073,15 +3104,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.141" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libflate" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97822bf791bd4d5b403713886a5fbe8bf49520fe78e323b0dc480ca1a03e50b0" +checksum = "5ff4ae71b685bbad2f2f391fe74f6b7659a34871c08b210fdc039e43bee07d18" dependencies = [ "adler32", "crc32fast", @@ -3099,15 +3130,15 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" +checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" [[package]] name = "libz-sys" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" +checksum = "56ee889ecc9568871456d42f603d6a0ce59ff328d291063a45cbdf0036baf6db" dependencies = [ "cc", "libc", @@ -3115,15 +3146,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "link-cplusplus" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -dependencies = [ - "cc", -] - [[package]] name = "linked-hash-map" version = "0.5.6" @@ -3132,15 +3154,15 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.3.1" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -3148,11 +3170,10 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" dependencies = [ - "cfg-if", "serde", "value-bag", ] @@ -3252,10 +3273,11 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "matrixmultiply" -version = "0.3.2" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add85d4dd35074e6fedc608f8c8f513a3548619a9024b751949ef0e8e45a4d84" +checksum = "090126dc04f95dc0d1c1c91f61bdd474b3930ca064c1edc8a849da2c6cbe1e77" dependencies = [ + "autocfg", "rawpointer", ] @@ -3265,7 +3287,7 @@ version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -3276,9 +3298,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] @@ -3314,16 +3336,24 @@ dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + [[package]] name = "mio" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -3371,9 +3401,9 @@ checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" [[package]] name = "nom" -version = "5.1.2" +version = "5.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" +checksum = "08959a387a676302eebf4ddbcbc611da04285579f76f88ee0506c63b1a61dd4b" dependencies = [ "lexical-core 0.7.6", "memchr", @@ -3480,18 +3510,18 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.30.3" +version = "0.30.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" +checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.17.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "onig" @@ -3529,9 +3559,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.50" +version = "0.10.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e30d8bc91859781f0a943411186324d580f2bbeb71b452fe91ae344806af3f1" +checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" dependencies = [ "bitflags", "cfg-if", @@ -3550,7 +3580,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.14", + "syn 2.0.22", ] [[package]] @@ -3561,9 +3591,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.85" +version = "0.9.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d3d193fb1488ad46ffe3aaabc912cc931d02ee8518fe2959aea8ef52718b0c0" +checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" dependencies = [ "cc", "libc", @@ -3582,18 +3612,18 @@ dependencies = [ [[package]] name = "ordered-float" -version = "3.6.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13a384337e997e6860ffbaa83708b2ef329fd8c54cb67a5f64d421e0f943254f" +checksum = "2fc2dbde8f8a79f2102cc474ceb0ad68e3b80b85289ea62389b60e66777e4213" dependencies = [ "num-traits", ] [[package]] name = "os_str_bytes" -version = "6.5.0" +version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" +checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" [[package]] name = "output_vt100" @@ -3634,7 +3664,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.7", + "parking_lot_core 0.9.8", ] [[package]] @@ -3653,15 +3683,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.16", + "redox_syscall 0.3.5", "smallvec", - "windows-sys 0.45.0", + "windows-targets 0.48.0", ] [[package]] @@ -3696,10 +3726,10 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", "hmac 0.12.1", "password-hash", - "sha2 0.10.6", + "sha2 0.10.7", ] [[package]] @@ -3715,9 +3745,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "petgraph" @@ -3726,35 +3756,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" dependencies = [ "fixedbitset", - "indexmap", + "indexmap 1.9.3", ] [[package]] name = "phf" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" dependencies = [ - "phf_shared 0.11.1", + "phf_shared 0.11.2", ] [[package]] name = "phf_codegen" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56ac890c5e3ca598bbdeaa99964edb5b0258a583a9eb6ef4e89fc85d9224770" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" dependencies = [ "phf_generator", - "phf_shared 0.11.1", + "phf_shared 0.11.2", ] [[package]] name = "phf_generator" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ - "phf_shared 0.11.1", + "phf_shared 0.11.2", "rand 0.8.5", ] @@ -3769,38 +3799,32 @@ dependencies = [ [[package]] name = "phf_shared" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" dependencies = [ "siphasher", "uncased", ] -[[package]] -name = "pico-args" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" - [[package]] name = "pin-project" -version = "1.0.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", ] [[package]] @@ -3823,15 +3847,15 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "plotters" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" dependencies = [ "num-traits", "plotters-backend", @@ -3842,24 +3866,24 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" [[package]] name = "plotters-svg" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" dependencies = [ "plotters-backend", ] [[package]] name = "polling" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be1c66a6add46bff50935c313dae30a5030cf8385c5206e8a95e9e9def974aa" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" dependencies = [ "autocfg", "bitflags", @@ -3954,29 +3978,28 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.56" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29f1b898011ce9595050a68e60f90bad083ff2987a695a42357134c8381fba70" +checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65" dependencies = [ "bit-set", "bitflags", "byteorder", "lazy_static", "num-traits", - "quick-error 2.0.1", "rand 0.8.5", "rand_chacha 0.3.1", "rand_xorshift", - "regex-syntax", + "regex-syntax 0.6.29", "rusty-fork", "tempfile", "unarray", @@ -4047,17 +4070,11 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" -[[package]] -name = "quick-error" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" - [[package]] name = "quote" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" dependencies = [ "proc-macro2", ] @@ -4130,7 +4147,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", ] [[package]] @@ -4199,9 +4216,9 @@ dependencies = [ [[package]] name = "rdkafka-sys" -version = "4.3.0+1.9.2" +version = "4.5.0+1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d222a401698c7f2010e3967353eae566d9934dcda49c29910da922414ab4e3f4" +checksum = "1bb0676c2112342ac7165decdedbc4e7086c0af384479ccce534546b10687a5d" dependencies = [ "cmake", "libc", @@ -4234,20 +4251,20 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "redox_syscall 0.2.16", "thiserror", ] [[package]] name = "regex" -version = "1.7.3" +version = "1.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" +checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" dependencies = [ - "aho-corasick", + "aho-corasick 1.0.2", "memchr", - "regex-syntax", + "regex-syntax 0.7.2", ] [[package]] @@ -4256,14 +4273,20 @@ version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +[[package]] +name = "regex-syntax" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" + [[package]] name = "reqwest" -version = "0.11.16" +version = "0.11.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b71749df584b7f4cac2c426c127a7c785a5106cc98f7a8feb044115f0fa254" +checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" dependencies = [ - "async-compression", - "base64 0.21.0", + "async-compression 0.4.0", + "base64 0.21.2", "bytes 1.4.0", "encoding_rs", "futures-core", @@ -4272,7 +4295,7 @@ dependencies = [ "http", "http-body", "hyper", - "hyper-rustls 0.23.2", + "hyper-rustls 0.24.0", "hyper-tls", "ipnet", "js-sys", @@ -4283,7 +4306,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite 0.2.9", - "rustls 0.20.8", + "rustls 0.21.2", "rustls-native-certs", "rustls-pemfile", "serde", @@ -4291,8 +4314,8 @@ dependencies = [ "serde_urlencoded 0.7.1", "tokio", "tokio-native-tls", - "tokio-rustls 0.23.4", - "tokio-util 0.7.7", + "tokio-rustls 0.24.1", + "tokio-util 0.7.8", "tower-service", "url", "wasm-bindgen", @@ -4300,7 +4323,7 @@ dependencies = [ "wasm-streams", "web-sys", "webpki-roots 0.22.6", - "winreg", + "winreg 0.10.1", ] [[package]] @@ -4310,7 +4333,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" dependencies = [ "hostname", - "quick-error 1.2.3", + "quick-error", ] [[package]] @@ -4370,16 +4393,16 @@ checksum = "82fc88f12e83c88ec44d2b64eaca46937f3c1159d8b038e1502c897388f7e69b" dependencies = [ "cached-path", "dirs", - "half 2.2.1", + "half 2.3.1", "lazy_static", - "ordered-float 3.6.0", + "ordered-float 3.7.0", "regex", "rust_tokenizers", "serde", "serde_json", "tch", "thiserror", - "uuid 1.3.1", + "uuid 1.3.4", ] [[package]] @@ -4404,9 +4427,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a36c42d1873f9a77c53bde094f9664d9891bc604a45b4798fd2c389ed12e5b" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustc_version" @@ -4428,9 +4451,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.11" +version = "0.37.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85597d61f83914ddeba6a47b3b8ffe7365107221c2e557ed94426489fefb5f77" +checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0" dependencies = [ "bitflags", "errno", @@ -4480,9 +4503,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.0" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07180898a28ed6a7f7ba2311594308f595e3dd2e3c3812fa0a80a47b45f17e5d" +checksum = "e32ca28af694bc1bbf399c33a516dbdf1c90090b8ab23c2bc24f834aa2247f5f" dependencies = [ "log", "ring", @@ -4492,9 +4515,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", "rustls-pemfile", @@ -4508,7 +4531,7 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", ] [[package]] @@ -4534,7 +4557,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" dependencies = [ "fnv", - "quick-error 1.2.3", + "quick-error", "tempfile", "wait-timeout", ] @@ -4569,12 +4592,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "scratch" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" - [[package]] name = "sct" version = "0.6.1" @@ -4597,9 +4614,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.8.2" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" +checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" dependencies = [ "bitflags", "core-foundation", @@ -4610,9 +4627,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" +checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" dependencies = [ "core-foundation-sys", "libc", @@ -4641,9 +4658,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.160" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" +checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" dependencies = [ "serde_derive", ] @@ -4660,20 +4677,29 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.160" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" +checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.14", + "syn 2.0.22", +] + +[[package]] +name = "serde_fmt" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d4ddca14104cd60529e8c7f7ba71a2c8acd8f7f5cfcdc2faf97eeb7c3010a4" +dependencies = [ + "serde", ] [[package]] name = "serde_json" -version = "1.0.96" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" dependencies = [ "itoa 1.0.6", "ryu", @@ -4743,7 +4769,7 @@ version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" dependencies = [ - "indexmap", + "indexmap 1.9.3", "ryu", "serde", "yaml-rust", @@ -4751,11 +4777,11 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.21" +version = "0.9.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9d684e3ec7de3bf5466b32bd75303ac16f0736426e5a4e0d6e489559ce1249c" +checksum = "452e67b9c20c37fa79df53201dc03839651086ed9bbe92b3ca585ca9fdaa7d85" dependencies = [ - "indexmap", + "indexmap 2.0.0", "itoa 1.0.6", "ryu", "serde", @@ -4785,7 +4811,7 @@ dependencies = [ "serde", "serde-value", "serde_json", - "time 0.3.20", + "time 0.3.22", "tokio", "tracing", "typemap_rev", @@ -4814,7 +4840,7 @@ checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.14", + "syn 2.0.22", ] [[package]] @@ -4825,7 +4851,7 @@ checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -4845,7 +4871,7 @@ checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -4869,13 +4895,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -4917,26 +4943,14 @@ dependencies = [ [[package]] name = "simd-json" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3375b6c3d8c048ba09c8b4b6c3f1d3f35e06b71db07d231c323943a949e1b8" -dependencies = [ - "halfbrown", - "lexical-core 0.8.5", - "serde", - "serde_json", - "simdutf8", - "value-trait", -] - -[[package]] -name = "simd-json" -version = "0.8.0" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1663db38e6e50038d4de020667c364490d43473ad6d073822a6af6576fc343a5" +checksum = "a3d0815e7ff0f1f05e09d4b029f86d8a330f0ab15b35b28736f3758325f59e14" dependencies = [ + "ahash 0.8.3", "halfbrown", "lexical-core 0.8.5", + "once_cell", "serde", "serde_json", "simdutf8", @@ -4945,28 +4959,28 @@ dependencies = [ [[package]] name = "simd-json-derive" -version = "0.8.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2cbd7a82d8baf3c560af3fadbc908a1b69451aa2c110cee28eb6f8d162ed848" +checksum = "a4890c6d2a14dea1e8f46eb222df969189acdeeba78415865407546a766b8ff9" dependencies = [ "chrono", "itoa 1.0.6", "ryu", - "simd-json 0.8.0", + "simd-json", "simd-json-derive-int", "value-trait", ] [[package]] name = "simd-json-derive-int" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76c22526d49a698b598c2496ce331b2399c24f809dcb97ba75cd345794a8721" +checksum = "47e83cea81f13d69ae012ccd021e7b8c7b4657f10fdbe175ac8f37a42b823cb9" dependencies = [ "proc-macro2", "quote", - "simd-json 0.8.0", - "syn 2.0.14", + "simd-json", + "syn 2.0.22", ] [[package]] @@ -5074,9 +5088,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d283f86695ae989d1e18440a943880967156325ba025f05049946bff47bcc2b" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" dependencies = [ "libc", "windows-sys 0.48.0", @@ -5197,7 +5211,7 @@ dependencies = [ "cfg-if", "encoding_rs", "futures-util", - "getrandom 0.2.9", + "getrandom 0.2.10", "http-client", "http-types", "log", @@ -5212,9 +5226,71 @@ dependencies = [ [[package]] name = "sval" -version = "1.0.0-alpha.5" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2faba619276044eec7cd160d87b15d9191fb9b9f7198440343d2144f760cf08" + +[[package]] +name = "sval_buffer" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a353d3cca10721384077c9643c3fafdd6ed2600e57933b8e45c0b580d97b25af" +dependencies = [ + "sval", + "sval_ref", +] + +[[package]] +name = "sval_dynamic" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee5fc7349e9f6cb2ab950046818f66ad3f2d7209ccc5dced93da19292a30273a" +dependencies = [ + "sval", +] + +[[package]] +name = "sval_fmt" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "098fb51d5d6007bd2c3f0a23b79aa953d7c46bf943086ce51424c3187c40f9b1" +dependencies = [ + "itoa 1.0.6", + "ryu", + "sval", +] + +[[package]] +name = "sval_json" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f01126a2783d767496f18f13af26ab2587881f6343368bb26dc62956a723d1c7" +dependencies = [ + "itoa 1.0.6", + "ryu", + "sval", +] + +[[package]] +name = "sval_ref" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45f6ee7c7b87caf59549e9fe45d6a69c75c8019e79e212a835c5da0e92f0ba08" +checksum = "5854d9eaa7bd31840a850322591c59c5b547eb29c9a6ecee1989d6ef963312ce" +dependencies = [ + "sval", +] + +[[package]] +name = "sval_serde" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cdd25fc04c5e882787d62112591aa93efb5bdc2000b43164d29f08582bb85f7" +dependencies = [ + "serde", + "sval", + "sval_buffer", + "sval_fmt", +] [[package]] name = "syn" @@ -5229,9 +5305,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.14" +version = "2.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf316d5356ed6847742d036f8a39c3b8435cac10bd528a4bd461928a6ab34d5" +checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" dependencies = [ "proc-macro2", "quote", @@ -5283,15 +5359,16 @@ checksum = "af547b166dd1ea4b472165569fc456cfb6818116f854690b0ff205e636523dab" [[package]] name = "tempfile" -version = "3.5.0" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" +checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" dependencies = [ + "autocfg", "cfg-if", "fastrand", "redox_syscall 0.3.5", "rustix", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -5364,7 +5441,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_json", - "sha2 0.10.6", + "sha2 0.10.7", "signal-hook", ] @@ -5391,14 +5468,14 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.14", + "syn 2.0.22", ] [[package]] name = "thread-id" -version = "4.0.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fdfe0627923f7411a43ec9ec9c39c3a9b4151be313e0922042581fb6c9b717f" +checksum = "3ee93aa2b8331c0fec9091548843f2c90019571814057da3b783f9de09349d73" dependencies = [ "libc", "redox_syscall 0.2.16", @@ -5464,21 +5541,21 @@ dependencies = [ [[package]] name = "time" -version = "0.3.20" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" dependencies = [ "itoa 1.0.6", "serde", "time-core", - "time-macros 0.2.8", + "time-macros 0.2.9", ] [[package]] name = "time-core" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" [[package]] name = "time-macros" @@ -5492,9 +5569,9 @@ dependencies = [ [[package]] name = "time-macros" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" +checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" dependencies = [ "time-core", ] @@ -5548,9 +5625,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.27.0" +version = "1.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" +checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" dependencies = [ "autocfg", "bytes 1.4.0", @@ -5562,7 +5639,7 @@ dependencies = [ "signal-hook-registry", "socket2 0.4.9", "tokio-macros", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -5577,13 +5654,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.14", + "syn 2.0.22", ] [[package]] @@ -5620,19 +5697,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0d409377ff5b1e3ca6437aa86c1eb7d40c134bfec254e44c830defa92669db5" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.0", + "rustls 0.21.2", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", "pin-project-lite 0.2.9", @@ -5667,9 +5744,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" dependencies = [ "bytes 1.4.0", "futures-core", @@ -5681,17 +5758,17 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" [[package]] name = "toml_edit" -version = "0.19.8" +version = "0.19.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +checksum = "266f016b7f039eec8a1a80dfe6156b633d208b9fccca5e4db1d6775b0c4e34a7" dependencies = [ - "indexmap", + "indexmap 2.0.0", "toml_datetime", "winnow", ] @@ -5761,13 +5838,13 @@ checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ "futures-core", "futures-util", - "indexmap", + "indexmap 1.9.3", "pin-project", "pin-project-lite 0.2.9", "rand 0.8.5", "slab", "tokio", - "tokio-util 0.7.7", + "tokio-util 0.7.8", "tower-layer", "tower-service", "tracing", @@ -5800,20 +5877,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", ] @@ -5837,8 +5914,8 @@ dependencies = [ "http-types", "log", "serde", - "serde_yaml 0.9.21", - "simd-json 0.8.0", + "serde_yaml 0.9.22", + "simd-json", "surf", "tide", "tokio", @@ -5854,7 +5931,7 @@ name = "tremor-cli" version = "0.13.0-rc.14" dependencies = [ "anyhow", - "clap 4.2.1", + "clap 4.3.8", "clap_complete", "criterion", "difference", @@ -5872,11 +5949,11 @@ dependencies = [ "port_scanner", "pretty_assertions", "serde", - "serde_yaml 0.9.21", + "serde_yaml 0.9.22", "shell-words", "signal-hook", "signal-hook-tokio", - "simd-json 0.8.0", + "simd-json", "snmalloc-rs", "surf", "tch", @@ -5896,11 +5973,11 @@ dependencies = [ name = "tremor-common" version = "0.13.0-rc.14" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", "beef", "rand 0.8.5", "serde", - "simd-json 0.8.0", + "simd-json", "simd-json-derive", "tokio", "url", @@ -5913,19 +5990,19 @@ dependencies = [ "criterion", "lexical", "pretty_assertions", - "simd-json 0.8.0", + "simd-json", "snmalloc-rs", "value-trait", ] [[package]] name = "tremor-kv" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abdf0a98b2e69a52e5f3a516ae0faab3d222a0b0f4e6e34ad6e3b764e1b3a1ed" +checksum = "4ca20240378486f81a13354fc9beb180fd9d65ee469d90419ddad520ee5169b2" dependencies = [ "serde", - "simd-json 0.7.0", + "simd-json", ] [[package]] @@ -5944,13 +6021,13 @@ dependencies = [ name = "tremor-pipeline" version = "0.13.0-rc.14" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", "beef", "criterion", "either", "error-chain", "halfbrown", - "indexmap", + "indexmap 1.9.3", "lazy_static", "log", "lru", @@ -5959,8 +6036,8 @@ dependencies = [ "regex", "rust-bert", "serde", - "serde_yaml 0.9.21", - "simd-json 0.8.0", + "serde_yaml 0.9.22", + "simd-json", "simd-json-derive", "sled", "tempfile", @@ -5980,7 +6057,7 @@ version = "0.13.0-rc.14" dependencies = [ "anyhow", "async-channel", - "async-compression", + "async-compression 0.3.15", "async-std", "async-stream", "async-trait", @@ -5988,7 +6065,7 @@ dependencies = [ "aws-sdk-s3", "aws-smithy-http", "aws-types", - "base64 0.21.0", + "base64 0.21.2", "beef", "bimap", "byteorder", @@ -6011,7 +6088,7 @@ dependencies = [ "gouth", "grok", "halfbrown", - "hashbrown 0.13.2", + "hashbrown 0.14.0", "hdrhistogram", "hex", "hostname", @@ -6020,7 +6097,7 @@ dependencies = [ "http-types", "hyper", "hyper-rustls 0.24.0", - "indexmap", + "indexmap 1.9.3", "itoa 1.0.6", "lazy_static", "lexical", @@ -6044,28 +6121,28 @@ dependencies = [ "regex", "reqwest", "rmp-serde", - "rustls 0.21.0", + "rustls 0.21.2", "rustls-native-certs", "rustls-pemfile", "ryu", "serde", - "serde_yaml 0.9.21", + "serde_yaml 0.9.22", "serenity", "serial_test", "signal-hook", "signal-hook-tokio", - "simd-json 0.8.0", + "simd-json", "simd-json-derive", "simdutf8", "sled", "snap", - "socket2 0.5.2", + "socket2 0.5.3", "syslog_loose", "tempfile", "test-case", "testcontainers", "tokio", - "tokio-rustls 0.24.0", + "tokio-rustls 0.24.1", "tokio-stream", "tokio-tungstenite", "tonic", @@ -6077,7 +6154,7 @@ dependencies = [ "tremor-value", "trust-dns-resolver", "url", - "uuid 1.3.1", + "uuid 1.3.4", "value-trait", "xz2", "zstd 0.12.3+zstd.1.5.2", @@ -6088,7 +6165,7 @@ name = "tremor-script" version = "0.13.0-rc.14" dependencies = [ "atty", - "base64 0.21.0", + "base64 0.21.2", "beef", "byteorder", "chrono", @@ -6101,7 +6178,6 @@ dependencies = [ "downcast-rs", "error-chain", "float-cmp", - "fxhash", "glob", "grok", "halfbrown", @@ -6118,8 +6194,8 @@ dependencies = [ "rand 0.8.5", "regex", "serde", - "sha2 0.10.6", - "simd-json 0.8.0", + "sha2 0.10.7", + "simd-json", "simd-json-derive", "sketches-ddsketch", "strip-ansi-escapes", @@ -6140,7 +6216,7 @@ dependencies = [ name = "tremor-value" version = "0.13.0-rc.14" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", "beef", "float-cmp", "getopts", @@ -6148,7 +6224,7 @@ dependencies = [ "proptest", "serde", "serde_json", - "simd-json 0.8.0", + "simd-json", "simd-json-derive", "tremor-common", "value-trait", @@ -6274,9 +6350,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "uncased" -version = "0.9.7" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b01702b0fd0b3fadcf98e098780badda8742d4f4a7676615cad90e8ac73622" +checksum = "9b9bc53168a4be7402ab86c3aad243a84dd7381d09be0eddc81280c1da95ca68" dependencies = [ "version_check", ] @@ -6298,9 +6374,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" [[package]] name = "unicode-normalization" @@ -6371,28 +6447,28 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "ureq" -version = "2.6.2" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "338b31dd1314f68f3aabf3ed57ab922df95ffcd902476ca7ba3c4ce7b908c46d" +checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" dependencies = [ - "base64 0.13.1", + "base64 0.21.2", "flate2", "log", "once_cell", - "rustls 0.20.8", + "rustls 0.21.2", + "rustls-webpki", "url", - "webpki 0.22.0", - "webpki-roots 0.22.6", + "webpki-roots 0.23.1", ] [[package]] name = "url" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", - "idna 0.3.0", + "idna 0.4.0", "percent-encoding", "serde", ] @@ -6423,29 +6499,54 @@ checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" [[package]] name = "uuid" -version = "1.3.1" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b55a3fef2a1e3b3a00ce878640918820d3c51081576ac657d23af9fc7928fdb" +checksum = "0fa2982af2eec27de306107c027578ff7f423d65f7250e40ce0fea8f45248b81" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", ] [[package]] name = "value-bag" -version = "1.0.0-alpha.9" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" +checksum = "a4d330786735ea358f3bc09eea4caa098569c1c93f342d9aca0514915022fe7e" +dependencies = [ + "value-bag-serde1", + "value-bag-sval2", +] + +[[package]] +name = "value-bag-serde1" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4735c95b4cca1447b448e2e2e87e98d7e7498f4da27e355cf7af02204521001d" +dependencies = [ + "erased-serde", + "serde", + "serde_fmt", +] + +[[package]] +name = "value-bag-sval2" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859cb4f0ce7da6a118b559ba74b0e63bf569bea867c20ba457a6b1c886a04e97" dependencies = [ - "ctor", "sval", - "version_check", + "sval_buffer", + "sval_dynamic", + "sval_fmt", + "sval_json", + "sval_ref", + "sval_serde", ] [[package]] name = "value-trait" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995de1aa349a0dc50f4aa40870dce12961a30229027230bad09acd2843edbe9e" +checksum = "09a5b6c8ceb01263b969cac48d4a6705134d490ded13d889e52c0cfc80c6945e" dependencies = [ "float-cmp", "halfbrown", @@ -6525,11 +6626,10 @@ dependencies = [ [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -6553,9 +6653,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -6563,24 +6663,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.34" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -6590,9 +6690,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6600,22 +6700,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wasm-streams" @@ -6632,9 +6732,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -6687,6 +6787,15 @@ dependencies = [ "webpki 0.22.0", ] +[[package]] +name = "webpki-roots" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" +dependencies = [ + "rustls-webpki", +] + [[package]] name = "which" version = "4.4.0" @@ -6700,9 +6809,9 @@ dependencies = [ [[package]] name = "widestring" -version = "0.5.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" [[package]] name = "wildmatch" @@ -6907,9 +7016,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winnow" -version = "0.4.1" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" dependencies = [ "memchr", ] @@ -6923,6 +7032,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + [[package]] name = "xattr" version = "0.2.3" @@ -6970,11 +7089,11 @@ checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" [[package]] name = "zip" -version = "0.6.4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0445d0fbc924bb93539b4316c11afb121ea39296f99a3c4c9edad09e3658cdef" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" dependencies = [ - "aes 0.7.5", + "aes 0.8.3", "byteorder", "bzip2", "constant_time_eq", @@ -6984,7 +7103,7 @@ dependencies = [ "hmac 0.12.1", "pbkdf2", "sha1 0.10.5", - "time 0.3.20", + "time 0.3.22", "zstd 0.11.2+zstd.1.5.2", ] diff --git a/Cargo.toml b/Cargo.toml index 26f6f23d35..b1a91f04f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -72,8 +72,8 @@ file-mode = "0.1" futures = "0.3.28" event-listener = "2.5" glob = "0.3" -halfbrown = "0.1" -hashbrown = { version = "0.13", features = ["serde"] } +halfbrown = "0.2" +hashbrown = { version = "0.14", features = ["serde"] } hex = "0.4" hostname = "0.3" http-types = "2.12" @@ -90,8 +90,8 @@ regex = "1.7" rmp-serde = "1.1" serde = { version = "1", features = ["derive"] } serde_yaml = "0.9" -simd-json = { version = "0.8", features = ["known-key"] } -simd-json-derive = "0.8" +simd-json = { version = "0.10", features = ["known-key"] } +simd-json-derive = "0.10" snap = "1" socket2 = { version = "0.5", features = ["all"] } syslog_loose = "0.18" @@ -101,7 +101,7 @@ tremor-pipeline = { path = "tremor-pipeline" } tremor-script = { path = "tremor-script" } tremor-value = { path = "tremor-value" } url = "2.3" -value-trait = "0.5" +value-trait = "0.6" zstd = "0.12" # blaster / blackhole diff --git a/src/codec/binflux.rs b/src/codec/binflux.rs index 01bae7f417..a0f4ffda31 100644 --- a/src/codec/binflux.rs +++ b/src/codec/binflux.rs @@ -47,6 +47,7 @@ use super::prelude::*; use beef::Cow; use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt}; +use simd_json::ObjectHasher; use std::convert::TryFrom; use std::io::{Cursor, Write}; use std::str; @@ -154,14 +155,14 @@ impl BInflux { let measurement = read_string(&mut c)?; let timestamp = c.read_u64::()?; let tag_count = c.read_u16::()? as usize; - let mut tags = Object::with_capacity(tag_count); + let mut tags = Object::with_capacity_and_hasher(tag_count, ObjectHasher::default()); for _i in 0..tag_count { let key = read_string(&mut c)?; let value = read_string(&mut c)?; tags.insert(key, Value::from(value)); } let field_count = c.read_u16::()? as usize; - let mut fields = Object::with_capacity(field_count); + let mut fields = Object::with_capacity_and_hasher(field_count, ObjectHasher::default()); for _i in 0..field_count { let key = read_string(&mut c)?; let kind = c.read_u8()?; diff --git a/src/codec/dogstatsd.rs b/src/codec/dogstatsd.rs index ee0ede3970..92bfdb6803 100644 --- a/src/codec/dogstatsd.rs +++ b/src/codec/dogstatsd.rs @@ -102,6 +102,8 @@ //! } //! ``` +use simd_json::ObjectHasher; + use super::prelude::*; use std::io::Write; @@ -321,8 +323,8 @@ fn decode(data: &[u8], _ingest_ns: u64) -> Result { } fn decode_metric(data: &str) -> Result { - let mut map = Object::with_capacity(1); - let mut m = Object::with_capacity(6); + let mut map = Object::with_capacity_and_hasher(1, ObjectHasher::default()); + let mut m = Object::with_capacity_and_hasher(6, ObjectHasher::default()); let (metric, data) = data.split_once(':').ok_or_else(invalid)?; m.insert_nocheck("metric".into(), Value::from(metric)); @@ -372,8 +374,8 @@ fn decode_metric(data: &str) -> Result { // _e{21,36}:An exception occurred|Cannot parse CSV file from 10.0.0.17|t:warning|#err_type:bad_file fn decode_event(data: &str) -> Result { - let mut map = Object::with_capacity(1); - let mut m = Object::with_capacity(10); + let mut map = Object::with_capacity_and_hasher(1, ObjectHasher::default()); + let mut m = Object::with_capacity_and_hasher(10, ObjectHasher::default()); let (titel_len, data) = data.split_once(',').ok_or_else(invalid)?; let (text_len, data) = data.split_once("}:").ok_or_else(invalid)?; @@ -419,8 +421,8 @@ fn decode_event(data: &str) -> Result { //_sc|Redis connection|2|#env:dev|m:Redis connection timed out after 10s fn decode_service_check(data: &str) -> Result { - let mut map = Object::with_capacity(1); - let mut m = Object::with_capacity(7); + let mut map = Object::with_capacity_and_hasher(1, ObjectHasher::default()); + let mut m = Object::with_capacity_and_hasher(7, ObjectHasher::default()); let (name, data) = data.split_once('|').ok_or_else(invalid)?; m.insert_nocheck("name".into(), Value::from(name)); diff --git a/src/codec/statsd.rs b/src/codec/statsd.rs index 63aee5e332..d1f11c6c5d 100644 --- a/src/codec/statsd.rs +++ b/src/codec/statsd.rs @@ -51,6 +51,8 @@ use std::io::Write; +use simd_json::ObjectHasher; + use super::prelude::*; #[derive(Clone, Default, Debug)] @@ -132,7 +134,7 @@ fn decode(data: &[u8], _ingest_ns: u64) -> Result { } let data = simdutf8::basic::from_utf8(data)?; - let mut m = Object::with_capacity(4); + let mut m = Object::with_capacity_and_hasher(4, ObjectHasher::default()); let (metric, data) = data.split_once(':').ok_or_else(invalid)?; m.insert_nocheck("metric".into(), Value::from(metric)); diff --git a/src/codec/tremor.rs b/src/codec/tremor.rs index 13113a7a9b..099b1960a9 100644 --- a/src/codec/tremor.rs +++ b/src/codec/tremor.rs @@ -24,7 +24,6 @@ use std::{ use super::prelude::*; use beef::Cow; use byteorder::{ByteOrder, NetworkEndian, ReadBytesExt, WriteBytesExt}; -use halfbrown::HashMap; use simd_json::StaticNode; /// Tremor to Tremor codec @@ -122,7 +121,12 @@ impl Tremor { let (len, mut total) = Self::read_len::(t, data)?; //ALLOW: `total` is the data we've already read so we know they exist data = unsafe { data.get_unchecked(total..) }; - let mut o = HashMap::with_capacity(len); + let mut v = Value::object_with_capacity(len); + let o = match v.as_object_mut() { + Some(o) => o, + // ALLOW: We knowm tis is an object + None => unreachable!(), + }; for _ in 0..len { let mut cursor = Cursor::new(data); let len = cursor.read_u64::()? as usize; @@ -139,7 +143,7 @@ impl Tremor { data = unsafe { data.get_unchecked(read..) }; o.insert_nocheck(Cow::from(k), v); } - Ok((Value::Object(Box::new(o)), 1 + total)) + Ok((v, 1 + total)) } #[inline] #[allow(clippy::cast_possible_truncation)] @@ -221,10 +225,7 @@ impl Tremor { Ok(()) } #[inline] - fn write_object( - o: &HashMap, Value>, - w: &mut impl Write, - ) -> Result<()> { + fn write_object(o: &Object, w: &mut impl Write) -> Result<()> { Self::write_type_and_len::(Self::OBJECT, o.len(), w)?; for (k, v) in o.iter() { w.write_u64::(k.len() as u64)?; diff --git a/src/config.rs b/src/config.rs index 86c4892505..f1a031fa55 100644 --- a/src/config.rs +++ b/src/config.rs @@ -318,8 +318,8 @@ pub struct Binding { #[cfg(test)] mod tests { - use halfbrown::HashMap; use serde::Deserialize; + use std::collections::HashMap; use super::*; use crate::{errors::Result, system::flow}; @@ -412,7 +412,7 @@ mod tests { "application/yaml": {"name": "yaml"}, "*/*": codec, }); - let nac = HashMap::::deserialize(data) + let nac = std::collections::HashMap::::deserialize(data) .expect("could structurize two element struct"); assert_eq!(nac.len(), 3); diff --git a/src/connectors/impls/elastic.rs b/src/connectors/impls/elastic.rs index 50278c21b3..ea2f1aa452 100644 --- a/src/connectors/impls/elastic.rs +++ b/src/connectors/impls/elastic.rs @@ -251,7 +251,6 @@ use elasticsearch::{ Bulk, BulkDeleteOperation, BulkOperation, BulkOperations, BulkParts, BulkUpdateOperation, Elasticsearch, }; -use halfbrown::HashMap; use std::sync::Arc; use std::time::Duration; use std::{fmt::Display, sync::atomic::AtomicBool}; @@ -280,7 +279,7 @@ pub(crate) struct Config { #[serde(default = "Default::default")] /// custom headers to add to each request to elastic - headers: HashMap, + headers: std::collections::HashMap, /// means for authenticating towards elastic #[serde(default = "Default::default")] diff --git a/src/connectors/impls/gbq/writer/sink.rs b/src/connectors/impls/gbq/writer/sink.rs index edd2f83d20..f577157e73 100644 --- a/src/connectors/impls/gbq/writer/sink.rs +++ b/src/connectors/impls/gbq/writer/sink.rs @@ -990,10 +990,9 @@ mod test { #[test] pub fn can_encode_a_struct() { - let mut values = halfbrown::HashMap::new(); - values.insert("a".into(), Value::Static(StaticNode::I64(1))); - values.insert("b".into(), Value::Static(StaticNode::I64(1024))); - let input = Value::Object(Box::new(values)); + let mut input = Value::object(); + input.try_insert("a", 1); + input.try_insert("b", 1024); let mut subfields = HashMap::new(); subfields.insert( @@ -1075,7 +1074,7 @@ mod test { #[test] pub fn can_encode_json() { - let value = Value::Object(Box::new(halfbrown::HashMap::new())); + let value = Value::object(); let field = Field { table_type: TableType::Json, tag: 1, @@ -1206,10 +1205,10 @@ mod test { ], &ctx, ); - let mut fields = halfbrown::HashMap::new(); - fields.insert("a".into(), Value::Static(StaticNode::I64(12))); - fields.insert("b".into(), Value::Static(StaticNode::I64(21))); - let result = mapping.map(&Value::Object(Box::new(fields)))?; + let mut fields = Value::object(); + fields.try_insert("a", 12); + fields.try_insert("b", 21); + let result = mapping.map(&fields)?; assert_eq!([8u8, 12u8, 16u8, 21u8], result[..]); Ok(()) @@ -1251,11 +1250,11 @@ mod test { ], &ctx, ); - let mut fields = halfbrown::HashMap::new(); - fields.insert("a".into(), Value::Static(StaticNode::I64(12))); - fields.insert("b".into(), Value::Static(StaticNode::I64(21))); - fields.insert("c".into(), Value::Static(StaticNode::I64(33))); - let result = mapping.map(&Value::Object(Box::new(fields)))?; + let mut fields = Value::object(); + fields.try_insert("a", 12); + fields.try_insert("b", 21); + fields.try_insert("c", 33); + let result = mapping.map(&fields)?; assert_eq!([8u8, 12u8, 16u8, 21u8], result[..]); Ok(()) @@ -1294,12 +1293,12 @@ mod test { }], &ctx, ); - let mut inner_fields = halfbrown::HashMap::new(); - inner_fields.insert("x".into(), Value::Static(StaticNode::I64(10))); - inner_fields.insert("y".into(), Value::Static(StaticNode::I64(10))); - let mut fields = halfbrown::HashMap::new(); - fields.insert("a".into(), Value::Object(Box::new(inner_fields))); - let result = mapping.map(&Value::Object(Box::new(fields)))?; + let mut inner_fields = Value::object(); + inner_fields.try_insert("x", 10); + inner_fields.try_insert("y", 10); + let mut fields = Value::object(); + fields.try_insert("a", inner_fields); + let result = mapping.map(&fields)?; assert_eq!([10u8, 2u8, 8u8, 10u8], result[..]); Ok(()) @@ -1329,9 +1328,9 @@ mod test { }], &ctx, ); - let mut fields = halfbrown::HashMap::new(); - fields.insert("a".into(), Value::Static(StaticNode::I64(12))); - let result = mapping.map(&Value::Object(Box::new(fields))); + let mut fields = Value::object(); + fields.try_insert("a", 12); + let result = mapping.map(&fields); if let Err(Error(ErrorKind::BigQueryTypeMismatch("bytes", x), _)) = result { assert_eq!(x, ValueType::I64); diff --git a/src/connectors/impls/kafka.rs b/src/connectors/impls/kafka.rs index e2e0638a3b..4c19b1c524 100644 --- a/src/connectors/impls/kafka.rs +++ b/src/connectors/impls/kafka.rs @@ -290,9 +290,9 @@ pub(crate) mod producer; use crate::connectors::prelude::*; use beef::Cow; -use halfbrown::HashMap; use rdkafka::{error::KafkaError, ClientContext, Statistics}; use rdkafka_sys::RDKafkaErrorCode; +use simd_json::ObjectHasher; use std::{ sync::{ atomic::{AtomicBool, AtomicU64, Ordering}, @@ -423,12 +423,12 @@ where let metrics_payload = match stats.client_type.as_str() { Self::PRODUCER => { let timestamp = u64::try_from(stats.time)? * 1_000_000_000; - let mut fields = HashMap::with_capacity(3); + let mut fields = Object::with_capacity_and_hasher(3, ObjectHasher::default()); fields.insert(Self::TX_MSGS, Value::from(stats.txmsgs)); fields.insert(Self::TX_MSG_BYTES, Value::from(stats.txmsg_bytes)); fields.insert(Self::QUEUED_MSGS, Value::from(stats.msg_cnt)); - let mut tags = HashMap::with_capacity(1); + let mut tags = Object::with_capacity_and_hasher(1, ObjectHasher::default()); tags.insert(Self::CONNECTOR, Value::from(self.ctx.alias().to_string())); make_metrics_payload(Self::KAFKA_PRODUCER_STATS, fields, tags, timestamp) @@ -437,7 +437,7 @@ where let timestamp = u64::try_from(stats.time)? * 1_000_000_000; // consumer stats - let mut fields = HashMap::with_capacity(4); + let mut fields = Object::with_capacity_and_hasher(4, ObjectHasher::default()); fields.insert(Self::RX_MSGS, Value::from(stats.rxmsgs)); fields.insert(Self::RX_MSG_BYTES, Value::from(stats.rxmsg_bytes)); if let Some(cg) = stats.cgrp { @@ -452,7 +452,7 @@ where } } fields.insert(Self::CONSUMER_LAG, Value::from(consumer_lag)); - let mut tags = HashMap::with_capacity(1); + let mut tags = Object::with_capacity_and_hasher(1, ObjectHasher::default()); tags.insert(Self::CONNECTOR, Value::from(self.ctx.alias().to_string())); make_metrics_payload(Self::KAFKA_CONSUMER_STATS, fields, tags, timestamp) } diff --git a/src/connectors/sink/channel_sink.rs b/src/connectors/sink/channel_sink.rs index 05aa100208..aee4bb3000 100644 --- a/src/connectors/sink/channel_sink.rs +++ b/src/connectors/sink/channel_sink.rs @@ -21,7 +21,7 @@ use crate::{ }; use bimap::BiMap; use either::Either; -use hashbrown::HashMap; +use std::collections::HashMap; use std::{ hash::Hash, marker::PhantomData, @@ -208,9 +208,15 @@ where } // clean out closed streams if clean_closed_streams { - for (stream_id, _) in self.streams.drain_filter(|_k, v| v.is_closed()) { - self.streams_meta.remove_by_right(&stream_id); - serializer.drop_stream(stream_id); + let closed_streams: Vec<_> = self + .streams + .iter() + .filter_map(|(k, v)| v.is_closed().then_some(*k)) + .collect(); + for id in closed_streams { + self.streams.remove(&id); + self.streams_meta.remove_by_right(&id); + serializer.drop_stream(id); } } self.streams.is_empty() diff --git a/src/connectors/tests/http/server.rs b/src/connectors/tests/http/server.rs index ddc26a68b6..34b7d1dbfe 100644 --- a/src/connectors/tests/http/server.rs +++ b/src/connectors/tests/http/server.rs @@ -426,9 +426,10 @@ async fn https_server_test() -> Result<()> { data.extend_from_slice(&chunk); } let body = String::from_utf8(data)?; - assert_eq!( - format!( - r#"meta: + let body = serde_yaml::from_str::(&body)?; + let expected = serde_yaml::from_str::(&format!( + r#" +meta: uri: / version: HTTP/1.1 protocol: http @@ -437,10 +438,9 @@ async fn https_server_test() -> Result<()> { - localhost:{port} method: DELETE value: null -"# - ), - body - ); + "# + ))?; + assert_eq!(expected, body); assert_eq!(StatusCode::OK, response.status()); assert_eq!( Some("application/yaml; charset=UTF-8"), diff --git a/src/connectors/utils/metrics.rs b/src/connectors/utils/metrics.rs index ab7e7cced8..5e03f38df2 100644 --- a/src/connectors/utils/metrics.rs +++ b/src/connectors/utils/metrics.rs @@ -13,7 +13,7 @@ // limitations under the License. use beef::Cow; -use halfbrown::HashMap; +use simd_json::ObjectHasher; use tremor_common::ports::{Port, ERR, IN, OUT}; use tremor_pipeline::metrics::{value, value_count}; use tremor_pipeline::MetricsSender; @@ -146,7 +146,7 @@ pub(crate) fn make_event_count_metrics_payload( count: u64, connector_id: &Alias, ) -> EventPayload { - let mut tags: HashMap, Value<'static>> = HashMap::with_capacity(2); + let mut tags = Object::with_capacity_and_hasher(2, ObjectHasher::default()); tags.insert_nocheck(FLOW, Value::from(connector_id.flow_alias().to_string())); tags.insert_nocheck(CONNECTOR, connector_id.to_string().into()); tags.insert_nocheck(PORT, port.into()); @@ -160,8 +160,8 @@ pub(crate) fn make_event_count_metrics_payload( #[must_use] pub(crate) fn make_metrics_payload( name: &'static str, - fields: HashMap, Value<'static>>, - tags: HashMap, Value<'static>>, + fields: Object<'static>, + tags: Object<'static>, timestamp: u64, ) -> EventPayload { let value = value(Cow::const_str(name), tags, fields, timestamp); diff --git a/tests/scripts/record_comprehension/out b/tests/scripts/record_comprehension/out index fd94c496ff..c381b757d5 100644 --- a/tests/scripts/record_comprehension/out +++ b/tests/scripts/record_comprehension/out @@ -1 +1 @@ -[ [ "1", "one", "other" ], [ "2", "two", "other" ], [ "0", "zip", "other" ] ] +[ [ "0", "zip", "other" ], [ "1", "one", "other" ], [ "2", "two", "other" ] ] diff --git a/tests/scripts/record_comprehension/script.tremor b/tests/scripts/record_comprehension/script.tremor index 2d1876729c..f006421197 100644 --- a/tests/scripts/record_comprehension/script.tremor +++ b/tests/scripts/record_comprehension/script.tremor @@ -1,5 +1,6 @@ -for event of +use std::array; +array::sort(for event of case (k, v) when false => [k,v] case (k, v) => [k,v, "other"] case (k, v) => "should never get here" -end; +end) diff --git a/tests/scripts/record_comprehension_imut/out b/tests/scripts/record_comprehension_imut/out index fd94c496ff..c381b757d5 100644 --- a/tests/scripts/record_comprehension_imut/out +++ b/tests/scripts/record_comprehension_imut/out @@ -1 +1 @@ -[ [ "1", "one", "other" ], [ "2", "two", "other" ], [ "0", "zip", "other" ] ] +[ [ "0", "zip", "other" ], [ "1", "one", "other" ], [ "2", "two", "other" ] ] diff --git a/tests/scripts/record_comprehension_imut/script.tremor b/tests/scripts/record_comprehension_imut/script.tremor index c647c5be7a..ac98b2ff7b 100644 --- a/tests/scripts/record_comprehension_imut/script.tremor +++ b/tests/scripts/record_comprehension_imut/script.tremor @@ -1,5 +1,6 @@ -emit for event of +use std::array; +emit array::sort(for event of case (k, v) when false => [k,v] case (k, v) => [k,v, "other"] case (k, v) => "should never get here" -end; +end); diff --git a/tremor-api/Cargo.toml b/tremor-api/Cargo.toml index 6ee5bc1385..5cace6239c 100644 --- a/tremor-api/Cargo.toml +++ b/tremor-api/Cargo.toml @@ -7,12 +7,12 @@ name = "tremor-api" version = "0.13.0-rc.14" [dependencies] -halfbrown = "0.1" +halfbrown = "0.2" http-types = "2.12" log = "0.4" serde = "1" serde_yaml = "0.9" -simd-json = "0.8" +simd-json = "0.10" tokio = { version = "1.27", features = ["full"] } # we don't need sessions or cookies or shitty logging middleware tide = { version = "0.16", default-features = false, features = ["h1-server"] } diff --git a/tremor-cli/Cargo.toml b/tremor-cli/Cargo.toml index ff9279c680..418894f2ee 100644 --- a/tremor-cli/Cargo.toml +++ b/tremor-cli/Cargo.toml @@ -29,7 +29,7 @@ clap_complete = "4.2.0" difference = "2" env_logger = "0.10.0" futures = "0.3" -halfbrown = "0.1" +halfbrown = "0.2" http-types = "2.12" # jemallocator = {version = "0.3", optional = false} log = "0.4" @@ -38,7 +38,7 @@ serde = "1" serde_yaml = "0.9" signal-hook = "0.3" signal-hook-tokio = { version = "0.3", features = ["futures-v0_3"] } -simd-json = { version = "0.8", features = ["known-key"] } +simd-json = { version = "0.10", features = ["known-key"] } # We need to stay with 0.2 for now as there are reasons that can be named for the need to be able to # compile and run on operating systems that are a decade old. (insert apropriate ammount rage) snmalloc-rs = { version = "0.3.3" } diff --git a/tremor-common/Cargo.toml b/tremor-common/Cargo.toml index be80d8507c..0858bf357f 100644 --- a/tremor-common/Cargo.toml +++ b/tremor-common/Cargo.toml @@ -14,8 +14,8 @@ rand = { version = "0.8", features = ["small_rng"] } beef = { version = "0.5", features = ["impl_serde"] } serde = "1" url = "2.3" -simd-json = { version = "0.8", features = ["known-key"] } -simd-json-derive = "0.8" +simd-json = { version = "0.10", features = ["known-key"] } +simd-json-derive = "0.10" base64 = "0.21" [dev-dependencies] diff --git a/tremor-influx/Cargo.toml b/tremor-influx/Cargo.toml index 9d275995e4..5cd9f9ca2e 100644 --- a/tremor-influx/Cargo.toml +++ b/tremor-influx/Cargo.toml @@ -18,12 +18,12 @@ rustc-args = ["-C target-feature=+avx,+avx2,+sse4.2"] [dependencies] lexical = "6.1.1" -value-trait = "0.5" +value-trait = "0.6" [dev-dependencies] criterion = "0.4" pretty_assertions = "1.3" -simd-json = "0.8" +simd-json = "0.10" snmalloc-rs = "0.3" [[bench]] diff --git a/tremor-pipeline/Cargo.toml b/tremor-pipeline/Cargo.toml index 2c4651f92b..df6680d301 100644 --- a/tremor-pipeline/Cargo.toml +++ b/tremor-pipeline/Cargo.toml @@ -11,7 +11,7 @@ tokio = "1" beef = { version = "0.5", features = ["impl_serde"] } either = { version = "1.8", features = ["serde"] } error-chain = "0.12" -halfbrown = "0.1" +halfbrown = "0.2" indexmap = { version = "1", features = ["serde-1"] } rand = { version = "0.8", features = ["small_rng"] } lazy_static = "1" @@ -22,14 +22,14 @@ regex = "1" rust-bert = { version = "0.20.0", optional = true } serde = "1" serde_yaml = "0.9" -simd-json = { version = "0.8", features = ["known-key"] } -simd-json-derive = "0.8" +simd-json = { version = "0.10", features = ["known-key"] } +simd-json-derive = "0.10" sled = "0.34" tremor-common = { version = "0.13.0-rc.14", path = "../tremor-common" } tremor-script = { version = "0.13.0-rc.14", path = "../tremor-script" } tremor-value = { version = "0.13.0-rc.14", path = "../tremor-value" } url = "2.3.1" -value-trait = "0.5" +value-trait = "0.6" window = { git = "https://github.com/tremor-rs/window.git", tag = "v0.1.1" } [dev-dependencies] diff --git a/tremor-pipeline/src/event.rs b/tremor-pipeline/src/event.rs index 068d8f5eda..d98dbd3133 100644 --- a/tremor-pipeline/src/event.rs +++ b/tremor-pipeline/src/event.rs @@ -463,7 +463,7 @@ impl<'value> Iterator for ValueIter<'value> { mod test { use super::*; use crate::Result; - use simd_json::OwnedValue; + use simd_json::{ObjectHasher, OwnedValue}; use tremor_common::ids::{Id, OperatorId}; use tremor_script::ValueAndMeta; use tremor_value::Object; @@ -471,8 +471,8 @@ mod test { #[allow(clippy::unnecessary_wraps)] // as this is a function that gets passed as an argument and needs to fulful the bounds fn merge<'head>(this: &mut ValueAndMeta<'head>, other: ValueAndMeta<'head>) -> Result<()> { if let Some(ref mut a) = this.value_mut().as_array_mut() { - let mut e = Object::with_capacity(7); - let mut data = Object::with_capacity(2); + let mut e = Object::with_capacity_and_hasher(7, ObjectHasher::default()); + let mut data = Object::with_capacity_and_hasher(2, ObjectHasher::default()); let (value, meta) = other.into_parts(); data.insert_nocheck("value".into(), value); data.insert_nocheck("meta".into(), meta); diff --git a/tremor-pipeline/src/executable_graph.rs b/tremor-pipeline/src/executable_graph.rs index 084e669d76..6a0d6ef48f 100644 --- a/tremor-pipeline/src/executable_graph.rs +++ b/tremor-pipeline/src/executable_graph.rs @@ -20,12 +20,12 @@ use crate::{ ConfigMap, ExecPortIndexMap, MetricsMsg, MetricsSender, NodeLookupFn, }; use crate::{op::EventAndInsights, Event, NodeKind, Operator}; -use beef::Cow; use halfbrown::HashMap; +use simd_json::ObjectHasher; use std::{fmt, fmt::Display}; use tremor_common::{ids::OperatorId, ports::Port, stry}; use tremor_script::{ast::Helper, ast::Stmt}; -use tremor_value::Value; +use tremor_value::{Object, Value}; /// Configuration for a node #[derive(Debug, Clone, Default)] @@ -152,11 +152,7 @@ impl Operator for OperatorNode { self.op.on_contraflow(self.uid, contraevent); } - fn metrics( - &self, - tags: &HashMap, Value<'static>>, - timestamp: u64, - ) -> Result>> { + fn metrics(&self, tags: &Object<'static>, timestamp: u64) -> Result>> { self.op.metrics(tags, timestamp) } @@ -212,7 +208,7 @@ impl NodeMetrics { fn to_value( &self, metric_name: &str, - tags: &mut HashMap, Value<'static>>, + tags: &mut Object<'static>, timestamp: u64, ) -> Vec> { let mut res = Vec::with_capacity(self.inputs.len() + self.outputs.len()); @@ -450,7 +446,7 @@ impl ExecutableGraph { .map(|ival| event.ingest_ns - self.last_metrics > ival) .unwrap_or_default() { - let mut tags = HashMap::with_capacity(8); + let mut tags = HashMap::with_capacity_and_hasher(8, ObjectHasher::default()); tags.insert("pipeline".into(), common_cow(&self.id).into()); self.send_metrics("events", tags, event.ingest_ns); self.last_metrics = event.ingest_ns; @@ -515,12 +511,7 @@ impl ExecutableGraph { } } - fn send_metrics( - &mut self, - metric_name: &str, - mut tags: HashMap, Value<'static>>, - ingest_ns: u64, - ) { + fn send_metrics(&mut self, metric_name: &str, mut tags: Object<'static>, ingest_ns: u64) { for (i, m) in self.metrics.iter().enumerate() { tags.insert("node".into(), unsafe { self.graph.get_unchecked(i).id.clone().into() @@ -714,11 +705,7 @@ mod test { fn on_contraflow(&mut self, _uid: OperatorId, _insight: &mut Event) {} - fn metrics( - &self, - _tags: &HashMap, Value<'static>>, - _timestamp: u64, - ) -> Result>> { + fn metrics(&self, _tags: &Object<'static>, _timestamp: u64) -> Result>> { Ok(Vec::new()) } @@ -850,7 +837,11 @@ mod test { assert_eq!(returns.len(), 1); returns.clear(); - g.send_metrics("test-metric", HashMap::new(), 123); + g.send_metrics( + "test-metric", + HashMap::with_hasher(ObjectHasher::default()), + 123, + ); let mut metrics = Vec::new(); while let Ok(m) = rx.try_recv() { metrics.push(m); @@ -870,7 +861,11 @@ mod test { assert_eq!(returns.len(), 1); returns.clear(); - g.send_metrics("test-metric", HashMap::new(), 123); + g.send_metrics( + "test-metric", + HashMap::with_hasher(ObjectHasher::default()), + 123, + ); let mut metrics = Vec::new(); while let Ok(m) = rx.try_recv() { metrics.push(m); diff --git a/tremor-pipeline/src/metrics.rs b/tremor-pipeline/src/metrics.rs index 048c671de0..ed9e79a015 100644 --- a/tremor-pipeline/src/metrics.rs +++ b/tremor-pipeline/src/metrics.rs @@ -13,8 +13,7 @@ // limitations under the License. use beef::Cow; -use halfbrown::HashMap; -use tremor_value::{literal, Value}; +use tremor_value::{literal, Object, Value}; const COUNT: Cow<'static, str> = Cow::const_str("count"); const MEASUREMENT: Cow<'static, str> = Cow::const_str("measurement"); @@ -26,7 +25,7 @@ const TIMESTAMP: Cow<'static, str> = Cow::const_str("timestamp"); #[must_use] pub fn value_count( metric_name: Cow<'static, str>, - tags: HashMap, Value<'static>>, + tags: Object<'static>, count: u64, timestamp: u64, ) -> Value<'static> { @@ -44,7 +43,7 @@ pub fn value_count( #[must_use] pub fn value_named( metric_name: Cow<'static, str>, - tags: HashMap, Value<'static>>, + tags: Object<'static>, name: &'static str, value: u64, timestamp: u64, @@ -63,8 +62,8 @@ pub fn value_named( #[must_use] pub fn value( metric_name: Cow<'static, str>, - tags: HashMap, Value<'static>>, - fields: HashMap, Value<'static>>, + tags: Object<'static>, + fields: Object<'static>, timestamp: u64, ) -> Value<'static> { literal!({ @@ -77,15 +76,15 @@ pub fn value( #[cfg(test)] mod test { - use simd_json::ValueAccess; + use simd_json::{ObjectHasher, ValueAccess}; use super::*; #[test] fn value_test() { - let mut t = HashMap::new(); + let mut t = Object::with_hasher(ObjectHasher::default()); t.insert("tag".into(), "tag-value".into()); - let mut f = HashMap::new(); + let mut f = Object::with_hasher(ObjectHasher::default()); f.insert("field".into(), "tag-value".into()); let m = value("name".into(), t, f, 42); diff --git a/tremor-pipeline/src/op.rs b/tremor-pipeline/src/op.rs index 08b5e86c3b..0a8119de26 100644 --- a/tremor-pipeline/src/op.rs +++ b/tremor-pipeline/src/op.rs @@ -25,11 +25,9 @@ pub mod trickle; use self::prelude::OUT; use super::{Event, NodeConfig}; use crate::errors::Result; -use beef::Cow; -use halfbrown::HashMap; use regex::Regex; use tremor_common::{ids::OperatorId, ports::Port}; -use tremor_value::Value; +use tremor_value::{Object, Value}; lazy_static::lazy_static! { static ref LINE_REGEXP: Regex = { @@ -127,11 +125,7 @@ pub trait Operator: std::fmt::Debug + Send + Sync { /// /// # Errors /// if metrics can not be generated - fn metrics( - &self, - _tags: &HashMap, Value<'static>>, - _timestamp: u64, - ) -> Result>> { + fn metrics(&self, _tags: &Object<'static>, _timestamp: u64) -> Result>> { // Make the trait signature nicer Ok(Vec::new()) } diff --git a/tremor-pipeline/src/op/grouper/bucket.rs b/tremor-pipeline/src/op/grouper/bucket.rs index 34da664bf4..bce29b0ff9 100644 --- a/tremor-pipeline/src/op/grouper/bucket.rs +++ b/tremor-pipeline/src/op/grouper/bucket.rs @@ -208,11 +208,7 @@ impl Operator for Grouper { } } - fn metrics( - &self, - tags: &HashMap, Value<'static>>, - timestamp: u64, - ) -> Result>> { + fn metrics(&self, tags: &Object<'static>, timestamp: u64) -> Result>> { let mut res = Vec::with_capacity(self.buckets.len() * 2); if !self.buckets.is_empty() { let mut tags = tags.clone(); @@ -233,6 +229,7 @@ impl Operator for Grouper { #[cfg(test)] mod test { use super::*; + use simd_json::ObjectHasher; use tremor_common::ids::Id; use tremor_value::Value; @@ -311,7 +308,7 @@ mod test { assert_eq!(port, "out"); assert_eq!(e, event3); - let mut m = op.metrics(&HashMap::new(), 0)?; + let mut m = op.metrics(&Object::with_hasher(ObjectHasher::default()), 0)?; let overflow = m.pop().ok_or("no data")?; let pass = m.pop().ok_or("no data")?; assert!(m.is_empty()); diff --git a/tremor-pipeline/src/op/qos/backpressure.rs b/tremor-pipeline/src/op/qos/backpressure.rs index 52093d8dfc..a8a8a868bd 100644 --- a/tremor-pipeline/src/op/qos/backpressure.rs +++ b/tremor-pipeline/src/op/qos/backpressure.rs @@ -233,6 +233,7 @@ impl Operator for Backpressure { mod test { use super::*; use crate::SignalKind; + use simd_json::ObjectHasher; use tremor_common::ids::Id; use tremor_value::Object; @@ -312,7 +313,7 @@ mod test { // Insert a timeout event with `time` set top `200` // this is over our limit of `100` so we syould move // one up the backup steps - let mut m = Object::new(); + let mut m = Object::with_hasher(ObjectHasher::default()); m.insert("time".into(), 200_000_000.into()); let mut op_meta = OpMeta::default(); @@ -408,7 +409,7 @@ mod test { // Insert a timeout event with `time` set top `200` // this is over our limit of `100` so we syould move // one up the backup steps - let mut m = Object::new(); + let mut m = Object::with_hasher(ObjectHasher::default()); m.insert("time".into(), 200_000_000.into()); let mut op_meta = OpMeta::default(); @@ -497,7 +498,7 @@ mod test { } .into(); // An contraflow that fails the timeout - let mut m = Object::new(); + let mut m = Object::with_hasher(ObjectHasher::default()); m.insert("time".into(), 200_000_000.into()); let mut op_meta = OpMeta::default(); op_meta.insert(operator_id, OwnedValue::null()); diff --git a/tremor-pipeline/src/op/qos/percentile.rs b/tremor-pipeline/src/op/qos/percentile.rs index 6c29620031..f0a89c0e5f 100644 --- a/tremor-pipeline/src/op/qos/percentile.rs +++ b/tremor-pipeline/src/op/qos/percentile.rs @@ -151,6 +151,7 @@ impl Operator for Percentile { mod test { #![allow(clippy::float_cmp)] use super::*; + use simd_json::ObjectHasher; use tremor_common::ids::Id; use tremor_value::Object; @@ -230,7 +231,7 @@ mod test { // Insert a timeout event with `time` set top `200` // this is over our limit of `100` so we syould move // one up the backup steps - let mut m = Object::with_capacity(1); + let mut m = Object::with_capacity_and_hasher(1, ObjectHasher::default()); m.insert("time".into(), 200_000_000.into()); // this will use the right op_meta @@ -272,7 +273,7 @@ mod test { .into(); let uid = OperatorId::new(123); // An contraflow that fails the timeout - let mut m = Object::new(); + let mut m = Object::with_hasher(ObjectHasher::default()); m.insert("time".into(), 200_000_000.into()); let mut op_meta = OpMeta::default(); diff --git a/tremor-pipeline/src/op/trickle/operator.rs b/tremor-pipeline/src/op/trickle/operator.rs index fb84f9d716..4bbd28016e 100644 --- a/tremor-pipeline/src/op/trickle/operator.rs +++ b/tremor-pipeline/src/op/trickle/operator.rs @@ -13,7 +13,6 @@ // limitations under the License. use crate::op::prelude::*; -use beef::Cow; use tremor_script::{ ast::{self, Helper}, prelude::*, @@ -92,11 +91,7 @@ impl Operator for TrickleOperator { self.op.on_contraflow(uid, contraevent); } - fn metrics( - &self, - tags: &HashMap, Value<'static>>, - timestamp: u64, - ) -> Result>> { + fn metrics(&self, tags: &Object<'static>, timestamp: u64) -> Result>> { self.op.metrics(tags, timestamp) } diff --git a/tremor-pipeline/src/op/trickle/select/test.rs b/tremor-pipeline/src/op/trickle/select/test.rs index e601701c3e..eab9c92378 100644 --- a/tremor-pipeline/src/op/trickle/select/test.rs +++ b/tremor-pipeline/src/op/trickle/select/test.rs @@ -767,7 +767,6 @@ fn select_nowin_nogrp_whrt_havf() -> Result<()> { #[test] fn select_nowin_nogrp_whrt_havbad() -> Result<()> { - use halfbrown::hashmap; let target = test_target(); let mut stmt_ast = test_stmt(target); stmt_ast.maybe_where = Some(ImutExpr::from(ast::Literal { @@ -776,8 +775,8 @@ fn select_nowin_nogrp_whrt_havbad() -> Result<()> { })); stmt_ast.maybe_having = Some(ImutExpr::from(Literal { mid: mid(), - value: Value::from(hashmap! { - "snot".into() => "badger".into(), + value: literal!({ + "snot": "badger" }), })); diff --git a/tremor-script/Cargo.toml b/tremor-script/Cargo.toml index d5b4e77fa1..601c6a4dbf 100644 --- a/tremor-script/Cargo.toml +++ b/tremor-script/Cargo.toml @@ -29,15 +29,14 @@ chrono = "0.4" chrono-tz = "0.8" cidr-utils = "0.5" codespan = "0.11" -dissect = "0.6" +dissect = "0.7" distance = "0.4" downcast-rs = "1.2" error-chain = "0.12" -fxhash = "0.2" glob = "0.3" grok = "2" sha2 = "0.10" -halfbrown = "0.1" +halfbrown = "0.2" hdrhistogram = "7" hostname = "0.3" jumphash = "0.1" @@ -48,18 +47,18 @@ percent-encoding = "2.1" rand = { version = "0.8", features = ["small_rng"] } regex = "1" serde = { version = "1", features = ["derive"] } -simd-json = { version = "0.8", features = ["known-key"] } -simd-json-derive = "0.8" +simd-json = { version = "0.10", features = ["known-key"] } +simd-json-derive = "0.10" sketches-ddsketch = "0.2.1" strip-ansi-escapes = "0.1" termcolor = "1.2" tremor-common = { version = "0.13.0-rc.14", path = "../tremor-common" } tremor-influx = { version = "0.13.0-rc.14", path = "../tremor-influx" } tremor-value = { version = "0.13.0-rc.14", path = "../tremor-value" } -tremor-kv = "0.5" +tremor-kv = "0.6" unicode-xid = "0.2" url = "2" -value-trait = "0.5" +value-trait = "0.6" xz2 = "0.1" [build-dependencies] diff --git a/tremor-script/src/ast/raw.rs b/tremor-script/src/ast/raw.rs index 1315e6202c..ad21bf87a4 100644 --- a/tremor-script/src/ast/raw.rs +++ b/tremor-script/src/ast/raw.rs @@ -42,6 +42,7 @@ use beef::Cow; use halfbrown::HashMap; pub use query::*; use serde::Serialize; +use simd_json::ObjectHasher; use super::{ base_expr::Ranged, @@ -351,7 +352,7 @@ impl<'script> Upable<'script> for RecordRaw<'script> { type Target = Record<'script>; fn up<'registry>(self, helper: &mut Helper<'script, 'registry>) -> Result { Ok(Record { - base: crate::Object::new(), + base: crate::Object::with_hasher(ObjectHasher::default()), mid: self.mid, fields: self.fields.up(helper)?, }) diff --git a/tremor-script/src/ast/test.rs b/tremor-script/src/ast/test.rs index 82ea60f4f7..79497cd5ad 100644 --- a/tremor-script/src/ast/test.rs +++ b/tremor-script/src/ast/test.rs @@ -15,6 +15,7 @@ use super::*; use crate::{registry, CustomFn, NodeMeta}; use matches::assert_matches; +use simd_json::ObjectHasher; use tremor_value::Object; fn v(s: &'static str) -> ImutExpr<'static> { @@ -42,7 +43,7 @@ fn record() { }; let r = super::Record { - base: crate::Object::new(), + base: crate::Object::with_hasher(ObjectHasher::default()), mid: NodeMeta::dummy(), fields: vec![f1, f2], }; @@ -61,7 +62,7 @@ fn as_record() { assert!(i.as_record().is_none()); let i = ImutExpr::Record(Record { mid: Box::new(i.meta().clone()), - base: Object::new(), + base: Object::with_hasher(ObjectHasher::default()), fields: Fields::new(), }); assert!(i.as_record().is_some()); diff --git a/tremor-script/src/extractor/cidr.rs b/tremor-script/src/extractor/cidr.rs index daf84a412d..a176882a17 100644 --- a/tremor-script/src/extractor/cidr.rs +++ b/tremor-script/src/extractor/cidr.rs @@ -102,9 +102,9 @@ use cidr_utils::{ cidr::{IpCidr, Ipv4Cidr}, utils::IpCidrCombiner, }; -use halfbrown::{hashmap, HashMap}; +use halfbrown::HashMap; +use simd_json::ObjectHasher; use std::{ - hash::BuildHasherDefault, iter::{Iterator, Peekable}, net::{IpAddr, Ipv4Addr}, result::Result as StdResult, @@ -240,20 +240,32 @@ impl std::ops::Deref for Cidr { } } -impl<'cidr> From - for HashMap, Value<'cidr>, BuildHasherDefault> -{ +impl<'cidr> From for HashMap, Value<'cidr>, ObjectHasher> { fn from(x: Cidr) -> Self { + let mut r = HashMap::with_capacity_and_hasher(2, ObjectHasher::default()); match x.0 { - IpCidr::V4(y) => hashmap!( - "prefix".into() => Value::from(y.get_prefix_as_u8_array().to_vec()), - "mask".into() => Value::from(y.get_mask_as_u8_array().to_vec()), - ), - IpCidr::V6(y) => hashmap!( - "prefix".into() => Value::from(y.get_prefix_as_u16_array().to_vec()), - "mask".into() => Value::from(y.get_mask_as_u16_array().to_vec()), - ), + IpCidr::V4(y) => { + r.insert_nocheck( + "prefix".into(), + Value::from(y.get_prefix_as_u8_array().to_vec()), + ); + r.insert_nocheck( + "mask".into(), + Value::from(y.get_mask_as_u8_array().to_vec()), + ); + } + IpCidr::V6(y) => { + r.insert_nocheck( + "prefix".into(), + Value::from(y.get_prefix_as_u16_array().to_vec()), + ); + r.insert_nocheck( + "mask".into(), + Value::from(y.get_mask_as_u16_array().to_vec()), + ); + } } + r } } diff --git a/tremor-script/src/extractor/re.rs b/tremor-script/src/extractor/re.rs index 733acba295..2aff35986d 100644 --- a/tremor-script/src/extractor/re.rs +++ b/tremor-script/src/extractor/re.rs @@ -140,7 +140,7 @@ use tremor_value::Value; pub(crate) fn execute(s: &str, result_needed: bool, compiled: &Regex) -> Result<'static> { compiled.captures(s).map_or(Result::NoMatch, |caps| { if result_needed { - let matches: HashMap, Value> = compiled + let matches: HashMap, Value, _> = compiled .capture_names() .flatten() .filter_map(|n| { diff --git a/tremor-script/src/extractor/test.rs b/tremor-script/src/extractor/test.rs index 2579a8f9fa..9f121352ce 100644 --- a/tremor-script/src/extractor/test.rs +++ b/tremor-script/src/extractor/test.rs @@ -15,7 +15,6 @@ use super::Result::{Match, MatchNull, NoMatch}; use super::*; use crate::Value; -use halfbrown::hashmap; use matches::assert_matches; #[test] @@ -23,16 +22,16 @@ fn test_reg_extractor() { let ex = Extractor::new("rerg", "(?P[^=]+)=(?P[^&]+)&").expect("bad extractor"); match ex { Extractor::Rerg { .. } => { + let mut v = Value::object(); + v.try_insert("key", vec!["foo", "baz"]); + v.try_insert("val", vec!["bar", "bat"]); assert_eq!( ex.extract( true, &Value::from("foo=bar&baz=bat&"), &EventContext::new(0, None) ), - Match(Value::from(hashmap! { - "key".into() => Value::from(vec!["foo", "baz"]), - "val".into() => Value::from(vec!["bar", "bat"]) - })) + Match(v) ); } _ => unreachable!(), @@ -43,10 +42,11 @@ fn test_re_extractor() { let ex = Extractor::new("re", "(snot)?foo(?P.*)").expect("bad extractor"); match ex { Extractor::Re { .. } => { + let mut v = Value::object(); + v.try_insert("snot", "bar"); assert_eq!( ex.extract(true, &Value::from("foobar"), &EventContext::new(0, None)), - Match(Value::from(hashmap! { - "snot".into() => Value::from("bar") })) + Match(v) ); } _ => unreachable!(), @@ -57,12 +57,12 @@ fn test_kv_extractor() { let ex = Extractor::new("kv", "").expect("bad extractor"); match ex { Extractor::Kv { .. } => { + let mut v = Value::object(); + v.try_insert("a", "b"); + v.try_insert("c", "d"); assert_eq!( ex.extract(true, &Value::from("a:b c:d"), &EventContext::new(0, None)), - Match(Value::from(hashmap! { - "a".into() => "b".into(), - "c".into() => "d".into() - })) + Match(v) ); } _ => unreachable!(), @@ -74,16 +74,17 @@ fn test_json_extractor() { let ex = Extractor::new("json", "").expect("bad extractor"); match ex { Extractor::Json => { + let mut v = Value::object(); + v.try_insert("a", "b"); + v.try_insert("c", "d"); + assert_eq!( ex.extract( true, &Value::from(r#"{"a":"b", "c":"d"}"#), &EventContext::new(0, None) ), - Match(Value::from(hashmap! { - "a".into() => "b".into(), - "c".into() => "d".into() - })) + Match(v) ); } _ => unreachable!(), @@ -176,55 +177,43 @@ fn test_cidr_extractor() { let ex = Extractor::new("cidr", "").expect(""); match ex { Extractor::Cidr { .. } => { + let mut v = Value::object(); + v.try_insert("prefix", vec![192, 168, 1, 0]); + v.try_insert("mask", vec![255, 255, 255, 255]); + assert_eq!( ex.extract( true, &Value::from("192.168.1.0"), &EventContext::new(0, None) ), - Match(Value::from(hashmap! ( - "prefix".into() => Value::from(vec![Value::from(192), 168.into(), 1.into(), 0.into()]), - "mask".into() => Value::from(vec![Value::from(255), 255.into(), 255.into(), 255.into()]) - - - ))) + Match(v) ); + let mut v = Value::object(); + v.try_insert("prefix", vec![192, 168, 1, 0]); + v.try_insert("mask", vec![255, 255, 255, 0]); assert_eq!( ex.extract( true, &Value::from("192.168.1.0/24"), &EventContext::new(0, None) ), - Match(Value::from(hashmap! ( - "prefix".into() => Value::from(vec![Value::from(192), 168.into(), 1.into(), 0.into()]), - "mask".into() => Value::from(vec![Value::from(255), 255.into(), 255.into(), 0.into()]) - - - ))) + Match(v) ); - assert_eq!( - ex.extract( - true, - &Value::from("192.168.1.0"), - &EventContext::new(0, None) - ), - Match(Value::from(hashmap!( - "prefix".into() => Value::from(vec![Value::from(192), 168.into(), 1.into(), 0.into()]), - "mask".into() => Value::from(vec![Value::from(255), 255.into(), 255.into(), 255.into()]) - ))) + let mut v = Value::object(); + v.try_insert("prefix", vec![8193, 18528, 18528, 0, 0, 0, 0, 34952]); + v.try_insert( + "mask", + vec![65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535], ); - assert_eq!( ex.extract( true, &Value::from("2001:4860:4860:0000:0000:0000:0000:8888"), &EventContext::new(0, None) ), - Match(Value::from(hashmap!( - "prefix".into() => Value::from(vec![Value::from(8193), 18528.into(), 18528.into(), 0.into(), 0.into(), 0.into(), 0.into(), 34952.into()]), - "mask".into() => Value::from(vec![Value::from(65535), 65535.into(), 65535.into(), 65535.into(), 65535.into(), 65535.into(), 65535.into(), 65535.into()]) - ))) + Match(v) ); } _ => unreachable!(), @@ -233,16 +222,17 @@ fn test_cidr_extractor() { let rex = Extractor::new("cidr", "10.22.0.0/24, 10.22.1.0/24").expect("bad rex"); match rex { Extractor::Cidr { .. } => { + let mut v = Value::object(); + v.try_insert("prefix", vec![10, 22, 0, 254]); + v.try_insert("mask", vec![255, 255, 255, 255]); + assert_eq!( rex.extract( true, &Value::from("10.22.0.254"), &EventContext::new(0, None) ), - Match(Value::from(hashmap! ( - "prefix".into() => Value::from(vec![Value::from(10), 22.into(), 0.into(), 254.into()]), - "mask".into() => Value::from(vec![Value::from(255), 255.into(), 255.into(), 255.into()]), - ))) + Match(v) ); assert_eq!( @@ -261,6 +251,15 @@ fn test_cidr_extractor() { #[test] fn test_influx_extractor() { let ex = Extractor::new("influx", "").expect("bad extractor"); + let mut v = Value::object(); + v.try_insert("measurement", "wea ther"); + let mut tags = Value::object(); + tags.try_insert("location", "us-midwest"); + v.try_insert("tags", tags); + let mut fields = Value::object(); + fields.try_insert("temperature", 82.0); + v.try_insert("fields", fields); + v.try_insert("timestamp", 1_465_839_830_100_400_200_u64); match ex { Extractor::Influx => assert_eq!( ex.extract( @@ -268,12 +267,7 @@ fn test_influx_extractor() { &Value::from("wea\\ ther,location=us-midwest temperature=82 1465839830100400200"), &EventContext::new(0, None) ), - Match(Value::from(hashmap! ( - "measurement".into() => "wea ther".into(), - "tags".into() => Value::from(hashmap!("location".into() => "us-midwest".into())), - "fields".into() => Value::from(hashmap!("temperature".into() => 82.0_f64.into())), - "timestamp".into() => Value::from(1_465_839_830_100_400_200_u64) - ))) + Match(v) ), _ => unreachable!(), } diff --git a/tremor-script/src/interpreter/expr.rs b/tremor-script/src/interpreter/expr.rs index 59f19ff05f..684eead6f1 100644 --- a/tremor-script/src/interpreter/expr.rs +++ b/tremor-script/src/interpreter/expr.rs @@ -369,7 +369,7 @@ impl<'script> Expr<'script> { .lookup_or_insert_mut( // ALLOW: https://github.com/tremor-rs/tremor-runtime/issues/1033 unsafe { mem::transmute::<&Value, &mut Value>(current) }, - || Value::object_with_capacity(halfbrown::VEC_LIMIT_UPPER), + || Value::object_with_capacity(tremor_value::VEC_LIMIT_UPPER), ) .map_err(|_| err_need_obj(self, segment, current.value_type()))); } diff --git a/tremor-script/src/lib.rs b/tremor-script/src/lib.rs index e2576cca23..f3c9bf0606 100644 --- a/tremor-script/src/lib.rs +++ b/tremor-script/src/lib.rs @@ -128,7 +128,6 @@ mod tests { use super::*; use crate::interpreter::AggrType; use crate::prelude::*; - use halfbrown::hashmap; macro_rules! eval { ($src:expr, $expected:expr) => {{ @@ -160,7 +159,7 @@ mod tests { let runnable: Script = Script::parse($src, ®).expect("parse failed"); let mut event = Value::object(); let mut state = Value::null(); - let mut global_map = Value::from(hashmap! {}); + let mut global_map = Value::object(); let _value = runnable.run( &EventContext::new(0, None), AggrType::Emit, @@ -178,7 +177,7 @@ mod tests { let runnable: Script = Script::parse($src, ®).expect("parse failed"); let mut event = Value::object(); let mut state = Value::null(); - let mut global_map = Value::from(hashmap! {}); + let mut global_map = Value::object(); let _value = runnable.run( &EventContext::new(0, None), AggrType::Emit, @@ -305,14 +304,14 @@ mod tests { fn test_assign_local() { eval_global!( "\"hello\"; let test = [2,4,6,8]; let $out = test;", - Value::from(hashmap! { - "out".into() => Value::from(vec![2_u64, 4, 6, 8]), + literal!({ + "out": vec![2_u64, 4, 6, 8], }) ); eval_global!( "\"hello\"; let test = [4,6,8,10]; let test = [test]; let $out = test;", - Value::from(hashmap! { - "out".into() => Value::from(vec![vec![4_u64, 6, 8, 10]]), + literal!({ + "out": vec![vec![4_u64, 6, 8, 10]], }) ); } @@ -321,14 +320,14 @@ mod tests { fn test_assign_meta() { eval_global!( "\"hello\"; let $test = [2,4,6,8];", - Value::from(hashmap! { - "test".into() => Value::from(vec![2_u64, 4, 6, 8]), + literal!({ + "test": vec![2_u64, 4, 6, 8], }) ); eval_global!( "\"hello\"; let test = [2,4,6,8]; let $test = [test];", - Value::from(hashmap! { - "test".into() => Value::from(vec![vec![2_u64, 4, 6, 8]]), + literal!({ + "test": vec![vec![2_u64, 4, 6, 8]], }) ); } @@ -337,14 +336,14 @@ mod tests { fn test_assign_event() { eval_event!( "\"hello\"; let event.test = [2,4,6,8];", - Value::from(hashmap! { - "test".into() => Value::from(vec![2_u64, 4, 6, 8]), + literal!({ + "test": vec![2_u64, 4, 6, 8], }) ); eval_event!( "\"hello\"; let $test = [2,4,6,8]; let event.test = [$test];", - Value::from(hashmap! { - "test".into() => Value::from(vec![vec![2_u64, 4, 6, 8]]), + literal!({ + "test": vec![vec![2_u64, 4, 6, 8]], }) ); } @@ -353,9 +352,6 @@ mod tests { fn test_single_json_expr_is_valid() { eval!("true ", Value::from(true)); eval!("true;", Value::from(true)); - eval!( - "{ \"snot\": \"badger\" }", - Value::from(hashmap! { "snot".into() => "badger".into() }) - ); + eval!("{ \"snot\": \"badger\" }", literal!({ "snot": "badger"})); } } diff --git a/tremor-script/src/std_lib/array.rs b/tremor-script/src/std_lib/array.rs index 0d4c4fe253..42a916dc43 100644 --- a/tremor-script/src/std_lib/array.rs +++ b/tremor-script/src/std_lib/array.rs @@ -137,8 +137,23 @@ mod test { let f = fun("array", "sort"); let v = Value::from(vec!["this", "is", "a", "test"]); assert_val!(f(&[&v]), Value::from(vec!["a", "is", "test", "this"])); + let v = Value::from(vec!["1", "0", "2"]); + assert_val!(f(&[&v]), Value::from(vec!["0", "1", "2"])); let v = Value::from(vec![3, 2, 3, 1, 4]); assert_val!(f(&[&v]), Value::from(vec![1, 2, 3, 3, 4])); + let v = Value::from(vec![ + vec!["1", "one", "other"], + vec!["2", "two", "other"], + vec!["0", "zip", "other"], + ]); + assert_val!( + f(&[&v]), + Value::from(vec![ + vec!["0", "zip", "other"], + vec!["1", "one", "other"], + vec!["2", "two", "other"] + ]) + ); } #[test] diff --git a/tremor-script/src/std_lib/origin.rs b/tremor-script/src/std_lib/origin.rs index 4f76a2e685..23d437be2c 100644 --- a/tremor-script/src/std_lib/origin.rs +++ b/tremor-script/src/std_lib/origin.rs @@ -16,7 +16,6 @@ use crate::prelude::*; use crate::registry::Registry; use crate::tremor_fn; use crate::EventOriginUri; -use halfbrown::hashmap; use std::string::ToString; pub fn load(registry: &mut Registry) { @@ -26,20 +25,18 @@ pub fn load(registry: &mut Registry) { })) .insert(tremor_fn! (origin|as_uri_record(context) { if let Some(uri) = context.origin_uri() { - Ok(Value::from( - hashmap! { - "scheme".into() => Value::from(uri.scheme().to_string()), - "host".into() => Value::from(uri.host().to_string()), - "port".into() => match uri.port() { - Some(n) => Value::from(n), - // TODO would be nice to support this? - //None => Value::from(None), - None => Value::null(), - }, - // TODO avoid uri path clone here? - "path".into() => Value::from(uri.path().to_vec()), - } - )) + let port = match uri.port() { + Some(n) => Value::from(n), + // TODO would be nice to support this? + //None => Value::from(None), + None => Value::null(), + }; + Ok(literal!({ + "scheme": uri.scheme().to_string(), + "host": uri.host().to_string(), + "port": port, + "path": uri.path().to_vec() + })) } else { Ok(Value::null()) } diff --git a/tremor-script/src/std_lib/record.rs b/tremor-script/src/std_lib/record.rs index 6a032c0d69..04a9192abe 100644 --- a/tremor-script/src/std_lib/record.rs +++ b/tremor-script/src/std_lib/record.rs @@ -95,44 +95,45 @@ pub fn load(registry: &mut Registry) { mod test { use crate::registry::fun; use crate::Value; - use halfbrown::hashmap; + use tremor_value::literal; + use value_trait::Builder; #[test] fn len() { let f = fun("record", "len"); - let v = Value::from(hashmap! { - "this".into() => Value::from("is"), - "a".into() => Value::from("test") + let v = literal!({ + "this": "is", + "a": "test" }); assert_val!(f(&[&v]), 2); - let v = Value::from(hashmap! {}); + let v = Value::object(); assert_val!(f(&[&v]), 0); } #[test] fn is_empty() { let f = fun("record", "is_empty"); - let v = Value::from(hashmap! { - "this".into() => Value::from("is"), - "a".into() => Value::from("test") + let v = literal!({ + "this": "is", + "a": "test" }); assert_val!(f(&[&v]), false); - let v = Value::from(hashmap! {}); + let v = Value::object(); assert_val!(f(&[&v]), true); } #[test] fn contains() { let f = fun("record", "contains"); - let v1 = Value::from(hashmap! { - "this".into() => Value::from("is"), - "a".into() => Value::from("test") + let v1 = literal!({ + "this": "is", + "a": "test" }); let v2 = Value::from("this"); assert_val!(f(&[&v1, &v2]), true); - let v1 = Value::from(hashmap! { - "this".into() => Value::from("is"), - "a".into() => Value::from("test") + let v1 = literal!({ + "this": "is", + "a": "test" }); let v2 = Value::from("that"); assert_val!(f(&[&v1, &v2]), false); @@ -141,18 +142,18 @@ mod test { #[test] fn keys() { let f = fun("record", "keys"); - let v = Value::from(hashmap! { - "this".into() => Value::from("is"), - "a".into() => Value::from("test") + let v = literal!({ + "this": "is", + "a": "test" }); assert_val!(f(&[&v]), Value::from(vec!["this", "a"])); } #[test] fn values() { let f = fun("record", "values"); - let v = Value::from(hashmap! { - "this".into() => Value::from("is"), - "a".into() => Value::from("test") + let v = literal!({ + "this": "is", + "a": "test" }); assert_val!(f(&[&v]), Value::from(vec!["is", "test"])); } @@ -160,9 +161,9 @@ mod test { #[test] fn to_array() { let f = fun("record", "to_array"); - let v = Value::from(hashmap! { - "this".into() => Value::from("is"), - "a".into() => Value::from("test") + let v = literal!({ + "this": "is", + "a": "test" }); assert_val!( f(&[&v]), @@ -176,9 +177,9 @@ mod test { let v = Value::from(vec![vec!["this", "is"], vec!["a", "test"]]); assert_val!( f(&[&v]), - Value::from(hashmap! { - "this".into() => Value::from("is"), - "a".into() => Value::from("test") + literal!({ + "this": "is", + "a": "test" }) ); } @@ -186,35 +187,35 @@ mod test { #[test] fn extract() { let f = fun("record", "extract"); - let v1 = Value::from(hashmap! { - "this".into() => Value::from("is"), - "a".into() => Value::from("test") + let v1 = literal!({ + "this": "is", + "a": "test" }); let v2 = Value::from(vec!["this", "is"]); assert_val!( f(&[&v1, &v2]), - Value::from(hashmap! { - "this".into() => Value::from("is"), + literal!({ + "this": "is", }) ); } #[test] fn combine() { let f = fun("record", "combine"); - let v1 = Value::from(hashmap! { - "this".into() => Value::from("is"), - "a".into() => Value::from("test") + let v1 = literal!({ + "this": "is", + "a": "test" }); - let v2 = Value::from(hashmap! { - "with".into() => Value::from("cake"), - "a".into() => Value::from("cake") + let v2 = literal!({ + "with": "cake", + "a": "cake" }); assert_val!( f(&[&v1, &v2]), - Value::from(hashmap! { - "this".into() => Value::from("is"), - "a".into() => Value::from("cake"), - "with".into() => Value::from("cake"), + literal!({ + "this": "is", + "a": "cake", + "with": "cake" }) ); } diff --git a/tremor-value/Cargo.toml b/tremor-value/Cargo.toml index 746e5ba6da..9478e02c56 100644 --- a/tremor-value/Cargo.toml +++ b/tremor-value/Cargo.toml @@ -14,11 +14,11 @@ version = "0.13.0-rc.14" [dependencies] base64 = "0.21" beef = "0.5" -halfbrown = { version = "0.1", features = ["fxhash"] } +halfbrown = "0.2" serde = "1.0" -simd-json = "0.8" -simd-json-derive = "0.8" -value-trait = { version = "0.5", features = ["custom-types"] } +simd-json = "0.10" +simd-json-derive = "0.10" +value-trait = { version = "0.6", features = ["custom-types"] } tremor-common = { version = "0.13.0-rc.14", path = "../tremor-common" } [dev-dependencies] diff --git a/tremor-value/src/known_key.rs b/tremor-value/src/known_key.rs index 54fd7edc5b..97eca5036d 100644 --- a/tremor-value/src/known_key.rs +++ b/tremor-value/src/known_key.rs @@ -15,6 +15,7 @@ use crate::Value; use beef::Cow; use halfbrown::RawEntryMut; +use simd_json::ObjectHasher; use std::fmt; use std::hash::{BuildHasher, Hash, Hasher}; use value_trait::{Mutable, ValueAccess, ValueType}; @@ -55,7 +56,7 @@ where { fn from(key: S) -> Self { let key = Cow::from(key); - let hash_builder = halfbrown::DefaultHashBuilder::default(); + let hash_builder = ObjectHasher::default(); let mut hasher = hash_builder.build_hasher(); key.hash(&mut hasher); Self { @@ -115,7 +116,7 @@ impl<'key> KnownKey<'key> { #[must_use] pub fn map_lookup<'target, 'value>( &self, - map: &'target halfbrown::HashMap, Value<'value>>, + map: &'target halfbrown::HashMap, Value<'value>, ObjectHasher>, ) -> Option<&'target Value<'value>> where 'value: 'target, @@ -180,7 +181,7 @@ impl<'key> KnownKey<'key> { #[inline] pub fn map_lookup_mut<'target, 'value>( &self, - map: &'target mut halfbrown::HashMap, Value<'value>>, + map: &'target mut halfbrown::HashMap, Value<'value>, ObjectHasher>, ) -> Option<&'target mut Value<'value>> where 'key: 'value, @@ -277,7 +278,7 @@ impl<'key> KnownKey<'key> { #[inline] pub fn map_lookup_or_insert_mut<'target, 'value, F>( &self, - map: &'target mut halfbrown::HashMap, Value<'value>>, + map: &'target mut halfbrown::HashMap, Value<'value>, ObjectHasher>, with: F, ) -> &'target mut Value<'value> where @@ -365,7 +366,7 @@ impl<'key> KnownKey<'key> { #[inline] pub fn map_insert<'target, 'value>( &self, - map: &'target mut halfbrown::HashMap, Value<'value>>, + map: &'target mut halfbrown::HashMap, Value<'value>, ObjectHasher>, value: Value<'value>, ) -> Option> where diff --git a/tremor-value/src/lib.rs b/tremor-value/src/lib.rs index e59db86817..dfe503a600 100644 --- a/tremor-value/src/lib.rs +++ b/tremor-value/src/lib.rs @@ -51,10 +51,13 @@ pub use simd_json::{json, json_typed, AlignedBuf, StaticNode}; pub use value::from::*; pub use value::{parse_to_value, parse_to_value_with_buffers, to_value, Object, Value}; -use simd_json::Node; +use simd_json::{Node, ObjectHasher}; use simd_json_derive::{Deserialize, Serialize, Tape}; use value_trait::{ValueAccess, ValueInto, Writable}; +/// Maximum size for a vector object +pub const VEC_LIMIT_UPPER: usize = 32; + impl<'value> Serialize for Value<'value> { fn json_write(&self, writer: &mut W) -> std::io::Result<()> where @@ -122,7 +125,7 @@ impl<'input, 'tape> ValueDeser<'input, 'tape> { #[inline(always)] #[allow(clippy::unwrap_used)] fn parse_map(&mut self, len: usize) -> Value<'input> { - let mut res = Object::with_capacity(len); + let mut res = Object::with_capacity_and_hasher(len, ObjectHasher::default()); // Since we checked if it's empty we know that we at least have one // element so we eat this diff --git a/tremor-value/src/macros.rs b/tremor-value/src/macros.rs index 5119e9a6ab..c2729b894b 100644 --- a/tremor-value/src/macros.rs +++ b/tremor-value/src/macros.rs @@ -192,7 +192,7 @@ macro_rules! literal_internal { // Done. Insert all entries from the stack (@object $object:ident [@entries $(($value:expr => $($key:tt)+))*] () () ()) => { let len = literal_internal!(@object @count [@entries $(($value => $($key)+))*]); - $object = $crate::Object::with_capacity(len); + $object = $crate::Object::with_capacity_and_hasher(len, simd_json::value::ObjectHasher::default()); $( // ALLOW: this is a macro, we don't care about the return value $object.insert(($($key)+).into(), $value); diff --git a/tremor-value/src/serde/value/de.rs b/tremor-value/src/serde/value/de.rs index 903ecea5c2..d42c9dbfed 100644 --- a/tremor-value/src/serde/value/de.rs +++ b/tremor-value/src/serde/value/de.rs @@ -19,7 +19,7 @@ use serde_ext::de::{ self, Deserialize, DeserializeSeed, Deserializer, MapAccess, SeqAccess, Visitor, }; use serde_ext::forward_to_deserialize_any; -use simd_json::StaticNode; +use simd_json::{ObjectHasher, StaticNode}; use std::fmt; impl<'de> de::Deserializer<'de> for Value<'de> { @@ -225,13 +225,13 @@ impl<'de> SeqAccess<'de> for Array<'de> { } } -struct ObjectAccess<'de> { - i: halfbrown::IntoIter, Value<'de>>, +struct ObjectAccess<'de, const N: usize = 32> { + i: halfbrown::IntoIter, Value<'de>, N>, v: Option>, } -impl<'de> ObjectAccess<'de> { - fn new(i: halfbrown::IntoIter, Value<'de>>) -> Self { +impl<'de, const N: usize> ObjectAccess<'de, N> { + fn new(i: halfbrown::IntoIter, Value<'de>, N>) -> Self { Self { i, v: None } } } @@ -508,7 +508,7 @@ impl<'de> Visitor<'de> for ValueVisitor { { let size = map.size_hint().unwrap_or_default(); - let mut m = Object::with_capacity(size); + let mut m = Object::with_capacity_and_hasher(size, ObjectHasher::default()); while let Some(k) = map.next_key::<&str>()? { let v = map.next_value()?; m.insert(k.into(), v); diff --git a/tremor-value/src/serde/value/se.rs b/tremor-value/src/serde/value/se.rs index a308a90f76..404c4bd2ff 100644 --- a/tremor-value/src/serde/value/se.rs +++ b/tremor-value/src/serde/value/se.rs @@ -16,7 +16,7 @@ use crate::{value::Bytes, Error, Object, Result, Value}; use serde_ext::ser::{ self, Serialize, SerializeMap as SerializeMapTrait, SerializeSeq as SerializeSeqTrait, }; -use simd_json::{stry, StaticNode}; +use simd_json::{stry, ObjectHasher, StaticNode}; type Impossible = ser::Impossible; @@ -196,7 +196,7 @@ impl serde::Serializer for Serializer { where T: Serialize, { - let mut values = Object::with_capacity(1); + let mut values = Object::with_capacity_and_hasher(1, ObjectHasher::default()); values.insert(variant.into(), stry!(to_value(value))); Ok(Value::from(values)) } @@ -245,9 +245,9 @@ impl serde::Serializer for Serializer { }) } - fn serialize_map(self, _len: Option) -> Result { + fn serialize_map(self, len: Option) -> Result { Ok(SerializeMap::Map { - map: Object::new(), + map: Object::with_capacity_and_hasher(len.unwrap_or_default(), ObjectHasher::default()), next_key: None, }) } @@ -261,11 +261,11 @@ impl serde::Serializer for Serializer { _name: &'static str, _variant_index: u32, variant: &'static str, - _len: usize, + len: usize, ) -> Result { Ok(SerializeStructVariant { name: variant.to_owned(), - map: Object::new(), + map: Object::with_capacity_and_hasher(len, ObjectHasher::default()), }) } } @@ -353,7 +353,7 @@ impl serde::ser::SerializeTupleVariant for SerializeTupleVariant { } fn end(self) -> Result> { - let mut object = Object::with_capacity(1); + let mut object = Object::with_capacity_and_hasher(1, ObjectHasher::default()); object.insert(self.name.into(), Value::Array(self.vec)); @@ -620,7 +620,7 @@ impl serde::ser::SerializeStructVariant for SerializeStructVariant { } fn end(self) -> Result> { - let mut object = Object::with_capacity(1); + let mut object = Object::with_capacity_and_hasher(1, ObjectHasher::default()); object.insert(self.name.into(), Value::from(self.map)); diff --git a/tremor-value/src/value.rs b/tremor-value/src/value.rs index 3ac5dcb806..a0ddd15838 100644 --- a/tremor-value/src/value.rs +++ b/tremor-value/src/value.rs @@ -23,7 +23,7 @@ pub mod r#static; use crate::{Error, Result}; use beef::Cow; use halfbrown::HashMap; -use simd_json::prelude::*; +use simd_json::{prelude::*, ObjectHasher}; use simd_json::{AlignedBuf, Deserializer, Node, StaticNode}; use std::{borrow::Borrow, convert::TryInto, fmt}; use std::{cmp::Ord, hash::Hash}; @@ -36,7 +36,7 @@ pub use crate::serde::to_value; pub use r#static::StaticValue; /// Representation of a JSON object -pub type Object<'value> = HashMap, Value<'value>>; +pub type Object<'value> = HashMap, Value<'value>, ObjectHasher>; /// Bytes pub type Bytes<'value> = Cow<'value, [u8]>; @@ -374,7 +374,10 @@ impl<'value> Builder<'value> for Value<'value> { #[inline] #[must_use] fn object_with_capacity(capacity: usize) -> Self { - Self::Object(Box::new(Object::with_capacity(capacity))) + Self::Object(Box::new(Object::with_capacity_and_hasher( + capacity, + ObjectHasher::default(), + ))) } } @@ -389,7 +392,9 @@ impl<'value> Mutable for Value<'value> { } #[inline] #[must_use] - fn as_object_mut(&mut self) -> Option<&mut HashMap<::Key, Self>> { + fn as_object_mut( + &mut self, + ) -> Option<&mut HashMap<::Key, Self, ObjectHasher>> { match self { Self::Object(m) => Some(m), _ => None, @@ -400,7 +405,7 @@ impl<'value> ValueAccess for Value<'value> { type Target = Self; type Key = Cow<'value, str>; type Array = Vec; - type Object = HashMap; + type Object = HashMap; #[inline] #[must_use] @@ -490,7 +495,7 @@ impl<'value> ValueAccess for Value<'value> { #[inline] #[must_use] - fn as_object(&self) -> Option<&HashMap> { + fn as_object(&self) -> Option<&HashMap> { match self { Self::Object(m) => Some(m), _ => None, @@ -607,7 +612,7 @@ impl<'de> ValueDeserializer<'de> { #[cfg_attr(not(feature = "no-inline"), inline(always))] fn parse_map(&mut self, len: usize) -> Value<'de> { - let mut res = Object::with_capacity(len); + let mut res = Object::with_capacity_and_hasher(len, ObjectHasher::default()); for _ in 0..len { // The tape might contain duplicate keys, by doing a regular map insert @@ -632,8 +637,8 @@ mod test { #[test] fn test_cmp_map() { - let mut o1 = Object::new(); - let mut o2 = Object::new(); + let mut o1 = Object::with_hasher(ObjectHasher::default()); + let mut o2 = Object::with_hasher(ObjectHasher::default()); assert_eq!(cmp_map(&o1, &o2), Ordering::Equal); o1.insert("snot".into(), 1.into()); @@ -1225,7 +1230,7 @@ mod test { #[test] fn conversions_object() { - let v = Value::from(Object::new()); + let v = Value::from(Object::with_hasher(ObjectHasher::default())); assert!(v.is_object()); assert_eq!(v.value_type(), ValueType::Object); let v = Value::from("no object");