Browse Source

[xitca-web]add plaintext bench for wasm32-wasi target. (#7571)

* add plaintext bench for wasm32-wasi target.

* fix bench config and dockerfile.
fakeshadow 3 years ago
parent
commit
77df44d356

+ 216 - 210
frameworks/Rust/xitca-web/Cargo.lock

@@ -8,7 +8,6 @@ version = "0.7.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
 checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
 dependencies = [
 dependencies = [
- "const-random",
  "getrandom",
  "getrandom",
  "once_cell",
  "once_cell",
  "version_check",
  "version_check",
@@ -27,18 +26,18 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "atoi"
 name = "atoi"
-version = "0.4.0"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "616896e05fc0e2649463a93a15183c6a16bf03413a7af88ef1285ddedfa9cda5"
+checksum = "d7c57d12312ff59c811c0643f4d80830505833c9ffaebd193d819392b265be8e"
 dependencies = [
 dependencies = [
  "num-traits",
  "num-traits",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "autocfg"
 name = "autocfg"
-version = "1.0.1"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
 
 
 [[package]]
 [[package]]
 name = "base64"
 name = "base64"
@@ -54,9 +53,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 
 [[package]]
 [[package]]
 name = "block-buffer"
 name = "block-buffer"
-version = "0.9.0"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
+checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
 dependencies = [
 dependencies = [
  "generic-array",
  "generic-array",
 ]
 ]
@@ -69,9 +68,15 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
 
 
 [[package]]
 [[package]]
 name = "bytes"
 name = "bytes"
-version = "1.1.0"
+version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
+checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db"
+
+[[package]]
+name = "cache-padded"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
 
 
 [[package]]
 [[package]]
 name = "cc"
 name = "cc"
@@ -85,28 +90,6 @@ version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 
-[[package]]
-name = "const-random"
-version = "0.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f590d95d011aa80b063ffe3253422ed5aa462af4e9867d43ce8337562bac77c4"
-dependencies = [
- "const-random-macro",
- "proc-macro-hack",
-]
-
-[[package]]
-name = "const-random-macro"
-version = "0.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "615f6e27d000a2bffbc7f2f6a8669179378fa27ee4d0a509e985dfc0a7defb40"
-dependencies = [
- "getrandom",
- "lazy_static",
- "proc-macro-hack",
- "tiny-keccak",
-]
-
 [[package]]
 [[package]]
 name = "core_affinity"
 name = "core_affinity"
 version = "0.5.10"
 version = "0.5.10"
@@ -129,36 +112,30 @@ dependencies = [
 ]
 ]
 
 
 [[package]]
 [[package]]
-name = "crunchy"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
-
-[[package]]
-name = "crypto-mac"
-version = "0.11.1"
+name = "crypto-common"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
 dependencies = [
 dependencies = [
  "generic-array",
  "generic-array",
- "subtle",
+ "typenum",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "diesel"
 name = "diesel"
-version = "2.0.0"
-source = "git+https://github.com/diesel-rs/diesel.git?rev=37ec18f46ced2d6e9197414156fdb705d7a61426#37ec18f46ced2d6e9197414156fdb705d7a61426"
+version = "2.0.0-rc.0"
+source = "git+https://github.com/diesel-rs/diesel.git?rev=53a4157776d4320fffc11fe73779cc53702843d6#53a4157776d4320fffc11fe73779cc53702843d6"
 dependencies = [
 dependencies = [
  "bitflags",
  "bitflags",
  "byteorder",
  "byteorder",
  "diesel_derives",
  "diesel_derives",
- "itoa",
+ "itoa 1.0.3",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "diesel-async"
 name = "diesel-async"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/weiznich/diesel_async.git?rev=06b3416826dbc8ce404f6d613daea989b23549ca#06b3416826dbc8ce404f6d613daea989b23549ca"
+source = "git+https://github.com/weiznich/diesel_async.git?rev=3c9e976c1c30d3aa3d0751b89f72b2ce43869c4f#3c9e976c1c30d3aa3d0751b89f72b2ce43869c4f"
 dependencies = [
 dependencies = [
  "async-trait",
  "async-trait",
  "diesel",
  "diesel",
@@ -169,8 +146,8 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "diesel_derives"
 name = "diesel_derives"
-version = "2.0.0"
-source = "git+https://github.com/diesel-rs/diesel.git?rev=37ec18f46ced2d6e9197414156fdb705d7a61426#37ec18f46ced2d6e9197414156fdb705d7a61426"
+version = "2.0.0-rc.0"
+source = "git+https://github.com/diesel-rs/diesel.git?rev=53a4157776d4320fffc11fe73779cc53702843d6#53a4157776d4320fffc11fe73779cc53702843d6"
 dependencies = [
 dependencies = [
  "proc-macro-error",
  "proc-macro-error",
  "proc-macro2",
  "proc-macro2",
@@ -180,11 +157,13 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "digest"
 name = "digest"
-version = "0.9.0"
+version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
+checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
 dependencies = [
 dependencies = [
- "generic-array",
+ "block-buffer",
+ "crypto-common",
+ "subtle",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -327,7 +306,7 @@ checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
 dependencies = [
 dependencies = [
  "cfg-if",
  "cfg-if",
  "libc",
  "libc",
- "wasi",
+ "wasi 0.10.2+wasi-snapshot-preview1",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -360,11 +339,10 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "hmac"
 name = "hmac"
-version = "0.11.0"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
 dependencies = [
- "crypto-mac",
  "digest",
  "digest",
 ]
 ]
 
 
@@ -379,13 +357,13 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "http"
 name = "http"
-version = "0.2.5"
+version = "0.2.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b"
+checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399"
 dependencies = [
 dependencies = [
  "bytes",
  "bytes",
  "fnv",
  "fnv",
- "itoa",
+ "itoa 1.0.3",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -415,6 +393,12 @@ version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
 checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
 
 
+[[package]]
+name = "itoa"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754"
+
 [[package]]
 [[package]]
 name = "itoap"
 name = "itoap"
 version = "1.0.1"
 version = "1.0.1"
@@ -431,33 +415,21 @@ dependencies = [
  "winapi-build",
  "winapi-build",
 ]
 ]
 
 
-[[package]]
-name = "lazy_static"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-
 [[package]]
 [[package]]
 name = "libc"
 name = "libc"
-version = "0.2.108"
+version = "0.2.132"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8521a1b57e76b1ec69af7599e75e38e7b7fad6610f037db8c79b127201b5d119"
+checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5"
 
 
 [[package]]
 [[package]]
 name = "libmimalloc-sys"
 name = "libmimalloc-sys"
-version = "0.1.23"
+version = "0.1.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9636c194f9db483f4d0adf2f99a65011a99f904bd222bbd67fb4df4f37863c30"
+checksum = "11ca136052550448f55df7898c6dbe651c6b574fe38a0d9ea687a9f8088a2e2c"
 dependencies = [
 dependencies = [
  "cc",
  "cc",
 ]
 ]
 
 
-[[package]]
-name = "linked-hash-map"
-version = "0.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
-
 [[package]]
 [[package]]
 name = "lock_api"
 name = "lock_api"
 version = "0.4.5"
 version = "0.4.5"
@@ -478,19 +450,17 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "matchit"
 name = "matchit"
-version = "0.4.6"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9376a4f0340565ad675d11fc1419227faf5f60cd7ac9cb2e7185a471f30af833"
+checksum = "3dfc802da7b1cf80aefffa0c7b2f77247c8b32206cc83c270b61264f5b360a80"
 
 
 [[package]]
 [[package]]
 name = "md-5"
 name = "md-5"
-version = "0.9.1"
+version = "0.10.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15"
+checksum = "66b48670c893079d3c2ed79114e3644b7004df1c361a4e0ad52e2e6940d07c3d"
 dependencies = [
 dependencies = [
- "block-buffer",
  "digest",
  "digest",
- "opaque-debug",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -501,42 +471,23 @@ checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
 
 
 [[package]]
 [[package]]
 name = "mimalloc"
 name = "mimalloc"
-version = "0.1.27"
+version = "0.1.29"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf5f78c1d9892fb5677a8b2f543f967ab891ac0f71feecd961435b74f877283a"
+checksum = "2f64ad83c969af2e732e907564deb0d0ed393cec4af80776f77dd77a1a427698"
 dependencies = [
 dependencies = [
  "libmimalloc-sys",
  "libmimalloc-sys",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "mio"
 name = "mio"
-version = "0.7.14"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc"
+checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf"
 dependencies = [
 dependencies = [
  "libc",
  "libc",
  "log",
  "log",
- "miow",
- "ntapi",
- "winapi 0.3.9",
-]
-
-[[package]]
-name = "miow"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
-dependencies = [
- "winapi 0.3.9",
-]
-
-[[package]]
-name = "ntapi"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44"
-dependencies = [
- "winapi 0.3.9",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+ "windows-sys",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -564,12 +515,6 @@ version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56"
 checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56"
 
 
-[[package]]
-name = "opaque-debug"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
-
 [[package]]
 [[package]]
 name = "parking_lot"
 name = "parking_lot"
 version = "0.11.2"
 version = "0.11.2"
@@ -621,9 +566,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "pin-project-lite"
 name = "pin-project-lite"
-version = "0.2.7"
+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 = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
+checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
 
 
 [[package]]
 [[package]]
 name = "pin-utils"
 name = "pin-utils"
@@ -633,9 +578,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 
 
 [[package]]
 [[package]]
 name = "postgres-protocol"
 name = "postgres-protocol"
-version = "0.6.2"
+version = "0.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b145e6a4ed52cb316a27787fc20fe8a25221cb476479f61e4e0327c15b98d91a"
+checksum = "878c6cbf956e03af9aa8204b407b9cbf47c072164800aa918c516cd4b056c50c"
 dependencies = [
 dependencies = [
  "base64",
  "base64",
  "byteorder",
  "byteorder",
@@ -651,9 +596,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "postgres-types"
 name = "postgres-types"
-version = "0.2.2"
+version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04619f94ba0cc80999f4fc7073607cb825bc739a883cb6d20900fc5e009d6b0d"
+checksum = "73d946ec7d256b04dfadc4e6a3292324e6f417124750fc5c0950f981b703a0f1"
 dependencies = [
 dependencies = [
  "bytes",
  "bytes",
  "fallible-iterator",
  "fallible-iterator",
@@ -690,12 +635,6 @@ dependencies = [
  "version_check",
  "version_check",
 ]
 ]
 
 
-[[package]]
-name = "proc-macro-hack"
-version = "0.5.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
-
 [[package]]
 [[package]]
 name = "proc-macro2"
 name = "proc-macro2"
 version = "1.0.36"
 version = "1.0.36"
@@ -716,14 +655,13 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "rand"
 name = "rand"
-version = "0.8.4"
+version = "0.8.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
 dependencies = [
 dependencies = [
  "libc",
  "libc",
  "rand_chacha",
  "rand_chacha",
  "rand_core",
  "rand_core",
- "rand_hc",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -745,15 +683,6 @@ dependencies = [
  "getrandom",
  "getrandom",
 ]
 ]
 
 
-[[package]]
-name = "rand_hc"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7"
-dependencies = [
- "rand_core",
-]
-
 [[package]]
 [[package]]
 name = "redox_syscall"
 name = "redox_syscall"
 version = "0.2.10"
 version = "0.2.10"
@@ -771,8 +700,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
 
 
 [[package]]
 [[package]]
 name = "sailfish"
 name = "sailfish"
-version = "0.3.3"
-source = "git+https://github.com/jdrouet/sailfish?rev=7d2b59247eaab10b67311d6c1c7d50a7d751d791#7d2b59247eaab10b67311d6c1c7d50a7d751d791"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "948a7edfc2f03d7c58a097dda25ed29440a72e8528894a6e182fe9171195fed1"
 dependencies = [
 dependencies = [
  "itoap",
  "itoap",
  "ryu",
  "ryu",
@@ -782,22 +712,25 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "sailfish-compiler"
 name = "sailfish-compiler"
-version = "0.3.3"
-source = "git+https://github.com/jdrouet/sailfish?rev=7d2b59247eaab10b67311d6c1c7d50a7d751d791#7d2b59247eaab10b67311d6c1c7d50a7d751d791"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f0a01133d6ce146020e6416ac6a823f813f1cbb30ff77548b4fa20749524947"
 dependencies = [
 dependencies = [
  "filetime",
  "filetime",
  "home",
  "home",
  "memchr",
  "memchr",
  "proc-macro2",
  "proc-macro2",
  "quote",
  "quote",
+ "serde",
  "syn",
  "syn",
- "yaml-rust",
+ "toml",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "sailfish-macros"
 name = "sailfish-macros"
-version = "0.3.3"
-source = "git+https://github.com/jdrouet/sailfish?rev=7d2b59247eaab10b67311d6c1c7d50a7d751d791#7d2b59247eaab10b67311d6c1c7d50a7d751d791"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86326c1f1dce0b316e0a47071f683b185417dc64e1a704380b5c706b09e871b1"
 dependencies = [
 dependencies = [
  "proc-macro2",
  "proc-macro2",
  "sailfish-compiler",
  "sailfish-compiler",
@@ -835,22 +768,20 @@ version = "1.0.71"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "063bf466a64011ac24040a49009724ee60a57da1b437617ceb32e53ad61bfb19"
 checksum = "063bf466a64011ac24040a49009724ee60a57da1b437617ceb32e53ad61bfb19"
 dependencies = [
 dependencies = [
- "itoa",
+ "itoa 0.4.8",
  "ryu",
  "ryu",
  "serde",
  "serde",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "sha2"
 name = "sha2"
-version = "0.9.8"
+version = "0.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa"
+checksum = "cf9db03534dff993187064c4e0c05a5708d2a9728ace9a8959b77bedf415dac5"
 dependencies = [
 dependencies = [
- "block-buffer",
  "cfg-if",
  "cfg-if",
  "cpufeatures",
  "cpufeatures",
  "digest",
  "digest",
- "opaque-debug",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -864,9 +795,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "simd-json"
 name = "simd-json"
-version = "0.4.8"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e67eb096671712144fb1357787c4312720c99444f52900ca2a20bee57a02cc64"
+checksum = "9bd78b840b9de64fa3f7d72909b76343849f68e8c3d32608db8d38e4e5481f84"
 dependencies = [
 dependencies = [
  "halfbrown",
  "halfbrown",
  "serde",
  "serde",
@@ -875,11 +806,36 @@ dependencies = [
  "value-trait",
  "value-trait",
 ]
 ]
 
 
+[[package]]
+name = "simd-json-derive"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e55bb9cf8e9b4da28bc39175fbb9d773806decb42bc6fcaa80fde2556a62a5cc"
+dependencies = [
+ "itoa 1.0.3",
+ "ryu",
+ "simd-json",
+ "simd-json-derive-int",
+ "value-trait",
+]
+
+[[package]]
+name = "simd-json-derive-int"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "605c164d8d8c566973a9cd4cf4712bbc5afb1ffa010a9b0f5b5f9c930119fe75"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "simd-json",
+ "syn",
+]
+
 [[package]]
 [[package]]
 name = "simdutf8"
 name = "simdutf8"
-version = "0.1.3"
+version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c970da16e7c682fa90a261cf0724dee241c9f7831635ecc4e988ae8f3b505559"
+checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a"
 
 
 [[package]]
 [[package]]
 name = "siphasher"
 name = "siphasher"
@@ -901,9 +857,9 @@ checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309"
 
 
 [[package]]
 [[package]]
 name = "socket2"
 name = "socket2"
-version = "0.4.2"
+version = "0.4.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516"
+checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd"
 dependencies = [
 dependencies = [
  "libc",
  "libc",
  "winapi 0.3.9",
  "winapi 0.3.9",
@@ -942,15 +898,6 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b625cb7d76f7bb1887a11d2e7b97677539924010773844ed17252c6ec7877595"
 checksum = "b625cb7d76f7bb1887a11d2e7b97677539924010773844ed17252c6ec7877595"
 
 
-[[package]]
-name = "tiny-keccak"
-version = "2.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
-dependencies = [
- "crunchy",
-]
-
 [[package]]
 [[package]]
 name = "tinyvec"
 name = "tinyvec"
 version = "1.5.1"
 version = "1.5.1"
@@ -968,9 +915,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
 
 
 [[package]]
 [[package]]
 name = "tokio"
 name = "tokio"
-version = "1.14.0"
+version = "1.21.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70e992e41e0d2fb9f755b37446f20900f64446ef54874f40a60c78f021ac6144"
+checksum = "89797afd69d206ccd11fb0ea560a44bbb87731d020670e79416d442919257d42"
 dependencies = [
 dependencies = [
  "autocfg",
  "autocfg",
  "bytes",
  "bytes",
@@ -979,24 +926,12 @@ dependencies = [
  "mio",
  "mio",
  "num_cpus",
  "num_cpus",
  "once_cell",
  "once_cell",
- "parking_lot",
  "pin-project-lite",
  "pin-project-lite",
  "signal-hook-registry",
  "signal-hook-registry",
- "tokio-macros",
+ "socket2",
  "winapi 0.3.9",
  "winapi 0.3.9",
 ]
 ]
 
 
-[[package]]
-name = "tokio-macros"
-version = "1.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9efc1aba077437943f7515666aa2b882dfabfbfdf89c819ea75a8d6e9eaba5e"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
 [[package]]
 [[package]]
 name = "tokio-postgres"
 name = "tokio-postgres"
 version = "0.7.5"
 version = "0.7.5"
@@ -1034,11 +969,20 @@ dependencies = [
  "tokio",
  "tokio",
 ]
 ]
 
 
+[[package]]
+name = "toml"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
+dependencies = [
+ "serde",
+]
+
 [[package]]
 [[package]]
 name = "tracing"
 name = "tracing"
-version = "0.1.29"
+version = "0.1.36"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105"
+checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307"
 dependencies = [
 dependencies = [
  "cfg-if",
  "cfg-if",
  "pin-project-lite",
  "pin-project-lite",
@@ -1047,9 +991,9 @@ dependencies = [
 
 
 [[package]]
 [[package]]
 name = "tracing-core"
 name = "tracing-core"
-version = "0.1.21"
+version = "0.1.29"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4"
+checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7"
 
 
 [[package]]
 [[package]]
 name = "typenum"
 name = "typenum"
@@ -1080,13 +1024,13 @@ checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
 
 
 [[package]]
 [[package]]
 name = "value-trait"
 name = "value-trait"
-version = "0.2.9"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0393efdd7d82f856a927b0fcafa80bca45911f5c89ef6b9d80197bebc284f72e"
+checksum = "c0a635407649b66e125e4d2ffd208153210179f8c7c8b71c030aa2ad3eeb4c8f"
 dependencies = [
 dependencies = [
  "float-cmp",
  "float-cmp",
  "halfbrown",
  "halfbrown",
- "itoa",
+ "itoa 1.0.3",
  "ryu",
  "ryu",
 ]
 ]
 
 
@@ -1102,6 +1046,12 @@ version = "0.10.2+wasi-snapshot-preview1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
 checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
 
 
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
 [[package]]
 [[package]]
 name = "winapi"
 name = "winapi"
 version = "0.2.8"
 version = "0.2.8"
@@ -1136,16 +1086,59 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 
 
+[[package]]
+name = "windows-sys"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
+dependencies = [
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
+
 [[package]]
 [[package]]
 name = "xitca-http"
 name = "xitca-http"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/fakeshadow/xitca-web.git?rev=59827177f6c319c6fa9940fe5f146754fff90aad#59827177f6c319c6fa9940fe5f146754fff90aad"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=2994d3c56fb2027cbe4c39baf2ddcc56fc863655#2994d3c56fb2027cbe4c39baf2ddcc56fc863655"
 dependencies = [
 dependencies = [
  "futures-core",
  "futures-core",
  "http",
  "http",
  "httparse",
  "httparse",
  "httpdate",
  "httpdate",
- "itoa",
+ "itoa 1.0.3",
  "matchit",
  "matchit",
  "pin-project-lite",
  "pin-project-lite",
  "socket2",
  "socket2",
@@ -1153,49 +1146,66 @@ dependencies = [
  "tracing",
  "tracing",
  "xitca-io",
  "xitca-io",
  "xitca-service",
  "xitca-service",
+ "xitca-unsafe-collection",
 ]
 ]
 
 
 [[package]]
 [[package]]
-name = "xitca-http-codegen"
+name = "xitca-io"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/fakeshadow/xitca-web.git?rev=59827177f6c319c6fa9940fe5f146754fff90aad#59827177f6c319c6fa9940fe5f146754fff90aad"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=2994d3c56fb2027cbe4c39baf2ddcc56fc863655#2994d3c56fb2027cbe4c39baf2ddcc56fc863655"
 dependencies = [
 dependencies = [
- "quote",
- "syn",
+ "bytes",
+ "tokio",
 ]
 ]
 
 
 [[package]]
 [[package]]
-name = "xitca-io"
+name = "xitca-postgres"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/fakeshadow/xitca-web.git?rev=59827177f6c319c6fa9940fe5f146754fff90aad#59827177f6c319c6fa9940fe5f146754fff90aad"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=2994d3c56fb2027cbe4c39baf2ddcc56fc863655#2994d3c56fb2027cbe4c39baf2ddcc56fc863655"
 dependencies = [
 dependencies = [
- "bytes",
+ "fallible-iterator",
+ "futures-core",
+ "percent-encoding",
+ "postgres-protocol",
+ "postgres-types",
  "tokio",
  "tokio",
+ "tracing",
+ "xitca-io",
+ "xitca-service",
+ "xitca-unsafe-collection",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "xitca-server"
 name = "xitca-server"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/fakeshadow/xitca-web.git?rev=59827177f6c319c6fa9940fe5f146754fff90aad#59827177f6c319c6fa9940fe5f146754fff90aad"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=2994d3c56fb2027cbe4c39baf2ddcc56fc863655#2994d3c56fb2027cbe4c39baf2ddcc56fc863655"
 dependencies = [
 dependencies = [
- "futures-core",
- "num_cpus",
+ "socket2",
  "tokio",
  "tokio",
  "tracing",
  "tracing",
  "xitca-io",
  "xitca-io",
  "xitca-service",
  "xitca-service",
+ "xitca-unsafe-collection",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "xitca-service"
 name = "xitca-service"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/fakeshadow/xitca-web.git?rev=59827177f6c319c6fa9940fe5f146754fff90aad#59827177f6c319c6fa9940fe5f146754fff90aad"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=2994d3c56fb2027cbe4c39baf2ddcc56fc863655#2994d3c56fb2027cbe4c39baf2ddcc56fc863655"
+
+[[package]]
+name = "xitca-unsafe-collection"
+version = "0.1.0"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=2994d3c56fb2027cbe4c39baf2ddcc56fc863655#2994d3c56fb2027cbe4c39baf2ddcc56fc863655"
+dependencies = [
+ "bytes",
+ "cache-padded",
+]
 
 
 [[package]]
 [[package]]
 name = "xitca-web"
 name = "xitca-web"
 version = "0.1.0"
 version = "0.1.0"
 dependencies = [
 dependencies = [
- "ahash",
  "atoi",
  "atoi",
  "core_affinity",
  "core_affinity",
  "diesel",
  "diesel",
@@ -1206,33 +1216,29 @@ dependencies = [
  "sailfish",
  "sailfish",
  "serde",
  "serde",
  "simd-json",
  "simd-json",
+ "simd-json-derive",
  "tang-rs",
  "tang-rs",
  "tokio",
  "tokio",
- "tokio-postgres",
  "xitca-http",
  "xitca-http",
- "xitca-http-codegen",
+ "xitca-postgres",
  "xitca-server",
  "xitca-server",
  "xitca-service",
  "xitca-service",
- "xitca-web 0.1.0 (git+https://github.com/fakeshadow/xitca-web.git?rev=59827177f6c319c6fa9940fe5f146754fff90aad)",
+ "xitca-unsafe-collection",
+ "xitca-web 0.1.0 (git+https://github.com/HFQR/xitca-web.git?rev=2994d3c56fb2027cbe4c39baf2ddcc56fc863655)",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "xitca-web"
 name = "xitca-web"
 version = "0.1.0"
 version = "0.1.0"
-source = "git+https://github.com/fakeshadow/xitca-web.git?rev=59827177f6c319c6fa9940fe5f146754fff90aad#59827177f6c319c6fa9940fe5f146754fff90aad"
+source = "git+https://github.com/HFQR/xitca-web.git?rev=2994d3c56fb2027cbe4c39baf2ddcc56fc863655#2994d3c56fb2027cbe4c39baf2ddcc56fc863655"
 dependencies = [
 dependencies = [
  "futures-core",
  "futures-core",
+ "pin-project-lite",
+ "serde",
+ "serde_json",
  "xitca-http",
  "xitca-http",
  "xitca-io",
  "xitca-io",
  "xitca-server",
  "xitca-server",
  "xitca-service",
  "xitca-service",
-]
-
-[[package]]
-name = "yaml-rust"
-version = "0.4.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
-dependencies = [
- "linked-hash-map",
+ "xitca-unsafe-collection",
 ]
 ]

+ 23 - 15
frameworks/Rust/xitca-web/Cargo.toml

@@ -13,11 +13,16 @@ name = "xitca-web-diesel"
 path = "./src/main_diesel.rs"
 path = "./src/main_diesel.rs"
 required-features = ["orm", "serde", "web"]
 required-features = ["orm", "serde", "web"]
 
 
+[[bin]]
+name = "xitca-web-wasm"
+path = "./src/main_wasm.rs"
+required-features = ["web"]
+
 [features]
 [features]
 # raw-pg optional
 # raw-pg optional
 raw = ["xitca-postgres"]
 raw = ["xitca-postgres"]
 # diesel-pg orm optional
 # diesel-pg orm optional
-orm = ["diesel", "diesel-async"]
+orm = ["diesel", "diesel-async", "tang-rs"]
 # simd-json optional
 # simd-json optional
 simd = ["simd-json", "simd-json-derive"]
 simd = ["simd-json", "simd-json-derive"]
 # serde optional
 # serde optional
@@ -32,13 +37,6 @@ xitca-service = "0.1"
 xitca-unsafe-collection = "0.1"
 xitca-unsafe-collection = "0.1"
 
 
 atoi = "1.0.0"
 atoi = "1.0.0"
-core_affinity = "0.5.10"
-futures-util = { version = "0.3.18", default-features = false, features = ["alloc"] }
-mimalloc = { version = "0.1.29", default-features = false }
-rand = { version = "0.8.5", default-features = false, features = ["min_const_gen", "nightly", "small_rng"] }
-sailfish = "0.4"
-tang-rs = "0.2"
-tokio = "1.20"
 
 
 # web optional
 # web optional
 xitca-web = { version = "0.1", features = ["json"], optional = true }
 xitca-web = { version = "0.1", features = ["json"], optional = true }
@@ -49,6 +47,7 @@ xitca-postgres = { version = "0.1", default-features = false, features = ["singl
 # diesel-pg orm optional
 # diesel-pg orm optional
 diesel = { version = "2.0.0-rc.0", default-features = false, features = ["i-implement-a-third-party-backend-and-opt-into-breaking-changes"], optional = true }
 diesel = { version = "2.0.0-rc.0", default-features = false, features = ["i-implement-a-third-party-backend-and-opt-into-breaking-changes"], optional = true }
 diesel-async = { version = "0.1.0", default-features = false, features = ["postgres"], optional = true }
 diesel-async = { version = "0.1.0", default-features = false, features = ["postgres"], optional = true }
+tang-rs = { version = "0.2", optional = true }
 
 
 # simd-json optional
 # simd-json optional
 simd-json = { version = "0.6", default-features = false, features = ["swar-number-parsing", "hints"], optional = true }
 simd-json = { version = "0.6", default-features = false, features = ["swar-number-parsing", "hints"], optional = true }
@@ -57,6 +56,15 @@ simd-json-derive = { version = "0.4", default-features = false, optional = true
 # serde optional
 # serde optional
 serde = { version = "1", features = ["derive"], optional = true }
 serde = { version = "1", features = ["derive"], optional = true }
 
 
+# stuff can not be used or not needed in wasi target
+[target.'cfg(not(target_family = "wasm"))'.dependencies]
+mimalloc = { version = "0.1.29", default-features = false }
+core_affinity = "0.5.10"
+futures-util = { version = "0.3.18", default-features = false, features = ["alloc"] }
+rand = { version = "0.8.5", default-features = false, features = ["min_const_gen", "nightly", "small_rng"] }
+sailfish = "0.4"
+tokio = "1.21"
+
 [profile.release]
 [profile.release]
 lto = true
 lto = true
 opt-level = 3
 opt-level = 3
@@ -64,13 +72,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 = "4fd97d4bd906995c3a70a50c33fc8ac076693e97" }
-xitca-io = { git = "https://github.com/HFQR/xitca-web.git", rev = "4fd97d4bd906995c3a70a50c33fc8ac076693e97" }
-xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "4fd97d4bd906995c3a70a50c33fc8ac076693e97" }
-xitca-server = { git = "https://github.com/HFQR/xitca-web.git", rev = "4fd97d4bd906995c3a70a50c33fc8ac076693e97" }
-xitca-service = { git = "https://github.com/HFQR/xitca-web.git", rev = "4fd97d4bd906995c3a70a50c33fc8ac076693e97" }
-xitca-unsafe-collection = { git = "https://github.com/HFQR/xitca-web.git", rev = "4fd97d4bd906995c3a70a50c33fc8ac076693e97" }
-xitca-web = { git = "https://github.com/HFQR/xitca-web.git", rev = "4fd97d4bd906995c3a70a50c33fc8ac076693e97" }
+xitca-http = { git = "https://github.com/HFQR/xitca-web.git", rev = "2994d3c56fb2027cbe4c39baf2ddcc56fc863655" }
+xitca-io = { git = "https://github.com/HFQR/xitca-web.git", rev = "2994d3c56fb2027cbe4c39baf2ddcc56fc863655" }
+xitca-postgres = { git = "https://github.com/HFQR/xitca-web.git", rev = "2994d3c56fb2027cbe4c39baf2ddcc56fc863655" }
+xitca-server = { git = "https://github.com/HFQR/xitca-web.git", rev = "2994d3c56fb2027cbe4c39baf2ddcc56fc863655" }
+xitca-service = { git = "https://github.com/HFQR/xitca-web.git", rev = "2994d3c56fb2027cbe4c39baf2ddcc56fc863655" }
+xitca-unsafe-collection = { git = "https://github.com/HFQR/xitca-web.git", rev = "2994d3c56fb2027cbe4c39baf2ddcc56fc863655" }
+xitca-web = { git = "https://github.com/HFQR/xitca-web.git", rev = "2994d3c56fb2027cbe4c39baf2ddcc56fc863655" }
 
 
 diesel = { git = "https://github.com/diesel-rs/diesel.git", rev = "53a4157776d4320fffc11fe73779cc53702843d6" }
 diesel = { git = "https://github.com/diesel-rs/diesel.git", rev = "53a4157776d4320fffc11fe73779cc53702843d6" }
 diesel-async = { git = "https://github.com/weiznich/diesel_async.git", rev = "3c9e976c1c30d3aa3d0751b89f72b2ce43869c4f" }
 diesel-async = { git = "https://github.com/weiznich/diesel_async.git", rev = "3c9e976c1c30d3aa3d0751b89f72b2ce43869c4f" }

+ 3 - 3
frameworks/Rust/xitca-web/README.md

@@ -1,8 +1,8 @@
-# An experimental http library.
+# An experimental http library/web framework
 
 
-## Description.
+## Description
 
 
-An alternative http library inspired by actix and hyper. Implementation is rewritten with similar style and types.
+An alternative http library and web framework inspired by actix and hyper. Implementation is rewritten with similar style and types.
 
 
 ## Database
 ## Database
 
 

+ 17 - 0
frameworks/Rust/xitca-web/benchmark_config.json

@@ -45,6 +45,23 @@
         "display_name": "xitca-web [diesel]",
         "display_name": "xitca-web [diesel]",
         "notes": "",
         "notes": "",
         "versus": ""
         "versus": ""
+      },
+      "wasm": {
+        "plaintext_url": "/plaintext",
+        "port": 8080,
+        "approach": "realistic",
+        "classification": "micro",
+        "database": "none",
+        "framework": "xitca-web",
+        "language": "rust",
+        "orm": "raw",
+        "platform": "none",
+        "webserver": "xitca-server",
+        "os": "linux",
+        "database_os": "linux",
+        "display_name": "xitca-web [wasm]",
+        "notes": "",
+        "versus": ""
       }
       }
     }
     }
   ]
   ]

+ 9 - 0
frameworks/Rust/xitca-web/config.toml

@@ -34,3 +34,12 @@ orm = "Full"
 platform = "None"
 platform = "None"
 webserver = "xitca-server"
 webserver = "xitca-server"
 versus = ""
 versus = ""
+
+[wasm]
+urls.plaintext = "/plaintext"
+approach = "Realistic"
+classification = "Micro"
+os = "wasi"
+platform = "wasm"
+webserver = "xitca-server"
+versus = ""

+ 13 - 19
frameworks/Rust/xitca-web/src/db.rs

@@ -1,4 +1,4 @@
-use std::{cell::RefCell, collections::HashMap, error::Error, fmt::Write};
+use std::{cell::RefCell, collections::HashMap, error::Error, fmt::Write, future::Future};
 
 
 use futures_util::stream::{FuturesUnordered, StreamExt, TryStreamExt};
 use futures_util::stream::{FuturesUnordered, StreamExt, TryStreamExt};
 use rand::{rngs::SmallRng, Rng, SeedableRng};
 use rand::{rngs::SmallRng, Rng, SeedableRng};
@@ -27,23 +27,18 @@ impl Drop for Client {
     }
     }
 }
 }
 
 
-pub async fn create(config: &str) -> Client {
-    let (client, conn) = Postgres::new(config.to_string()).connect().await.unwrap();
+pub async fn create(config: &str) -> DbResult<Client> {
+    let (client, conn) = Postgres::new(config.to_string()).connect().await?;
 
 
     tokio::task::spawn_local(async move {
     tokio::task::spawn_local(async move {
         let _ = conn.await;
         let _ = conn.await;
     });
     });
 
 
-    let fortune = client
-        .prepare("SELECT * FROM fortune", &[])
-        .await
-        .unwrap()
-        .leak();
+    let fortune = client.prepare("SELECT * FROM fortune", &[]).await?.leak();
 
 
     let world = client
     let world = client
         .prepare("SELECT * FROM world WHERE id=$1", &[])
         .prepare("SELECT * FROM world WHERE id=$1", &[])
-        .await
-        .unwrap()
+        .await?
         .leak();
         .leak();
 
 
     let mut updates = HashMap::default();
     let mut updates = HashMap::default();
@@ -64,17 +59,17 @@ pub async fn create(config: &str) -> Client {
         q.pop();
         q.pop();
         q.push(')');
         q.push(')');
 
 
-        let st = client.prepare(&q, &[]).await.unwrap().leak();
+        let st = client.prepare(&q, &[]).await?.leak();
         updates.insert(num, st);
         updates.insert(num, st);
     }
     }
 
 
-    Client {
+    Ok(Client {
         client,
         client,
         rng: RefCell::new(SmallRng::from_entropy()),
         rng: RefCell::new(SmallRng::from_entropy()),
         fortune,
         fortune,
         world,
         world,
         updates,
         updates,
-    }
+    })
 }
 }
 
 
 type DbResult<T> = Result<T, Box<dyn Error>>;
 type DbResult<T> = Result<T, Box<dyn Error>>;
@@ -87,17 +82,17 @@ impl Client {
             .await?
             .await?
             .next()
             .next()
             .await
             .await
-            .unwrap()?;
+            .ok_or_else(|| format!("World {id} does not exist"))??;
 
 
         Ok(World::new(row.get(0), row.get(1)))
         Ok(World::new(row.get(0), row.get(1)))
     }
     }
 
 
-    pub async fn get_world(&self) -> DbResult<World> {
+    pub fn get_world(&self) -> impl Future<Output = DbResult<World>> + '_ {
         let id = (self.rng.borrow_mut().gen::<u32>() % 10_000 + 1) as i32;
         let id = (self.rng.borrow_mut().gen::<u32>() % 10_000 + 1) as i32;
-        self.query_one_world(id).await
+        self.query_one_world(id)
     }
     }
 
 
-    pub async fn get_worlds(&self, num: u16) -> DbResult<Vec<World>> {
+    pub fn get_worlds(&self, num: u16) -> impl Future<Output = DbResult<Vec<World>>> + '_ {
         let worlds = {
         let worlds = {
             let mut rng = self.rng.borrow_mut();
             let mut rng = self.rng.borrow_mut();
             (0..num)
             (0..num)
@@ -107,8 +102,7 @@ impl Client {
                 })
                 })
                 .collect::<FuturesUnordered<_>>()
                 .collect::<FuturesUnordered<_>>()
         };
         };
-
-        worlds.try_collect().await
+        worlds.try_collect()
     }
     }
 
 
     pub async fn update(&self, num: u16) -> DbResult<Vec<World>> {
     pub async fn update(&self, num: u16) -> DbResult<Vec<World>> {

+ 9 - 18
frameworks/Rust/xitca-web/src/main.rs

@@ -5,13 +5,7 @@ mod db;
 mod ser;
 mod ser;
 mod util;
 mod util;
 
 
-use std::{
-    cell::RefCell,
-    convert::Infallible,
-    error::Error,
-    fmt::Debug,
-    sync::{Arc, Mutex},
-};
+use std::{cell::RefCell, convert::Infallible, error::Error, fmt::Debug, io, sync::Mutex};
 
 
 use simd_json_derive::Serialize;
 use simd_json_derive::Serialize;
 use xitca_http::{
 use xitca_http::{
@@ -40,18 +34,15 @@ use xitca_service::{fn_service, BuildServiceExt, Service};
 
 
 use self::db::Client;
 use self::db::Client;
 use self::ser::Message;
 use self::ser::Message;
-use self::util::{QueryParse, SERVER_HEADER_VALUE};
+use self::util::{QueryParse, DB_URL, SERVER_HEADER_VALUE};
 
 
 type Response = http::Response<Once<Bytes>>;
 type Response = http::Response<Once<Bytes>>;
 type Request = request::Request<RequestBody>;
 type Request = request::Request<RequestBody>;
-
 type Ctx<'a> = Context<'a, Request, State>;
 type Ctx<'a> = Context<'a, Request, State>;
 
 
-fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
+fn main() -> io::Result<()> {
     let cores = core_affinity::get_core_ids().unwrap_or_default();
     let cores = core_affinity::get_core_ids().unwrap_or_default();
-    let cores = Arc::new(Mutex::new(cores));
-
-    let db_url = "postgres://benchmarkdbuser:benchmarkdbpass@tfb-database/hello_world";
+    let cores = Mutex::new(cores);
 
 
     let builder = || {
     let builder = || {
         let config = HttpServiceConfig::new()
         let config = HttpServiceConfig::new()
@@ -68,9 +59,10 @@ fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
             .enclosed_fn(middleware_fn);
             .enclosed_fn(middleware_fn);
 
 
         let service = ContextBuilder::new(|| async {
         let service = ContextBuilder::new(|| async {
-            let client = db::create(db_url).await;
-            let write_buf = RefCell::new(BytesMut::new());
-            Ok::<_, Infallible>(State { client, write_buf })
+            db::create(DB_URL).await.map(|client| {
+                let write_buf = RefCell::new(BytesMut::new());
+                State { client, write_buf }
+            })
         })
         })
         .service(router);
         .service(router);
 
 
@@ -91,7 +83,6 @@ fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
         .bind("xitca-web", "0.0.0.0:8080", builder)?
         .bind("xitca-web", "0.0.0.0:8080", builder)?
         .build()
         .build()
         .wait()
         .wait()
-        .map_err(Into::into)
 }
 }
 
 
 async fn middleware_fn<S, E>(service: &S, req: Ctx<'_>) -> Result<Response, Infallible>
 async fn middleware_fn<S, E>(service: &S, req: Ctx<'_>) -> Result<Response, Infallible>
@@ -150,7 +141,7 @@ where
     S: ?Sized + Serialize,
     S: ?Sized + Serialize,
 {
 {
     let mut buf = state.write_buf.borrow_mut();
     let mut buf = state.write_buf.borrow_mut();
-    value.json_write(&mut BufMutWriter(&mut *buf)).unwrap();
+    value.json_write(&mut BufMutWriter(&mut *buf))?;
     let body = buf.split().freeze();
     let body = buf.split().freeze();
     let mut res = req.into_response(body);
     let mut res = req.into_response(body);
     res.headers_mut().append(CONTENT_TYPE, JSON);
     res.headers_mut().append(CONTENT_TYPE, JSON);

+ 8 - 16
frameworks/Rust/xitca-web/src/main_diesel.rs

@@ -9,11 +9,9 @@ mod schema;
 mod ser;
 mod ser;
 mod util;
 mod util;
 
 
-use std::{convert::Infallible, io};
-
 use serde::Serialize;
 use serde::Serialize;
 use xitca_web::{
 use xitca_web::{
-    dev::Service,
+    dev::service::Service,
     handler::{handler_service, html::Html, json::Json, state::StateRef, uri::UriRef, Responder},
     handler::{handler_service, html::Html, json::Json, state::StateRef, uri::UriRef, Responder},
     http::header::SERVER,
     http::header::SERVER,
     request::WebRequest,
     request::WebRequest,
@@ -23,17 +21,15 @@ use xitca_web::{
 };
 };
 
 
 use self::db_diesel::{create, DieselPool};
 use self::db_diesel::{create, DieselPool};
-use self::util::{QueryParse, SERVER_HEADER_VALUE};
+use self::util::{QueryParse, DB_URL, SERVER_HEADER_VALUE};
 
 
 type Error = Box<dyn std::error::Error + Send + Sync + 'static>;
 type Error = Box<dyn std::error::Error + Send + Sync + 'static>;
 
 
 type Request<'a> = WebRequest<'a, DieselPool>;
 type Request<'a> = WebRequest<'a, DieselPool>;
 
 
-fn main() -> io::Result<()> {
-    let config = "postgres://benchmarkdbuser:benchmarkdbpass@tfb-database/hello_world";
-
-    HttpServer::new(move || {
-        App::with_async_state(move || async { Ok::<_, Infallible>(create(config).await.unwrap()) })
+fn main() -> std::io::Result<()> {
+    HttpServer::new(|| {
+        App::with_async_state(|| create(DB_URL))
             .at("/plaintext", get(handler_service(plain_text)))
             .at("/plaintext", get(handler_service(plain_text)))
             .at("/json", get(handler_service(json)))
             .at("/json", get(handler_service(json)))
             .at("/db", get(handler_service(db)))
             .at("/db", get(handler_service(db)))
@@ -48,19 +44,15 @@ fn main() -> io::Result<()> {
     .wait()
     .wait()
 }
 }
 
 
-async fn middleware_fn<S, E>(service: &S, mut ctx: Request<'_>) -> Result<WebResponse, Infallible>
+async fn middleware_fn<S, E>(service: &S, mut ctx: Request<'_>) -> Result<WebResponse, E>
 where
 where
     S: for<'r> Service<Request<'r>, Response = Result<WebResponse, Error>, Error = E>,
     S: for<'r> Service<Request<'r>, Response = Result<WebResponse, Error>, Error = E>,
-    E: for<'r> Responder<Request<'r>, Output = WebResponse>,
 {
 {
-    let mut res = match service.call(ctx.reborrow()).await {
-        Ok(Ok(res)) => res,
-        Ok(Err(err)) => err.respond_to(ctx).await,
+    let mut res = match service.call(ctx.reborrow()).await? {
+        Ok(res) => res,
         Err(err) => err.respond_to(ctx).await,
         Err(err) => err.respond_to(ctx).await,
     };
     };
-
     res.headers_mut().append(SERVER, SERVER_HEADER_VALUE);
     res.headers_mut().append(SERVER, SERVER_HEADER_VALUE);
-
     Ok(res)
     Ok(res)
 }
 }
 
 

+ 42 - 0
frameworks/Rust/xitca-web/src/main_wasm.rs

@@ -0,0 +1,42 @@
+mod util;
+
+use std::{env, io, net::TcpListener, os::wasi::io::FromRawFd};
+
+use xitca_web::{
+    dev::service::Service, handler::handler_service, http::header::SERVER, request::WebRequest,
+    response::WebResponse, route::get, App, HttpServer,
+};
+
+use self::util::SERVER_HEADER_VALUE;
+
+fn main() -> io::Result<()> {
+    let fd = env::var("FD_COUNT")
+        .ok()
+        .and_then(|var| var.parse().ok())
+        .expect("failed to parse FD_COUNT env");
+
+    let listener = unsafe { TcpListener::from_raw_fd(fd) };
+
+    HttpServer::new(|| {
+        App::new()
+            .at("/plaintext", get(handler_service(plain_text)))
+            .enclosed_fn(middleware_fn)
+            .finish()
+    })
+    .listen(listener)?
+    .run()
+    .wait()
+}
+
+async fn middleware_fn<S, E>(service: &S, ctx: WebRequest<'_>) -> Result<WebResponse, E>
+where
+    S: for<'r> Service<WebRequest<'r>, Response = WebResponse, Error = E>,
+{
+    let mut res = service.call(ctx).await?;
+    res.headers_mut().append(SERVER, SERVER_HEADER_VALUE);
+    Ok(res)
+}
+
+async fn plain_text() -> &'static str {
+    "Hello, World!"
+}

+ 3 - 0
frameworks/Rust/xitca-web/src/util.rs

@@ -23,3 +23,6 @@ impl QueryParse for Option<&str> {
 }
 }
 
 
 pub const SERVER_HEADER_VALUE: HeaderValue = HeaderValue::from_static("TFB");
 pub const SERVER_HEADER_VALUE: HeaderValue = HeaderValue::from_static("TFB");
+
+#[allow(dead_code)]
+pub const DB_URL: &str = "postgres://benchmarkdbuser:benchmarkdbpass@tfb-database/hello_world";

+ 2 - 2
frameworks/Rust/xitca-web/xitca-web-diesel.dockerfile

@@ -1,9 +1,9 @@
-FROM rust:1.62
+FROM rust:latest
 
 
 ADD ./ /xitca-web
 ADD ./ /xitca-web
 WORKDIR /xitca-web
 WORKDIR /xitca-web
 
 
-RUN rustup default nightly-2022-07-18
+RUN rustup default nightly-2022-09-04
 RUN cargo clean
 RUN cargo clean
 RUN RUSTFLAGS="-C target-cpu=native" cargo build --release --bin xitca-web-diesel --features orm,serde,web
 RUN RUSTFLAGS="-C target-cpu=native" cargo build --release --bin xitca-web-diesel --features orm,serde,web
 
 

+ 16 - 0
frameworks/Rust/xitca-web/xitca-web-wasm.dockerfile

@@ -0,0 +1,16 @@
+FROM rust:latest
+
+ADD ./ /xitca-web
+WORKDIR /xitca-web
+
+RUN rustup default nightly-2022-09-04
+RUN rustup target add wasm32-wasi
+RUN cargo clean
+RUN RUSTFLAGS="--cfg tokio_unstable" cargo build --release --bin xitca-web-wasm --target wasm32-wasi --features web
+
+RUN curl --show-error --location --fail https://github.com/bytecodealliance/wasmtime/releases/download/v0.40.1/wasmtime-v0.40.1-x86_64-linux.tar.xz --output wasmtime.tar.xz 
+RUN tar -xvf wasmtime.tar.xz
+
+EXPOSE 8080
+
+CMD ./wasmtime-v0.40.1-x86_64-linux/wasmtime ./target/wasm32-wasi/release/xitca-web-wasm.wasm --tcplisten 0.0.0.0:8080 --env FD_COUNT=3

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

@@ -1,9 +1,9 @@
-FROM rust:1.62
+FROM rust:latest
 
 
 ADD ./ /xitca-web
 ADD ./ /xitca-web
 WORKDIR /xitca-web
 WORKDIR /xitca-web
 
 
-RUN rustup default nightly-2022-07-18
+RUN rustup default nightly-2022-09-04
 RUN cargo clean
 RUN cargo clean
 RUN RUSTFLAGS="-C target-cpu=native" cargo build --release --bin xitca-web --features raw,simd
 RUN RUSTFLAGS="-C target-cpu=native" cargo build --release --bin xitca-web --features raw,simd