Browse Source

[xitca-web]add real world io_uring bench. (#8175)

* [xitca-web]add real world io_uring bench.

* fix wasi target build.

* use correct tokio_uring api for sliced reading.
fakeshadow 2 years ago
parent
commit
8fa172de85

+ 198 - 73
frameworks/Rust/xitca-web/Cargo.lock

@@ -10,7 +10,7 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.13",
+ "syn 2.0.15",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -75,9 +75,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 
 [[package]]
 [[package]]
 name = "cpufeatures"
 name = "cpufeatures"
-version = "0.2.6"
+version = "0.2.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181"
+checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58"
 dependencies = [
 dependencies = [
  "libc",
  "libc",
 ]
 ]
@@ -94,9 +94,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "diesel"
 name = "diesel"
-version = "2.0.3"
+version = "2.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4391a22b19c916e50bec4d6140f29bdda3e3bb187223fe6e3ea0b6e4d1021c04"
+checksum = "72eb77396836a4505da85bae0712fa324b74acfe1876d7c2f7e694ef3d0ee373"
 dependencies = [
 dependencies = [
  "bitflags",
  "bitflags",
  "byteorder",
  "byteorder",
@@ -106,9 +106,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "diesel-async"
 name = "diesel-async"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67d310b8050b1068b32fd03c55bd73f8d9ef5a789e2443c5b4e92f4587c63ed3"
+checksum = "5897424d8409385a0cc83d64a44527d15bedb5e3797b65f99daf46374eb6df8e"
 dependencies = [
 dependencies = [
  "async-trait",
  "async-trait",
  "diesel",
  "diesel",
@@ -149,14 +149,14 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
 
 
 [[package]]
 [[package]]
 name = "filetime"
 name = "filetime"
-version = "0.2.20"
+version = "0.2.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a3de6e8d11b22ff9edc6d916f890800597d60f8b2da1caf2955c274638d6412"
+checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153"
 dependencies = [
 dependencies = [
  "cfg-if",
  "cfg-if",
  "libc",
  "libc",
  "redox_syscall",
  "redox_syscall",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -221,7 +221,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.13",
+ "syn 2.0.15",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -266,15 +266,21 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "getrandom"
 name = "getrandom"
-version = "0.2.8"
+version = "0.2.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4"
 dependencies = [
 dependencies = [
  "cfg-if",
  "cfg-if",
  "libc",
  "libc",
  "wasi",
  "wasi",
 ]
 ]
 
 
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
 [[package]]
 [[package]]
 name = "hermit-abi"
 name = "hermit-abi"
 version = "0.2.6"
 version = "0.2.6"
@@ -295,11 +301,11 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "home"
 name = "home"
-version = "0.5.4"
+version = "0.5.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "747309b4b440c06d57b0b25f2aee03ee9b5e5397d288c60e21fc709bb98a7408"
+checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
 dependencies = [
 dependencies = [
- "winapi",
+ "windows-sys 0.48.0",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -325,6 +331,16 @@ version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
 checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
 
 
+[[package]]
+name = "indexmap"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+dependencies = [
+ "autocfg",
+ "hashbrown",
+]
+
 [[package]]
 [[package]]
 name = "io-uring"
 name = "io-uring"
 version = "0.5.13"
 version = "0.5.13"
@@ -349,15 +365,15 @@ checksum = "9028f49264629065d057f340a86acb84867925865f73bbf8d47b4d149a7e88b8"
 
 
 [[package]]
 [[package]]
 name = "libc"
 name = "libc"
-version = "0.2.140"
+version = "0.2.142"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
+checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317"
 
 
 [[package]]
 [[package]]
 name = "libmimalloc-sys"
 name = "libmimalloc-sys"
-version = "0.1.31"
+version = "0.1.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef2c45001fb108f37d41bed8efd715769acb14674c1ce3e266ef0e317ef5f877"
+checksum = "f4ac0e912c8ef1b735e92369695618dc5b1819f5a7bf3f167301a3ba1cea515e"
 dependencies = [
 dependencies = [
  "cc",
  "cc",
  "libc",
  "libc",
@@ -399,9 +415,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
 
 
 [[package]]
 [[package]]
 name = "mimalloc"
 name = "mimalloc"
-version = "0.1.35"
+version = "0.1.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92666043c712f7f5c756d07443469ddcda6dd971cc15258bb7f3c3216fd1b7aa"
+checksum = "4e2894987a3459f3ffb755608bd82188f8ed00d0ae077f1edea29c068d639d98"
 dependencies = [
 dependencies = [
  "libmimalloc-sys",
  "libmimalloc-sys",
 ]
 ]
@@ -414,7 +430,7 @@ dependencies = [
  "libc",
  "libc",
  "log",
  "log",
  "wasi",
  "wasi",
- "windows-sys",
+ "windows-sys 0.45.0",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -468,7 +484,7 @@ dependencies = [
  "libc",
  "libc",
  "redox_syscall",
  "redox_syscall",
  "smallvec",
  "smallvec",
- "windows-sys",
+ "windows-sys 0.45.0",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -631,9 +647,9 @@ checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
 
 
 [[package]]
 [[package]]
 name = "sailfish"
 name = "sailfish"
-version = "0.6.0"
+version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd1369644089e936dea5df0d6201636e2b6eb2e9ad098efb2eca5606ece3fab7"
+checksum = "29a48cead573ab494535cd9f24838a721a613e5da899ee974c8e2fdbb3d60222"
 dependencies = [
 dependencies = [
  "itoap",
  "itoap",
  "ryu",
  "ryu",
@@ -643,9 +659,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "sailfish-compiler"
 name = "sailfish-compiler"
-version = "0.6.0"
+version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "761019f0de360c654d51e068f07acfa8677e9566391ca290e1ab7c53a55d8d02"
+checksum = "f26deb100e96e303d266d1852525b1da033678ed9eabd539f5ed5eba01333394"
 dependencies = [
 dependencies = [
  "filetime",
  "filetime",
  "home",
  "home",
@@ -653,15 +669,15 @@ dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
  "serde",
  "serde",
- "syn 1.0.109",
+ "syn 2.0.15",
  "toml",
  "toml",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "sailfish-macros"
 name = "sailfish-macros"
-version = "0.6.0"
+version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dad9a1a51d085aa939115cf537c71b1e438de7d27363a039ce525bf393262303"
+checksum = "41162f9a79f2541458a1cf20f8d81d55bb2bcbdd03d295c29765d9bcb43188c9"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "sailfish-compiler",
  "sailfish-compiler",
@@ -691,35 +707,44 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
 
 
 [[package]]
 [[package]]
 name = "serde"
 name = "serde"
-version = "1.0.159"
+version = "1.0.160"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065"
+checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c"
 dependencies = [
 dependencies = [
  "serde_derive",
  "serde_derive",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "serde_derive"
 name = "serde_derive"
-version = "1.0.159"
+version = "1.0.160"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585"
+checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
- "syn 2.0.13",
+ "syn 2.0.15",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "serde_json"
 name = "serde_json"
-version = "1.0.95"
+version = "1.0.96"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744"
+checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1"
 dependencies = [
 dependencies = [
  "itoa",
  "itoa",
  "ryu",
  "ryu",
  "serde",
  "serde",
 ]
 ]
 
 
+[[package]]
+name = "serde_spanned"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4"
+dependencies = [
+ "serde",
+]
+
 [[package]]
 [[package]]
 name = "sha2"
 name = "sha2"
 version = "0.10.6"
 version = "0.10.6"
@@ -773,12 +798,12 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "socket2"
 name = "socket2"
-version = "0.5.1"
+version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc8d618c6641ae355025c449427f9e96b98abf99a772be3cef6708d15c77147a"
+checksum = "6d283f86695ae989d1e18440a943880967156325ba025f05049946bff47bcc2b"
 dependencies = [
 dependencies = [
  "libc",
  "libc",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -810,9 +835,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "syn"
 name = "syn"
-version = "2.0.13"
+version = "2.0.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec"
+checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
@@ -842,9 +867,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 
 [[package]]
 [[package]]
 name = "tokio"
 name = "tokio"
-version = "1.27.0"
+version = "1.28.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001"
+checksum = "c3c786bf8134e5a3a166db9b29ab8f48134739014a3eca7bc6bfa95d673b136f"
 dependencies = [
 dependencies = [
  "autocfg",
  "autocfg",
  "bytes",
  "bytes",
@@ -854,7 +879,7 @@ dependencies = [
  "pin-project-lite",
  "pin-project-lite",
  "signal-hook-registry",
  "signal-hook-registry",
  "socket2 0.4.9",
  "socket2 0.4.9",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -876,7 +901,7 @@ dependencies = [
  "pin-project-lite",
  "pin-project-lite",
  "postgres-protocol",
  "postgres-protocol",
  "postgres-types",
  "postgres-types",
- "socket2 0.5.1",
+ "socket2 0.5.2",
  "tokio",
  "tokio",
  "tokio-util",
  "tokio-util",
 ]
 ]
@@ -898,9 +923,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "tokio-util"
 name = "tokio-util"
-version = "0.7.7"
+version = "0.7.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2"
+checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d"
 dependencies = [
 dependencies = [
  "bytes",
  "bytes",
  "futures-core",
  "futures-core",
@@ -912,20 +937,44 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "toml"
 name = "toml"
-version = "0.5.11"
+version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21"
 dependencies = [
 dependencies = [
  "serde",
  "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "tracing"
 name = "tracing"
-version = "0.1.37"
+version = "0.1.38"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+checksum = "cf9cf6a813d3f40c88b0b6b6f29a5c95c6cdbf97c1f9cc53fb820200f5ad814d"
 dependencies = [
 dependencies = [
- "cfg-if",
  "pin-project-lite",
  "pin-project-lite",
  "tracing-core",
  "tracing-core",
 ]
 ]
@@ -1006,7 +1055,16 @@ version = "0.45.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
 checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
 dependencies = [
 dependencies = [
- "windows-targets",
+ "windows-targets 0.42.2",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.0",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -1015,13 +1073,28 @@ version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
 checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
 dependencies = [
 dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.42.2",
+ "windows_aarch64_msvc 0.42.2",
+ "windows_i686_gnu 0.42.2",
+ "windows_i686_msvc 0.42.2",
+ "windows_x86_64_gnu 0.42.2",
+ "windows_x86_64_gnullvm 0.42.2",
+ "windows_x86_64_msvc 0.42.2",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.0",
+ "windows_aarch64_msvc 0.48.0",
+ "windows_i686_gnu 0.48.0",
+ "windows_i686_msvc 0.48.0",
+ "windows_x86_64_gnu 0.48.0",
+ "windows_x86_64_gnullvm 0.48.0",
+ "windows_x86_64_msvc 0.48.0",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -1030,46 +1103,97 @@ version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
 checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
 
 
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+
 [[package]]
 [[package]]
 name = "windows_aarch64_msvc"
 name = "windows_aarch64_msvc"
 version = "0.42.2"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
 checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
 
 
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+
 [[package]]
 [[package]]
 name = "windows_i686_gnu"
 name = "windows_i686_gnu"
 version = "0.42.2"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
 checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
 
 
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+
 [[package]]
 [[package]]
 name = "windows_i686_msvc"
 name = "windows_i686_msvc"
 version = "0.42.2"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
 checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
 
 
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+
 [[package]]
 [[package]]
 name = "windows_x86_64_gnu"
 name = "windows_x86_64_gnu"
 version = "0.42.2"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
 checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
 
 
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+
 [[package]]
 [[package]]
 name = "windows_x86_64_gnullvm"
 name = "windows_x86_64_gnullvm"
 version = "0.42.2"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
 checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
 
 
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+
 [[package]]
 [[package]]
 name = "windows_x86_64_msvc"
 name = "windows_x86_64_msvc"
 version = "0.42.2"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
 checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
 
 
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+
+[[package]]
+name = "winnow"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28"
+dependencies = [
+ "memchr",
+]
+
 [[package]]
 [[package]]
 name = "xitca-http"
 name = "xitca-http"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=d3e9a4fb6b16513ff638f43305c9c96cdb3501b2#d3e9a4fb6b16513ff638f43305c9c96cdb3501b2"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf#5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf"
 dependencies = [
 dependencies = [
  "futures-core",
  "futures-core",
  "http",
  "http",
@@ -1077,8 +1201,9 @@ dependencies = [
  "httpdate",
  "httpdate",
  "itoa",
  "itoa",
  "pin-project-lite",
  "pin-project-lite",
- "socket2 0.5.1",
+ "socket2 0.5.2",
  "tokio",
  "tokio",
+ "tokio-uring",
  "tracing",
  "tracing",
  "xitca-io",
  "xitca-io",
  "xitca-router",
  "xitca-router",
@@ -1089,7 +1214,7 @@ dependencies = [
 [[package]]
 [[package]]
 name = "xitca-io"
 name = "xitca-io"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=d3e9a4fb6b16513ff638f43305c9c96cdb3501b2#d3e9a4fb6b16513ff638f43305c9c96cdb3501b2"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf#5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf"
 dependencies = [
 dependencies = [
  "bytes",
  "bytes",
  "tokio",
  "tokio",
@@ -1099,7 +1224,7 @@ dependencies = [
 [[package]]
 [[package]]
 name = "xitca-postgres"
 name = "xitca-postgres"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=d3e9a4fb6b16513ff638f43305c9c96cdb3501b2#d3e9a4fb6b16513ff638f43305c9c96cdb3501b2"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf#5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf"
 dependencies = [
 dependencies = [
  "fallible-iterator",
  "fallible-iterator",
  "percent-encoding",
  "percent-encoding",
@@ -1115,7 +1240,7 @@ dependencies = [
 [[package]]
 [[package]]
 name = "xitca-router"
 name = "xitca-router"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=d3e9a4fb6b16513ff638f43305c9c96cdb3501b2#d3e9a4fb6b16513ff638f43305c9c96cdb3501b2"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf#5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf"
 dependencies = [
 dependencies = [
  "xitca-unsafe-collection",
  "xitca-unsafe-collection",
 ]
 ]
@@ -1123,9 +1248,9 @@ dependencies = [
 [[package]]
 [[package]]
 name = "xitca-server"
 name = "xitca-server"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=d3e9a4fb6b16513ff638f43305c9c96cdb3501b2#d3e9a4fb6b16513ff638f43305c9c96cdb3501b2"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf#5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf"
 dependencies = [
 dependencies = [
- "socket2 0.5.1",
+ "socket2 0.5.2",
  "tokio",
  "tokio",
  "tokio-uring",
  "tokio-uring",
  "tracing",
  "tracing",
@@ -1137,12 +1262,12 @@ dependencies = [
 [[package]]
 [[package]]
 name = "xitca-service"
 name = "xitca-service"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=d3e9a4fb6b16513ff638f43305c9c96cdb3501b2#d3e9a4fb6b16513ff638f43305c9c96cdb3501b2"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf#5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf"
 
 
 [[package]]
 [[package]]
 name = "xitca-unsafe-collection"
 name = "xitca-unsafe-collection"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=d3e9a4fb6b16513ff638f43305c9c96cdb3501b2#d3e9a4fb6b16513ff638f43305c9c96cdb3501b2"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf#5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf"
 dependencies = [
 dependencies = [
  "bytes",
  "bytes",
 ]
 ]
@@ -1169,13 +1294,13 @@ dependencies = [
  "xitca-server",
  "xitca-server",
  "xitca-service",
  "xitca-service",
  "xitca-unsafe-collection",
  "xitca-unsafe-collection",
- "xitca-web 0.1.0 (git+https://github.com/HFQR/xitca-web.git?rev=d3e9a4fb6b16513ff638f43305c9c96cdb3501b2)",
+ "xitca-web 0.1.0 (git+https://github.com/HFQR/xitca-web.git?rev=5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf)",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "xitca-web"
 name = "xitca-web"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/HFQR/xitca-web.git?rev=d3e9a4fb6b16513ff638f43305c9c96cdb3501b2#d3e9a4fb6b16513ff638f43305c9c96cdb3501b2"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf#5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf"
 dependencies = [
 dependencies = [
  "futures-core",
  "futures-core",
  "pin-project-lite",
  "pin-project-lite",

+ 10 - 10
frameworks/Rust/xitca-web/Cargo.toml

@@ -6,7 +6,7 @@ edition = "2021"
 [[bin]]
 [[bin]]
 name = "xitca-web"
 name = "xitca-web"
 path = "./src/main.rs"
 path = "./src/main.rs"
-required-features = ["pg", "serde", "template"]
+required-features = ["io-uring", "pg", "serde", "template"]
 
 
 [[bin]]
 [[bin]]
 name = "xitca-web-diesel"
 name = "xitca-web-diesel"
@@ -40,7 +40,7 @@ web = ["xitca-web"]
 # template optional
 # template optional
 template = ["sailfish"]
 template = ["sailfish"]
 # io-uring optional
 # io-uring optional
-io-uring = ["tokio-uring", "xitca-server/io-uring"]
+io-uring = ["tokio-uring", "xitca-http/io-uring", "xitca-server/io-uring"]
 
 
 [dependencies]
 [dependencies]
 xitca-http = { version = "0.1", features = ["util-service"] }
 xitca-http = { version = "0.1", features = ["util-service"] }
@@ -86,13 +86,13 @@ codegen-units = 1
 panic = "abort"
 panic = "abort"
 
 
 [patch.crates-io]
 [patch.crates-io]
-xitca-http = { git = "https://github.com/HFQR/xitca-web.git", rev = "d3e9a4fb6b16513ff638f43305c9c96cdb3501b2" }
-xitca-io = { git = "https://github.com/HFQR/xitca-web.git", rev = "d3e9a4fb6b16513ff638f43305c9c96cdb3501b2" }
-xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "d3e9a4fb6b16513ff638f43305c9c96cdb3501b2" }
-xitca-router = { git = "https://github.com/HFQR/xitca-web.git", rev = "d3e9a4fb6b16513ff638f43305c9c96cdb3501b2" }
-xitca-server = { git = "https://github.com/HFQR/xitca-web.git", rev = "d3e9a4fb6b16513ff638f43305c9c96cdb3501b2" }
-xitca-service = { git = "https://github.com/HFQR/xitca-web.git", rev = "d3e9a4fb6b16513ff638f43305c9c96cdb3501b2" }
-xitca-unsafe-collection = { git = "https://github.com/HFQR/xitca-web.git", rev = "d3e9a4fb6b16513ff638f43305c9c96cdb3501b2" }
-xitca-web = { git = "https://github.com/HFQR/xitca-web.git", rev = "d3e9a4fb6b16513ff638f43305c9c96cdb3501b2" }
+xitca-http = { git = "https://github.com/HFQR/xitca-web.git", rev = "5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf" }
+xitca-io = { git = "https://github.com/HFQR/xitca-web.git", rev = "5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf" }
+xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf" }
+xitca-router = { git = "https://github.com/HFQR/xitca-web.git", rev = "5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf" }
+xitca-server = { git = "https://github.com/HFQR/xitca-web.git", rev = "5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf" }
+xitca-service = { git = "https://github.com/HFQR/xitca-web.git", rev = "5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf" }
+xitca-unsafe-collection = { git = "https://github.com/HFQR/xitca-web.git", rev = "5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf" }
+xitca-web = { git = "https://github.com/HFQR/xitca-web.git", rev = "5f5ff12c8c33796c8b76f0f56b3e3dd33f6efdaf" }
 
 
 mio = { git = "https://github.com/fakeshadow/mio.git", rev = "4272250caed2f460f7be646d0fd25d53d267eb53" }
 mio = { git = "https://github.com/fakeshadow/mio.git", rev = "4272250caed2f460f7be646d0fd25d53d267eb53" }

+ 1 - 1
frameworks/Rust/xitca-web/rust-toolchain.toml

@@ -1,2 +1,2 @@
 [toolchain]
 [toolchain]
-channel = "nightly-2023-04-03"
+channel = "nightly-2023-04-25"

+ 8 - 3
frameworks/Rust/xitca-web/src/db.rs

@@ -1,4 +1,9 @@
-use std::{cell::RefCell, collections::HashMap, fmt::Write, future::Future};
+use std::{
+    cell::RefCell,
+    collections::HashMap,
+    fmt::Write,
+    future::{Future, IntoFuture},
+};
 
 
 use futures_util::stream::{FuturesUnordered, TryStreamExt};
 use futures_util::stream::{FuturesUnordered, TryStreamExt};
 use xitca_postgres::{statement::Statement, AsyncIterator, Postgres, ToSql};
 use xitca_postgres::{statement::Statement, AsyncIterator, Postgres, ToSql};
@@ -28,9 +33,9 @@ impl Drop for Client {
 }
 }
 
 
 pub async fn create(config: &str) -> HandleResult<Client> {
 pub async fn create(config: &str) -> HandleResult<Client> {
-    let (client, bg_task) = Postgres::new(config.to_string()).connect().await?;
+    let (client, driver) = Postgres::new(config.to_string()).connect().await?;
 
 
-    tokio::task::spawn_local(bg_task);
+    tokio::task::spawn_local(driver.into_future());
 
 
     let fortune = client.prepare("SELECT * FROM fortune", &[]).await?.leak();
     let fortune = client.prepare("SELECT * FROM fortune", &[]).await?.leak();
 
 

+ 14 - 6
frameworks/Rust/xitca-web/src/main_iou.rs

@@ -2,7 +2,7 @@
 // network io.
 // network io.
 
 
 #![allow(dead_code)]
 #![allow(dead_code)]
-#![feature(type_alias_impl_trait)]
+#![feature(impl_trait_in_assoc_type)]
 
 
 #[global_allocator]
 #[global_allocator]
 static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;
 static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;
@@ -168,19 +168,27 @@ where
 
 
             #[cfg(feature = "io-uring")]
             #[cfg(feature = "io-uring")]
             {
             {
+                use tokio_uring::buf::IoBuf;
+
                 let std = stream.into_std()?;
                 let std = stream.into_std()?;
                 let stream = tokio_uring::net::TcpStream::from_std(std);
                 let stream = tokio_uring::net::TcpStream::from_std(std);
 
 
-                let mut read_buf = vec![0; 4096];
-
                 'io: loop {
                 'io: loop {
-                    let (res, buf) = stream.read(read_buf).await;
+                    let mut buf = paged.into_inner();
+
+                    let len = buf.len();
+                    let rem = buf.capacity() - len;
+
+                    if rem < 4096 {
+                        buf.reserve(4096 - rem);
+                    }
+
+                    let (res, buf) = stream.read(buf.slice(len..)).await;
                     let n = res?;
                     let n = res?;
                     if n == 0 {
                     if n == 0 {
                         break;
                         break;
                     }
                     }
-                    read_buf = buf;
-                    paged.get_mut().extend_from_slice(&read_buf[..n]);
+                    paged = PagedBytesMut::from(buf.into_inner());
 
 
                     request_handler(&mut ctx, &self.service, &mut paged, &mut write_buf).await;
                     request_handler(&mut ctx, &self.service, &mut paged, &mut write_buf).await;
 
 

+ 1 - 1
frameworks/Rust/xitca-web/xitca-web.dockerfile

@@ -3,7 +3,7 @@ FROM rust:latest
 ADD ./ /xitca-web
 ADD ./ /xitca-web
 WORKDIR /xitca-web
 WORKDIR /xitca-web
 
 
-RUN cargo build --release --bin xitca-web --features pg,serde,template
+RUN cargo build --release --bin xitca-web --features io-uring,pg,serde,template
 
 
 EXPOSE 8080
 EXPOSE 8080