Research HTTP/2 support and protocol negotiation
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
- 難度
- 5/5
- 預估耗時
- 一週以上
- 新手友好度
- 45/100
- Issue 類型
- 文件
- 描述清晰度
- 基本清楚
- 活躍度
- 活躍
- 技術堆疊
- rust
- 領域
- cli, networking
研究方向
從 Cargo.toml 和 src/http.rs 開始,確認目前僅支援 HTTP/1 的設定以及 connector 設定。針對受支援的 target,調查所列出的互通性、資源、協商、連線池和通訊協定行為問題。完成的標準是:提供關於 HTTP/2 的文件化建議、經過測量的取捨結果、在建議支援時的實作計畫,以及更新後的公開執行階段文件。
由索引模型根據 Issue 內容生成。
描述
Context
The current HTTP stack enables only the http1 features in Cargo.toml and constructs its connector with enable_http1() in src/http.rs. HTTP/1.1 is widely interoperable, but HTTP/2 can improve connection reuse, multiplexing, and header compression, and some services or protocols require it.
Adding HTTP/2 also has costs and design questions. It introduces more code and dependencies into every statically linked application, and the host currently creates a new Hyper client for each request, which limits the benefit of multiplexing and connection pooling.
Research questions
Investigate and document:
- actual interoperability or performance needs for HTTP/2 in basic-cli applications;
- binary-size, compile-time, memory, and runtime costs on every supported target;
- supporting HTTP/1.1 and HTTP/2 through TLS ALPN negotiation versus exposing an explicit protocol choice;
- whether cleartext HTTP/2 (
h2c) is in scope; - whether the HTTP client should be shared across requests to make connection pooling and HTTP/2 multiplexing useful;
- request, response, timeout, and error behavior that may differ by protocol;
- tests for HTTP/1.1 fallback, successful HTTP/2 negotiation, and protocol-specific failures.
Desired outcome
Record whether basic-cli should support HTTP/2, with a recommendation and measured tradeoffs. If support is recommended, define an implementation plan that preserves HTTP/1.1 compatibility and keeps the public API and runtime behavior explicit.
Keep the public runtime documentation updated with the chosen behavior.
Related work
- #448 documents the current HTTP/1-only behavior.
- #436 tracks bounded HTTP response bodies.
- #438 tracks stable HTTP transport error classification.
- 主要語言
- Rust
- 星號
- 121
- 分支
- 45
- 平均合併
- 19 小時 1 分鐘
- 30 天內合併 PR
- 16
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 沒有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
roc-lang/basic-cli 的其他 Issue
-
難度 3/5 1-2 天 新手友好度 45/100
維護者通常 1 天內回覆
-
難度 5/5 一週以上 新手友好度 25/100
維護者通常 1 天內回覆
-
難度 4/5 3-5 天 新手友好度 45/100
維護者通常 1 天內回覆
-
難度 3/5 1-2 天 新手友好度 52/100
維護者通常 1 天內回覆
-
難度 5/5 一週以上 新手友好度 32/100
維護者通常 1 天內回覆
查看 roc-lang/basic-cli 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 88/100
aws-samples/sample-pacer#76 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 68/100
-
難度 2/5 1-3 小時 新手友好度 68/100
-
難度 2/5 1-3 小時 新手友好度 78/100
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 86/100
axodotdev/cargo-dist#2523 ·
維護者通常 2 天內回覆