{"id":10258,"date":"2017-08-09T12:01:27","date_gmt":"2017-08-09T10:01:27","guid":{"rendered":"https:\/\/daniel.haxx.se\/blog\/?p=10258"},"modified":"2017-08-09T12:01:27","modified_gmt":"2017-08-09T10:01:27","slug":"some-things-to-enjoy-in-curl-7-55-0","status":"publish","type":"post","link":"https:\/\/daniel.haxx.se\/blog\/2017\/08\/09\/some-things-to-enjoy-in-curl-7-55-0\/","title":{"rendered":"Some things to enjoy in curl 7.55.0"},"content":{"rendered":"<p>In this endless stream of frequent releases, the next release isn&#8217;t terribly different from the previous.<\/p>\n<p>curl&#8217;s 167th release is called <strong>7.55.0<\/strong> and while the name or number isn&#8217;t standing out in any particular way, I believe this release has a few extra bells and whistles that makes it stand out a little from the regular curl releases, feature wise. Hopefully this will turn out to be a release that becomes the new &#8220;you should at least upgrade to <em>this <\/em>version&#8221; in the coming months and years.<\/p>\n<p><a href=\"https:\/\/curl.haxx.se\/\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8943 aligncenter\" src=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol-450x394.png\" alt=\"\" width=\"302\" height=\"264\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol-450x394.png 450w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol-200x175.png 200w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol-768x672.png 768w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2016\/05\/curl-symbol.png 789w\" sizes=\"auto, (max-width: 302px) 100vw, 302px\" \/><\/a><\/p>\n<p>Here are six things in this release I consider worthy some special attention. (<a href=\"https:\/\/curl.haxx.se\/changes.html#7_55_0\">The full changelog<\/a>.)<\/p>\n<h2>1. Headers from file<\/h2>\n<p>The command line options that allows users to pass on custom headers can now <a href=\"https:\/\/daniel.haxx.se\/blog\/2017\/06\/16\/curl-read-headers-from-file\/\">read a set of headers from a given file<\/a>.<\/p>\n<h2>2. Binary output prevention<\/h2>\n<p>Invoke curl on the command line, give it a URL to a binary file and see it destroy your terminal by sending all that gunk to the terminal? <a href=\"https:\/\/daniel.haxx.se\/blog\/2017\/06\/17\/curl-doesnt-spew-binary-anymore\/\">No more<\/a>.<\/p>\n<h2>3. Target independent headers<\/h2>\n<p>You want to build applications that use libcurl and build for different architectures, such as 32 bit and 64 bit builds, using the same installed set of libcurl headers? Didn&#8217;t use to be possible. <a href=\"https:\/\/daniel.haxx.se\/blog\/2017\/06\/15\/target-independent-libcurl-headers\/\">Now it is.<\/a><\/p>\n<h2>4. OPTIONS * support!<\/h2>\n<p>Among HTTP requests, this is a rare beast. Starting now, you can <a href=\"https:\/\/daniel.haxx.se\/blog\/2017\/06\/19\/options-with-curl\/\">tell curl to send such requests<\/a>.<\/p>\n<h2>5. HTTP proxy use cleanup<\/h2>\n<p>Asking curl to use a HTTP proxy while doing a non-HTTP protocol would often behave in unpredictable ways since it wouldn&#8217;t do CONNECT requests unless you added an extra instruction. Now <a href=\"https:\/\/daniel.haxx.se\/blog\/2017\/06\/16\/curling-over-http-proxy\/\">libcurl will assume CONNECT operations<\/a> for all protocols over an HTTP proxy unless you use HTTP or FTP.<\/p>\n<h2>6. Coverage counter<\/h2>\n<p>The configure script now supports the option <strong>&#8211;enable-code-coverage<\/strong>. We now build all commits done on github with it enabled, run a bunch of tests and measure the test coverage data it produces. How large share of our source code that is exercised by our tests. We push all <a href=\"https:\/\/coveralls.io\/github\/curl\/curl\">coverage data to coveralls.io<\/a>.<\/p>\n<p>That&#8217;s a blunt tool, but it could help us identify parts of the project that we don&#8217;t test well enough. Right now it says we have a <strong>75% coverage<\/strong>. While not totally bad, it&#8217;s not very impressive either.<\/p>\n<h1>Stats<\/h1>\n<p>This release ships <strong>56 days<\/strong> since the previous one. Exactly 8 weeks, right on schedule. <strong>207 commits<\/strong>.<\/p>\n<p>This release contains <strong>114 listed bug-fixes<\/strong>, including three security advisories. We list <strong>7 &#8220;changes&#8221;<\/strong> done (new features basically).<\/p>\n<p>We got help from <strong>41 individual contributors<\/strong> who helped making this single release. Out of this bunch, <strong>20 persons were new<\/strong> contributors and <strong>24 authored patches<\/strong>.<\/p>\n<p><strong>283 files<\/strong> in the git repository were modified for this release. <strong>51 files<\/strong> in the documentation tree were updated, and in the library <strong>78 files<\/strong> were changed: <strong>1032 lines inserted<\/strong> and <strong>1007 lines deleted<\/strong>. <strong>24 test cases<\/strong> were added or modified.<\/p>\n<p>The top 5 commit authors in this release are:<\/p>\n<ol>\n<li><a href=\"https:\/\/github.com\/bagder\">Daniel Stenberg<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/MarcelRaad\">Marcel Raad<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/jay\">Jay Satiro<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/maxdymond\">Max Dymond<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/kdudka\">Kamil Dudka<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>In this endless stream of frequent releases, the next release isn&#8217;t terribly different from the previous. curl&#8217;s 167th release is called 7.55.0 and while the name or number isn&#8217;t standing out in any particular way, I believe this release has a few extra bells and whistles that makes it stand out a little from the &hellip; <a href=\"https:\/\/daniel.haxx.se\/blog\/2017\/08\/09\/some-things-to-enjoy-in-curl-7-55-0\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Some things to enjoy in curl 7.55.0<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[33,95],"class_list":["post-10258","post","type-post","status-publish","format-standard","hentry","category-curl","tag-curl-and-libcurl","tag-release"],"_links":{"self":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/10258","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=10258"}],"version-history":[{"count":17,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/10258\/revisions"}],"predecessor-version":[{"id":10292,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/10258\/revisions\/10292"}],"wp:attachment":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media?parent=10258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/categories?post=10258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/tags?post=10258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}