summaryrefslogtreecommitdiff
path: root/docs/HYPER.md
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2020-12-14 14:10:32 +0100
committerDaniel Stenberg <daniel@haxx.se>2020-12-18 09:58:03 +0100
commit8a113ba93c112927200205fb4f4577ad3bc1e1b9 (patch)
tree1ed558a93d4836d8f8a6f29b2af5ef2319f8ee48 /docs/HYPER.md
parentc263e583c28611b3e14a46454dca64698f616f24 (diff)
downloadcurl-8a113ba93c112927200205fb4f4577ad3bc1e1b9.tar.gz
docs: add HYPER.md
Diffstat (limited to 'docs/HYPER.md')
-rw-r--r--docs/HYPER.md47
1 files changed, 47 insertions, 0 deletions
diff --git a/docs/HYPER.md b/docs/HYPER.md
new file mode 100644
index 000000000..655d0176c
--- /dev/null
+++ b/docs/HYPER.md
@@ -0,0 +1,47 @@
+# Hyper
+
+Hyper is a separate HTTP library written in Rust. curl can be told to use this
+library as a backend to deal with HTTP.
+
+## Experimental!
+
+Hyper support in curl is considered **EXPERIMENTAL** until further notice. It
+needs to be explicitly enabled at build-time.
+
+Further development and tweaking of the Hyper backend support in curl will
+happen in in the master branch using pull-requests, just like ordinary
+changes.
+
+## Hyper version
+
+The C API for Hyper is brand new and under development. This description
+assumes that you get and build that C API off [the branch in Hyper's git
+repository](https://github.com/hyperium/hyper/tree/hyper-capi).
+
+## build curl with hyper
+
+Build hyper and enable the C API:
+
+ % git clone -b hyper-capi https://github.com/hyperium/hyper
+ % cd hyper
+ % cargo build --no-default-features --features ffi
+
+Build curl to use hyper's C API:
+
+ % git clone https://github.com/curl/curl
+ % cd curl
+ % ./buildconf
+ % ./configure --with-hyper=<hyper dir>
+ % make
+
+# using Hyper internally
+
+Hyper is a low level HTTP transport library. curl itself provides all HTTP
+headers and Hyper provides all received headers back to curl.
+
+Therefore, msost of the "header logic" in curl as in responding to and acting
+on specific input and output headers are done the same way in curl code.
+
+The API in Hyper delivers received HTTP headers as (cleaned up) name=value
+pairs, making it impossible for curl to know the exact byte representation
+over the wire with Hyper.