{"id":18332,"date":"2022-02-01T09:03:00","date_gmt":"2022-02-01T08:03:00","guid":{"rendered":"https:\/\/daniel.haxx.se\/blog\/?p=18332"},"modified":"2022-02-01T09:03:00","modified_gmt":"2022-02-01T08:03:00","slug":"curl-with-rust","status":"publish","type":"post","link":"https:\/\/daniel.haxx.se\/blog\/2022\/02\/01\/curl-with-rust\/","title":{"rendered":"curl with rust"},"content":{"rendered":"\n<p>I did an online presentation with this name for the Rust Linz meetup, on January 27 2022. This is the recording:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Rust Linz, January &#039;22 - curl with Rust by Daniel Stenberg\" width=\"474\" height=\"267\" src=\"https:\/\/www.youtube.com\/embed\/HFH2vZRTKrA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>The individual slides are also <a href=\"https:\/\/www.slideshare.net\/bagder\/curl-with-rust\">available<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"content-quickly\">Content quickly<\/h2>\n\n\n\n<p>In this presentation I talk about how libcurl&#8217;s most important aspect is the stable ABI and API. If we just maintain those, we can change the internals however we like.<\/p>\n\n\n\n<p>libcurl has a system with build-time selected components, called backends. They are usually powered by third party libraries. With the recently added HTTP backend there are now seven &#8220;flavors&#8221; of backends.<\/p>\n\n\n\n<p>A backend can be provided by a library written in rust, as long as that rust component provides a C interface that libcurl can use. When it does, it being rust or not is completely transparent and a non-issue for libcurl.<\/p>\n\n\n\n<p>curl currently supports components written in rust for three different backends:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>HTTP &#8211; by <a href=\"https:\/\/hyper.rs\/\">hyper<\/a><\/li><li>TLS &#8211; by <a href=\"https:\/\/github.com\/rustls\/rustls\">rustls<\/a><\/li><li>HTTP\/3 &#8211; by <a href=\"https:\/\/docs.quic.tech\/quiche\/\">quiche<\/a><\/li><\/ul>\n\n\n\n<p>None of these backends are yet &#8220;feature complete&#8221;, but we are moving slowly towards that. Your help is appreciated!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I did an online presentation with this name for the Rust Linz meetup, on January 27 2022. This is the recording: The individual slides are also available. Content quickly In this presentation I talk about how libcurl&#8217;s most important aspect is the stable ABI and API. If we just maintain those, we can change the &hellip; <a href=\"https:\/\/daniel.haxx.se\/blog\/2022\/02\/01\/curl-with-rust\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">curl with rust<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":14731,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[33,230,436,497,381],"class_list":["post-18332","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-curl","tag-curl-and-libcurl","tag-http","tag-http3","tag-rust","tag-tls"],"_links":{"self":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/18332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/comments?post=18332"}],"version-history":[{"count":2,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/18332\/revisions"}],"predecessor-version":[{"id":18390,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/18332\/revisions\/18390"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media\/14731"}],"wp:attachment":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media?parent=18332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/categories?post=18332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/tags?post=18332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}