Bladeren bron

Fix bad benchmark_config.json in frameworks (#10023)

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: cache

* feat: cache

* feat: config

* feat: config

* feat: config

* feat: v4.36.1

* docs: readme

* feat: remove dyn

* docs: readme

* feat: lock

* feat: lock

* feat: lock

* feat: lock

* feat: db pool

* feat: db pool

* feat: lock

* feat: lock

* feat: db

* feat: db

* feat: db

* feat: db

* feat: db

* feat: db

* feat: db

* feat: db

* feat: rand

* feat: rand

* feat: rand

* feat: rand

* feat: rand

* feat: port

* feat: port

* feat: port

* feat: db

* feat: db

* feat: db

* feat: lock

* feat: lock

* feat: v4.41.0

* feat: v4.42.0

* Merge remote-tracking branch 'upstream/master'

* Merge remote-tracking branch 'upstream/master'

* feat: inline

* feat: dockerfile

* feat: v4.52.1

* feat: remove key

* remove: log

* remove: log

* feat: async

* remove: empty loop

* feat: utf8

* change: pool_size

* remove: utf8

* feat: log

* feat: log

* feat: v3.14.1

* feat: 4.56.3

* feat: 4.56.4

* feat: 4.56.5

* feat:  rename

* Merge branch 'master' of github.com:TechEmpower/FrameworkBenchmarks

* feat: speed

* feat: speed

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* feat: runtime

* feat: runtime

* feat: runtime

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* lock: toml

* feat: update

* Merge remote-tracking branch 'upstream/master'

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* Merge remote-tracking branch 'upstream/master'

* feat: hyperlane

* feat: update

* docs: readme

* feat: update

* Merge remote-tracking branch 'upstream/master'

* feat: update

* feat: update

* feat: update

* Merge remote-tracking branch 'upstream/master'

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: lock

* feat: use super

* feat: update lock

* feat: update

* feat: update lock

* feat: update lock

* feat: update lock

* feat: lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* feat: update lock

* Merge remote-tracking branch 'upstream/master'

* feat: update

* feat: utf8

* feat: utf8

* feat: lock

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* update: code

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* feat: update

* Merge remote-tracking branch 'upstream/master'

* feat: update version

* feat: update version

* update: code

* Merge remote-tracking branch 'upstream/master'

* feat: lock

* feat: lock

* feat: lock

* feat: lock

* feat: lock

* feat: lock

* feat: lock

* feat: error handle

* feat: dep

* feat: get_thread_count

* update: code

* feat: lock

* feat: speed

* feat: speed

* update: code

* feat: speed

* update: code

* feat: lock

* fix: Framework hyperlane does not define a default test in benchmark_config.json

* feat: hyperlane http version

* feat: hyperlane http version

* feat: toml

* feat: toml

* feat: toml

* feat: toml

* feat: v0.1.0

* feat: toml

* feat: v6

* feat: v6

* feat: v6

* feat: v6

* feat: v6

* debug: test cache

* debug: test cache

* feat: v6

* feat: send unwrap

* feat: v6

* feat: v6

---------

Co-authored-by: 尤雨东 <[email protected]>
尤雨东 1 maand geleden
bovenliggende
commit
a9f7dcd9f5

+ 1 - 1
frameworks/Rust/hyperlane/.gitignore

@@ -1,2 +1,2 @@
 /target
-/logs
+/logs

+ 46 - 75
frameworks/Rust/hyperlane/Cargo.lock

@@ -187,9 +187,9 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
 
 [[package]]
 name = "crc32fast"
-version = "1.4.2"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
+checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
 dependencies = [
  "cfg-if",
 ]
@@ -219,20 +219,6 @@ dependencies = [
  "typenum",
 ]
 
-[[package]]
-name = "dashmap"
-version = "6.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf"
-dependencies = [
- "cfg-if",
- "crossbeam-utils",
- "hashbrown 0.14.5",
- "lock_api",
- "once_cell",
- "parking_lot_core",
-]
-
 [[package]]
 name = "der"
 version = "0.7.10"
@@ -301,9 +287,9 @@ dependencies = [
 
 [[package]]
 name = "event-listener"
-version = "5.4.0"
+version = "5.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae"
+checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
 dependencies = [
  "concurrent-queue",
  "parking",
@@ -485,12 +471,6 @@ version = "0.31.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
 
-[[package]]
-name = "hashbrown"
-version = "0.14.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
-
 [[package]]
 name = "hashbrown"
 version = "0.15.4"
@@ -508,7 +488,7 @@ version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1"
 dependencies = [
- "hashbrown 0.15.4",
+ "hashbrown",
 ]
 
 [[package]]
@@ -558,9 +538,9 @@ dependencies = [
 
 [[package]]
 name = "http-compress"
-version = "2.13.7"
+version = "2.16.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8e96d49fe9cb2263dd459ed72df6206870f0c0c6befa0bbc79227771c630a4c"
+checksum = "757db00ff4cb103647c32497514aceeb685bc2686d84c8707124f1c8eeaac2e3"
 dependencies = [
  "brotli",
  "flate2",
@@ -569,17 +549,16 @@ dependencies = [
 
 [[package]]
 name = "http-constant"
-version = "1.51.1"
+version = "1.59.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2bcafcd7f8e3b8801c795910e390f461c765065502b294decccb7715d20c3bfa"
+checksum = "8d68fc1cd9b672083471b783a0f17f4df5eb470f79a2685b6f55e631618bcd2b"
 
 [[package]]
 name = "http-type"
-version = "4.27.3"
+version = "4.55.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61b7ebec2f82af03e6e15005e0244ad2e08df1fffccafee3493e70222fa11a10"
+checksum = "06966dd52009ec38901b439b9060dd9ed0ead6d1204f214fa9a933ae3cb85328"
 dependencies = [
- "dashmap",
  "hex",
  "http-compress",
  "http-constant",
@@ -594,21 +573,22 @@ dependencies = [
 
 [[package]]
 name = "hyperlane"
-version = "5.40.1"
+version = "6.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21630ec0514aff461fbd197da6d8436649559f5508806e80c5ddc0ef34287f82"
+checksum = "8b7977949b728631efd15f05ac20930c3d4881cab8ec1ad7d723a99431a21443"
 dependencies = [
  "http-type",
  "lombok-macros",
  "regex",
  "serde",
+ "serde_json",
 ]
 
 [[package]]
 name = "hyperlane-time"
-version = "0.5.6"
+version = "0.7.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d7e07007bd67be0c3f07646066d9300ea999fb7d3371610354393101ac2db2c"
+checksum = "ed590017e6b8cd1c4f25cf6b5beda4efd3c5a76842c8782dca4fe650552a6c21"
 
 [[package]]
 name = "hyperlane_techempower"
@@ -619,7 +599,7 @@ dependencies = [
  "hyperlane-time",
  "num_cpus",
  "once_cell",
- "rand 0.9.1",
+ "rand 0.9.2",
  "serde",
  "serde_json",
  "sqlx",
@@ -734,19 +714,19 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.9.0"
+version = "2.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"
+checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
 dependencies = [
  "equivalent",
- "hashbrown 0.15.4",
+ "hashbrown",
 ]
 
 [[package]]
 name = "io-uring"
-version = "0.7.8"
+version = "0.7.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013"
+checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
 dependencies = [
  "bitflags",
  "cfg-if",
@@ -814,9 +794,9 @@ checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
 
 [[package]]
 name = "lombok-macros"
-version = "1.12.2"
+version = "1.13.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a9490d57fd90a670d464a8a464e65a5822d1f34badd8ada1c53c0572f98e10e"
+checksum = "7647fa75302b5ffffa7ff8bdb78220beb7da2be7eaf3a939453012f25931d749"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1069,9 +1049,9 @@ dependencies = [
 
 [[package]]
 name = "rand"
-version = "0.9.1"
+version = "0.9.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97"
+checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
 dependencies = [
  "rand_chacha 0.9.0",
  "rand_core 0.9.3",
@@ -1117,9 +1097,9 @@ dependencies = [
 
 [[package]]
 name = "redox_syscall"
-version = "0.5.13"
+version = "0.5.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6"
+checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
 dependencies = [
  "bitflags",
 ]
@@ -1175,9 +1155,9 @@ dependencies = [
 
 [[package]]
 name = "rustc-demangle"
-version = "0.1.25"
+version = "0.1.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f"
+checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace"
 
 [[package]]
 name = "ryu"
@@ -1225,9 +1205,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.140"
+version = "1.0.142"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7"
 dependencies = [
  "itoa",
  "memchr",
@@ -1271,9 +1251,9 @@ dependencies = [
 
 [[package]]
 name = "signal-hook-registry"
-version = "1.4.5"
+version = "1.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410"
+checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b"
 dependencies = [
  "libc",
 ]
@@ -1305,12 +1285,12 @@ dependencies = [
 
 [[package]]
 name = "socket2"
-version = "0.5.10"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
+checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"
 dependencies = [
  "libc",
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -1361,7 +1341,7 @@ dependencies = [
  "futures-intrusive",
  "futures-io",
  "futures-util",
- "hashbrown 0.15.4",
+ "hashbrown",
  "hashlink",
  "indexmap",
  "log",
@@ -1632,9 +1612,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.46.1"
+version = "1.47.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17"
+checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038"
 dependencies = [
  "backtrace",
  "bytes",
@@ -1647,7 +1627,7 @@ dependencies = [
  "slab",
  "socket2",
  "tokio-macros",
- "windows-sys 0.52.0",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -1710,7 +1690,7 @@ version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8b907da542cbced5261bd3256de1b3a1bf340a3d37f93425a07362a1d687de56"
 dependencies = [
- "rand 0.9.1",
+ "rand 0.9.2",
 ]
 
 [[package]]
@@ -1815,15 +1795,6 @@ dependencies = [
  "windows-targets 0.48.5",
 ]
 
-[[package]]
-name = "windows-sys"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-dependencies = [
- "windows-targets 0.52.6",
-]
-
 [[package]]
 name = "windows-sys"
 version = "0.59.0"
@@ -1971,9 +1942,9 @@ checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
 
 [[package]]
 name = "xml-rs"
-version = "0.8.26"
+version = "0.8.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda"
+checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7"
 
 [[package]]
 name = "yoke"
@@ -2059,9 +2030,9 @@ dependencies = [
 
 [[package]]
 name = "zerovec"
-version = "0.11.2"
+version = "0.11.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428"
+checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b"
 dependencies = [
  "yoke",
  "zerofrom",

+ 7 - 13
frameworks/Rust/hyperlane/Cargo.toml

@@ -1,12 +1,13 @@
 [package]
 name = "hyperlane_techempower"
 version = "0.1.0"
+readme = "README.md"
 edition = "2024"
 authors = ["[email protected]"]
 license = "MIT"
-description = """Hyperlane is a lightweight and high-performance Rust HTTP server library designed to simplify network service development. It supports HTTP request parsing, response building, and TCP communication, making it ideal for building modern web services. Additionally, it provides support for request and response middleware, WebSocket, and Server-Sent Events (SSE), enabling flexible and efficient real-time communication."""
+description = """A lightweight, high-performance, and cross-platform Rust HTTP server library built on Tokio. It simplifies modern web service development by providing built-in support for middleware, WebSocket, Server-Sent Events (SSE), and raw TCP communication. With a unified and ergonomic API across Windows, Linux, and MacOS, it enables developers to build robust, scalable, and event-driven network applications with minimal overhead and maximum flexibility."""
 keywords = ["http", "request", "response", "tcp", "redirect"]
-repository = "https://github.com/eastspire/hyperlane.git"
+repository = "https://github.com/hyperlane-dev/hyperlane.git"
 categories = ["network-programming", "web-programming"]
 exclude = [
     "target",
@@ -19,13 +20,13 @@ exclude = [
 
 [dependencies]
 futures = "0.3.31"
-hyperlane = "5.40.1"
-hyperlane-time = "0.5.6"
+hyperlane = "6.6.0"
+hyperlane-time = "0.7.7"
 num_cpus = "1.17.0"
 once_cell = "1.21.3"
-rand = "0.9.1"
+rand = "0.9.2"
 serde = "1.0.219"
-serde_json = "1.0.140"
+serde_json = "1.0.142"
 sqlx = { version = "0.8.6", features = ["runtime-tokio", "postgres"] }
 
 [profile.dev]
@@ -48,10 +49,3 @@ strip = "debuginfo"
 
 [features]
 dev = []
-json = []
-plaintext = []
-fortunes = []
-db = []
-query = []
-update = []
-cached_query = []

+ 2 - 2
frameworks/Rust/hyperlane/README.md

@@ -1,8 +1,8 @@
-# [hyperlane](https://github.com/eastspire/hyperlane) web framework
+# [hyperlane](https://github.com/hyperlane-dev/hyperlane) web framework
 
 ## Description
 
-> Hyperlane is a lightweight and high-performance Rust HTTP server library designed to simplify network service development. It supports HTTP request parsing, response building, and TCP communication, making it ideal for building modern web services. Additionally, it provides support for request and response middleware, WebSocket, and Server-Sent Events (SSE), enabling flexible and efficient real-time communication. Built with pure Rust and standard library, Hyperlane offers true cross-platform compatibility across Windows, Linux and macOS, with the same API experience on all platforms, powered by Tokio's async runtime for seamless networking without platform-specific dependencies.
+> A lightweight, high-performance, and cross-platform Rust HTTP server library built on Tokio. It simplifies modern web service development by providing built-in support for middleware, WebSocket, Server-Sent Events (SSE), and raw TCP communication. With a unified and ergonomic API across Windows, Linux, and MacOS, it enables developers to build robust, scalable, and event-driven network applications with minimal overhead and maximum flexibility.
 
 ## Database
 

+ 2 - 92
frameworks/Rust/hyperlane/benchmark_config.json

@@ -2,104 +2,14 @@
   "framework": "hyperlane",
   "tests": [
     {
-      "json": {
-        "dockerfile": "hyperlane.json.dockerfile",
+      "default": {
+        "dockerfile": "hyperlane.default.dockerfile",
         "json_url": "/json",
-        "port": 8080,
-        "approach": "Realistic",
-        "classification": "Platform",
-        "database": "Postgres",
-        "framework": "hyperlane",
-        "language": "Rust",
-        "orm": "raw",
-        "platform": "Rust",
-        "webserver": "hyperlane",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "hyperlane"
-      },
-      "plaintext": {
-        "dockerfile": "hyperlane.plaintext.dockerfile",
         "plaintext_url": "/plaintext",
-        "port": 8080,
-        "approach": "Realistic",
-        "classification": "Platform",
-        "database": "Postgres",
-        "framework": "hyperlane",
-        "language": "Rust",
-        "orm": "raw",
-        "platform": "Rust",
-        "webserver": "hyperlane",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "hyperlane"
-      },
-      "fortunes": {
-        "dockerfile": "hyperlane.fortunes.dockerfile",
         "fortune_url": "/fortunes",
-        "port": 8080,
-        "approach": "Realistic",
-        "classification": "Platform",
-        "database": "Postgres",
-        "framework": "hyperlane",
-        "language": "Rust",
-        "orm": "raw",
-        "platform": "Rust",
-        "webserver": "hyperlane",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "hyperlane"
-      },
-      "db": {
-        "dockerfile": "hyperlane.db.dockerfile",
         "db_url": "/db",
-        "port": 8080,
-        "approach": "Realistic",
-        "classification": "Platform",
-        "database": "Postgres",
-        "framework": "hyperlane",
-        "language": "Rust",
-        "orm": "raw",
-        "platform": "Rust",
-        "webserver": "hyperlane",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "hyperlane"
-      },
-      "query": {
-        "dockerfile": "hyperlane.query.dockerfile",
         "query_url": "/query?q=",
-        "port": 8080,
-        "approach": "Realistic",
-        "classification": "Platform",
-        "database": "Postgres",
-        "framework": "hyperlane",
-        "language": "Rust",
-        "orm": "raw",
-        "platform": "Rust",
-        "webserver": "hyperlane",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "hyperlane"
-      },
-      "update": {
-        "dockerfile": "hyperlane.update.dockerfile",
         "update_url": "/upda?q=",
-        "port": 8080,
-        "approach": "Realistic",
-        "classification": "Platform",
-        "database": "Postgres",
-        "framework": "hyperlane",
-        "language": "Rust",
-        "orm": "raw",
-        "platform": "Rust",
-        "webserver": "hyperlane",
-        "os": "Linux",
-        "database_os": "Linux",
-        "display_name": "hyperlane"
-      },
-      "cached_query": {
-        "dockerfile": "hyperlane.cached_query.dockerfile",
         "cached_query_url": "/cached-quer?c=",
         "port": 8080,
         "approach": "Realistic",

+ 0 - 15
frameworks/Rust/hyperlane/hyperlane.cached_query.dockerfile

@@ -1,15 +0,0 @@
-FROM rust:1.85
-
-RUN apt-get update -yqq && apt-get install -yqq cmake g++ binutils lld
-
-ENV POSTGRES_URL=postgres://benchmarkdbuser:benchmarkdbpass@tfb-database:5432/hello_world
-
-ADD ./ /hyperlane_techempower
-WORKDIR /hyperlane_techempower
-
-RUN cargo clean
-RUN RUSTFLAGS="-C target-cpu=native -C link-arg=-fuse-ld=lld" cargo build --release --features cached_query
-
-EXPOSE 8080
-
-CMD ./target/release/hyperlane_techempower

+ 1 - 1
frameworks/Rust/hyperlane/hyperlane.db.dockerfile → frameworks/Rust/hyperlane/hyperlane.default.dockerfile

@@ -8,7 +8,7 @@ ADD ./ /hyperlane_techempower
 WORKDIR /hyperlane_techempower
 
 RUN cargo clean
-RUN RUSTFLAGS="-C target-cpu=native -C link-arg=-fuse-ld=lld" cargo build --release --features db
+RUN RUSTFLAGS="-C target-cpu=native -C link-arg=-fuse-ld=lld" cargo build --release
 
 EXPOSE 8080
 

+ 0 - 15
frameworks/Rust/hyperlane/hyperlane.fortunes.dockerfile

@@ -1,15 +0,0 @@
-FROM rust:1.85
-
-RUN apt-get update -yqq && apt-get install -yqq cmake g++ binutils lld
-
-ENV POSTGRES_URL=postgres://benchmarkdbuser:benchmarkdbpass@tfb-database:5432/hello_world
-
-ADD ./ /hyperlane_techempower
-WORKDIR /hyperlane_techempower
-
-RUN cargo clean
-RUN RUSTFLAGS="-C target-cpu=native -C link-arg=-fuse-ld=lld" cargo build --release --features fortunes
-
-EXPOSE 8080
-
-CMD ./target/release/hyperlane_techempower

+ 0 - 15
frameworks/Rust/hyperlane/hyperlane.json.dockerfile

@@ -1,15 +0,0 @@
-FROM rust:1.85
-
-RUN apt-get update -yqq && apt-get install -yqq cmake g++ binutils lld
-
-ENV POSTGRES_URL=postgres://benchmarkdbuser:benchmarkdbpass@tfb-database:5432/hello_world
-
-ADD ./ /hyperlane_techempower
-WORKDIR /hyperlane_techempower
-
-RUN cargo clean
-RUN RUSTFLAGS="-C target-cpu=native -C link-arg=-fuse-ld=lld" cargo build --release --features json
-
-EXPOSE 8080
-
-CMD ./target/release/hyperlane_techempower

+ 0 - 15
frameworks/Rust/hyperlane/hyperlane.plaintext.dockerfile

@@ -1,15 +0,0 @@
-FROM rust:1.85
-
-RUN apt-get update -yqq && apt-get install -yqq cmake g++ binutils lld
-
-ENV POSTGRES_URL=postgres://benchmarkdbuser:benchmarkdbpass@tfb-database:5432/hello_world
-
-ADD ./ /hyperlane_techempower
-WORKDIR /hyperlane_techempower
-
-RUN cargo clean
-RUN RUSTFLAGS="-C target-cpu=native -C link-arg=-fuse-ld=lld" cargo build --release --features plaintext
-
-EXPOSE 8080
-
-CMD ./target/release/hyperlane_techempower

+ 0 - 15
frameworks/Rust/hyperlane/hyperlane.query.dockerfile

@@ -1,15 +0,0 @@
-FROM rust:1.85
-
-RUN apt-get update -yqq && apt-get install -yqq cmake g++ binutils lld
-
-ENV POSTGRES_URL=postgres://benchmarkdbuser:benchmarkdbpass@tfb-database:5432/hello_world
-
-ADD ./ /hyperlane_techempower
-WORKDIR /hyperlane_techempower
-
-RUN cargo clean
-RUN RUSTFLAGS="-C target-cpu=native -C link-arg=-fuse-ld=lld" cargo build --release --features query
-
-EXPOSE 8080
-
-CMD ./target/release/hyperlane_techempower

+ 0 - 15
frameworks/Rust/hyperlane/hyperlane.update.dockerfile

@@ -1,15 +0,0 @@
-FROM rust:1.85
-
-RUN apt-get update -yqq && apt-get install -yqq cmake g++ binutils lld
-
-ENV POSTGRES_URL=postgres://benchmarkdbuser:benchmarkdbpass@tfb-database:5432/hello_world
-
-ADD ./ /hyperlane_techempower
-WORKDIR /hyperlane_techempower
-
-RUN cargo clean
-RUN RUSTFLAGS="-C target-cpu=native -C link-arg=-fuse-ld=lld" cargo build --release --features update
-
-EXPOSE 8080
-
-CMD ./target/release/hyperlane_techempower

+ 1 - 0
frameworks/Rust/hyperlane/src/const.rs

@@ -15,3 +15,4 @@ pub const KEY_ID: &str = "id";
 pub const KEY_RANDOM_NUMBER: &str = "randomnumber";
 pub const KEY_MESSAGE: &str = "message";
 pub const DB_MAX_CONNECTIONS: u32 = 100;
+pub const HTTP_BUFFER: usize = 256;

+ 2 - 1
frameworks/Rust/hyperlane/src/db.rs

@@ -153,7 +153,8 @@ pub async fn init_db() {
         create_table().await;
         insert_records().await;
     }
-    black_box(init_cache().await);
+    let _ = get_db_connection();
+    let _ = CACHE.get(0);
 }
 
 pub async fn random_world_row(db_pool: &DbPoolConnection) -> QueryRow {

+ 7 - 26
frameworks/Rust/hyperlane/src/request_middleware.rs

@@ -1,35 +1,16 @@
 use super::*;
 
 pub async fn request(ctx: Context) {
-    ctx.set_response_header(CONNECTION, KEEP_ALIVE)
+    ctx.set_response_version(HttpVersion::HTTP1_1)
         .await
-        .set_response_header(SERVER, HYPERLANE)
+        .replace_response_header(CONNECTION, KEEP_ALIVE)
         .await
-        .set_response_header(DATE, gmt())
+        .replace_response_header(SERVER, HYPERLANE)
+        .await
+        .replace_response_header(DATE, gmt())
         .await
         .set_response_status_code(200)
+        .await
+        .replace_response_header(CONTENT_TYPE, APPLICATION_JSON)
         .await;
-    #[cfg(feature = "plaintext")]
-    {
-        ctx.set_response_header(CONTENT_TYPE, TEXT_PLAIN).await;
-    }
-    #[cfg(feature = "fortunes")]
-    {
-        ctx.set_response_header(
-            CONTENT_TYPE,
-            ContentType::format_content_type_with_charset(TEXT_HTML, UTF8),
-        )
-        .await;
-    }
-    #[cfg(any(
-        feature = "json",
-        feature = "db",
-        feature = "query",
-        feature = "update",
-        feature = "cached_query"
-    ))]
-    {
-        ctx.set_response_header(CONTENT_TYPE, APPLICATION_JSON)
-            .await;
-    }
 }

+ 122 - 68
frameworks/Rust/hyperlane/src/route.rs

@@ -4,91 +4,145 @@ pub async fn json(ctx: Context) {
     let json: Value = json!({
         "message": RESPONSEDATA_STR
     });
-    let _ = ctx
-        .set_response_body(serde_json::to_string(&json).unwrap_or_default())
-        .await
-        .send()
-        .await;
+    let run = || async {
+        ctx.set_response_body(serde_json::to_string(&json).unwrap_or_default())
+            .await;
+        ctx.send().await.unwrap();
+    };
+    run().await;
+    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
+        run().await;
+    }
+    ctx.closed().await;
 }
 
 pub async fn plaintext(ctx: Context) {
-    let _ = ctx.set_response_body(RESPONSEDATA_BIN).await.send().await;
+    ctx.replace_response_header(CONTENT_TYPE, TEXT_PLAIN).await;
+    ctx.set_response_body(RESPONSEDATA_BIN).await;
+    let run = || async {
+        ctx.send().await.unwrap();
+    };
+    run().await;
+    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
+        run().await;
+    }
+    ctx.closed().await;
 }
 
 pub async fn db(ctx: Context) {
     let db_connection: &DbPoolConnection = get_db_connection();
-    let query_row: QueryRow = random_world_row(db_connection).await;
-    let _ = ctx
-        .set_response_body(serde_json::to_string(&query_row).unwrap_or_default())
-        .await
-        .send()
-        .await;
+    let run = || async {
+        let query_row: QueryRow = random_world_row(db_connection).await;
+        ctx.set_response_body(serde_json::to_string(&query_row).unwrap_or_default())
+            .await
+            .send()
+            .await
+            .unwrap();
+    };
+    run().await;
+    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
+        run().await;
+    }
+    ctx.closed().await;
 }
 
 pub async fn query(ctx: Context) {
-    let queries: Queries = ctx
-        .get_request_query("q")
-        .await
-        .and_then(|queries| queries.parse::<Queries>().ok())
-        .unwrap_or_default()
-        .min(ROW_LIMIT as Queries)
-        .max(1);
-    let db_pool: &DbPoolConnection = get_db_connection();
-    let data: Vec<QueryRow> = get_some_row_id(queries, db_pool).await;
-    let _ = ctx
-        .set_response_body(serde_json::to_string(&data).unwrap_or_default())
-        .await
-        .send()
-        .await;
+    let run = || async {
+        let queries: Queries = ctx
+            .get_request_query("q")
+            .await
+            .and_then(|queries| queries.parse::<Queries>().ok())
+            .unwrap_or_default()
+            .min(ROW_LIMIT as Queries)
+            .max(1);
+        let db_pool: &DbPoolConnection = get_db_connection();
+        let data: Vec<QueryRow> = get_some_row_id(queries, db_pool).await;
+        ctx.set_response_body(serde_json::to_string(&data).unwrap_or_default())
+            .await
+            .send()
+            .await
+            .unwrap();
+    };
+    run().await;
+    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
+        run().await;
+    }
+    ctx.closed().await;
 }
 
 pub async fn fortunes(ctx: Context) {
-    let all_rows: Vec<PgRow> = all_world_row().await;
-    let mut fortunes_list: Vec<Fortunes> = all_rows
-        .iter()
-        .map(|row| {
-            let id: i32 = row.get(KEY_ID);
-            let message: String = row.get(KEY_MESSAGE);
-            Fortunes::new(id, message)
-        })
-        .collect();
-    fortunes_list.push(Fortunes::new(
-        0,
-        "Additional fortune added at request time.".to_owned(),
-    ));
-    fortunes_list.sort_by(|it, next| it.message.cmp(&next.message));
-    let res: String = FortunesTemplate::new(fortunes_list).to_string();
-    let _ = ctx.set_response_body(res).await.send().await;
+    ctx.replace_response_header(
+        CONTENT_TYPE,
+        ContentType::format_content_type_with_charset(TEXT_HTML, UTF8),
+    )
+    .await;
+    let run = || async {
+        let all_rows: Vec<PgRow> = all_world_row().await;
+        let mut fortunes_list: Vec<Fortunes> = all_rows
+            .iter()
+            .map(|row| {
+                let id: i32 = row.get(KEY_ID);
+                let message: String = row.get(KEY_MESSAGE);
+                Fortunes::new(id, message)
+            })
+            .collect();
+        fortunes_list.push(Fortunes::new(
+            0,
+            "Additional fortune added at request time.".to_owned(),
+        ));
+        fortunes_list.sort_by(|it, next| it.message.cmp(&next.message));
+        let res: String = FortunesTemplate::new(fortunes_list).to_string();
+        ctx.set_response_body(res).await.send().await.unwrap();
+    };
+    run().await;
+    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
+        run().await;
+    }
+    ctx.closed().await;
 }
 
 pub async fn update(ctx: Context) {
-    let queries: Queries = ctx
-        .get_request_query("q")
-        .await
-        .and_then(|queries| queries.parse::<Queries>().ok())
-        .unwrap_or_default()
-        .min(ROW_LIMIT as Queries)
-        .max(1);
-    let res: Vec<QueryRow> = update_world_rows(queries).await;
-    let _ = ctx
-        .set_response_body(serde_json::to_string(&res).unwrap_or_default())
-        .await
-        .send()
-        .await;
+    let run = || async {
+        let queries: Queries = ctx
+            .get_request_query("q")
+            .await
+            .and_then(|queries| queries.parse::<Queries>().ok())
+            .unwrap_or_default()
+            .min(ROW_LIMIT as Queries)
+            .max(1);
+        let res: Vec<QueryRow> = update_world_rows(queries).await;
+        ctx.set_response_body(serde_json::to_string(&res).unwrap_or_default())
+            .await
+            .send()
+            .await
+            .unwrap();
+    };
+    run().await;
+    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
+        run().await;
+    }
+    ctx.closed().await;
 }
 
 pub async fn cached_query(ctx: Context) {
-    let count: Queries = ctx
-        .get_request_query("c")
-        .await
-        .and_then(|queries| queries.parse::<Queries>().ok())
-        .unwrap_or_default()
-        .min(ROW_LIMIT as Queries)
-        .max(1);
-    let res: Vec<QueryRow> = CACHE.iter().take(count as usize).cloned().collect();
-    let _ = ctx
-        .set_response_body(serde_json::to_string(&res).unwrap_or_default())
-        .await
-        .send()
-        .await;
+    let run = || async {
+        let count: Queries = ctx
+            .get_request_query("c")
+            .await
+            .and_then(|queries| queries.parse::<Queries>().ok())
+            .unwrap_or_default()
+            .min(ROW_LIMIT as Queries)
+            .max(1);
+        let res: Vec<QueryRow> = CACHE.iter().take(count as usize).cloned().collect();
+        ctx.set_response_body(serde_json::to_string(&res).unwrap_or_default())
+            .await
+            .send()
+            .await
+            .unwrap();
+    };
+    run().await;
+    while let Ok(_) = ctx.http_from_stream(HTTP_BUFFER).await {
+        run().await;
+    }
+    ctx.closed().await;
 }

+ 47 - 26
frameworks/Rust/hyperlane/src/server.rs

@@ -17,36 +17,57 @@ async fn init_server() {
     server.port(8080).await;
     server.disable_linger().await;
     server.disable_nodelay().await;
-    server.error_handler(async |_: PanicInfo| {}).await;
-    server.http_buffer_size(256).await;
-    server.ws_buffer_size(256).await;
+    server.http_buffer(256).await;
+    server.ws_buffer(256).await;
+
     server.request_middleware(request_middleware::request).await;
-    #[cfg(any(feature = "dev", feature = "plaintext"))]
-    server.route("/plaintext", route::plaintext).await;
-    #[cfg(any(feature = "dev", feature = "json"))]
-    server.route("/json", route::json).await;
-    #[cfg(any(feature = "dev", feature = "cached_query"))]
-    server.route("/cached-quer", route::cached_query).await;
-    #[cfg(any(feature = "dev", feature = "db"))]
-    server.route("/db", route::db).await;
-    #[cfg(any(feature = "dev", feature = "query"))]
-    server.route("/query", route::query).await;
-    #[cfg(any(feature = "dev", feature = "fortunes"))]
-    server.route("/fortunes", route::fortunes).await;
-    #[cfg(any(feature = "dev", feature = "update"))]
-    server.route("/upda", route::update).await;
-    server.run().await.unwrap();
+
+    server
+        .disable_http_hook("/plaintext")
+        .await
+        .route("/plaintext", route::plaintext)
+        .await;
+
+    server
+        .disable_http_hook("/json")
+        .await
+        .route("/json", route::json)
+        .await;
+
+    server
+        .disable_http_hook("/cached-quer")
+        .await
+        .route("/cached-quer", route::cached_query)
+        .await;
+
+    server
+        .disable_http_hook("/db")
+        .await
+        .route("/db", route::db)
+        .await;
+
+    server
+        .disable_http_hook("/query")
+        .await
+        .route("/query", route::query)
+        .await;
+
+    server
+        .disable_http_hook("/fortunes")
+        .await
+        .route("/fortunes", route::fortunes)
+        .await;
+
+    server
+        .disable_http_hook("/upda")
+        .await
+        .route("/upda", route::update)
+        .await;
+
+    server.run().await.unwrap().wait().await;
 }
 
 async fn init() {
-    #[cfg(any(
-        feature = "dev",
-        feature = "db",
-        feature = "query",
-        feature = "update",
-        feature = "fortunes",
-        feature = "cached_query",
-    ))]
     init_db().await;
     init_server().await;
 }