diff --git a/Cargo.lock b/Cargo.lock index c891214..253cb8e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,9 +2,9 @@ # It is not intended for manual editing. [[package]] name = "addr2line" -version = "0.13.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072" +checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" dependencies = [ "gimli", ] @@ -23,24 +23,24 @@ checksum = "e8fd72866655d1904d6b0997d0b07ba561047d070fbe29de039031c641b61217" [[package]] name = "ahash" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0adac150c2dd5a9c864d054e07bda5e6bc010cd10036ea5f17e82a2f5867f735" +checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" [[package]] name = "aho-corasick" -version = "0.7.13" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043164d8ba5c4c3035fec9bbee8647c0261d788f3474306f93bb65901cae0e86" +checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" dependencies = [ "memchr", ] [[package]] name = "anyhow" -version = "1.0.32" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b602bfe940d21c130f3895acd65221e8a61270debe89d628b9cb4e3ccb8569b" +checksum = "afddf7f520a80dbf76e6f50a35bca42a2331ef227a28b3b6dc5c2e2338d114b1" [[package]] name = "aquatic" @@ -81,7 +81,7 @@ dependencies = [ "aquatic_http_protocol", "crossbeam-channel", "either", - "hashbrown 0.9.0", + "hashbrown 0.9.1", "histogram", "indexmap", "itoa", @@ -107,7 +107,7 @@ dependencies = [ "anyhow", "aquatic_cli_helpers", "aquatic_http_protocol", - "hashbrown 0.9.0", + "hashbrown 0.9.1", "mimalloc", "mio", "quickcheck", @@ -124,7 +124,7 @@ dependencies = [ "anyhow", "bendy", "criterion", - "hashbrown 0.9.0", + "hashbrown 0.9.1", "hex", "httparse", "itoa", @@ -148,7 +148,7 @@ dependencies = [ "aquatic_common", "aquatic_udp_protocol", "crossbeam-channel", - "hashbrown 0.9.0", + "hashbrown 0.9.1", "histogram", "indexmap", "log", @@ -187,7 +187,7 @@ dependencies = [ "aquatic_cli_helpers", "aquatic_udp_protocol", "crossbeam-channel", - "hashbrown 0.9.0", + "hashbrown 0.9.1", "mimalloc", "mio", "parking_lot", @@ -218,7 +218,7 @@ dependencies = [ "aquatic_ws_protocol", "crossbeam-channel", "either", - "hashbrown 0.9.0", + "hashbrown 0.9.1", "histogram", "indexmap", "log", @@ -242,7 +242,7 @@ dependencies = [ "anyhow", "aquatic_cli_helpers", "aquatic_ws_protocol", - "hashbrown 0.9.0", + "hashbrown 0.9.1", "mimalloc", "mio", "quickcheck", @@ -261,7 +261,7 @@ version = "0.1.0" dependencies = [ "anyhow", "criterion", - "hashbrown 0.9.0", + "hashbrown 0.9.1", "quickcheck", "quickcheck_macros", "serde", @@ -298,9 +298,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.50" +version = "0.3.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46254cf2fdcdf1badb5934448c1bcbe046a56537b3987d96c51a7afc5d03f293" +checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc" dependencies = [ "addr2line", "cfg-if", @@ -312,15 +312,15 @@ dependencies = [ [[package]] name = "base64" -version = "0.12.3" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bendy" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f35e865a4aae9618063f67b1cd1ff6d0ae28b9478f1cdc0dd88d61884c8fe71" +checksum = "8133e404c8bec821e531f347dab1247bf64f60882826e7228f8ffeb33a35a658" dependencies = [ "failure", "serde", @@ -344,9 +344,9 @@ dependencies = [ [[package]] name = "bstr" -version = "0.2.13" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31accafdb70df7871592c058eca3985b71104e15ac32f64706022c58867da931" +checksum = "a40b47ad93e1a5404e6c18dec46b628214fee441c70f4ab5d6942142cc268a3d" dependencies = [ "lazy_static", "memchr", @@ -356,21 +356,21 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.4.0" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" +checksum = "099e596ef14349721d9016f6b80dd3419ea1bf289ab9b44df8e4dfd3a005d5d9" [[package]] name = "byteorder" -version = "1.3.4" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" +checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b" [[package]] name = "bytes" -version = "0.5.6" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" +checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" [[package]] name = "cast" @@ -383,25 +383,27 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.59" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66120af515773fb005778dc07c261bd201ec8ce50bd6e7144c927753fe013381" +checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48" [[package]] name = "cfg-if" -version = "0.1.10" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.15" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942f72db697d8767c22d46a598e01f2d3b475501ea43d0db4f16d90259182d0b" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" dependencies = [ + "libc", "num-integer", "num-traits", "time", + "winapi", ] [[package]] @@ -415,46 +417,41 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "cloudabi" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4344512281c643ae7638bbabc3af17a11307803ec8f0fcad9fae512a8bf36467" -dependencies = [ - "bitflags", -] - [[package]] name = "cmake" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e56268c17a6248366d66d4a47a3381369d068cce8409bb1716ed77ea32163bb" +checksum = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855" dependencies = [ "cc", ] [[package]] name = "console" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b1aacfaffdbff75be81c15a399b4bedf78aaefe840e8af1d299ac2ade885d2" +checksum = "7cc80946b3480f421c2f17ed1cb841753a371c7c5104f51d507e13f532c856aa" dependencies = [ "encode_unicode", "lazy_static", "libc", "regex", "terminal_size", - "termios", "unicode-width", "winapi", - "winapi-util", ] [[package]] -name = "core-foundation" -version = "0.7.0" +name = "const_fn" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +checksum = "28b9d6de7f49e22cf97ad17fc4036ece69300032f45f78f30b4a4482cdc3f4a6" + +[[package]] +name = "core-foundation" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" dependencies = [ "core-foundation-sys", "libc", @@ -462,9 +459,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.7.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" +checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" [[package]] name = "cpuid-bool" @@ -474,16 +471,16 @@ checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" [[package]] name = "criterion" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70daa7ceec6cf143990669a04c7df13391d55fb27bd4079d252fca774ba244d8" +checksum = "ab327ed7354547cc2ef43cbe20ef68b988e70b4b593cbd66a2a61733123a3d23" dependencies = [ "atty", "cast", "clap", "criterion-plot", "csv", - "itertools", + "itertools 0.10.0", "lazy_static", "num-traits", "oorandom", @@ -505,50 +502,49 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022feadec601fba1649cfa83586381a4ad31c6bf3a9ab7d408118b05dd9889d" dependencies = [ "cast", - "itertools", + "itertools 0.9.0", ] [[package]] name = "crossbeam-channel" -version = "0.4.4" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" +checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" dependencies = [ + "cfg-if", "crossbeam-utils", - "maybe-uninit", ] [[package]] name = "crossbeam-deque" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" +checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" dependencies = [ + "cfg-if", "crossbeam-epoch", "crossbeam-utils", - "maybe-uninit", ] [[package]] name = "crossbeam-epoch" -version = "0.8.2" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" +checksum = "a1aaa739f95311c2c7887a76863f500026092fb1dce0161dab577e559ef3569d" dependencies = [ - "autocfg", "cfg-if", + "const_fn", "crossbeam-utils", "lazy_static", - "maybe-uninit", "memoffset", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.7.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +checksum = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d" dependencies = [ "autocfg", "cfg-if", @@ -557,9 +553,9 @@ dependencies = [ [[package]] name = "csv" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00affe7f6ab566df61b4be3ce8cf16bc2576bca0963ceb0955e45d514bf9a279" +checksum = "f9d58633299b24b515ac72a3f869f8b91306a3cec616a602843a383acd6f9e97" dependencies = [ "bstr", "csv-core", @@ -588,9 +584,9 @@ dependencies = [ [[package]] name = "either" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56b59865bce947ac5958779cfa508f6c3b9497cc762b7e24a12d11ccde2c4f" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "encode_unicode" @@ -600,9 +596,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "env_logger" -version = "0.7.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +checksum = "f26ecb66b4bdca6c1409b40fb255eefc2bd4f6d135dab3c3124f80ffa2a9661e" dependencies = [ "log", "regex", @@ -632,9 +628,9 @@ dependencies = [ [[package]] name = "float-cmp" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "499a1bfa03d254b047e7e5c1fc8dd23a8cf6b344a8eb7e622ae4bc76bfac8e68" +checksum = "e1267f4ac4f343772758f7b1bdcbe767c218bbab93bb432acbf5162bbf85a6c4" dependencies = [ "num-traits", ] @@ -660,6 +656,16 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +[[package]] +name = "form_urlencoded" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ece68d15c92e84fa4f19d3780f1294e5ca82a78a6d515f1efaabcc144688be00" +dependencies = [ + "matches", + "percent-encoding", +] + [[package]] name = "generic-array" version = "0.14.4" @@ -672,26 +678,26 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.1.15" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" +checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" dependencies = [ "cfg-if", "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "wasi", ] [[package]] name = "gimli" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" +checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" [[package]] name = "half" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d36fab90f82edc3c747f9d438e06cf0a491055896f2a279638bb5beed6c40177" +checksum = "62aca2aba2d62b4a7f5b33f3712cb1b0692779a56fb510499d5c0aa594daeaf3" [[package]] name = "halfbrown" @@ -715,19 +721,19 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00d63df3d41950fb462ed38308eea019113ad1508da725bbedcd0fa5a85ef5f7" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" dependencies = [ - "ahash 0.4.5", + "ahash 0.4.7", "serde", ] [[package]] name = "hermit-abi" -version = "0.1.15" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9" +checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" dependencies = [ "libc", ] @@ -746,9 +752,9 @@ checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669" [[package]] name = "http" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9" +checksum = "7245cd7449cc792608c3c8a9eaf69bd4eabbabf802713748fd739c98b82f0747" dependencies = [ "bytes", "fnv", @@ -757,15 +763,15 @@ dependencies = [ [[package]] name = "httparse" -version = "1.3.4" +version = "1.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" +checksum = "615caabe2c3160b313d52ccc905335f4ed5f10881dd63dc5699d47e90be85691" [[package]] name = "idna" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +checksum = "de910d521f7cc3135c4de8db1cb910e0b5ed1dc6f57c381cd07e8e661ce10094" dependencies = [ "matches", "unicode-bidi", @@ -774,12 +780,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" +checksum = "4fb1fa934250de4de8aef298d81c729a7d33d8c239daa3a7575e6b92bfc7313b" dependencies = [ "autocfg", - "hashbrown 0.9.0", + "hashbrown 0.9.1", ] [[package]] @@ -796,18 +802,21 @@ dependencies = [ [[package]] name = "input_buffer" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19a8a95243d5a0398cae618ec29477c6e3cb631152be5c19481f80bc71559754" +checksum = "f97967975f448f1a7ddb12b0bc41069d09ed6a1c161a92687e057325db35d413" dependencies = [ "bytes", ] [[package]] name = "instant" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b141fdc7836c525d4d594027d318c84161ca17aaf8113ab1f81ab93ae897485" +checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" +dependencies = [ + "cfg-if", +] [[package]] name = "itertools" @@ -819,16 +828,25 @@ dependencies = [ ] [[package]] -name = "itoa" -version = "0.4.6" +name = "itertools" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" +checksum = "37d572918e350e82412fe766d24b15e6682fb2ed2bbe018280caa810397cb319" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" [[package]] name = "js-sys" -version = "0.3.45" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca059e81d9486668f12d455a4ea6daa600bd408134cd17e3d3fb5a32d1f016f8" +checksum = "5cfb73131c35423a367daf8cbd24100af0d077668c8c2943f0e7dd775fef0f65" dependencies = [ "wasm-bindgen", ] @@ -841,9 +859,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.77" +version = "0.2.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f96b10ec2560088a8e76961b00d47107b3a625fecb76dedb29ee7ccbf98235" +checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" [[package]] name = "libm" @@ -853,27 +871,27 @@ checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" [[package]] name = "libmimalloc-sys" -version = "0.1.16" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677c4be79b14bd72496b87789b702ba02cd1a9f16a59369fe847082fd03efd88" +checksum = "e58f42b6424a0ed536678c65fd97cd64b4344bcf86251e284f7c0ce9eee40e64" dependencies = [ "cmake", ] [[package]] name = "lock_api" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28247cc5a5be2f05fbcd76dd0cf2c7d3b5400cb978a28042abcd4fa0b3f8261c" +checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312" dependencies = [ "scopeguard", ] [[package]] name = "log" -version = "0.4.11" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" dependencies = [ "cfg-if", ] @@ -884,52 +902,46 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - [[package]] name = "memchr" -version = "2.3.3" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" +checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" [[package]] name = "memoffset" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c198b026e1bbf08a937e94c6c60f9ec4a2267f5b0d2eec9c1b21b061ce2be55f" +checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" dependencies = [ "autocfg", ] [[package]] name = "mimalloc" -version = "0.1.20" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00759bcf69082fa629ae8823fcc72f7454a90c6476110297a1ae5fb3a559e474" +checksum = "757efec188b3d2088949d912e01ea2fe87164ed6376b6c5d7dd4f3ce1668a93d" dependencies = [ "libmimalloc-sys", ] [[package]] name = "miniz_oxide" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d7559a8a40d0f97e1edea3220f698f78b1c5ab67532e49f68fde3910323b722" +checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" dependencies = [ "adler", + "autocfg", ] [[package]] name = "mio" -version = "0.7.0" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9971bc8349a361217a8f2a41f5d011274686bd4436465ba51730921039d7fb" +checksum = "e50ae3f04d169fcc9bde0b547d1c205219b7157e07ded9c5aff03e0637cb3ed7" dependencies = [ - "lazy_static", "libc", "log", "miow", @@ -939,9 +951,9 @@ dependencies = [ [[package]] name = "miow" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07b88fb9795d4d36d62a012dfbf49a8f5cf12751f36d31a9dbe66d528e58979e" +checksum = "5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897" dependencies = [ "socket2", "winapi", @@ -949,9 +961,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.4" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b0d88c06fe90d5ee94048ba40409ef1d9315d86f6f38c2efdaad4fb50c58b2d" +checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4" dependencies = [ "lazy_static", "libc", @@ -967,15 +979,14 @@ dependencies = [ [[package]] name = "nix" -version = "0.16.1" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0eaf8df8bab402257e0a5c17a254e4cc1f72a93588a1ddfb5d356c801aa7cb" +checksum = "b2ccba0cfe4fdf15982d1674c69b1fd80bad427d293849982668dfe454bd61f2" dependencies = [ "bitflags", "cc", "cfg-if", "libc", - "void", ] [[package]] @@ -986,9 +997,9 @@ checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" [[package]] name = "ntapi" -version = "0.3.4" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a31937dea023539c72ddae0e3571deadc1414b300483fa7aaec176168cfa9d2" +checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" dependencies = [ "winapi", ] @@ -1005,9 +1016,9 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" dependencies = [ "autocfg", "num-traits", @@ -1015,9 +1026,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ "autocfg", "libm", @@ -1041,15 +1052,21 @@ checksum = "17b02fc0ff9a9e4b35b3342880f48e896ebf69f2967921fe8646bf5b7125956a" [[package]] name = "object" -version = "0.20.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab52be62400ca80aa00285d25253d7f7c437b7375c4de678f5405d3afe82ca5" +checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" + +[[package]] +name = "once_cell" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" [[package]] name = "oorandom" -version = "11.1.2" +version = "11.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a170cebd8021a008ea92e4db85a72f80b35df514ec664b296fdcbb654eac0b2c" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" [[package]] name = "opaque-debug" @@ -1059,9 +1076,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.30" +version = "0.10.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4" +checksum = "038d43985d1ddca7a9900630d8cd031b56e4794eecc2e9ea39dd17aa04399a70" dependencies = [ "bitflags", "cfg-if", @@ -1079,9 +1096,9 @@ checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] name = "openssl-sys" -version = "0.9.58" +version = "0.9.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" +checksum = "921fc71883267538946025deffb622905ecad223c28efbfdef9bb59a0175f3e6" dependencies = [ "autocfg", "cc", @@ -1092,9 +1109,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4893845fa2ca272e647da5d0e46660a314ead9c2fdd9a883aabc32e481a8733" +checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" dependencies = [ "instant", "lock_api", @@ -1103,15 +1120,14 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c361aa727dd08437f2f1447be8b59a33b0edd15e0fcee698f935613d9efbca9b" +checksum = "9ccb628cad4f84851442432c60ad8e1f607e29752d0bf072cbd0baf28aa34272" dependencies = [ "cfg-if", - "cloudabi", "instant", "libc", - "redox_syscall", + "redox_syscall 0.1.57", "smallvec", "winapi", ] @@ -1124,33 +1140,49 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pkg-config" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33" +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" [[package]] name = "plotters" -version = "0.2.15" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d1685fbe7beba33de0330629da9d955ac75bd54f33d7b79f9a895590124f6bb" +checksum = "45ca0ae5f169d0917a7c7f5a9c1a3d3d9598f18f529dd2b8373ed988efea307a" dependencies = [ - "js-sys", "num-traits", + "plotters-backend", + "plotters-svg", "wasm-bindgen", "web-sys", ] [[package]] -name = "ppv-lite86" -version = "0.2.9" +name = "plotters-backend" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20" +checksum = "b07fffcddc1cb3a1de753caa4e4df03b79922ba43cf882acc1bdd7e8df9f4590" + +[[package]] +name = "plotters-svg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b38a02e23bd9604b842a812063aec4ef702b57989c37b655254bb61c471ad211" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" [[package]] name = "privdrop" -version = "0.3.4" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "939fa7cbfef9c15c65cf2fb3ed57f3f2a14dca1757a556aa1ba4a7f998b2b479" +checksum = "ebd4c2739642e70439d1c0d9545beec45c1e54128739b3cda29bf2c366028c87" dependencies = [ "libc", "nix", @@ -1158,30 +1190,29 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.21" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e28516df94f3dd551a587da5357459d9b36d945a7c37c3557928c1c2ff2a2c" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" dependencies = [ "unicode-xid", ] [[package]] name = "quickcheck" -version = "0.9.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f" +checksum = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6" dependencies = [ "env_logger", "log", "rand", - "rand_core", ] [[package]] name = "quickcheck_macros" -version = "0.9.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608c156fd8e97febc07dc9c2e2c80bf74cfc6ef26893eae3daf8bc2bc94a4b7f" +checksum = "b22a693222d716a9587786f37ac3f6b4faedb5b80c23914e7303ff5a1d8016e9" dependencies = [ "proc-macro2", "quote", @@ -1190,32 +1221,30 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" +checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.7.3" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" dependencies = [ - "getrandom", "libc", "rand_chacha", "rand_core", "rand_hc", - "rand_pcg", ] [[package]] name = "rand_chacha" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" dependencies = [ "ppv-lite86", "rand_core", @@ -1223,18 +1252,18 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "c026d7df8b298d90ccbbc5190bd04d85e159eaf5576caeacf8741da93ccbd2e5" dependencies = [ "getrandom", ] [[package]] name = "rand_distr" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9532ada3929fb8b2e9dbe28d1e06c9b2cc65813f074fcb6bd5fbefeff9d56" +checksum = "da9e8f32ad24fb80d07d2323a9a2ce8b30d68a62b8cb4df88119ff49a698f038" dependencies = [ "num-traits", "rand", @@ -1242,27 +1271,18 @@ dependencies = [ [[package]] name = "rand_hc" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core", -] - -[[package]] -name = "rand_pcg" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" dependencies = [ "rand_core", ] [[package]] name = "rayon" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd016f0c045ad38b5251be2c9c0ab806917f82da4d36b2a327e5166adad9270" +checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" dependencies = [ "autocfg", "crossbeam-deque", @@ -1272,9 +1292,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91739a34c4355b5434ce54c9086c5895604a9c278586d1f1aa95e04f66b525a0" +checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -1290,10 +1310,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] -name = "regex" -version = "1.3.9" +name = "redox_syscall" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6" +checksum = "05ec8ca9416c5ea37062b502703cd7fcb207736bc294f6e0cf367ac6fc234570" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9251239e129e16308e70d853559389de218ac275b515068abc96829d05b948a" dependencies = [ "aho-corasick", "memchr", @@ -1312,9 +1341,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.18" +version = "0.6.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" +checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581" [[package]] name = "remove_dir_all" @@ -1327,9 +1356,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.16" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" +checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" [[package]] name = "rustc_version" @@ -1373,9 +1402,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "security-framework" -version = "0.4.4" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64808902d7d99f78eaddd2b4e2509713babc3dc3c85ad6f4c447680f3c01e535" +checksum = "c1759c2e3c8580017a484a7ac56d3abc5a6c1feadf88db2f3633f12ae4268c69" dependencies = [ "bitflags", "core-foundation", @@ -1386,9 +1415,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "0.4.3" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17bf11d99252f512695eb468de5516e5cf75455521e69dfe343f3b74e4748405" +checksum = "f99b9d5e26d2a71633cc4f2ebae7cc9f874044e0c351a27e17892d76dce5678b" dependencies = [ "core-foundation-sys", "libc", @@ -1411,18 +1440,18 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.116" +version = "1.0.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96fe57af81d28386a513cbc6858332abc6117cfdb5999647c6444b8f43a370a5" +checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae" dependencies = [ "serde_derive", ] [[package]] name = "serde_bencode" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b9167b9bfe7b1a0bc0fd30ffd4447c1525872c746b8540e08d88ab6dbcc13" +checksum = "934d8bdbaa0126dafaea9a8833424a211d9661897717846c6bb782349ca1c30d" dependencies = [ "serde", "serde_bytes", @@ -1449,9 +1478,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.116" +version = "1.0.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f630a6370fd8e457873b4bd2ffdae75408bc291ba72be773772a4c2a065d9ae8" +checksum = "9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31" dependencies = [ "proc-macro2", "quote", @@ -1460,9 +1489,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.57" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "164eacbdb13512ec2745fb09d51fd5b22b0d65ed294a1dcf7285a360c80a675c" +checksum = "ea1c6153794552ea7cf7cf63b1231a25de00ec90db326ba6264440fa08e31486" dependencies = [ "itoa", "ryu", @@ -1471,9 +1500,9 @@ dependencies = [ [[package]] name = "sha-1" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170a36ea86c864a3f16dd2687712dd6646f7019f301e57537c7f4dc9f5916770" +checksum = "f4b312c3731e3fe78a185e6b9b911a7aa715b8e31cce117975219aab2acf285d" dependencies = [ "block-buffer", "cfg-if", @@ -1484,9 +1513,9 @@ dependencies = [ [[package]] name = "simd-json" -version = "0.3.18" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa7bd58cc9323a0db16713ada63e7ab8c51b4d1fa0b2bce1afd964e19b6f0c56" +checksum = "98f8dc3d55aedd35466debadcc7aac328914f068e210685bc6caf6bc6a7b181e" dependencies = [ "halfbrown", "serde", @@ -1496,9 +1525,9 @@ dependencies = [ [[package]] name = "simplelog" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2736f58087298a448859961d3f4a0850b832e72619d75adc69da7993c2cd3c" +checksum = "4bc0ffd69814a9b251d43afcabf96dad1b29f5028378056257be9e3fecc9f720" dependencies = [ "chrono", "log", @@ -1513,28 +1542,27 @@ checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" [[package]] name = "smallvec" -version = "1.4.2" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" +checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" [[package]] name = "smartstring" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938800f206ac06b91f147db8f7514846ddc16cf46034eb1af59ca6f286cf5690" +checksum = "1ada87540bf8ef4cf8a1789deb175626829bb59b1fefd816cf7f7f55efcdbae9" dependencies = [ "static_assertions", ] [[package]] name = "socket2" -version = "0.3.15" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44" +checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" dependencies = [ "cfg-if", "libc", - "redox_syscall", "winapi", ] @@ -1546,9 +1574,9 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "syn" -version = "1.0.40" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963f7d3cc59b59b9325165add223142bbf1df27655d07789f109896d353d8350" +checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081" dependencies = [ "proc-macro2", "quote", @@ -1569,46 +1597,37 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" +checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" dependencies = [ "cfg-if", "libc", "rand", - "redox_syscall", + "redox_syscall 0.2.4", "remove_dir_all", "winapi", ] [[package]] name = "termcolor" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" +checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" dependencies = [ "winapi-util", ] [[package]] name = "terminal_size" -version = "0.1.13" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a14cd9f8c72704232f0bfc8455c0e861f0ad4eb60cc9ec8a170e231414c1e13" +checksum = "86ca8ced750734db02076f44132d802af0b33b09942331f4459dde8636fd2406" dependencies = [ "libc", "winapi", ] -[[package]] -name = "termios" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0fcee7b24a25675de40d5bb4de6e41b0df07bc9856295e7e2b3a3600c400c2" -dependencies = [ - "libc", -] - [[package]] name = "textwrap" version = "0.11.0" @@ -1619,30 +1638,49 @@ dependencies = [ ] [[package]] -name = "thread_local" -version = "1.0.1" +name = "thiserror" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +checksum = "76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146" dependencies = [ - "lazy_static", + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" +dependencies = [ + "once_cell", ] [[package]] name = "time" -version = "0.1.44" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" dependencies = [ "libc", - "wasi 0.10.0+wasi-snapshot-preview1", "winapi", ] [[package]] name = "tinytemplate" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d3dc76004a03cec1c5932bca4cdc2e39aaa798e3f82363dd94f9adf6098c12f" +checksum = "a2ada8616fad06a2d0c455adc530de4ef57605a8120cc65da9653e0e9623ca74" dependencies = [ "serde", "serde_json", @@ -1650,24 +1688,33 @@ dependencies = [ [[package]] name = "tinyvec" -version = "0.3.4" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117" +checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "toml" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" dependencies = [ "serde", ] [[package]] name = "tungstenite" -version = "0.11.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0308d80d86700c5878b9ef6321f020f29b1bb9d5ff3cab25e75e23f3a492a23" +checksum = "5fe8dada8c1a3aeca77d6b51a4f1314e0f4b8e438b7b1b71e3ddaca8080e4093" dependencies = [ "base64", "byteorder", @@ -1679,6 +1726,7 @@ dependencies = [ "native-tls", "rand", "sha-1", + "thiserror", "url", "utf-8", ] @@ -1700,9 +1748,9 @@ dependencies = [ [[package]] name = "unicode-normalization" -version = "0.1.13" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977" +checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" dependencies = [ "tinyvec", ] @@ -1721,10 +1769,11 @@ checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" [[package]] name = "url" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" +checksum = "5909f2b0817350449ed73e8bcd81c8c3c8d9a7a5d8acba4b27db277f1868976e" dependencies = [ + "form_urlencoded", "idna", "matches", "percent-encoding", @@ -1744,9 +1793,9 @@ checksum = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7" [[package]] name = "value-trait" -version = "0.1.18" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76116a6dbf85bfa0e5cd6bf9debee40e853f814d376f5713cabe5516283bcc89" +checksum = "3f7ff0bd1a82f266f30d5031c3021c6976450331b6de8db97fc31fd18e929ba6" dependencies = [ "float-cmp", "halfbrown", @@ -1756,9 +1805,9 @@ dependencies = [ [[package]] name = "vcpkg" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" +checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb" [[package]] name = "version_check" @@ -1766,12 +1815,6 @@ version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - [[package]] name = "walkdir" version = "2.3.1" @@ -1785,21 +1828,15 @@ dependencies = [ [[package]] name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" +version = "0.10.2+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" [[package]] name = "wasm-bindgen" -version = "0.2.68" +version = "0.2.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" +checksum = "55c0f7123de74f0dab9b7d00fd614e7b19349cd1e2f5252bbe9b1754b59433be" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1807,9 +1844,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.68" +version = "0.2.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" +checksum = "7bc45447f0d4573f3d65720f636bbcc3dd6ce920ed704670118650bcd47764c7" dependencies = [ "bumpalo", "lazy_static", @@ -1822,9 +1859,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.68" +version = "0.2.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" +checksum = "3b8853882eef39593ad4174dd26fc9865a64e84026d223f63bb2c42affcbba2c" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1832,9 +1869,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.68" +version = "0.2.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" +checksum = "4133b5e7f2a531fa413b3a1695e925038a05a71cf67e87dafa295cb645a01385" dependencies = [ "proc-macro2", "quote", @@ -1845,15 +1882,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.68" +version = "0.2.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" +checksum = "dd4945e4943ae02d15c13962b38a5b1e81eadd4b71214eee75af64a4d6a4fd64" [[package]] name = "web-sys" -version = "0.3.45" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bf6ef87ad7ae8008e15a355ce696bed26012b7caa21605188cfd8214ab51e2d" +checksum = "c40dc691fc48003eba817c38da7113c15698142da971298003cac3ef175680b3" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/Cargo.toml b/Cargo.toml index 552a2ca..2d2faf1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,6 +35,9 @@ aquatic_ws_protocol = { path = "aquatic_ws_protocol" } debug = true lto = true +[profile.test] +opt-level = 3 + [profile.bench] debug = true opt-level = 3 diff --git a/README.md b/README.md index ce6cb94..86ef704 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,12 @@ Blazingly fast, multi-threaded BitTorrent tracker written in Rust. Consists of three sub-implementations for different protocols: * `aquatic_udp`: BitTorrent over UDP. Implementation achieves double the throughput of opentracker (see benchmarks below) - * `aquatic_http`: BitTorrent over HTTP/TLS (experimental) + * `aquatic_http`: BitTorrent over HTTP/TLS (slightly experimental) * `aquatic_ws`: WebTorrent (experimental) ## Copyright and license -Copyright (c) 2020 Joakim FrostegÄrd +Copyright (c) 2020-2021 Joakim FrostegÄrd Distributed under Apache 2.0 license (details in `LICENSE` file.) @@ -146,12 +146,14 @@ exceptions: * Doesn't track of the number of torrent downloads (0 is always sent). * Doesn't allow full scrapes, i.e. of all registered info hashes -`aquatic_ws` is not as well tested as `aquatic_udp`, but has been -successfully used as the tracker for a file transfer between two webtorrent -peers. +For information about running over TLS, please refer to the TLS subsection +of the `aquatic_http` section above. -For information about running over TLS (wss protocol), please refer to -the corresponding `aquatic_http` section above. +`aquatic_ws` is experimental software. Connections are established +successfully when using `aquatic_ws_load_test`, but so far, I haven't been able +to implement CI for testing if aquatic_ws works as the tracker for a full +file transfer session between two real-world clients. One reason for this +is the general lack of high-quality WebTorrent clients. ## Load testing diff --git a/TODO.md b/TODO.md index 0246435..fd226d8 100644 --- a/TODO.md +++ b/TODO.md @@ -40,6 +40,12 @@ scrape requests I suppose. ## aquatic_ws +* panic when unwrapping peer_address after peer closes connection: + +``` +thread 'socket-01' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }', aquatic_ws/src/lib/network/connection.rs:28:59 +``` + * websocket_max_frame_size should be at least something like 64 * 1024, maybe put it and message size at 128k just to be sure * test transfer, specifically ipv6/ipv4 mapping diff --git a/aquatic_cli_helpers/Cargo.toml b/aquatic_cli_helpers/Cargo.toml index 93d55e8..731df5b 100644 --- a/aquatic_cli_helpers/Cargo.toml +++ b/aquatic_cli_helpers/Cargo.toml @@ -10,5 +10,5 @@ repository = "https://github.com/greatest-ape/aquatic" [dependencies] anyhow = "1" serde = { version = "1", features = ["derive"] } -simplelog = "0.8" -toml = "0.5" \ No newline at end of file +simplelog = "0.9" +toml = "0.5" diff --git a/aquatic_common/Cargo.toml b/aquatic_common/Cargo.toml index 1fa29c3..df81bee 100644 --- a/aquatic_common/Cargo.toml +++ b/aquatic_common/Cargo.toml @@ -12,4 +12,4 @@ name = "aquatic_common" [dependencies] indexmap = "1" -rand = { version = "0.7", features = ["small_rng"] } \ No newline at end of file +rand = { version = "0.8", features = ["small_rng"] } \ No newline at end of file diff --git a/aquatic_common/src/lib.rs b/aquatic_common/src/lib.rs index cef413e..d1cfc98 100644 --- a/aquatic_common/src/lib.rs +++ b/aquatic_common/src/lib.rs @@ -57,12 +57,10 @@ pub fn extract_response_peers( let half_peer_map_len = peer_map_len / 2; let offset_first_half = rng.gen_range( - 0, - (half_peer_map_len + (peer_map_len % 2)) - half_num_to_take + 0..(half_peer_map_len + (peer_map_len % 2)) - half_num_to_take ); let offset_second_half = rng.gen_range( - half_peer_map_len, - peer_map_len - half_num_to_take + half_peer_map_len..peer_map_len - half_num_to_take ); let end_first_half = offset_first_half + half_num_to_take; diff --git a/aquatic_http/Cargo.toml b/aquatic_http/Cargo.toml index ddd7554..da71513 100644 --- a/aquatic_http/Cargo.toml +++ b/aquatic_http/Cargo.toml @@ -20,7 +20,7 @@ anyhow = "1" aquatic_cli_helpers = "0.1.0" aquatic_common = "0.1.0" aquatic_http_protocol = "0.1.0" -crossbeam-channel = "0.4" +crossbeam-channel = "0.5" either = "1" hashbrown = "0.9" histogram = "0.6" @@ -32,12 +32,12 @@ memchr = "2" mio = { version = "0.7", features = ["tcp", "os-poll", "os-util"] } native-tls = "0.2" parking_lot = "0.11" -privdrop = "0.3" -rand = { version = "0.7", features = ["small_rng"] } +privdrop = "0.5" +rand = { version = "0.8", features = ["small_rng"] } serde = { version = "1", features = ["derive"] } smartstring = "0.2" socket2 = { version = "0.3", features = ["reuseport"] } [dev-dependencies] -quickcheck = "0.9" -quickcheck_macros = "0.9" +quickcheck = "1.0" +quickcheck_macros = "1.0" diff --git a/aquatic_http_load_test/Cargo.toml b/aquatic_http_load_test/Cargo.toml index 1bd5f5b..a5b2edb 100644 --- a/aquatic_http_load_test/Cargo.toml +++ b/aquatic_http_load_test/Cargo.toml @@ -16,10 +16,10 @@ aquatic_http_protocol = "0.1.0" hashbrown = "0.9" mimalloc = { version = "0.1", default-features = false } mio = { version = "0.7", features = ["udp", "os-poll", "os-util"] } -rand = { version = "0.7", features = ["small_rng"] } -rand_distr = "0.3" +rand = { version = "0.8", features = ["small_rng"] } +rand_distr = "0.4" serde = { version = "1", features = ["derive"] } [dev-dependencies] -quickcheck = "0.9" -quickcheck_macros = "0.9" +quickcheck = "1.0" +quickcheck_macros = "1.0" diff --git a/aquatic_http_protocol/Cargo.toml b/aquatic_http_protocol/Cargo.toml index 58e6b50..fd5cbba 100644 --- a/aquatic_http_protocol/Cargo.toml +++ b/aquatic_http_protocol/Cargo.toml @@ -34,7 +34,7 @@ httparse = "1" itoa = "0.4" log = "0.4" memchr = "2" -rand = { version = "0.7", features = ["small_rng"] } +rand = { version = "0.8", features = ["small_rng"] } serde = { version = "1", features = ["derive"] } serde_bencode = "0.2" smartstring = "0.2" @@ -43,5 +43,5 @@ urlencoding = "1" [dev-dependencies] bendy = { version = "0.3", features = ["std", "serde"] } criterion = "0.3" -quickcheck = "0.9" -quickcheck_macros = "0.9" \ No newline at end of file +quickcheck = "1.0" +quickcheck_macros = "1.0" \ No newline at end of file diff --git a/aquatic_http_protocol/src/common.rs b/aquatic_http_protocol/src/common.rs index a0d5d4a..1ee1c2b 100644 --- a/aquatic_http_protocol/src/common.rs +++ b/aquatic_http_protocol/src/common.rs @@ -60,7 +60,7 @@ impl FromStr for AnnounceEvent { #[cfg(test)] impl quickcheck::Arbitrary for InfoHash { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { let mut arr = [b'0'; 20]; for byte in arr.iter_mut(){ @@ -74,7 +74,7 @@ impl quickcheck::Arbitrary for InfoHash { #[cfg(test)] impl quickcheck::Arbitrary for PeerId { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { let mut arr = [b'0'; 20]; for byte in arr.iter_mut(){ @@ -88,7 +88,7 @@ impl quickcheck::Arbitrary for PeerId { #[cfg(test)] impl quickcheck::Arbitrary for AnnounceEvent { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { match (bool::arbitrary(g), bool::arbitrary(g)){ (false, false) => Self::Started, (true, false) => Self::Started, diff --git a/aquatic_http_protocol/src/request.rs b/aquatic_http_protocol/src/request.rs index 5fde02a..c2af708 100644 --- a/aquatic_http_protocol/src/request.rs +++ b/aquatic_http_protocol/src/request.rs @@ -322,7 +322,7 @@ mod tests { } impl Arbitrary for AnnounceRequest { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut Gen) -> Self { let key: Option = Arbitrary::arbitrary(g); AnnounceRequest { @@ -339,7 +339,7 @@ mod tests { } impl Arbitrary for ScrapeRequest { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut Gen) -> Self { ScrapeRequest { info_hashes: Arbitrary::arbitrary(g), } @@ -347,7 +347,7 @@ mod tests { } impl Arbitrary for Request { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut Gen) -> Self { if Arbitrary::arbitrary(g){ Self::Announce(Arbitrary::arbitrary(g)) } else { diff --git a/aquatic_http_protocol/src/response.rs b/aquatic_http_protocol/src/response.rs index 7d3031e..b301c4a 100644 --- a/aquatic_http_protocol/src/response.rs +++ b/aquatic_http_protocol/src/response.rs @@ -192,7 +192,7 @@ impl Response { #[cfg(test)] impl quickcheck::Arbitrary for ResponsePeer { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { ip_address: Ipv4Addr::arbitrary(g), port: u16::arbitrary(g) @@ -203,7 +203,7 @@ impl quickcheck::Arbitrary for ResponsePeer { #[cfg(test)] impl quickcheck::Arbitrary for ResponsePeer { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { ip_address: Ipv6Addr::arbitrary(g), port: u16::arbitrary(g) @@ -214,7 +214,7 @@ impl quickcheck::Arbitrary for ResponsePeer { #[cfg(test)] impl quickcheck::Arbitrary for ResponsePeerListV4 { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self(Vec::arbitrary(g)) } } @@ -222,7 +222,7 @@ impl quickcheck::Arbitrary for ResponsePeerListV4 { #[cfg(test)] impl quickcheck::Arbitrary for ResponsePeerListV6 { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self(Vec::arbitrary(g)) } } @@ -230,7 +230,7 @@ impl quickcheck::Arbitrary for ResponsePeerListV6 { #[cfg(test)] impl quickcheck::Arbitrary for ScrapeStatistics { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { complete: usize::arbitrary(g), incomplete: usize::arbitrary(g), @@ -242,7 +242,7 @@ impl quickcheck::Arbitrary for ScrapeStatistics { #[cfg(test)] impl quickcheck::Arbitrary for AnnounceResponse { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { announce_interval: usize::arbitrary(g), complete: usize::arbitrary(g), @@ -256,7 +256,7 @@ impl quickcheck::Arbitrary for AnnounceResponse { #[cfg(test)] impl quickcheck::Arbitrary for ScrapeResponse { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { files: BTreeMap::arbitrary(g), } @@ -266,7 +266,7 @@ impl quickcheck::Arbitrary for ScrapeResponse { #[cfg(test)] impl quickcheck::Arbitrary for FailureResponse { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { failure_reason: String::arbitrary(g), } diff --git a/aquatic_udp/Cargo.toml b/aquatic_udp/Cargo.toml index 250a6c0..15c43b3 100644 --- a/aquatic_udp/Cargo.toml +++ b/aquatic_udp/Cargo.toml @@ -19,7 +19,7 @@ anyhow = "1" aquatic_cli_helpers = "0.1.0" aquatic_common = "0.1.0" aquatic_udp_protocol = "0.1.0" -crossbeam-channel = "0.4" +crossbeam-channel = "0.5" hashbrown = "0.9" histogram = "0.6" indexmap = "1" @@ -27,11 +27,11 @@ log = "0.4" mimalloc = { version = "0.1", default-features = false } mio = { version = "0.7", features = ["udp", "os-poll", "os-util"] } parking_lot = "0.11" -privdrop = "0.3" -rand = { version = "0.7", features = ["small_rng"] } +privdrop = "0.5" +rand = { version = "0.8", features = ["small_rng"] } serde = { version = "1", features = ["derive"] } socket2 = { version = "0.3", features = ["reuseport"] } [dev-dependencies] -quickcheck = "0.9" -quickcheck_macros = "0.9" +quickcheck = "1.0" +quickcheck_macros = "1.0" diff --git a/aquatic_udp/src/lib/handlers.rs b/aquatic_udp/src/lib/handlers.rs index aae5cdd..33c3041 100644 --- a/aquatic_udp/src/lib/handlers.rs +++ b/aquatic_udp/src/lib/handlers.rs @@ -414,17 +414,19 @@ mod tests { #[test] fn test_extract_response_peers(){ - fn prop(data: (u32, u16)) -> TestResult { - let gen_num_peers = data.0; + fn prop(data: (u16, u16)) -> TestResult { + let gen_num_peers = data.0 as u32; let req_num_peers = data.1 as usize; - let mut peer_map: PeerMap = IndexMap::new(); + let mut peer_map: PeerMap = IndexMap::with_capacity( + gen_num_peers as usize + ); let mut opt_sender_key = None; let mut opt_sender_peer = None; for i in 0..gen_num_peers { - let (key, value) = gen_peer_map_key_and_value(i); + let (key, value) = gen_peer_map_key_and_value((i << 16) + i); if i == 0 { opt_sender_key = Some(key); @@ -456,7 +458,7 @@ mod tests { // Check that returned peers are unique (no overlap) and that sender // isn't returned - let mut ip_addresses = HashSet::new(); + let mut ip_addresses = HashSet::with_capacity(peers.len()); for peer in peers { if peer == opt_sender_peer.clone().unwrap() || ip_addresses.contains(&peer.ip_address){ @@ -471,6 +473,6 @@ mod tests { TestResult::from_bool(success) } - quickcheck(prop as fn((u32, u16)) -> TestResult); + quickcheck(prop as fn((u16, u16)) -> TestResult); } } \ No newline at end of file diff --git a/aquatic_udp_bench/Cargo.toml b/aquatic_udp_bench/Cargo.toml index 782c19f..e887947 100644 --- a/aquatic_udp_bench/Cargo.toml +++ b/aquatic_udp_bench/Cargo.toml @@ -13,10 +13,10 @@ name = "aquatic_udp_bench" anyhow = "1" aquatic_cli_helpers = "0.1.0" aquatic_udp = "0.1.0" -crossbeam-channel = "0.4" +crossbeam-channel = "0.5" indicatif = "0.15" mimalloc = { version = "0.1", default-features = false } num-format = "0.4" -rand = { version = "0.7", features = ["small_rng"] } -rand_distr = "0.3" +rand = { version = "0.8", features = ["small_rng"] } +rand_distr = "0.4" serde = { version = "1", features = ["derive"] } diff --git a/aquatic_udp_load_test/Cargo.toml b/aquatic_udp_load_test/Cargo.toml index d746d68..6f4d2c0 100644 --- a/aquatic_udp_load_test/Cargo.toml +++ b/aquatic_udp_load_test/Cargo.toml @@ -13,16 +13,16 @@ name = "aquatic_udp_load_test" anyhow = "1" aquatic_cli_helpers = "0.1.0" aquatic_udp_protocol = "0.1.0" -crossbeam-channel = "0.4" +crossbeam-channel = "0.5" hashbrown = "0.9" mimalloc = { version = "0.1", default-features = false } mio = { version = "0.7", features = ["udp", "os-poll", "os-util"] } parking_lot = "0.11" -rand = { version = "0.7", features = ["small_rng"] } -rand_distr = "0.3" +rand = { version = "0.8", features = ["small_rng"] } +rand_distr = "0.4" serde = { version = "1", features = ["derive"] } socket2 = { version = "0.3", features = ["reuseport"] } [dev-dependencies] -quickcheck = "0.9" -quickcheck_macros = "0.9" +quickcheck = "1.0" +quickcheck_macros = "1.0" diff --git a/aquatic_udp_load_test/src/utils.rs b/aquatic_udp_load_test/src/utils.rs index 929b9b9..e02b712 100644 --- a/aquatic_udp_load_test/src/utils.rs +++ b/aquatic_udp_load_test/src/utils.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use rand_distr::{Standard, Pareto}; +use rand_distr::Pareto; use rand::prelude::*; use aquatic_udp_protocol::*; @@ -15,7 +15,9 @@ pub fn create_torrent_peer( info_hashes: &Arc>, connection_id: ConnectionId ) -> TorrentPeer { - let num_scape_hashes = rng.gen_range(1, config.handler.scrape_max_torrents); + let num_scape_hashes = rng.gen_range( + 1..config.handler.scrape_max_torrents + ); let mut scrape_hash_indeces = Vec::new(); @@ -82,13 +84,7 @@ pub fn create_connect_request(transaction_id: TransactionId) -> Request { fn random_20_bytes() -> [u8; 20] { let mut bytes = [0; 20]; - for (i, b) in rand::thread_rng() - .sample_iter(&Standard) - .enumerate() - .take(20) { - - bytes[i] = b - } + thread_rng().fill_bytes(&mut bytes[..]); bytes } \ No newline at end of file diff --git a/aquatic_udp_protocol/Cargo.toml b/aquatic_udp_protocol/Cargo.toml index 180efaa..e70ad78 100644 --- a/aquatic_udp_protocol/Cargo.toml +++ b/aquatic_udp_protocol/Cargo.toml @@ -11,5 +11,5 @@ repository = "https://github.com/greatest-ape/aquatic" byteorder = "1" [dev-dependencies] -quickcheck = "0.9" -quickcheck_macros = "0.9" \ No newline at end of file +quickcheck = "1.0" +quickcheck_macros = "1.0" \ No newline at end of file diff --git a/aquatic_udp_protocol/src/common.rs b/aquatic_udp_protocol/src/common.rs index 24f1026..1b36990 100644 --- a/aquatic_udp_protocol/src/common.rs +++ b/aquatic_udp_protocol/src/common.rs @@ -52,7 +52,7 @@ pub struct ResponsePeer { #[cfg(test)] impl quickcheck::Arbitrary for IpVersion { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { if bool::arbitrary(g) { IpVersion::IPv4 } else { @@ -64,7 +64,7 @@ impl quickcheck::Arbitrary for IpVersion { #[cfg(test)] impl quickcheck::Arbitrary for InfoHash { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { let mut bytes = [0u8; 20]; for byte in bytes.iter_mut() { @@ -78,7 +78,7 @@ impl quickcheck::Arbitrary for InfoHash { #[cfg(test)] impl quickcheck::Arbitrary for PeerId { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { let mut bytes = [0u8; 20]; for byte in bytes.iter_mut() { @@ -92,7 +92,7 @@ impl quickcheck::Arbitrary for PeerId { #[cfg(test)] impl quickcheck::Arbitrary for ResponsePeer { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { ip_address: ::std::net::IpAddr::arbitrary(g), port: Port(u16::arbitrary(g)), diff --git a/aquatic_udp_protocol/src/request.rs b/aquatic_udp_protocol/src/request.rs index f369d31..729fe46 100644 --- a/aquatic_udp_protocol/src/request.rs +++ b/aquatic_udp_protocol/src/request.rs @@ -292,7 +292,7 @@ mod tests { use super::*; impl quickcheck::Arbitrary for AnnounceEvent { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { match (bool::arbitrary(g), bool::arbitrary(g)){ (false, false) => Self::Started, (true, false) => Self::Started, @@ -303,7 +303,7 @@ mod tests { } impl quickcheck::Arbitrary for ConnectRequest { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { transaction_id: TransactionId(i32::arbitrary(g)), } @@ -311,7 +311,7 @@ mod tests { } impl quickcheck::Arbitrary for AnnounceRequest { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { connection_id: ConnectionId(i64::arbitrary(g)), transaction_id: TransactionId(i32::arbitrary(g)), @@ -330,7 +330,7 @@ mod tests { } impl quickcheck::Arbitrary for ScrapeRequest { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { let info_hashes = (0..u8::arbitrary(g)).map(|_| { InfoHash::arbitrary(g) }).collect(); diff --git a/aquatic_udp_protocol/src/response.rs b/aquatic_udp_protocol/src/response.rs index b17c3b2..e62e8c9 100644 --- a/aquatic_udp_protocol/src/response.rs +++ b/aquatic_udp_protocol/src/response.rs @@ -279,7 +279,7 @@ mod tests { use super::*; impl quickcheck::Arbitrary for TorrentScrapeStatistics { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { seeders: NumberOfPeers(i32::arbitrary(g)), completed: NumberOfDownloads(i32::arbitrary(g)), @@ -289,7 +289,7 @@ mod tests { } impl quickcheck::Arbitrary for ConnectResponse { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { connection_id: ConnectionId(i64::arbitrary(g)), transaction_id: TransactionId(i32::arbitrary(g)), @@ -298,7 +298,7 @@ mod tests { } impl quickcheck::Arbitrary for AnnounceResponse { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { let peers = (0..u8::arbitrary(g)).map(|_| { ResponsePeer::arbitrary(g) }).collect(); @@ -314,7 +314,7 @@ mod tests { } impl quickcheck::Arbitrary for ScrapeResponse { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { let torrent_stats = (0..u8::arbitrary(g)).map(|_| { TorrentScrapeStatistics::arbitrary(g) }).collect(); diff --git a/aquatic_ws/Cargo.toml b/aquatic_ws/Cargo.toml index d6c9501..0feb908 100644 --- a/aquatic_ws/Cargo.toml +++ b/aquatic_ws/Cargo.toml @@ -20,7 +20,7 @@ anyhow = "1" aquatic_cli_helpers = "0.1.0" aquatic_common = "0.1.0" aquatic_ws_protocol = "0.1.0" -crossbeam-channel = "0.4" +crossbeam-channel = "0.5" either = "1" hashbrown = { version = "0.9", features = ["serde"] } histogram = "0.6" @@ -30,12 +30,12 @@ mimalloc = { version = "0.1", default-features = false } mio = { version = "0.7", features = ["tcp", "os-poll", "os-util"] } native-tls = "0.2" parking_lot = "0.11" -privdrop = "0.3" -rand = { version = "0.7", features = ["small_rng"] } +privdrop = "0.5" +rand = { version = "0.8", features = ["small_rng"] } serde = { version = "1", features = ["derive"] } socket2 = { version = "0.3", features = ["reuseport"] } -tungstenite = "0.11" +tungstenite = "0.13" [dev-dependencies] -quickcheck = "0.9" -quickcheck_macros = "0.9" +quickcheck = "1.0" +quickcheck_macros = "1.0" diff --git a/aquatic_ws/src/lib/network/mod.rs b/aquatic_ws/src/lib/network/mod.rs index 6aec229..9be96c4 100644 --- a/aquatic_ws/src/lib/network/mod.rs +++ b/aquatic_ws/src/lib/network/mod.rs @@ -70,6 +70,7 @@ pub fn run_poll_loop( max_message_size: Some(config.network.websocket_max_message_size), max_frame_size: Some(config.network.websocket_max_frame_size), max_send_queue: None, + ..Default::default() }; let mut listener = TcpListener::from_std(listener); diff --git a/aquatic_ws_load_test/Cargo.toml b/aquatic_ws_load_test/Cargo.toml index c9ea7b8..90e4869 100644 --- a/aquatic_ws_load_test/Cargo.toml +++ b/aquatic_ws_load_test/Cargo.toml @@ -16,13 +16,13 @@ aquatic_ws_protocol = "0.1.0" hashbrown = { version = "0.9", features = ["serde"] } mimalloc = { version = "0.1", default-features = false } mio = { version = "0.7", features = ["udp", "os-poll", "os-util"] } -rand = { version = "0.7", features = ["small_rng"] } -rand_distr = "0.3" +rand = { version = "0.8", features = ["small_rng"] } +rand_distr = "0.4" serde = { version = "1", features = ["derive"] } serde_json = "1" slab = "0.4" -tungstenite = "0.11" +tungstenite = "0.13" [dev-dependencies] -quickcheck = "0.9" -quickcheck_macros = "0.9" +quickcheck = "1.0" +quickcheck_macros = "1.0" diff --git a/aquatic_ws_protocol/Cargo.toml b/aquatic_ws_protocol/Cargo.toml index 2660a5f..8e34e38 100644 --- a/aquatic_ws_protocol/Cargo.toml +++ b/aquatic_ws_protocol/Cargo.toml @@ -22,9 +22,9 @@ hashbrown = { version = "0.9", features = ["serde"] } serde = { version = "1", features = ["derive"] } serde_json = "1" simd-json = { version = "0.3", features = ["allow-non-simd"] } -tungstenite = "0.11" +tungstenite = "0.13" [dev-dependencies] criterion = "0.3" -quickcheck = "0.9" -quickcheck_macros = "0.9" +quickcheck = "1.0" +quickcheck_macros = "1.0" diff --git a/aquatic_ws_protocol/src/lib.rs b/aquatic_ws_protocol/src/lib.rs index c7da48d..6ee663a 100644 --- a/aquatic_ws_protocol/src/lib.rs +++ b/aquatic_ws_protocol/src/lib.rs @@ -320,7 +320,7 @@ mod tests { use super::*; - fn arbitrary_20_bytes(g: &mut G) -> [u8; 20] { + fn arbitrary_20_bytes(g: &mut quickcheck::Gen) -> [u8; 20] { let mut bytes = [0u8; 20]; for byte in bytes.iter_mut() { @@ -335,25 +335,25 @@ mod tests { } impl Arbitrary for InfoHash { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self(arbitrary_20_bytes(g)) } } impl Arbitrary for PeerId { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self(arbitrary_20_bytes(g)) } } impl Arbitrary for OfferId { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self(arbitrary_20_bytes(g)) } } impl Arbitrary for AnnounceEvent { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { match (bool::arbitrary(g), bool::arbitrary(g)){ (false, false) => Self::Started, (true, false) => Self::Started, @@ -364,7 +364,7 @@ mod tests { } impl Arbitrary for MiddlemanOfferToPeer { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { action: AnnounceAction, peer_id: Arbitrary::arbitrary(g), @@ -376,7 +376,7 @@ mod tests { } impl Arbitrary for MiddlemanAnswerToPeer { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { action: AnnounceAction, peer_id: Arbitrary::arbitrary(g), @@ -388,7 +388,7 @@ mod tests { } impl Arbitrary for AnnounceRequestOffer { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { offer_id: Arbitrary::arbitrary(g), offer: sdp_json_value() @@ -397,7 +397,7 @@ mod tests { } impl Arbitrary for AnnounceRequest { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { let has_offers_or_answer_or_neither: Option = Arbitrary::arbitrary(g); let mut offers: Option> = None; @@ -436,7 +436,7 @@ mod tests { } impl Arbitrary for AnnounceResponse { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { action: AnnounceAction, info_hash: Arbitrary::arbitrary(g), @@ -448,7 +448,7 @@ mod tests { } impl Arbitrary for ScrapeRequest { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { action: ScrapeAction, info_hashes: Arbitrary::arbitrary(g), @@ -458,7 +458,7 @@ mod tests { impl Arbitrary for ScrapeRequestInfoHashes { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { if Arbitrary::arbitrary(g) { ScrapeRequestInfoHashes::Multiple(Arbitrary::arbitrary(g)) } else { @@ -468,7 +468,7 @@ mod tests { } impl Arbitrary for ScrapeStatistics { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { Self { complete: Arbitrary::arbitrary(g), incomplete: Arbitrary::arbitrary(g), @@ -478,7 +478,7 @@ mod tests { } impl Arbitrary for ScrapeResponse { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { let files: Vec<(InfoHash, ScrapeStatistics)> = Arbitrary::arbitrary(g); Self { @@ -489,7 +489,7 @@ mod tests { } impl Arbitrary for InMessage { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { if Arbitrary::arbitrary(g){ Self::AnnounceRequest(Arbitrary::arbitrary(g)) } else { @@ -499,7 +499,7 @@ mod tests { } impl Arbitrary for OutMessage { - fn arbitrary(g: &mut G) -> Self { + fn arbitrary(g: &mut quickcheck::Gen) -> Self { match (Arbitrary::arbitrary(g), Arbitrary::arbitrary(g)){ (false, false) => Self::AnnounceResponse(Arbitrary::arbitrary(g)), (true, false) => Self::ScrapeResponse(Arbitrary::arbitrary(g)),