Plaster
New
List
Login
common-lisp
default
phoe
2020.09.01 13:24:53
┌─[phoe][phoetower][~] └─▪ lisp * (ql:quickload :dexador) To load "dexador": Load 1 ASDF system: dexador ; Loading "dexador" To load "cl-utilities": Install 1 Quicklisp release: cl-utilities Downloading http://beta.quicklisp.org/archive/cl-utilities/2010-10-06/cl-utilities-1.2.4.tgz ########################################################################## ; Loading "cl-utilities" [package cl-utilities]..... To load "dexador": Load 1 ASDF system: dexador ; Loading "dexador" To load "quri": Load 5 ASDF systems: alexandria asdf babel cl-utilities split-sequence Install 1 Quicklisp release: quri Downloading http://beta.quicklisp.org/archive/quri/2019-11-30/quri-20191130-git.tgz ########################################################################## ; Loading "quri" .................................................. [package quri.port]............................... [package quri.uri]................................ [package quri.encode]............................. [package quri.error].............................. [package quri.util]............................... [package quri.decode]............................. [package quri.uri.ftp]............................ [package quri.uri.http]........................... [package quri.uri.ldap]........................... [package quri.uri.file]........................... [package quri.etld]............................... [package quri.domain]............................. [package quri.parser]............................. [package quri].. To load "dexador": Load 1 ASDF system: dexador ; Loading "dexador" ...To load "local-time": Load 2 ASDF systems: asdf cl-fad Install 1 Quicklisp release: local-time Downloading http://beta.quicklisp.org/archive/local-time/2020-03-25/local-time-20200325-git.tgz ########################################################################## ; Loading "local-time" [package cl-fad].................................. [package path].................................... [package local-time]..................... To load "dexador": Load 1 ASDF system: dexador ; Loading "dexador" [package proc-parse].............................. [package xsubseq]................................. [package smart-buffer]............................ [package fast-http.http].......................... [package fast-http.error]......................... [package fast-http.byte-vector]................... [package fast-http.util].......................... [package fast-http.parser]........................ .................................................. [package fast-http.multipart-parser].............. [package fast-http]............................... [package cl-cookie]............................... [package trivial-mimes]........................... [package cl-reexport]............................. [package dexador.encoding]........................ [package dexador.connection-cache]................ [package dexador.decoding-stream]................. [package dexador.keep-alive-stream]............... [package dexador.util]............................ [package dexador.body]............................ [package dexador.error]........................... [package dexador.backend.usocket]................. [package dexador] (:DEXADOR) * (dexador:get "https://github.com/fukamachi/fast-http") " <!DOCTYPE html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <link rel=\"dns-prefetch\" href=\"https://github.githubassets.com\"> <link rel=\"dns-prefetch\" href=\"https://avatars0.githubusercontent.com\"> <link rel=\"dns-prefetch\" href=\"https://avatars1.githubusercontent.com\"> <link rel=\"dns-prefetch\" href=\"https://avatars2.githubusercontent.com\"> <link rel=\"dns-prefetch\" href=\"https://avatars3.githubusercontent.com\"> <link rel=\"dns-prefetch\" href=\"https://github-cloud.s3.amazonaws.com\"> <link rel=\"dns-prefetch\" href=\"https://user-images.githubusercontent.com/\"> <link crossorigin=\"anonymous\" media=\"all\" integrity=\"sha512-jFUBCdWOA1Ov3xo3oFMBwsdP4Up2K1bRnP4QYI5WqvpaIYxWVek89k2M0oyTbNhYMViGtxJB3Vdwcw8ln8hGQw==\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/frameworks-8c550109d58e0353afdf1a37a05301c2.css\" /> <link crossorigin=\"anonymous\" media=\"all\" integrity=\"sha512-fqnZtayqgLCmcQfxXp5OH4orKvv16fP0zCU6Ns+NuAULztoXdSMDcdECjHWSFA018nYJNqWh1OXhgZ9W8EMMQw==\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/site-7ea9d9b5acaa80b0a67107f15e9e4e1f.css\" /> <link crossorigin=\"anonymous\" media=\"all\" integrity=\"sha512-HSlsPBXUW9znOdZ2xXeXJUwwOYA0jEjz9q6hGOfRrFoxxsfka1g7vMGoyz3c3HRnCY7akOY9XYEGhE5jaeiMWw==\" rel=\"stylesheet\" href=\"https://github.githubassets.com/assets/github-1d296c3c15d45bdce739d676c5779725.css\" /> <meta name=\"viewport\" content=\"width=device-width\"> <title>GitHub - fukamachi/fast-http: A fast HTTP request/response parser for Common Lisp.</title> <meta name=\"description\" content=\"A fast HTTP request/response parser for Common Lisp. - fukamachi/fast-http\"> <link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"/opensearch.xml\" title=\"GitHub\"> <link rel=\"fluid-icon\" href=\"https://github.com/fluidicon.png\" title=\"GitHub\"> <meta property=\"fb:app_id\" content=\"1401488693436528\"> <meta name=\"apple-itunes-app\" content=\"app-id=1477376905\"> <meta name=\"twitter:image:src\" content=\"https://avatars0.githubusercontent.com/u/90570?s=400&v=4\" /><meta name=\"twitter:site\" content=\"@github\" /><meta name=\"twitter:card\" content=\"summary\" /><meta name=\"twitter:title\" content=\"fukamachi/fast-http\" /><meta name=\"twitter:description\" content=\"A fast HTTP request/response parser for Common Lisp. - fukamachi/fast-http\" /> <meta property=\"og:image\" content=\"https://avatars0.githubusercontent.com/u/90570?s=400&v=4\" /><meta property=\"og:site_name\" content=\"GitHub\" /><meta property=\"og:type\" content=\"object\" /><meta property=\"og:title\" content=\"fukamachi/fast-http\" /><meta property=\"og:url\" content=\"https://github.com/fukamachi/fast-http\" /><meta property=\"og:description\" content=\"A fast HTTP request/response parser for Common Lisp. - fukamachi/fast-http\" /> <link rel=\"assets\" href=\"https://github.githubassets.com/\"> <meta name=\"request-id\" content=\"2414:B059:320EE5A:490CF8F:5F4E4B85\" data-pjax-transient=\"true\"/><meta name=\"html-safe-nonce\" content=\"b04f251352342fdbfac944905357029ab2b7a1b1\" data-pjax-transient=\"true\"/><meta name=\"visitor-payload\" content=\"eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiIyNDE0OkIwNTk6MzIwRUU1QTo0OTBDRjhGOjVGNEU0Qjg1IiwidmlzaXRvcl9pZCI6IjkxNzE2OTY3NjE0NzQ3OTY0MjEiLCJyZWdpb25fZWRnZSI6ImZyYSIsInJlZ2lvbl9yZW5kZXIiOiJmcmEifQ==\" data-pjax-transient=\"true\"/><meta name=\"visitor-hmac\" content=\"8b8d168742129383ebba88c72cd025f80b42ecb37a0e0f3afdbad395fa0bcc4d\" data-pjax-transient=\"true\"/><meta name=\"cookie-consent-required\" content=\"true\" data-pjax-transient=\"true\"/> <meta name=\"hovercard-subject-tag\" content=\"repository:25027926\" data-pjax-transient> <meta name=\"github-keyboard-shortcuts\" content=\"repository\" data-pjax-transient=\"true\" /> <meta name=\"selected-link\" value=\"repo_source\" data-pjax-transient> <meta name=\"google-site-verification\" content=\"c1kuD-K2HIVF635lypcsWPoD4kilo5-jA_wBFyT4uMY\"> <meta name=\"google-site-verification\" content=\"KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU\"> <meta name=\"google-site-verification\" content=\"ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA\"> <meta name=\"google-site-verification\" content=\"GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc\"> <meta name=\"octolytics-host\" content=\"collector.githubapp.com\" /><meta name=\"octolytics-app-id\" content=\"github\" /><meta name=\"octolytics-event-url\" content=\"https://collector.githubapp.com/github-external/browser_event\" /><meta name=\"octolytics-dimension-ga_id\" content=\"\" class=\"js-octo-ga-id\" /> <meta name=\"analytics-location\" content=\"/<user-name>/<repo-name>\" data-pjax-transient=\"true\" /> <meta name=\"google-analytics\" content=\"UA-3769691-2\"> <meta class=\"js-ga-set\" name=\"dimension10\" content=\"Responsive\" data-pjax-transient> <meta class=\"js-ga-set\" name=\"dimension1\" content=\"Logged Out\"> <meta name=\"hostname\" content=\"github.com\"> <meta name=\"user-login\" content=\"\"> <meta name=\"expected-hostname\" content=\"github.com\"> <meta name=\"enabled-features\" content=\"MARKETPLACE_PENDING_INSTALLATIONS\"> <meta http-equiv=\"x-pjax-version\" content=\"f7502b7d3716c3c27abd84ce7efe7ee6\"> <link href=\"https://github.com/fukamachi/fast-http/commits/master.atom\" rel=\"alternate\" title=\"Recent Commits to fast-http:master\" type=\"application/atom+xml\"> <meta name=\"go-import\" content=\"github.com/fukamachi/fast-http git https://github.com/fukamachi/fast-http.git\"> <meta name=\"octolytics-dimension-user_id\" content=\"90570\" /><meta name=\"octolytics-dimension-user_login\" content=\"fukamachi\" /><meta name=\"octolytics-dimension-repository_id\" content=\"25027926\" /><meta name=\"octolytics-dimension-repository_nwo\" content=\"fukamachi/fast-http\" /><meta name=\"octolytics-dimension-repository_public\" content=\"true\" /><meta name=\"octolytics-dimension-repository_is_fork\" content=\"false\" /><meta name=\"octolytics-dimension-repository_network_root_id\" content=\"25027926\" /><meta name=\"octolytics-dimension-repository_network_root_nwo\" content=\"fukamachi/fast-http\" /><meta name=\"octolytics-dimension-repository_explore_github_marketplace_ci_cta_shown\" content=\"false\" /> <link rel=\"canonical\" href=\"https://github.com/fukamachi/fast-http\" data-pjax-transient> <meta name=\"browser-stats-url\" content=\"https://api.github.com/_private/browser/stats\"> <meta name=\"browser-errors-url\" content=\"https://api.github.com/_private/browser/errors\"> <link rel=\"mask-icon\" href=\"https://github.githubassets.com/pinned-octocat.svg\" color=\"#000000\"> <link rel=\"alternate icon\" class=\"js-site-favicon\" type=\"image/png\" href=\"https://github.githubassets.com/favicons/favicon.png\"> <link rel=\"icon\" class=\"js-site-favicon\" type=\"image/svg+xml\" href=\"https://github.githubassets.com/favicons/favicon.svg\"> <meta name=\"theme-color\" content=\"#1e2327\"> <link rel=\"manifest\" href=\"/manifest.json\" crossOrigin=\"use-credentials\"> </head> <body class=\"logged-out env-production page-responsive\"> <div class=\"position-relative js-header-wrapper \"> <a href=\"#start-of-content\" class=\"px-2 py-4 bg-blue text-white show-on-focus js-skip-to-content\">Skip to content</a> <span class=\"progress-pjax-loader width-full js-pjax-loader-bar Progress position-fixed\"> <span style=\"background-color: #79b8ff;width: 0%;\" class=\"Progress-item progress-pjax-loader-bar \"></span> </span> <header class=\"Header-old header-logged-out js-details-container Details position-relative f4 py-2\" role=\"banner\"> <div class=\"container-xl d-lg-flex flex-items-center p-responsive\"> <div class=\"d-flex flex-justify-between flex-items-center\"> <a class=\"mr-4\" href=\"https://github.com/\" aria-label=\"Homepage\" data-ga-click=\"(Logged out) Header, go to homepage, icon:logo-wordmark\"> <svg height=\"32\" class=\"octicon octicon-mark-github text-white\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"32\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z\"></path></svg> </a> <div class=\"d-lg-none css-truncate css-truncate-target width-fit p-2\"> </div> <div class=\"d-flex flex-items-center\"> <a href=\"/join?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo\" class=\"d-inline-block d-lg-none f5 text-white no-underline border border-gray-dark rounded-2 px-2 py-1 mr-3 mr-sm-5\" data-hydro-click=\"{"event_type":"authentication.click","payload":{"location_in_page":"site header","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"724bb5d51e69a776576ea3339191050e2d9753aeeaf491d7cd8aeecb23d75ae6\" data-ga-click=\"Sign up, click to sign up for account, ref_page:/<user-name>/<repo-name>;ref_cta:Sign up;ref_loc:header logged out\"> Sign up </a> <button class=\"btn-link d-lg-none mt-1 js-details-target\" type=\"button\" aria-label=\"Toggle navigation\" aria-expanded=\"false\"> <svg height=\"24\" class=\"octicon octicon-three-bars text-white\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"24\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z\"></path></svg> </button> </div> </div> <div class=\"HeaderMenu HeaderMenu--logged-out position-fixed top-0 right-0 bottom-0 height-fit position-lg-relative d-lg-flex flex-justify-between flex-items-center flex-auto\"> <div class=\"d-flex d-lg-none flex-justify-end border-bottom bg-gray-light p-3\"> <button class=\"btn-link js-details-target\" type=\"button\" aria-label=\"Toggle navigation\" aria-expanded=\"false\"> <svg height=\"24\" class=\"octicon octicon-x text-gray\" viewBox=\"0 0 24 24\" version=\"1.1\" width=\"24\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M5.72 5.72a.75.75 0 011.06 0L12 10.94l5.22-5.22a.75.75 0 111.06 1.06L13.06 12l5.22 5.22a.75.75 0 11-1.06 1.06L12 13.06l-5.22 5.22a.75.75 0 01-1.06-1.06L10.94 12 5.72 6.78a.75.75 0 010-1.06z\"></path></svg> </button> </div> <nav class=\"mt-0 px-3 px-lg-0 mb-5 mb-lg-0\" aria-label=\"Global\"> <ul class=\"d-lg-flex list-style-none\"> <li class=\"d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center \"> <details class=\"HeaderMenu-details details-overlay details-reset width-full\"> <summary class=\"HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block\"> Why GitHub? <svg x=\"0px\" y=\"0px\" viewBox=\"0 0 14 8\" xml:space=\"preserve\" fill=\"none\" class=\"icon-chevon-down-mktg position-absolute position-lg-relative\"> <path d=\"M1,1l6.2,6L13,1\"></path> </svg> </summary> <div class=\"dropdown-menu flex-auto rounded-1 bg-white px-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4\"> <a href=\"/features\" class=\"py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover\" data-ga-click=\"(Logged out) Header, go to Features\">Features <span class=\"Bump-link-symbol float-right text-normal text-gray-light\">→</span></a> <ul class=\"list-style-none f5 pb-3\"> <li class=\"edge-item-fix\"><a href=\"/features/code-review/\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Code review\">Code review</a></li> <li class=\"edge-item-fix\"><a href=\"/features/project-management/\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Project management\">Project management</a></li> <li class=\"edge-item-fix\"><a href=\"/features/integrations\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Integrations\">Integrations</a></li> <li class=\"edge-item-fix\"><a href=\"/features/actions\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Actions\">Actions</a></li> <li class=\"edge-item-fix\"><a href=\"/features/packages\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to GitHub Packages\">Packages</a></li> <li class=\"edge-item-fix\"><a href=\"/features/security\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Security\">Security</a></li> <li class=\"edge-item-fix\"><a href=\"/features#team-management\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Team management\">Team management</a></li> <li class=\"edge-item-fix\"><a href=\"/features#hosting\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Code hosting\">Hosting</a></li> <li class=\"edge-item-fix hide-xl\"><a href=\"/mobile\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Mobile\">Mobile</a></li> </ul> <ul class=\"list-style-none mb-0 border-lg-top pt-lg-3\"> <li class=\"edge-item-fix\"><a href=\"/customer-stories\" class=\"py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover\" data-ga-click=\"(Logged out) Header, go to Customer stories\">Customer stories <span class=\"Bump-link-symbol float-right text-normal text-gray-light\">→</span></a></li> <li class=\"edge-item-fix\"><a href=\"/security\" class=\"py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover\" data-ga-click=\"(Logged out) Header, go to Security\">Security <span class=\"Bump-link-symbol float-right text-normal text-gray-light\">→</span></a></li> </ul> </div> </details> </li> <li class=\"border-bottom border-lg-bottom-0 mr-0 mr-lg-3\"> <a href=\"/team\" class=\"HeaderMenu-link no-underline py-3 d-block d-lg-inline-block\" data-ga-click=\"(Logged out) Header, go to Team\">Team</a> </li> <li class=\"border-bottom border-lg-bottom-0 mr-0 mr-lg-3\"> <a href=\"/enterprise\" class=\"HeaderMenu-link no-underline py-3 d-block d-lg-inline-block\" data-ga-click=\"(Logged out) Header, go to Enterprise\">Enterprise</a> </li> <li class=\"d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center \"> <details class=\"HeaderMenu-details details-overlay details-reset width-full\"> <summary class=\"HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block\"> Explore <svg x=\"0px\" y=\"0px\" viewBox=\"0 0 14 8\" xml:space=\"preserve\" fill=\"none\" class=\"icon-chevon-down-mktg position-absolute position-lg-relative\"> <path d=\"M1,1l6.2,6L13,1\"></path> </svg> </summary> <div class=\"dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4\"> <ul class=\"list-style-none mb-3\"> <li class=\"edge-item-fix\"><a href=\"/explore\" class=\"py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover\" data-ga-click=\"(Logged out) Header, go to Explore\">Explore GitHub <span class=\"Bump-link-symbol float-right text-normal text-gray-light\">→</span></a></li> </ul> <h4 class=\"text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3\">Learn & contribute</h4> <ul class=\"list-style-none mb-3\"> <li class=\"edge-item-fix\"><a href=\"/topics\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Topics\">Topics</a></li> <li class=\"edge-item-fix\"><a href=\"/collections\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Collections\">Collections</a></li> <li class=\"edge-item-fix\"><a href=\"/trending\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Trending\">Trending</a></li> <li class=\"edge-item-fix\"><a href=\"https://lab.github.com/\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Learning lab\">Learning Lab</a></li> <li class=\"edge-item-fix\"><a href=\"https://opensource.guide\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Open source guides\">Open source guides</a></li> </ul> <h4 class=\"text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3\">Connect with others</h4> <ul class=\"list-style-none mb-0\"> <li class=\"edge-item-fix\"><a href=\"https://github.com/events\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Events\">Events</a></li> <li class=\"edge-item-fix\"><a href=\"https://github.community\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Community forum\">Community forum</a></li> <li class=\"edge-item-fix\"><a href=\"https://education.github.com\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to GitHub Education\">GitHub Education</a></li> <li class=\"edge-item-fix\"><a href=\"https://stars.github.com\" class=\"py-2 pb-0 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to GitHub Stars Program\">GitHub Stars program</a></li> </ul> </div> </details> </li> <li class=\"border-bottom border-lg-bottom-0 mr-0 mr-lg-3\"> <a href=\"/marketplace\" class=\"HeaderMenu-link no-underline py-3 d-block d-lg-inline-block\" data-ga-click=\"(Logged out) Header, go to Marketplace\">Marketplace</a> </li> <li class=\"d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center \"> <details class=\"HeaderMenu-details details-overlay details-reset width-full\"> <summary class=\"HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block\"> Pricing <svg x=\"0px\" y=\"0px\" viewBox=\"0 0 14 8\" xml:space=\"preserve\" fill=\"none\" class=\"icon-chevon-down-mktg position-absolute position-lg-relative\"> <path d=\"M1,1l6.2,6L13,1\"></path> </svg> </summary> <div class=\"dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-4 mt-0 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4\"> <a href=\"/pricing\" class=\"pb-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover\" data-ga-click=\"(Logged out) Header, go to Pricing\">Plans <span class=\"Bump-link-symbol float-right text-normal text-gray-light\">→</span></a> <ul class=\"list-style-none mb-3\"> <li class=\"edge-item-fix\"><a href=\"/pricing#feature-comparison\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Compare plans\">Compare plans</a></li> <li class=\"edge-item-fix\"><a href=\"https://enterprise.github.com/contact\" class=\"py-2 lh-condensed-ultra d-block link-gray no-underline f5\" data-ga-click=\"(Logged out) Header, go to Contact Sales\">Contact Sales</a></li> </ul> <ul class=\"list-style-none mb-0 border-lg-top pt-lg-3\"> <li class=\"edge-item-fix\"><a href=\"/nonprofit\" class=\"py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover\" data-ga-click=\"(Logged out) Header, go to Nonprofits\">Nonprofit <span class=\"Bump-link-symbol float-right text-normal text-gray-light\">→</span></a></li> <li class=\"edge-item-fix\"><a href=\"https://education.github.com\" class=\"py-2 pb-0 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover\" data-ga-click=\"(Logged out) Header, go to Education\">Education <span class=\"Bump-link-symbol float-right text-normal text-gray-light\">→</span></a></li> </ul> </div> </details> </li> </ul> </nav> <div class=\"d-lg-flex flex-items-center px-3 px-lg-0 text-center text-lg-left\"> <div class=\"d-lg-flex mb-3 mb-lg-0\"> <div class=\"header-search header-search-current js-header-search-current flex-auto flex-self-stretch flex-md-self-auto mr-0 mr-md-3 mb-3 mb-md-0 scoped-search site-scoped-search js-site-search position-relative js-jump-to js-header-search-current-jump-to\" role=\"combobox\" aria-owns=\"jump-to-results\" aria-label=\"Search or jump to\" aria-haspopup=\"listbox\" aria-expanded=\"false\" > <div class=\"position-relative\"> <!-- '\"` --><!-- </textarea></xmp> --></option></form><form class=\"js-site-search-form\" role=\"search\" aria-label=\"Site\" data-scope-type=\"Repository\" data-scope-id=\"25027926\" data-scoped-search-url=\"/fukamachi/fast-http/search\" data-unscoped-search-url=\"/search\" action=\"/fukamachi/fast-http/search\" accept-charset=\"UTF-8\" method=\"get\"> <label class=\"form-control input-sm header-search-wrapper p-0 header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center js-chromeless-input-container\"> <input type=\"text\" class=\"form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable\" data-hotkey=\"s,/\" name=\"q\" value=\"\" placeholder=\"Search\" data-unscoped-placeholder=\"Search GitHub\" data-scoped-placeholder=\"Search\" autocapitalize=\"off\" aria-autocomplete=\"list\" aria-controls=\"jump-to-results\" aria-label=\"Search\" data-jump-to-suggestions-path=\"/_graphql/GetSuggestedNavigationDestinations\" spellcheck=\"false\" autocomplete=\"off\" > <input type=\"hidden\" data-csrf=\"true\" class=\"js-data-jump-to-suggestions-path-csrf\" value=\"RNnW0n49+OauvHFbQgIDnAElziICJHcqnS7qCaJGSJNip2BPqhfAoAcVhP2HOrKD4c86SSXmz6/BguEmKMTO7w==\" /> <input type=\"hidden\" class=\"js-site-search-type-field\" name=\"type\" > <img src=\"https://github.githubassets.com/images/search-key-slash.svg\" alt=\"\" class=\"mr-2 header-search-key-slash\"> <div class=\"Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container\"> <ul class=\"d-none js-jump-to-suggestions-template-container\"> <li class=\"d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion\" role=\"option\"> <a tabindex=\"-1\" class=\"no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2\" href=\"\"> <div class=\"jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none\"> <svg height=\"16\" width=\"16\" class=\"octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none\" title=\"Repository\" aria-label=\"Repository\" viewBox=\"0 0 16 16\" version=\"1.1\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z\"></path></svg> <svg height=\"16\" width=\"16\" class=\"octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none\" title=\"Project\" aria-label=\"Project\" viewBox=\"0 0 16 16\" version=\"1.1\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z\"></path></svg> <svg height=\"16\" width=\"16\" class=\"octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none\" title=\"Search\" aria-label=\"Search\" viewBox=\"0 0 16 16\" version=\"1.1\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z\"></path></svg> </div> <img class=\"avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none\" alt=\"\" aria-label=\"Team\" src=\"\" width=\"28\" height=\"28\"> <div class=\"jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target\"> </div> <div class=\"border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search\"> <span class=\"js-jump-to-badge-search-text-default d-none\" aria-label=\"in this repository\"> In this repository </span> <span class=\"js-jump-to-badge-search-text-global d-none\" aria-label=\"in all of GitHub\"> All GitHub </span> <span aria-hidden=\"true\" class=\"d-inline-block ml-1 v-align-middle\">↵</span> </div> <div aria-hidden=\"true\" class=\"border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump\"> Jump to <span class=\"d-inline-block ml-1 v-align-middle\">↵</span> </div> </a> </li> </ul> <ul class=\"d-none js-jump-to-no-results-template-container\"> <li class=\"d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2\"> <span class=\"text-gray\">No suggested jump to results</span> </li> </ul> <ul id=\"jump-to-results\" role=\"listbox\" class=\"p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container\"> <li class=\"d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none\" role=\"option\"> <a tabindex=\"-1\" class=\"no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2\" href=\"\"> <div class=\"jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none\"> <svg height=\"16\" width=\"16\" class=\"octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none\" title=\"Repository\" aria-label=\"Repository\" viewBox=\"0 0 16 16\" version=\"1.1\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z\"></path></svg> <svg height=\"16\" width=\"16\" class=\"octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none\" title=\"Project\" aria-label=\"Project\" viewBox=\"0 0 16 16\" version=\"1.1\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z\"></path></svg> <svg height=\"16\" width=\"16\" class=\"octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none\" title=\"Search\" aria-label=\"Search\" viewBox=\"0 0 16 16\" version=\"1.1\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z\"></path></svg> </div> <img class=\"avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none\" alt=\"\" aria-label=\"Team\" src=\"\" width=\"28\" height=\"28\"> <div class=\"jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target\"> </div> <div class=\"border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search\"> <span class=\"js-jump-to-badge-search-text-default d-none\" aria-label=\"in this repository\"> In this repository </span> <span class=\"js-jump-to-badge-search-text-global d-none\" aria-label=\"in all of GitHub\"> All GitHub </span> <span aria-hidden=\"true\" class=\"d-inline-block ml-1 v-align-middle\">↵</span> </div> <div aria-hidden=\"true\" class=\"border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump\"> Jump to <span class=\"d-inline-block ml-1 v-align-middle\">↵</span> </div> </a> </li> <li class=\"d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none\" role=\"option\"> <a tabindex=\"-1\" class=\"no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2\" href=\"\"> <div class=\"jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none\"> <svg height=\"16\" width=\"16\" class=\"octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none\" title=\"Repository\" aria-label=\"Repository\" viewBox=\"0 0 16 16\" version=\"1.1\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z\"></path></svg> <svg height=\"16\" width=\"16\" class=\"octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none\" title=\"Project\" aria-label=\"Project\" viewBox=\"0 0 16 16\" version=\"1.1\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z\"></path></svg> <svg height=\"16\" width=\"16\" class=\"octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none\" title=\"Search\" aria-label=\"Search\" viewBox=\"0 0 16 16\" version=\"1.1\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z\"></path></svg> </div> <img class=\"avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none\" alt=\"\" aria-label=\"Team\" src=\"\" width=\"28\" height=\"28\"> <div class=\"jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target\"> </div> <div class=\"border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search\"> <span class=\"js-jump-to-badge-search-text-default d-none\" aria-label=\"in this repository\"> In this repository </span> <span class=\"js-jump-to-badge-search-text-global d-none\" aria-label=\"in all of GitHub\"> All GitHub </span> <span aria-hidden=\"true\" class=\"d-inline-block ml-1 v-align-middle\">↵</span> </div> <div aria-hidden=\"true\" class=\"border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump\"> Jump to <span class=\"d-inline-block ml-1 v-align-middle\">↵</span> </div> </a> </li> </ul> </div> </label> </form> </div> </div> </div> <a href=\"/login?return_to=%2Ffukamachi%2Ffast-http\" class=\"HeaderMenu-link no-underline mr-3\" data-hydro-click=\"{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"b47a8c6e7e700c7b5b411ce9541646b4d35966ab547650cc874ad77288769b8c\" data-ga-click=\"(Logged out) Header, clicked Sign in, text:sign-in\"> Sign in </a> <a href=\"/join?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo&source_repo=fukamachi%2Ffast-http\" class=\"HeaderMenu-link d-inline-block no-underline border border-gray-dark rounded-1 px-2 py-1\" data-hydro-click=\"{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"b47a8c6e7e700c7b5b411ce9541646b4d35966ab547650cc874ad77288769b8c\" data-ga-click=\"Sign up, click to sign up for account, ref_page:/<user-name>/<repo-name>;ref_cta:Sign up;ref_loc:header logged out\"> Sign up </a> </div> </div> </div> </header> </div> <div id=\"start-of-content\" class=\"show-on-focus\"></div> <div id=\"js-flash-container\"> <template class=\"js-flash-template\"> <div class=\"flash flash-full {{ className }}\"> <div class=\" px-2\" > <button class=\"flash-close js-flash-close\" type=\"button\" aria-label=\"Dismiss this message\"> <svg class=\"octicon octicon-x\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z\"></path></svg> </button> <div>{{ message }}</div> </div> </div> </template> </div> <include-fragment class=\"js-notification-shelf-include-fragment\" data-base-src=\"https://github.com/notifications/beta/shelf\"></include-fragment> <div class=\"application-main \" data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled > <div itemscope itemtype=\"http://schema.org/SoftwareSourceCode\" class=\"\"> <main id=\"js-repo-pjax-container\" data-pjax-container > <div class=\"bg-gray-light pt-3 hide-full-screen mb-5\"> <div class=\"d-flex mb-3 px-3 px-md-4 px-lg-5\"> <div class=\"flex-auto min-width-0 width-fit mr-3\"> <h1 class=\" d-flex flex-wrap flex-items-center break-word f3 text-normal\"> <svg class=\"octicon octicon-repo text-gray\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z\"></path></svg> <span class=\"author ml-2 flex-self-stretch\" itemprop=\"author\"> <a class=\"url fn\" rel=\"author\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/fukamachi/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" href=\"/fukamachi\">fukamachi</a> </span> <span class=\"mx-1 flex-self-stretch\">/</span> <strong itemprop=\"name\" class=\"mr-2 flex-self-stretch\"> <a data-pjax=\"#js-repo-pjax-container\" href=\"/fukamachi/fast-http\">fast-http</a> </strong> </h1> </div> <ul class=\"pagehead-actions flex-shrink-0 d-none d-md-inline\" style=\"padding: 2px 0;\"> <li> <a class=\"tooltipped tooltipped-s btn btn-sm btn-with-count\" aria-label=\"You must be signed in to watch a repository\" rel=\"nofollow\" data-hydro-click=\"{"event_type":"authentication.click","payload":{"location_in_page":"notification subscription menu watch","repository_id":null,"auth_type":"LOG_IN","originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"a38649cfb4b44e72509d9cf9f63d6e7cbdde01b8d895c90b38ebdf629f81f2ba\" href=\"/login?return_to=%2Ffukamachi%2Ffast-http\"> <svg height=\"16\" class=\"octicon octicon-eye\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z\"></path></svg> Watch </a> <a class=\"social-count\" href=\"/fukamachi/fast-http/watchers\" aria-label=\"28 users are watching this repository\"> 28 </a> </li> <li> <a class=\"btn btn-sm btn-with-count tooltipped tooltipped-s\" aria-label=\"You must be signed in to star a repository\" rel=\"nofollow\" data-hydro-click=\"{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":25027926,"auth_type":"LOG_IN","originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"adeef95f1ffd8ad4b2ebd275fdd2f6fe4d67be236ed32c5bf9e80b75aee0a616\" href=\"/login?return_to=%2Ffukamachi%2Ffast-http\"> <svg vertical_align=\"text_bottom\" height=\"16\" class=\"octicon octicon-star v-align-text-bottom\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z\"></path></svg> Star </a> <a class=\"social-count js-social-count\" href=\"/fukamachi/fast-http/stargazers\" aria-label=\"315 users starred this repository\"> 315 </a> </li> <li> <a class=\"btn btn-sm btn-with-count tooltipped tooltipped-s\" aria-label=\"You must be signed in to fork a repository\" rel=\"nofollow\" data-hydro-click=\"{"event_type":"authentication.click","payload":{"location_in_page":"repo details fork button","repository_id":25027926,"auth_type":"LOG_IN","originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"a7b7c63bd3074fb760c5ccfeb556b6addaaf422f7b83ad6e479cb5da78a22a72\" href=\"/login?return_to=%2Ffukamachi%2Ffast-http\"> <svg class=\"octicon octicon-repo-forked\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z\"></path></svg> Fork </a> <a href=\"/fukamachi/fast-http/network/members\" class=\"social-count\" aria-label=\"32 users forked this repository\"> 32 </a> </li> </ul> </div> <div class=\"d-block d-md-none mb-2 px-3 px-md-4 px-lg-5\"> <p class=\"f4 mb-3\"> A fast HTTP request/response parser for Common Lisp. </p> <div class=\"mb-3\"> <a class=\"link-gray no-underline mr-3\" href=\"/fukamachi/fast-http/stargazers\"> <svg mr=\"1\" height=\"16\" class=\"octicon octicon-star mr-1\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z\"></path></svg> <span class=\"text-bold\">315</span> stars </a> <a class=\"link-gray no-underline\" href=\"/fukamachi/fast-http/network/members\"> <svg mr=\"1\" height=\"16\" class=\"octicon octicon-repo-forked mr-1\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z\"></path></svg> <span class=\"text-bold\">32</span> forks </a> </div> <div class=\"d-flex\"> <div class=\"flex-1 mr-2\"> <a class=\"btn btn-sm btn-block tooltipped tooltipped-s\" aria-label=\"You must be signed in to star a repository\" rel=\"nofollow\" data-hydro-click=\"{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":25027926,"auth_type":"LOG_IN","originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"adeef95f1ffd8ad4b2ebd275fdd2f6fe4d67be236ed32c5bf9e80b75aee0a616\" href=\"/login?return_to=%2Ffukamachi%2Ffast-http\"> <svg vertical_align=\"text_bottom\" height=\"16\" class=\"octicon octicon-star v-align-text-bottom\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z\"></path></svg> Star </a> </div> <div class=\"flex-1\"> <a class=\"tooltipped tooltipped-s btn btn-sm btn-block\" aria-label=\"You must be signed in to watch a repository\" rel=\"nofollow\" data-hydro-click=\"{"event_type":"authentication.click","payload":{"location_in_page":"notification subscription menu watch","repository_id":null,"auth_type":"LOG_IN","originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"a38649cfb4b44e72509d9cf9f63d6e7cbdde01b8d895c90b38ebdf629f81f2ba\" href=\"/login?return_to=%2Ffukamachi%2Ffast-http\"> <svg height=\"16\" class=\"octicon octicon-eye\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z\"></path></svg> Watch </a> </div> </div> </div> <nav aria-label=\"Repository\" data-pjax=\"#js-repo-pjax-container\" class=\"js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5 bg-gray-light\"> <ul class=\"UnderlineNav-body list-style-none \"> <li class=\"d-flex\"> <a class=\"js-selected-navigation-item selected UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item\" data-tab-item=\"code-tab\" data-hotkey=\"g c\" data-ga-click=\"Repository, Navigation click, Code tab\" aria-current=\"page\" data-selected-links=\"repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments /fukamachi/fast-http\" href=\"/fukamachi/fast-http\"> <svg classes=\"UnderlineNav-octicon\" display=\"none inline\" height=\"16\" class=\"octicon octicon-code UnderlineNav-octicon d-none d-sm-inline\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z\"></path></svg> <span data-content=\"Code\">Code</span> <span title=\"Not available\" class=\"Counter \"></span> </a> </li> <li class=\"d-flex\"> <a class=\"js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item\" data-tab-item=\"issues-tab\" data-hotkey=\"g i\" data-ga-click=\"Repository, Navigation click, Issues tab\" data-selected-links=\"repo_issues repo_labels repo_milestones /fukamachi/fast-http/issues\" href=\"/fukamachi/fast-http/issues\"> <svg classes=\"UnderlineNav-octicon\" display=\"none inline\" height=\"16\" class=\"octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z\"></path></svg> <span data-content=\"Issues\">Issues</span> <span title=\"2\" class=\"Counter \">2</span> </a> </li> <li class=\"d-flex\"> <a class=\"js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item\" data-tab-item=\"pull-requests-tab\" data-hotkey=\"g p\" data-ga-click=\"Repository, Navigation click, Pull requests tab\" data-selected-links=\"repo_pulls checks /fukamachi/fast-http/pulls\" href=\"/fukamachi/fast-http/pulls\"> <svg classes=\"UnderlineNav-octicon\" display=\"none inline\" height=\"16\" class=\"octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.177 3.073L9.573.677A.25.25 0 0110 .854v4.792a.25.25 0 01-.427.177L7.177 3.427a.25.25 0 010-.354zM3.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122v5.256a2.251 2.251 0 11-1.5 0V5.372A2.25 2.25 0 011.5 3.25zM11 2.5h-1V4h1a1 1 0 011 1v5.628a2.251 2.251 0 101.5 0V5A2.5 2.5 0 0011 2.5zm1 10.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0zM3.75 12a.75.75 0 100 1.5.75.75 0 000-1.5z\"></path></svg> <span data-content=\"Pull requests\">Pull requests</span> <span title=\"1\" class=\"Counter \">1</span> </a> </li> <li class=\"d-flex\"> <a class=\"js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item\" data-tab-item=\"actions-tab\" data-hotkey=\"g a\" data-ga-click=\"Repository, Navigation click, Actions tab\" data-selected-links=\"repo_actions /fukamachi/fast-http/actions\" href=\"/fukamachi/fast-http/actions\"> <svg classes=\"UnderlineNav-octicon\" display=\"none inline\" height=\"16\" class=\"octicon octicon-play UnderlineNav-octicon d-none d-sm-inline\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z\"></path></svg> <span data-content=\"Actions\">Actions</span> <span title=\"Not available\" class=\"Counter \"></span> </a> </li> <li class=\"d-flex\"> <a class=\"js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item\" data-tab-item=\"projects-tab\" data-hotkey=\"g b\" data-ga-click=\"Repository, Navigation click, Projects tab\" data-selected-links=\"repo_projects new_repo_project repo_project /fukamachi/fast-http/projects\" href=\"/fukamachi/fast-http/projects\"> <svg classes=\"UnderlineNav-octicon\" display=\"none inline\" height=\"16\" class=\"octicon octicon-project UnderlineNav-octicon d-none d-sm-inline\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z\"></path></svg> <span data-content=\"Projects\">Projects</span> <span title=\"0\" hidden=\"hidden\" class=\"Counter \">0</span> </a> </li> <li class=\"d-flex\"> <a class=\"js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item\" data-tab-item=\"security-tab\" data-hotkey=\"g s\" data-ga-click=\"Repository, Navigation click, Security tab\" data-selected-links=\"security overview alerts policy token_scanning code_scanning /fukamachi/fast-http/security\" href=\"/fukamachi/fast-http/security\"> <svg classes=\"UnderlineNav-octicon\" display=\"none inline\" height=\"16\" class=\"octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.467.133a1.75 1.75 0 011.066 0l5.25 1.68A1.75 1.75 0 0115 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.7 1.7 0 01-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 011.217-1.667l5.25-1.68zm.61 1.429a.25.25 0 00-.153 0l-5.25 1.68a.25.25 0 00-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.2.2 0 00.154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.25.25 0 00-.174-.237l-5.25-1.68zM9 10.5a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.75a.75.75 0 10-1.5 0v3a.75.75 0 001.5 0v-3z\"></path></svg> <span data-content=\"Security\">Security</span> <span data-url=\"/fukamachi/fast-http/security/overall-count\" title=\"Not available\" class=\"js-security-tab-count Counter \"></span> </a> </li> <li class=\"d-flex\"> <a class=\"js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item\" data-tab-item=\"insights-tab\" data-ga-click=\"Repository, Navigation click, Insights tab\" data-selected-links=\"repo_graphs repo_contributors dependency_graph dependabot_updates pulse people /fukamachi/fast-http/pulse\" href=\"/fukamachi/fast-http/pulse\"> <svg classes=\"UnderlineNav-octicon\" display=\"none inline\" height=\"16\" class=\"octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M1.5 1.75a.75.75 0 00-1.5 0v12.5c0 .414.336.75.75.75h14.5a.75.75 0 000-1.5H1.5V1.75zm14.28 2.53a.75.75 0 00-1.06-1.06L10 7.94 7.53 5.47a.75.75 0 00-1.06 0L3.22 8.72a.75.75 0 001.06 1.06L7 7.06l2.47 2.47a.75.75 0 001.06 0l5.25-5.25z\"></path></svg> <span data-content=\"Insights\">Insights</span> <span title=\"Not available\" class=\"Counter \"></span> </a> </li> </ul> <div class=\"position-absolute right-0 pr-3 pr-md-4 pr-lg-5 js-responsive-underlinenav-overflow\" style=\"visibility:hidden;\"> <details class=\"details-overlay details-reset position-relative\"> <summary role=\"button\"> <div class=\"UnderlineNav-item mr-0 border-0\"> <svg class=\"octicon octicon-kebab-horizontal\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path d=\"M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z\"></path></svg> <span class=\"sr-only\">More</span> </div> </summary> <details-menu role=\"menu\" class=\"dropdown-menu dropdown-menu-sw \"> <ul> <li data-menu-item=\"code-tab\" hidden> <a role=\"menuitem\" class=\"js-selected-navigation-item selected dropdown-item\" aria-current=\"page\" data-selected-links=\" /fukamachi/fast-http\" href=\"/fukamachi/fast-http\"> Code </a> </li> <li data-menu-item=\"issues-tab\" hidden> <a role=\"menuitem\" class=\"js-selected-navigation-item dropdown-item\" data-selected-links=\" /fukamachi/fast-http/issues\" href=\"/fukamachi/fast-http/issues\"> Issues </a> </li> <li data-menu-item=\"pull-requests-tab\" hidden> <a role=\"menuitem\" class=\"js-selected-navigation-item dropdown-item\" data-selected-links=\" /fukamachi/fast-http/pulls\" href=\"/fukamachi/fast-http/pulls\"> Pull requests </a> </li> <li data-menu-item=\"actions-tab\" hidden> <a role=\"menuitem\" class=\"js-selected-navigation-item dropdown-item\" data-selected-links=\" /fukamachi/fast-http/actions\" href=\"/fukamachi/fast-http/actions\"> Actions </a> </li> <li data-menu-item=\"projects-tab\" hidden> <a role=\"menuitem\" class=\"js-selected-navigation-item dropdown-item\" data-selected-links=\" /fukamachi/fast-http/projects\" href=\"/fukamachi/fast-http/projects\"> Projects </a> </li> <li data-menu-item=\"security-tab\" hidden> <a role=\"menuitem\" class=\"js-selected-navigation-item dropdown-item\" data-selected-links=\" /fukamachi/fast-http/security\" href=\"/fukamachi/fast-http/security\"> Security </a> </li> <li data-menu-item=\"insights-tab\" hidden> <a role=\"menuitem\" class=\"js-selected-navigation-item dropdown-item\" data-selected-links=\" /fukamachi/fast-http/pulse\" href=\"/fukamachi/fast-http/pulse\"> Insights </a> </li> </ul> </details-menu> </details> </div> </nav> </div> <div class=\"container-xl clearfix new-discussion-timeline px-3 px-md-4 px-lg-5\"> <div class=\"repository-content \" > <div class=\"d-none d-lg-block mt-6 mr-3 Popover top-0 right-0 box-shadow-medium col-3\"> </div> <signup-prompt class=\"signup-prompt-bg rounded-1\" data-prompt=\"signup\" hidden> <div class=\"signup-prompt p-4 text-center mb-4 rounded-1\"> <div class=\"position-relative\"> <button type=\"button\" class=\"position-absolute top-0 right-0 btn-link link-gray\" data-action=\"click:signup-prompt#dismiss\" data-ga-click=\"(Logged out) Sign up prompt, clicked Dismiss, text:dismiss\" > Dismiss </button> <h3 class=\"pt-2\">Join GitHub today</h3> <p class=\"col-6 mx-auto\">GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.</p> <a class=\"btn btn-primary\" data-ga-click=\"(Logged out) Sign up prompt, clicked Sign up, text:sign-up\" data-hydro-click=\"{"event_type":"authentication.click","payload":{"location_in_page":"files signup prompt","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"8f920692835599ae0f2bf9cb000e24e3fd606043a57a7c01b2d6103f5342e5f1\" href=\"/join?source=prompt-code&source_repo=fukamachi%2Ffast-http\">Sign up</a> </div> </div> </signup-prompt> <div class=\"gutter-condensed gutter-lg flex-column flex-md-row d-flex\"> <div class=\"flex-shrink-0 col-12 col-md-9 mb-4 mb-md-0\"> <div class=\"file-navigation mb-3 d-flex flex-items-start\"> <div class=\"position-relative\"> <details class=\"details-reset details-overlay mr-0 mb-0 \" id=\"branch-select-menu\"> <summary class=\"btn css-truncate\" data-hotkey=\"w\" title=\"Switch branches or tags\"> <svg text=\"gray\" height=\"16\" class=\"octicon octicon-git-branch text-gray\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M11.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122V6A2.5 2.5 0 0110 8.5H6a1 1 0 00-1 1v1.128a2.251 2.251 0 11-1.5 0V5.372a2.25 2.25 0 111.5 0v1.836A2.492 2.492 0 016 7h4a1 1 0 001-1v-.628A2.25 2.25 0 019.5 3.25zM4.25 12a.75.75 0 100 1.5.75.75 0 000-1.5zM3.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0z\"></path></svg> <span class=\"css-truncate-target\" data-menu-button>master</span> <span class=\"dropdown-caret\"></span> </summary> <details-menu class=\"SelectMenu SelectMenu--hasFilter\" src=\"/fukamachi/fast-http/refs/master?source_action=disambiguate&source_controller=files\" preload> <div class=\"SelectMenu-modal\"> <include-fragment class=\"SelectMenu-loading\" aria-label=\"Menu is loading\"> <svg class=\"octicon octicon-octoface anim-pulse\" height=\"32\" viewBox=\"0 0 24 24\" version=\"1.1\" width=\"32\" aria-hidden=\"true\"><path d=\"M7.75 11c-.69 0-1.25.56-1.25 1.25v1.5a1.25 1.25 0 102.5 0v-1.5C9 11.56 8.44 11 7.75 11zm1.27 4.5a.469.469 0 01.48-.5h5a.47.47 0 01.48.5c-.116 1.316-.759 2.5-2.98 2.5s-2.864-1.184-2.98-2.5zm7.23-4.5c-.69 0-1.25.56-1.25 1.25v1.5a1.25 1.25 0 102.5 0v-1.5c0-.69-.56-1.25-1.25-1.25z\"></path><path fill-rule=\"evenodd\" d=\"M21.255 3.82a1.725 1.725 0 00-2.141-1.195c-.557.16-1.406.44-2.264.866-.78.386-1.647.93-2.293 1.677A18.442 18.442 0 0012 5c-.93 0-1.784.059-2.569.17-.645-.74-1.505-1.28-2.28-1.664a13.876 13.876 0 00-2.265-.866 1.725 1.725 0 00-2.141 1.196 23.645 23.645 0 00-.69 3.292c-.125.97-.191 2.07-.066 3.112C1.254 11.882 1 13.734 1 15.527 1 19.915 3.13 23 12 23c8.87 0 11-3.053 11-7.473 0-1.794-.255-3.647-.99-5.29.127-1.046.06-2.15-.066-3.125a23.652 23.652 0 00-.689-3.292zM20.5 14c.5 3.5-1.5 6.5-8.5 6.5s-9-3-8.5-6.5c.583-4 3-6 8.5-6s7.928 2 8.5 6z\"></path></svg> </include-fragment> </div> </details-menu> </details> </div> <div class=\"flex-self-center ml-3 flex-self-stretch d-none d-lg-flex flex-items-center lh-condensed-ultra\"> <a data-pjax href=\"/fukamachi/fast-http/branches\" class=\"link-gray-dark no-underline\"> <svg text=\"gray\" height=\"16\" class=\"octicon octicon-git-branch text-gray\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M11.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122V6A2.5 2.5 0 0110 8.5H6a1 1 0 00-1 1v1.128a2.251 2.251 0 11-1.5 0V5.372a2.25 2.25 0 111.5 0v1.836A2.492 2.492 0 016 7h4a1 1 0 001-1v-.628A2.25 2.25 0 019.5 3.25zM4.25 12a.75.75 0 100 1.5.75.75 0 000-1.5zM3.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0z\"></path></svg> <strong>10</strong> <span class=\"text-gray-light\">branches</span> </a> <a data-pjax href=\"/fukamachi/fast-http/tags\" class=\"ml-3 link-gray-dark no-underline\"> <svg text=\"gray\" height=\"16\" class=\"octicon octicon-tag text-gray\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M2.5 7.775V2.75a.25.25 0 01.25-.25h5.025a.25.25 0 01.177.073l6.25 6.25a.25.25 0 010 .354l-5.025 5.025a.25.25 0 01-.354 0l-6.25-6.25a.25.25 0 01-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 010 2.474l-5.026 5.026a1.75 1.75 0 01-2.474 0l-6.25-6.25A1.75 1.75 0 011 7.775zM6 5a1 1 0 100 2 1 1 0 000-2z\"></path></svg> <strong>0</strong> <span class=\"text-gray-light\">tags</span> </a> </div> <div class=\"flex-auto\"></div> <a class=\"btn ml-2\" data-hydro-click=\"{"event_type":"repository.click","payload":{"target":"FIND_FILE_BUTTON","repository_id":25027926,"originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"c99c806cf2ec44f3c62b31223b2b43871d061ec2af1a83ef1537549be36223f2\" data-ga-click=\"Repository, find file, location:repo overview\" data-hotkey=\"t\" data-pjax=\"true\" href=\"/fukamachi/fast-http/find/master\"> Go to file </a> <span class=\"d-none d-md-flex ml-2\"> <get-repo> <details class=\"position-relative details-overlay details-reset\" data-action=\"toggle:get-repo#onDetailsToggle\"> <summary class=\"btn btn-primary\" data-hydro-click=\"{"event_type":"repository.click","payload":{"repository_id":25027926,"target":"CLONE_OR_DOWNLOAD_BUTTON","originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"e1e7e2b269cedc948082db0a2232e8af67e01399c0600050339ef6f2eac19402\"> <svg class=\"octicon octicon-download mr-1\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5 0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z\"></path></svg> Code <span class=\"dropdown-caret\"></span> </summary> <div class=\"position-relative\"> <div class=\"get-repo-modal dropdown-menu dropdown-menu-sw p-0 js-toggler-container \" style=\"top:6px;width:352px;\"> <div data-target=\"get-repo.modal\"> <div class=\"border-bottom p-3\"> <div class=\"https-clone-options\"> <h4 class=\"mb-1\"> Clone with HTTPS <a class=\"muted-link\" href=\"https://docs.github.com/articles/which-remote-url-should-i-use\" target=\"_blank\" title=\"Which remote URL should I use?\"> <svg class=\"octicon octicon-question\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zM6.92 6.085c.081-.16.19-.299.34-.398.145-.097.371-.187.74-.187.28 0 .553.087.738.225A.613.613 0 019 6.25c0 .177-.04.264-.077.318a.956.956 0 01-.277.245c-.076.051-.158.1-.258.161l-.007.004a7.728 7.728 0 00-.313.195 2.416 2.416 0 00-.692.661.75.75 0 001.248.832.956.956 0 01.276-.245 6.3 6.3 0 01.26-.16l.006-.004c.093-.057.204-.123.313-.195.222-.149.487-.355.692-.662.214-.32.329-.702.329-1.15 0-.76-.36-1.348-.863-1.725A2.76 2.76 0 008 4c-.631 0-1.155.16-1.572.438-.413.276-.68.638-.849.977a.75.75 0 101.342.67z\"></path></svg> </a> </h4> <p class=\"mb-2 f5\"> Use Git or checkout with SVN using the web URL. </p> <div class=\"input-group\"> <input type=\"text\" class=\"form-control input-monospace input-sm\" data-autoselect value=\"https://github.com/fukamachi/fast-http.git\" aria-label=\"Clone this repository at https://github.com/fukamachi/fast-http.git\" readonly> <div class=\"input-group-button\"> <clipboard-copy value=\"https://github.com/fukamachi/fast-http.git\" aria-label=\"Copy to clipboard\" class=\"btn btn-sm\" data-hydro-click=\"{"event_type":"clone_or_download.click","payload":{"feature_clicked":"COPY_URL","git_repository_type":"REPOSITORY","repository_id":25027926,"originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"052911e164e8bb21ab80502493136e9cd0c9de014e4b94ffeb1c314485646ee8\"><svg class=\"octicon octicon-clippy\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M5.75 1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 1.75 0 00-.874-1.515.75.75 0 10-.752 1.298.25.25 0 01.126.217v9.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-9.5a.25.25 0 01.126-.217z\"></path></svg></clipboard-copy> </div> </div> </div> </div> <ul class=\"list-style-none\"> <li data-platforms=\"windows,mac\" class=\"Box-row Box-row--hover-gray p-0 rounded-0 mt-0 js-remove-unless-platform\"> <a class=\"d-flex flex-items-center text-gray-dark text-bold no-underline p-3\" data-hydro-click=\"{"event_type":"clone_or_download.click","payload":{"feature_clicked":"OPEN_IN_DESKTOP","git_repository_type":"REPOSITORY","repository_id":25027926,"originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"8e1dd921d03bf2cec6aecf66ff1618170e77cc582978ed46f3f5c9f11edfd8f6\" data-action=\"click:get-repo#showDownloadMessage\" href=\"https://desktop.github.com\"> <svg class=\"octicon octicon-desktop-download mr-3\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8.75 5V.75a.75.75 0 00-1.5 0V5H5.104a.25.25 0 00-.177.427l2.896 2.896a.25.25 0 00.354 0l2.896-2.896A.25.25 0 0010.896 5H8.75zM1.5 2.75a.25.25 0 01.25-.25h3a.75.75 0 000-1.5h-3A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1h-3a.75.75 0 000 1.5h3a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z\"></path></svg> Open with GitHub Desktop </a> </li> <li class=\"Box-row Box-row--hover-gray p-0\"> <a class=\"d-flex flex-items-center text-gray-dark text-bold no-underline p-3\" rel=\"nofollow\" data-hydro-click=\"{"event_type":"clone_or_download.click","payload":{"feature_clicked":"DOWNLOAD_ZIP","git_repository_type":"REPOSITORY","repository_id":25027926,"originating_url":"https://github.com/fukamachi/fast-http","user_id":null}}\" data-hydro-click-hmac=\"f4c562773447b69a2bbd920c70c5c7850bcb6fb7b512176a6165675d866e1e07\" data-ga-click=\"Repository, download zip, location:repo overview\" data-open-app=\"link\" href=\"/fukamachi/fast-http/archive/master.zip\"> <svg class=\"octicon octicon-file-zip mr-3\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M3.5 1.75a.25.25 0 01.25-.25h3a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h2.086a.25.25 0 01.177.073l2.914 2.914a.25.25 0 01.073.177v8.586a.25.25 0 01-.25.25h-.5a.75.75 0 000 1.5h.5A1.75 1.75 0 0014 13.25V4.664c0-.464-.184-.909-.513-1.237L10.573.513A1.75 1.75 0 009.336 0H3.75A1.75 1.75 0 002 1.75v11.5c0 .649.353 1.214.874 1.515a.75.75 0 10.752-1.298.25.25 0 01-.126-.217V1.75zM8.75 3a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM6 5.25a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5A.75.75 0 016 5.25zm2 1.5A.75.75 0 018.75 6h.5a.75.75 0 010 1.5h-.5A.75.75 0 018 6.75zm-1.25.75a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM8 9.75A.75.75 0 018.75 9h.5a.75.75 0 010 1.5h-.5A.75.75 0 018 9.75zm-.75.75a1.75 1.75 0 00-1.75 1.75v3c0 .414.336.75.75.75h2.5a.75.75 0 00.75-.75v-3a1.75 1.75 0 00-1.75-1.75h-.5zM7 12.25a.25.25 0 01.25-.25h.5a.25.25 0 01.25.25v2.25H7v-2.25z\"></path></svg> Download ZIP </a> </li> </ul> </div> <div class=\"p-3\" data-targets=\"get-repo.platforms\" data-platform=\"mac\" hidden> <h4 class=\"lh-condensed mb-3\">Launching GitHub Desktop<span class=\"AnimatedEllipsis\"></span></h4> <p class=\"text-gray\">If nothing happens, <a href=\"https://desktop.github.com/\">download GitHub Desktop</a> and try again.</p> <button type=\"button\" class=\"btn-link\" data-action=\"click:get-repo#onDetailsToggle\">Go back</button> </div> <div class=\"p-3\" data-targets=\"get-repo.platforms\" data-platform=\"windows\" hidden> <h4 class=\"lh-condensed mb-3\">Launching GitHub Desktop<span class=\"AnimatedEllipsis\"></span></h4> <p class=\"text-gray\">If nothing happens, <a href=\"https://desktop.github.com/\">download GitHub Desktop</a> and try again.</p> <button type=\"button\" class=\"btn-link\" data-action=\"click:get-repo#onDetailsToggle\">Go back</button> </div> <div class=\"p-3\" data-targets=\"get-repo.platforms\" data-platform=\"xcode\" hidden> <h4 class=\"lh-condensed mb-3\">Launching Xcode<span class=\"AnimatedEllipsis\"></span></h4> <p class=\"text-gray\">If nothing happens, <a href=\"https://developer.apple.com/xcode/\">download Xcode</a> and try again.</p> <button type=\"button\" class=\"btn-link\" data-action=\"click:get-repo#onDetailsToggle\">Go back</button> </div> <div class=\"p-3\" data-targets=\"get-repo.platforms\" data-platform=\"visual-studio\" hidden> <h4 class=\"lh-condensed mb-3\">Launching Visual Studio<span class=\"AnimatedEllipsis\"></span></h4> <p class=\"text-gray\">If nothing happens, <a href=\"https://visualstudio.github.com/\">download the GitHub extension for Visual Studio</a> and try again.</p> <button type=\"button\" class=\"btn-link\" data-action=\"click:get-repo#onDetailsToggle\">Go back</button> </div> </div> </div> </details> </get-repo> </span> </div> <div class=\"Box mb-3\"> <div class=\"Box-header Box-header--blue position-relative\"> <h2 class=\"sr-only\">Latest commit</h2> <div class=\"js-details-container Details d-flex rounded-top-1 flex-items-center flex-wrap\" data-issue-and-pr-hovercards-enabled> <div class=\"flex-shrink-0 ml-n1 mr-n1 mt-n1 mb-n1 hx_avatar_stack_commit\"> <div class=\"AvatarStack flex-self-start \"> <div class=\"AvatarStack-body\" aria-label=\"fukamachi\"> <a class=\"avatar avatar-user\" data-skip-pjax=\"true\" data-hovercard-type=\"user\" data-hovercard-url=\"/users/fukamachi/hovercard\" data-octo-click=\"hovercard-link-click\" data-octo-dimensions=\"link_type:self\" style=\"width:24px;height:24px;\" href=\"/fukamachi\"> <img height=\"24\" width=\"24\" alt=\"@fukamachi\" src=\"https://avatars1.githubusercontent.com/u/90570?s=60&u=a0e6d69c404ef0476c401259bf13890bc467c66f&v=4\" class=\" avatar-user\" /> </a> </div> </div> </div> <div class=\"flex-1 d-flex flex-items-center ml-3 min-width-0\"> <div class=\"css-truncate css-truncate-overflow text-gray\"> <a href=\"/fukamachi/fast-http/commits?author=fukamachi\" class=\"commit-author user-mention\" title=\"View all commits by fukamachi\">fukamachi</a> <span class=\"d-none d-sm-inline\"> <a data-pjax=\"true\" title=\"Copy the input buffer to keep while callbacks because it could be overwritten.\" class=\"link-gray-dark\" href=\"/fukamachi/fast-http/commit/502a37715dcb8544cc8528b78143a942de662c5a\">Copy the input buffer to keep while callbacks because it could be ove…</a> </span> </div> <span class=\"hidden-text-expander ml-2 d-inline-block \"> <button type=\"button\" class=\"hx_bg-black-fade-15 text-gray-dark ellipsis-expander js-details-target\" aria-expanded=\"false\">…</button> </span> <div class=\"d-flex flex-auto flex-justify-end ml-3 flex-items-baseline\"> <include-fragment accept=\"text/fragment+html\" src=\"/fukamachi/fast-http/commit/502a37715dcb8544cc8528b78143a942de662c5a/rollup?direction=e\" class=\"d-inline\"></include-fragment> <a href=\"/fukamachi/fast-http/commit/502a37715dcb8544cc8528b78143a942de662c5a\" class=\"f6 link-gray text-mono ml-2 d-none d-lg-inline\" data-pjax>502a377</a> <a href=\"/fukamachi/fast-http/commit/502a37715dcb8544cc8528b78143a942de662c5a\" class=\"link-gray ml-2\" data-pjax> <relative-time datetime=\"2019-09-10T17:31:50Z\" class=\"no-wrap\">Sep 10, 2019</relative-time> </a> </div> </div> <div class=\"pl-0 pl-md-5 flex-order-1 width-full Details-content--hidden\"> <div class=\"mt-2\"> <a data-pjax=\"true\" class=\"link-gray-dark text-bold\" href=\"/fukamachi/fast-http/commit/502a37715dcb8544cc8528b78143a942de662c5a\">Copy the input buffer to keep while callbacks because it could be ove…</a> </div> <pre class=\"mt-2 text-mono text-gray text-small ws-pre-wrap\">…rwritten.</pre> <div class=\"d-flex flex-items-center\"> <span class=\"text-gray-dark text-mono d-lg-none hx_bg-black-fade-15 px-1 rounded-1 text-small mt-2\">502a377</span> </div> </div> <div class=\"flex-shrink-0\"> <h2 class=\"sr-only\">Git stats</h2> <ul class=\"list-style-none d-flex\"> <li class=\"ml-0 ml-md-3\"> <a data-pjax href=\"/fukamachi/fast-http/commits/master\" class=\"pl-3 pr-3 py-3 p-md-0 mt-n3 mb-n3 mr-n3 m-md-0 link-gray-dark no-underline no-wrap\"> <svg text=\"gray\" height=\"16\" class=\"octicon octicon-history text-gray\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M1.643 3.143L.427 1.927A.25.25 0 000 2.104V5.75c0 .138.112.25.25.25h3.646a.25.25 0 00.177-.427L2.715 4.215a6.5 6.5 0 11-1.18 4.458.75.75 0 10-1.493.154 8.001 8.001 0 101.6-5.684zM7.75 4a.75.75 0 01.75.75v2.992l2.028.812a.75.75 0 01-.557 1.392l-2.5-1A.75.75 0 017 8.25v-3.5A.75.75 0 017.75 4z\"></path></svg> <span class=\"d-none d-sm-inline\"> <strong>268</strong> <span aria-label=\"Commits on master\" class=\"text-gray d-none d-lg-inline\">commits</span> </span> </a> </li> </ul> </div> </div> </div> <h2 id=\"files\" class=\"sr-only\">Files</h2> <include-fragment src=\"/fukamachi/fast-http/file-list/master\"> <a class=\"d-none js-permalink-shortcut\" data-hotkey=\"y\" href=\"/fukamachi/fast-http/tree/502a37715dcb8544cc8528b78143a942de662c5a\">Permalink</a> <div class=\"flash flash-full flash-error include-fragment-error py-2\"> <svg class=\"octicon octicon-alert mr-2\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z\"></path></svg> Failed to load latest commit information. </div> <div class=\"js-details-container Details\"> <div role=\"grid\" aria-labelledby=\"files\" class=\"Details-content--hidden-not-important js-navigation-container js-active-navigation-container d-md-block\" data-pjax> <div class=\"sr-only\" role=\"row\"> <div role=\"columnheader\">Type</div> <div role=\"columnheader\">Name</div> <div role=\"columnheader\" class=\"d-none d-md-block\">Latest commit message</div> <div role=\"columnheader\">Commit time</div> </div> <div role=\"row\" class=\"Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item \"> <div role=\"gridcell\" class=\"mr-3 flex-shrink-0\" style=\"width: 16px;\"> <svg color=\"blue-3\" aria-label=\"Directory\" height=\"16\" class=\"octicon octicon-file-directory color-blue-3\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3h-6.5a.25.25 0 01-.2-.1l-.9-1.2c-.33-.44-.85-.7-1.4-.7h-3.5z\"></path></svg> </div> <div role=\"rowheader\" class=\"flex-auto min-width-0 col-md-2 mr-3\"> <span class=\"css-truncate css-truncate-target d-block width-fit\"><a class=\"js-navigation-open link-gray-dark\" title=\"benchmark\" id=\"07978586e47c8709a63e895fbf3c3c7d-245f550c6839a4fe7f88e083d681e52a0729e1f7\" href=\"/fukamachi/fast-http/tree/master/benchmark\">benchmark</a></span> </div> <div role=\"gridcell\" class=\"flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message\"> <div class=\"Skeleton Skeleton--text col-7\"> </div> </div> <div role=\"gridcell\" class=\"text-gray-light text-right\" style=\"width:100px;\"> <div class=\"Skeleton Skeleton--text\"> </div> </div> </div> <div role=\"row\" class=\"Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item \"> <div role=\"gridcell\" class=\"mr-3 flex-shrink-0\" style=\"width: 16px;\"> <svg color=\"blue-3\" aria-label=\"Directory\" height=\"16\" class=\"octicon octicon-file-directory color-blue-3\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3h-6.5a.25.25 0 01-.2-.1l-.9-1.2c-.33-.44-.85-.7-1.4-.7h-3.5z\"></path></svg> </div> <div role=\"rowheader\" class=\"flex-auto min-width-0 col-md-2 mr-3\"> <span class=\"css-truncate css-truncate-target d-block width-fit\"><a class=\"js-navigation-open link-gray-dark\" title=\"src\" id=\"25d902c24283ab8cfbac54dfa101ad31-173d647042cfa679af098656c904d97ae008a429\" href=\"/fukamachi/fast-http/tree/master/src\">src</a></span> </div> <div role=\"gridcell\" class=\"flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message\"> <div class=\"Skeleton Skeleton--text col-7\"> </div> </div> <div role=\"gridcell\" class=\"text-gray-light text-right\" style=\"width:100px;\"> <div class=\"Skeleton Skeleton--text\"> </div> </div> </div> <div role=\"row\" class=\"Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item \"> <div role=\"gridcell\" class=\"mr-3 flex-shrink-0\" style=\"width: 16px;\"> <svg color=\"blue-3\" aria-label=\"Directory\" height=\"16\" class=\"octicon octicon-file-directory color-blue-3\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3h-6.5a.25.25 0 01-.2-.1l-.9-1.2c-.33-.44-.85-.7-1.4-.7h-3.5z\"></path></svg> </div> <div role=\"rowheader\" class=\"flex-auto min-width-0 col-md-2 mr-3\"> <span class=\"css-truncate css-truncate-target d-block width-fit\"><a class=\"js-navigation-open link-gray-dark\" title=\"t\" id=\"e358efa489f58062f10dd7316b65649e-207a3f5cf84ef6b8968a48c0bfa43e47029d5965\" href=\"/fukamachi/fast-http/tree/master/t\">t</a></span> </div> <div role=\"gridcell\" class=\"flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message\"> <div class=\"Skeleton Skeleton--text col-7\"> </div> </div> <div role=\"gridcell\" class=\"text-gray-light text-right\" style=\"width:100px;\"> <div class=\"Skeleton Skeleton--text\"> </div> </div> </div> <div role=\"row\" class=\"Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item \"> <div role=\"gridcell\" class=\"mr-3 flex-shrink-0\" style=\"width: 16px;\"> <svg color=\"gray-light\" aria-label=\"File\" height=\"16\" class=\"octicon octicon-file text-gray-light\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z\"></path></svg> </div> <div role=\"rowheader\" class=\"flex-auto min-width-0 col-md-2 mr-3\"> <span class=\"css-truncate css-truncate-target d-block width-fit\"><a class=\"js-navigation-open link-gray-dark\" title=\".gitignore\" id=\"a084b794bc0759e7a6b77810e01874f2-7d8d59e92d2681484f66ff496e686440e57a59a6\" href=\"/fukamachi/fast-http/blob/master/.gitignore\">.gitignore</a></span> </div> <div role=\"gridcell\" class=\"flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message\"> <div class=\"Skeleton Skeleton--text col-7\"> </div> </div> <div role=\"gridcell\" class=\"text-gray-light text-right\" style=\"width:100px;\"> <div class=\"Skeleton Skeleton--text\"> </div> </div> </div> <div role=\"row\" class=\"Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item \"> <div role=\"gridcell\" class=\"mr-3 flex-shrink-0\" style=\"width: 16px;\"> <svg color=\"gray-light\" aria-label=\"File\" height=\"16\" class=\"octicon octicon-file text-gray-light\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z\"></path></svg> </div> <div role=\"rowheader\" class=\"flex-auto min-width-0 col-md-2 mr-3\"> <span class=\"css-truncate css-truncate-target d-block width-fit\"><a class=\"js-navigation-open link-gray-dark\" title=\".travis.yml\" id=\"354f30a63fb0907d4ad57269548329e3-07b8c43ed11232a714f2985a6bd642625977b710\" href=\"/fukamachi/fast-http/blob/master/.travis.yml\">.travis.yml</a></span> </div> <div role=\"gridcell\" class=\"flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message\"> <div class=\"Skeleton Skeleton--text col-7\"> </div> </div> <div role=\"gridcell\" class=\"text-gray-light text-right\" style=\"width:100px;\"> <div class=\"Skeleton Skeleton--text\"> </div> </div> </div> <div role=\"row\" class=\"Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item \"> <div role=\"gridcell\" class=\"mr-3 flex-shrink-0\" style=\"width: 16px;\"> <svg color=\"gray-light\" aria-label=\"File\" height=\"16\" class=\"octicon octicon-file text-gray-light\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z\"></path></svg> </div> <div role=\"rowheader\" class=\"flex-auto min-width-0 col-md-2 mr-3\"> <span class=\"css-truncate css-truncate-target d-block width-fit\"><a class=\"js-navigation-open link-gray-dark\" title=\"README.markdown\" id=\"0a369498a5a8db3ac8fa606b544c9810-13c449862f42140a48036f0b138411878ae4c341\" href=\"/fukamachi/fast-http/blob/master/README.markdown\">README.markdown</a></span> </div> <div role=\"gridcell\" class=\"flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message\"> <div class=\"Skeleton Skeleton--text col-7\"> </div> </div> <div role=\"gridcell\" class=\"text-gray-light text-right\" style=\"width:100px;\"> <div class=\"Skeleton Skeleton--text\"> </div> </div> </div> <div role=\"row\" class=\"Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item \"> <div role=\"gridcell\" class=\"mr-3 flex-shrink-0\" style=\"width: 16px;\"> <svg color=\"gray-light\" aria-label=\"File\" height=\"16\" class=\"octicon octicon-file text-gray-light\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z\"></path></svg> </div> <div role=\"rowheader\" class=\"flex-auto min-width-0 col-md-2 mr-3\"> <span class=\"css-truncate css-truncate-target d-block width-fit\"><a class=\"js-navigation-open link-gray-dark\" title=\"fast-http-test.asd\" id=\"7da3758d2cde9752ef3274d9c8bc8b0a-e2734e29a26bb3bb3ff35fc4084f223efe512d95\" href=\"/fukamachi/fast-http/blob/master/fast-http-test.asd\">fast-http-test.asd</a></span> </div> <div role=\"gridcell\" class=\"flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message\"> <div class=\"Skeleton Skeleton--text col-7\"> </div> </div> <div role=\"gridcell\" class=\"text-gray-light text-right\" style=\"width:100px;\"> <div class=\"Skeleton Skeleton--text\"> </div> </div> </div> <div role=\"row\" class=\"Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item \"> <div role=\"gridcell\" class=\"mr-3 flex-shrink-0\" style=\"width: 16px;\"> <svg color=\"gray-light\" aria-label=\"File\" height=\"16\" class=\"octicon octicon-file text-gray-light\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" role=\"img\"><path fill-rule=\"evenodd\" d=\"M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z\"></path></svg> </div> <div role=\"rowheader\" class=\"flex-auto min-width-0 col-md-2 mr-3\"> <span class=\"css-truncate css-truncate-target d-block width-fit\"><a class=\"js-navigation-open link-gray-dark\" title=\"fast-http.asd\" id=\"9aafdf56aee432ee89f49f55522847db-79ce23dfd8eebd8657e9f360ca7c4e8126aa1d57\" href=\"/fukamachi/fast-http/blob/master/fast-http.asd\">fast-http.asd</a></span> </div> <div role=\"gridcell\" class=\"flex-auto min-width-0 d-none d-md-block col-5 mr-3 commit-message\"> <div class=\"Skeleton Skeleton--text col-7\"> </div> </div> <div role=\"gridcell\" class=\"text-gray-light text-right\" style=\"width:100px;\"> <div class=\"Skeleton Skeleton--text\"> </div> </div> </div> </div> <div class=\"Details-content--shown Box-footer d-md-none p-0\"> <button type=\"button\" class=\"d-block btn-link js-details-target width-full px-3 py-2\" aria-expanded=\"false\"> View code </button> </div> </div> </include-fragment> </div> <div id=\"readme\" class=\"Box markdown js-code-block-container Box--responsive\"> <div class=\"Box-header d-flex flex-items-center flex-justify-between bg-white border-bottom-0\"> <h2 class=\"Box-title pr-3\"> README.markdown </h2> </div> <div class=\"Box-body px-5 pb-5\"> <article class=\"markdown-body entry-content container-lg\" itemprop=\"text\"><h1><a id=\"user-content-fast-http\" class=\"anchor\" aria-hidden=\"true\" href=\"#fast-http\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>fast-http</h1> <p><a href=\"https://travis-ci.org/fukamachi/fast-http\" rel=\"nofollow\"><img src=\"https://camo.githubusercontent.com/a78f3c560e2cd64a262be1d2c05f506d9b503b0a/68747470733a2f2f7472617669732d63692e6f72672f66756b616d616368692f666173742d687474702e7376673f6272616e63683d6d6173746572\" alt=\"Build Status\" data-canonical-src=\"https://travis-ci.org/fukamachi/fast-http.svg?branch=master\" style=\"max-width:100%;\"></a></p> <p>This is a fast HTTP request/response protocol parser for Common Lisp.</p> <h2><a id=\"user-content-features\" class=\"anchor\" aria-hidden=\"true\" href=\"#features\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>Features</h2> <ul> <li>Parses both HTTP requests and responses.</li> <li>Handles persistent streams (keep-alive).</li> <li>Decodes chunked encoding.</li> <li>Exports low-level APIs which don't any memory allocations during parsing.</li> </ul> <h2><a id=\"user-content-api-differences-from-http-parse\" class=\"anchor\" aria-hidden=\"true\" href=\"#api-differences-from-http-parse\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>API differences from http-parse</h2> <p>The API is quite similar to <a href=\"https://github.com/orthecreedence/http-parse\">http-parse</a>, although there's some differences.</p> <ul> <li><code>http</code>, <code>http-request</code> and <code>http-response</code> are structure classes, not standard classes.</li> <li><code>http</code> doesn't have <code>:force-stream</code> option. (always streaming)</li> <li><code>http</code> doesn't have <code>:store-body</code> option because it can consume much memory.</li> <li><code>body-callback</code> for <code>make-parser</code> doesn't take a flag <code>body-complete-p</code>. <ul> <li>Use <code>finish-callback</code> to know if the parsing is finished.</li> </ul> </li> <li><code>body-callback</code> for <code>make-parser</code> takes pointers <code>start</code> and <code>end</code>.</li> <li><code>multipart-callback</code> for <code>make-parser</code> has been deleted. <ul> <li>Use <code>make-multipart-parser</code> and <code>body-callback</code> by yourself.</li> </ul> </li> <li><code>:callback</code> of <code>make-multipart-parser</code> takes a stream, not a body octet vector at the 4th argument.</li> <li>Raises errors aggressively while parsing. <ul> <li>Handle <code>fast-http-error</code> as you needed.</li> </ul> </li> <li>Doesn't use a property list as a representation of HTTP headers. (See <a href=\"https://github.com/fukamachi/fast-http/issues/1\">issue #1</a>)</li> </ul> <h2><a id=\"user-content-apis\" class=\"anchor\" aria-hidden=\"true\" href=\"#apis\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>APIs</h2> <h3><a id=\"user-content-structure-http\" class=\"anchor\" aria-hidden=\"true\" href=\"#structure-http\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>[Structure] http</h3> <p>Base structure class extended by <code>http-request</code> and <code>http-response</code>.</p> <p><strong>NOTE</strong>: Don't use this class directly unless you're intended to use low-level APIs of fast-http.</p> <div class=\"highlight highlight-source-lisp\"><pre>(make-http) <span class=\"pl-c\"><span class=\"pl-c\">;</span>=> #S(FAST-HTTP.HTTP:HTTP</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :METHOD NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :MAJOR-VERSION 0</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :MINOR-VERSION 9</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :STATUS 0</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :CONTENT-LENGTH NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :CHUNKED-P NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :UPGRADE-P NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :HEADERS NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :HEADER-READ 0</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :MARK -1</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :STATE 0)</span></pre></div> <h4><a id=\"user-content-methods\" class=\"anchor\" aria-hidden=\"true\" href=\"#methods\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>Methods</h4> <ul> <li><code>http-method</code>: Returns a HTTP request method in a keyword (such like <code>:GET</code>, <code>:POST</code> or <code>:HEAD</code>).</li> <li><code>http-major-version</code>: Returns a HTTP protocol major version in an integer (such like <code>1</code> or <code>0</code>).</li> <li><code>http-minor-version</code>: Returns a HTTP protocol minor version in an integer (such like <code>1</code> or <code>0</code>).</li> <li><code>http-version</code>: Returns a HTTP protocol version in a float (such like <code>1.0</code> or <code>1.1</code>).</li> <li><code>http-status</code>: Returns a HTTP response status code in an integer (such like <code>200</code> or <code>302</code>).</li> <li><code>http-content-length</code>: Returns a value of <code>Content-Length</code> header in an integer. If the header doesn't exist, it returns <code>NIL</code>.</li> <li><code>http-chunked-p</code>: Returns <code>T</code> if the value of <code>Transfer-Encoding</code> header is <code>chunked</code>. If the header doesn't exist, it returns <code>NIL</code>.</li> <li><code>http-upgrade-p</code>: Returns <code>T</code> if <code>Upgrade</code> header exists.</li> <li><code>http-headers</code>: Returns a hash-table which represents HTTP headers. Note all hash keys are lower-cased and all values are string except <code>Set-Cookie</code> header, whose value is a list of strings. (<code>Content-Length</code> -> <code>\"content-length\"</code>).</li> </ul> <h3><a id=\"user-content-structure-http-request-extends-http\" class=\"anchor\" aria-hidden=\"true\" href=\"#structure-http-request-extends-http\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>[Structure] http-request (extends http)</h3> <p>Structure class holds values specific to an HTTP request.</p> <div class=\"highlight highlight-source-lisp\"><pre>(make-http-request) <span class=\"pl-c\"><span class=\"pl-c\">;</span>=> #S(FAST-HTTP.HTTP:HTTP-REQUEST</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :METHOD NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :MAJOR-VERSION 0</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :MINOR-VERSION 9</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :STATUS 0</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :CONTENT-LENGTH NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :CHUNKED-P NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :UPGRADE-P NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :HEADERS NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :HEADER-READ 0</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :MARK -1</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :STATE 0</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :RESOURCE NIL)</span></pre></div> <h4><a id=\"user-content-methods-1\" class=\"anchor\" aria-hidden=\"true\" href=\"#methods-1\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>Methods</h4> <ul> <li><code>http-resource</code>: Returns an URI string.</li> </ul> <h3><a id=\"user-content-structure-http-response-extends-http\" class=\"anchor\" aria-hidden=\"true\" href=\"#structure-http-response-extends-http\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>[Structure] http-response (extends http)</h3> <p>Structure class holds values specific to an HTTP response.</p> <div class=\"highlight highlight-source-lisp\"><pre>(make-http-response) <span class=\"pl-c\"><span class=\"pl-c\">;</span>=> #S(FAST-HTTP.HTTP:HTTP-RESPONSE</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :METHOD NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :MAJOR-VERSION 0</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :MINOR-VERSION 9</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :STATUS 0</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :CONTENT-LENGTH NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :CHUNKED-P NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :UPGRADE-P NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :HEADERS NIL</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :HEADER-READ 0</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :MARK -1</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :STATE 0</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :STATUS-TEXT NIL)</span></pre></div> <h4><a id=\"user-content-methods-2\" class=\"anchor\" aria-hidden=\"true\" href=\"#methods-2\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>Methods</h4> <ul> <li><code>http-status-text</code>: Returns an response status text (such like <code>Continue</code>, <code>OK</code> or <code>Bad Request</code>).</li> </ul> <h3><a id=\"user-content-function-make-parser-http-key-first-line-callback-header-callback-body-callback-finish-callback\" class=\"anchor\" aria-hidden=\"true\" href=\"#function-make-parser-http-key-first-line-callback-header-callback-body-callback-finish-callback\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>[Function] make-parser (http &key first-line-callback header-callback body-callback finish-callback)</h3> <p>Makes a parser closure and returns it.</p> <div class=\"highlight highlight-source-lisp\"><pre>(<span class=\"pl-k\">let</span> ((http (make-http-request))) (make-parser http :body-callback (<span class=\"pl-c1\">lambda</span> (data start end) (write-to-buffer data start end)) :finish-callback (<span class=\"pl-c1\">lambda</span> () (handle-response http)))) <span class=\"pl-c\"><span class=\"pl-c\">;</span>=> #<CLOSURE (LAMBDA (DATA &KEY (START 0) END)</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> :IN</span> <span class=\"pl-c\"><span class=\"pl-c\">;</span> FAST-HTTP.PARSER:MAKE-PARSER) {10090BDD0B}></span></pre></div> <p>The closure takes one required argument <code>data</code>, that is a simple byte vector and two keyword arguments <code>start</code> and <code>end</code>.</p> <h4><a id=\"user-content-callbacks\" class=\"anchor\" aria-hidden=\"true\" href=\"#callbacks\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>Callbacks</h4> <ul> <li><code>first-line-callback</code> (): This callback function will be called when the first line is parsed.</li> <li><code>header-callback</code> (headers-hash-table): This callback function will be called when the header lines are parsed. This function is the same object to the <code>http</code> object holds.</li> <li><code>body-callback</code> (data-byte-vector): This callback function will be called whenever it gets a chunk of HTTP body. Which means this can be called multiple times.</li> <li><code>finish-callback</code> (): This callback function will be called when the HTTP message ends.</li> </ul> <p>NOTE: If the HTTP request/response has multiple messages (like HTTP/1.1 pipelining), all these functions can be called multiple times.</p> <h3><a id=\"user-content-function-make-multipart-parser-content-type-callback\" class=\"anchor\" aria-hidden=\"true\" href=\"#function-make-multipart-parser-content-type-callback\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>[Function] make-multipart-parser (content-type callback)</h3> <p>Makes a multipart/form-data parser closure and returns it.</p> <p>This takes 2 arguments, <code>content-type</code> (such like <code>\"multipart/form-data; boundary=--AsB03x\"</code>) and <code>callback</code>. The <code>callback</code> is a function which takes exact 4 arguments -- a field name, field headers, field meta data and body bytes.</p> <h2><a id=\"user-content-low-level-apis\" class=\"anchor\" aria-hidden=\"true\" href=\"#low-level-apis\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>Low-level APIs</h2> <p>The following functions are intended to be used for internally. These APIs are likely to change in the future.</p> <p>Most of functions are declared as <code>(optimize (speed 3) (safety 0))</code> which means it won't check the type of arguments.</p> <h3><a id=\"user-content-structure-callbacks\" class=\"anchor\" aria-hidden=\"true\" href=\"#structure-callbacks\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>[Structure] callbacks</h3> <p>Structure class holds callback functions. The callbacks are similar to <code>make-parser</code>'s, but don't correspond to them directly.</p> <h4><a id=\"user-content-slots\" class=\"anchor\" aria-hidden=\"true\" href=\"#slots\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>Slots</h4> <ul> <li><code>message-begin</code> (http): This will be called when a new HTTP message begins.</li> <li><code>url</code> (http data start end): This will be called when an URL part of the HTTP request parsed.</li> <li><code>first-line</code> (http): This will be called when the first line of the HTTP request/response parsed.</li> <li><code>status</code> (http data start end): This will be called when the status text (not code) of the HTTP response parsed.</li> <li><code>header-field</code> (http data start end): This will be called when a header field parsed.</li> <li><code>header-value</code> (http data start end): This will be called when a header value parsed. This function can be called multiple times when the header value is folded onto multiple lines.</li> <li><code>headers-complete</code> (http): This will be called when all headers parsed.</li> <li><code>body</code> (http data start end): This will be called whenever the parser gets a chunk of HTTP body.</li> <li><code>message-complete</code> (http): This will be called when the HTTP message ends.</li> </ul> <h3><a id=\"user-content-function-parse-request-http-callbacks-data-key-start-0-end\" class=\"anchor\" aria-hidden=\"true\" href=\"#function-parse-request-http-callbacks-data-key-start-0-end\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>[Function] parse-request (http callbacks data &key (start 0) end)</h3> <p>Parses <code>data</code> as an HTTP request, sets values to <code>http</code> and invokes callbacks in <code>callbacks</code>.</p> <p>This takes a <code>http</code> object, a <code>callbacks</code> object, and a simple byte vector <code>data</code> and two pointers -- <code>start</code> and <code>end</code>. If <code>end</code> is <code>nil</code>, the length of <code>data</code> will be used.</p> <h3><a id=\"user-content-function-parse-response-http-callbacks-data-key-start-0-end\" class=\"anchor\" aria-hidden=\"true\" href=\"#function-parse-response-http-callbacks-data-key-start-0-end\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>[Function] parse-response (http callbacks data &key (start 0) end)</h3> <p>Parses <code>data</code> as an HTTP response, sets values to <code>http</code> and invokes callbacks in <code>callbacks</code>.</p> <p>Takes a <code>http</code> object, a <code>callbacks</code> object, and a simple byte vector <code>data</code> and two pointers -- <code>start</code> and <code>end</code>. If <code>end</code> is <code>nil</code>, the length of <code>data</code> will be used.</p> <h3><a id=\"user-content-condition-eof\" class=\"anchor\" aria-hidden=\"true\" href=\"#condition-eof\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>[Condition] eof</h3> <p>Will be raised when the <code>data</code> ends in the middle of parsing.</p> <h2><a id=\"user-content-installation\" class=\"anchor\" aria-hidden=\"true\" href=\"#installation\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>Installation</h2> <div class=\"highlight highlight-source-lisp\"><pre>(ql:quickload :fast-http)</pre></div> <h2><a id=\"user-content-running-tests\" class=\"anchor\" aria-hidden=\"true\" href=\"#running-tests\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>Running tests</h2> <div class=\"highlight highlight-source-lisp\"><pre>(asdf:test-system :fast-http)</pre></div> <h2><a id=\"user-content-benchmark\" class=\"anchor\" aria-hidden=\"true\" href=\"#benchmark\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>Benchmark</h2> <ul> <li>Parsing an HTTP request header 100000 times.</li> </ul> <p>In this benchmark, fast-http is <strong>1.25 times faster</strong> than <a href=\"https://github.com/joyent/http-parser\">http-parser</a>, a C equivalent.</p> <table> <thead> <tr> <th align=\"right\">http-parser (C)</th> <th align=\"right\">fast-http</th> </tr> </thead> <tbody> <tr> <td align=\"right\">0.108s</td> <td align=\"right\">0.086s</td> </tr> </tbody> </table> <h3><a id=\"user-content-environment\" class=\"anchor\" aria-hidden=\"true\" href=\"#environment\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>Environment</h3> <ul> <li>Travis CI</li> <li>SBCL 1.2.6</li> </ul> <p>You can see the latest result at <a href=\"https://travis-ci.org/fukamachi/fast-http\" rel=\"nofollow\">Travis CI</a>.</p> <h3><a id=\"user-content-fast-http-common-lisp\" class=\"anchor\" aria-hidden=\"true\" href=\"#fast-http-common-lisp\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>fast-http (Common Lisp)</h3> <div class=\"highlight highlight-source-lisp\"><pre>(ql:quickload :fast-http-test) (fast-http-test.benchmark:run-ll-benchmark)</pre></div> <pre><code>Evaluation took: 0.086 seconds of real time 0.085897 seconds of total run time (0.084763 user, 0.001134 system) 100.00% CPU 257,140,751 processor cycles 0 bytes consed </code></pre> <h3><a id=\"user-content-http-parser-c\" class=\"anchor\" aria-hidden=\"true\" href=\"#http-parser-c\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>http-parser (C)</h3> <div class=\"highlight highlight-source-c\"><pre>#<span class=\"pl-k\">include</span> <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>http_parser.h<span class=\"pl-pds\">\"</span></span> #<span class=\"pl-k\">include</span> <span class=\"pl-s\"><span class=\"pl-pds\"><</span>stdio.h<span class=\"pl-pds\">></span></span> #<span class=\"pl-k\">include</span> <span class=\"pl-s\"><span class=\"pl-pds\"><</span>stdlib.h<span class=\"pl-pds\">></span></span> #<span class=\"pl-k\">include</span> <span class=\"pl-s\"><span class=\"pl-pds\"><</span>string.h<span class=\"pl-pds\">></span></span> #<span class=\"pl-k\">include</span> <span class=\"pl-s\"><span class=\"pl-pds\"><</span>assert.h<span class=\"pl-pds\">></span></span> #<span class=\"pl-k\">include</span> <span class=\"pl-s\"><span class=\"pl-pds\"><</span>time.h<span class=\"pl-pds\">></span></span> <span class=\"pl-k\">static</span> http_parser *parser; <span class=\"pl-k\">static</span> http_parser_settings settings_null = {.<span class=\"pl-smi\">on_message_begin</span> = <span class=\"pl-c1\">0</span> ,.<span class=\"pl-smi\">on_header_field</span> = <span class=\"pl-c1\">0</span> ,.<span class=\"pl-smi\">on_header_value</span> = <span class=\"pl-c1\">0</span> ,.<span class=\"pl-smi\">on_url</span> = <span class=\"pl-c1\">0</span> ,.<span class=\"pl-smi\">on_status</span> = <span class=\"pl-c1\">0</span> ,.<span class=\"pl-smi\">on_body</span> = <span class=\"pl-c1\">0</span> ,.<span class=\"pl-smi\">on_headers_complete</span> = <span class=\"pl-c1\">0</span> ,.<span class=\"pl-smi\">on_message_complete</span> = <span class=\"pl-c1\">0</span> }; <span class=\"pl-k\">int</span> <span class=\"pl-en\">main</span> (<span class=\"pl-k\">void</span>) { <span class=\"pl-k\">const</span> <span class=\"pl-k\">char</span> *buf; <span class=\"pl-k\">int</span> i; <span class=\"pl-k\">float</span> start, end; <span class=\"pl-c1\">size_t</span> parsed; parser = <span class=\"pl-c1\">malloc</span>(<span class=\"pl-k\">sizeof</span>(http_parser)); buf = <span class=\"pl-s\"><span class=\"pl-pds\">\"</span>GET /cookies HTTP/1.1<span class=\"pl-cce\">\\r\\n</span>Host: 127.0.0.1:8090<span class=\"pl-cce\">\\r\\n</span>Connection: keep-alive<span class=\"pl-cce\">\\r\\n</span>Cache-Control: max-age=0<span class=\"pl-cce\">\\r\\n</span>Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8<span class=\"pl-cce\">\\r\\n</span>User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17<span class=\"pl-cce\">\\r\\n</span>Accept-Encoding: gzip,deflate,sdch<span class=\"pl-cce\">\\r\\n</span>Accept-Language: en-US,en;q=0.8<span class=\"pl-cce\">\\r\\n</span>Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3<span class=\"pl-cce\">\\r\\n</span>Cookie: name=wookie<span class=\"pl-cce\">\\r\\n\\r\\n</span><span class=\"pl-pds\">\"</span></span>; start = (<span class=\"pl-k\">float</span>)<span class=\"pl-c1\">clock</span>()/CLOCKS_PER_SEC; <span class=\"pl-k\">for</span> (i = <span class=\"pl-c1\">0</span>; i < <span class=\"pl-c1\">100000</span>; i++) { <span class=\"pl-c1\">http_parser_init</span>(parser, HTTP_REQUEST); parsed = <span class=\"pl-c1\">http_parser_execute</span>(parser, &settings_null, buf, <span class=\"pl-c1\">strlen</span>(buf)); } end = (<span class=\"pl-k\">float</span>)<span class=\"pl-c1\">clock</span>()/CLOCKS_PER_SEC; <span class=\"pl-c1\">free</span>(parser); parser = <span class=\"pl-c1\">NULL</span>; <span class=\"pl-c1\">printf</span>(<span class=\"pl-s\"><span class=\"pl-pds\">\"</span>Elapsed <span class=\"pl-c1\">%f</span> seconds.<span class=\"pl-cce\">\\n</span><span class=\"pl-pds\">\"</span></span>, (end - start)); <span class=\"pl-k\">return</span> <span class=\"pl-c1\">0</span>; }</pre></div> <pre><code>$ make http_parser.o $ gcc -Wall -Wextra -Werror -Wno-error=unused-but-set-variable -O3 http_parser.o mybench.c -o mybench $ mybench Elapsed 0.108815 seconds. </code></pre> <h2><a id=\"user-content-author\" class=\"anchor\" aria-hidden=\"true\" href=\"#author\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>Author</h2> <ul> <li>Eitaro Fukamachi (<a href=\"mailto:e.arrows@gmail.com\">e.arrows@gmail.com</a>)</li> </ul> <h2><a id=\"user-content-copyright\" class=\"anchor\" aria-hidden=\"true\" href=\"#copyright\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>Copyright</h2> <p>Copyright (c) 2014 Eitaro Fukamachi</p> <h2><a id=\"user-content-license\" class=\"anchor\" aria-hidden=\"true\" href=\"#license\"><svg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z\"></path></svg></a>License</h2> <p>Licensed under the MIT License.</p> </article> </div> </div> </div> <div class=\"flex-shrink-0 col-12 col-md-3\"> <div class=\"BorderGrid BorderGrid--spacious\" data-pjax> <div class=\"BorderGrid-row hide-sm hide-md\"> <div class=\"BorderGrid-cell\"> <h2 class=\"mb-3 h4\">About</h2> <p class=\"f4 mt-3\"> A fast HTTP request/response parser for Common Lisp. </p> <h3 class=\"sr-only\">Resources</h3> <div class=\"mt-3\"> <a class=\"muted-link\" href=\"#readme\"> <svg mr=\"2\" height=\"16\" class=\"octicon octicon-book mr-2\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M0 1.75A.75.75 0 01.75 1h4.253c1.227 0 2.317.59 3 1.501A3.744 3.744 0 0111.006 1h4.245a.75.75 0 01.75.75v10.5a.75.75 0 01-.75.75h-4.507a2.25 2.25 0 00-1.591.659l-.622.621a.75.75 0 01-1.06 0l-.622-.621A2.25 2.25 0 005.258 13H.75a.75.75 0 01-.75-.75V1.75zm8.755 3a2.25 2.25 0 012.25-2.25H14.5v9h-3.757c-.71 0-1.4.201-1.992.572l.004-7.322zm-1.504 7.324l.004-5.073-.002-2.253A2.25 2.25 0 005.003 2.5H1.5v9h3.757a3.75 3.75 0 011.994.574z\"></path></svg> Readme </a> </div> </div> </div> <div class=\"BorderGrid-row\"> <div class=\"BorderGrid-cell\"> <h2 class=\"h4 mb-3\"> <a href=\"/fukamachi/fast-http/releases\" class=\"link-gray-dark no-underline \"> Releases </a></h2> <div class=\"text-small\">No releases published</div> </div> </div> <div class=\"BorderGrid-row\"> <div class=\"BorderGrid-cell\"> <h2 class=\"h4 mb-3\"> <a href=\"/fukamachi/fast-http/packages\" class=\"link-gray-dark no-underline \"> Packages <span title=\"0\" hidden=\"hidden\" class=\"Counter \">0</span> </a></h2> <div class=\"text-small\"> No packages published <br> </div> </div> </div> <div class=\"BorderGrid-row\" hidden> <div class=\"BorderGrid-cell\"> <include-fragment src=\"/fukamachi/fast-http/used_by_list\" accept=\"text/fragment+html\"> </include-fragment> </div> </div> <div class=\"BorderGrid-row\"> <div class=\"BorderGrid-cell\"> <h2 class=\"h4 mb-3\"> <a href=\"/fukamachi/fast-http/graphs/contributors\" class=\"link-gray-dark no-underline \"> Contributors <span title=\"8\" class=\"Counter \">8</span> </a></h2> <include-fragment src=\"/fukamachi/fast-http/contributors_list?count=8&current_repository=fast-http&items_to_show=8\" aria-busy=\"true\" aria-label=\"Loading contributors\"> <ul class=\"list-style-none d-flex flex-wrap mb-n2\"> <li class=\"mb-2 \"> <div class=\"Skeleton avatar avatar-user mr-2\" style=\"width:32px;height:32px;\"></div> </li> <li class=\"mb-2 \"> <div class=\"Skeleton avatar avatar-user mr-2\" style=\"width:32px;height:32px;\"></div> </li> <li class=\"mb-2 \"> <div class=\"Skeleton avatar avatar-user mr-2\" style=\"width:32px;height:32px;\"></div> </li> <li class=\"mb-2 \"> <div class=\"Skeleton avatar avatar-user mr-2\" style=\"width:32px;height:32px;\"></div> </li> <li class=\"mb-2 \"> <div class=\"Skeleton avatar avatar-user mr-2\" style=\"width:32px;height:32px;\"></div> </li> <li class=\"mb-2 \"> <div class=\"Skeleton avatar avatar-user mr-2\" style=\"width:32px;height:32px;\"></div> </li> <li class=\"mb-2 \"> <div class=\"Skeleton avatar avatar-user mr-2\" style=\"width:32px;height:32px;\"></div> </li> <li class=\"mb-2 \"> <div class=\"Skeleton avatar avatar-user mr-2\" style=\"width:32px;height:32px;\"></div> </li> </ul> </include-fragment> </div> </div> <div class=\"BorderGrid-row\"> <div class=\"BorderGrid-cell\"> <h2 class=\"h4 mb-3\">Languages</h2> <div class=\"mb-2\"> <span class=\"Progress \"> <span itemprop=\"keywords\" aria-label=\"Common Lisp 99.3\" style=\"background-color: #3fb68b;width: 99.3%;\" class=\"Progress-item \"></span> <span itemprop=\"keywords\" aria-label=\"C 0.7\" style=\"background-color: #555555;width: 0.7%;\" class=\"Progress-item \"></span> </span></div> <ul class=\"list-style-none\"> <li class=\"d-inline\"> <a class=\"d-inline-flex flex-items-center flex-nowrap link-gray no-underline text-small mr-3\" href=\"/fukamachi/fast-http/search?l=common-lisp\" data-ga-click=\"Repository, language stats search click, location:repo overview\"> <svg class=\"octicon octicon-dot-fill mr-2\" style=\"color:#3fb68b;\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 4a4 4 0 100 8 4 4 0 000-8z\"></path></svg> <span class=\"text-gray-dark text-bold mr-1\">Common Lisp</span> <span>99.3%</span> </a> </li> <li class=\"d-inline\"> <a class=\"d-inline-flex flex-items-center flex-nowrap link-gray no-underline text-small mr-3\" href=\"/fukamachi/fast-http/search?l=c\" data-ga-click=\"Repository, language stats search click, location:repo overview\"> <svg class=\"octicon octicon-dot-fill mr-2\" style=\"color:#555555;\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 4a4 4 0 100 8 4 4 0 000-8z\"></path></svg> <span class=\"text-gray-dark text-bold mr-1\">C</span> <span>0.7%</span> </a> </li> </ul> </div> </div> </div> </div></div> </div> </div> </main> </div> </div> <div class=\"footer container-xl width-full p-responsive\" role=\"contentinfo\"> <div class=\"position-relative d-flex flex-row-reverse flex-lg-row flex-wrap flex-lg-nowrap flex-justify-center flex-lg-justify-between pt-6 pb-2 mt-6 f6 text-gray border-top border-gray-light \"> <ul class=\"list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0\"> <li class=\"mr-3 mr-lg-0\">© 2020 GitHub, Inc.</li> <li class=\"mr-3 mr-lg-0\"><a data-ga-click=\"Footer, go to terms, text:terms\" href=\"https://github.com/site/terms\">Terms</a></li> <li class=\"mr-3 mr-lg-0\"><a data-ga-click=\"Footer, go to privacy, text:privacy\" href=\"https://github.com/site/privacy\">Privacy</a></li> <li class=\"mr-3 mr-lg-0\"><a data-ga-click=\"Footer, go to security, text:security\" href=\"https://github.com/security\">Security</a></li> <li class=\"mr-3 mr-lg-0\"><a href=\"https://githubstatus.com/\" data-ga-click=\"Footer, go to status, text:status\">Status</a></li> <li><a data-ga-click=\"Footer, go to help, text:help\" href=\"https://docs.github.com\">Help</a></li> </ul> <a aria-label=\"Homepage\" title=\"GitHub\" class=\"footer-octicon d-none d-lg-block mx-lg-4\" href=\"https://github.com\"> <svg height=\"24\" class=\"octicon octicon-mark-github\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"24\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z\"></path></svg> </a> <ul class=\"list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0\"> <li class=\"mr-3 mr-lg-0\"><a data-ga-click=\"Footer, go to contact, text:contact\" href=\"https://github.com/contact\">Contact GitHub</a></li> <li class=\"mr-3 mr-lg-0\"><a href=\"https://github.com/pricing\" data-ga-click=\"Footer, go to Pricing, text:Pricing\">Pricing</a></li> <li class=\"mr-3 mr-lg-0\"><a href=\"https://docs.github.com\" data-ga-click=\"Footer, go to api, text:api\">API</a></li> <li class=\"mr-3 mr-lg-0\"><a href=\"https://services.github.com\" data-ga-click=\"Footer, go to training, text:training\">Training</a></li> <li class=\"mr-3 mr-lg-0\"><a href=\"https://github.blog\" data-ga-click=\"Footer, go to blog, text:blog\">Blog</a></li> <li><a data-ga-click=\"Footer, go to about, text:about\" href=\"https://github.com/about\">About</a></li> </ul> </div> <div class=\"d-flex flex-justify-center pb-6\"> <span class=\"f6 text-gray-light\"></span> </div> </div> <div id=\"ajax-error-message\" class=\"ajax-error-message flash flash-error\"> <svg class=\"octicon octicon-alert\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z\"></path></svg> <button type=\"button\" class=\"flash-close js-ajax-error-dismiss\" aria-label=\"Dismiss error\"> <svg class=\"octicon octicon-x\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z\"></path></svg> </button> You can’t perform that action at this time. </div> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-bn/3rKJzBl2H64K38R8KaVcT26vKK7BJQC59lwYc+9fjlHzmy0fwh+hzBtsgTdhIi13dxjzNKWhdSN8WTM9qUw==\" type=\"application/javascript\" id=\"js-conditional-compat\" data-src=\"https://github.githubassets.com/assets/compat-bootstrap-6e7ff7ac.js\"></script> <script crossorigin=\"anonymous\" integrity=\"sha512-CxjaMepCmi+z0LTeztU2S8qGD25LyHD6j9t0RSPevy63trFWJVwUM6ipAVLgtpMBBgZ53wq8JPkSeQ6ruaZL2w==\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/environment-bootstrap-0b18da31.js\"></script> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-ZpT71hbwZH9CGy7BM/GLovEPgyslK7oJpsKzHFJv5wMAhVrxsGpXYoF7aMHGrOu3SQZd9cv/HN+2dn2d/FNx/A==\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/vendor-6694fbd6.js\"></script> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-OVSzQGvWDEp33Ggb+zBBSVw6PCU0pJvA+A13bf8x9vCAZVeVtw59GAD4gN08111sy0CRG5OaRVgJsHPsJI/hGA==\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/frameworks-3954b340.js\"></script> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-zaQmNaY96t2z9MgNygC0s2tiUA43OciZ3r/8DflfExn5il0iEY1+o4Qol7LNURBAb2xS/2HLfJRDZyLaynQY3w==\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/behaviors-bootstrap-cda42635.js\"></script> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-TjmDUfspgN28WRWfc01tOL0BFS8pI/TAi8TQ665TcA3jG1C3QgfFu0YKa32Z03rlEL8dukbsy+amwBzgGyjESQ==\" type=\"application/javascript\" data-module-id=\"./Sortable.js\" data-src=\"https://github.githubassets.com/assets/Sortable-4e398351.js\"></script> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-8hScl0DkWwAjCqAQA50kQOn2QTYfPcKEyJjkKYtjGB88r9GB/6kmBBsneJPgwhW3yewwt64ABgsQGpQSLX8zpg==\" type=\"application/javascript\" data-module-id=\"./contributions-spider-graph.js\" data-src=\"https://github.githubassets.com/assets/contributions-spider-graph-f2149c97.js\"></script> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-QOViDUFlNJwNDkBXlntZ4AUm/OFx3TuM7jg4Z1tb3E7dnf3V5p3Oh3E8cwRdjDMDBp4LyOdoBFIhur0biAIdlw==\" type=\"application/javascript\" data-module-id=\"./drag-drop.js\" data-src=\"https://github.githubassets.com/assets/drag-drop-40e5620d.js\"></script> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-iLuC2weaJqL9mYAud2WDWjhd8cJe8dXVxw2KhCH2Rnj6WJvTzlZRmvTtL09wNWX6nRze/TDaQ7gq7BFLchaDYg==\" type=\"application/javascript\" data-module-id=\"./image-crop-element-loader.js\" data-src=\"https://github.githubassets.com/assets/image-crop-element-loader-88bb82db.js\"></script> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-k3kl5iVXoFGMjdhjnFCuKXvq1NwIlgV4oatuts6boMHkB9gg3JOIEK6gUaLPX1YyeP9+usfqHQ/6zEQDIWEDqQ==\" type=\"application/javascript\" data-module-id=\"./jump-to.js\" data-src=\"https://github.githubassets.com/assets/jump-to-937925e6.js\"></script> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-HzWUeLy0p20M4Lc3+EerTwy/VaH3vMuKLvhFJr0PsJfKXnsD9oy5SfashhxStUirglhYZUB4fLYQRM1uzrFyNg==\" type=\"application/javascript\" data-module-id=\"./profile-pins-element.js\" data-src=\"https://github.githubassets.com/assets/profile-pins-element-1f359478.js\"></script> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-qECv/jhsvLFN77eGNu0cjMR2+zvAlLyhQVTnmayJc5OLZoxMLjQZxZW1hK/dhcYro6Wec/aiF21HYf2N5OilYQ==\" type=\"application/javascript\" data-module-id=\"./randomColor.js\" data-src=\"https://github.githubassets.com/assets/randomColor-a840affe.js\"></script> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-mHqsE5aQq7fAmmLd0epHBJK8rn8DOVnjW2YQOT8wvsN1oLrypw0cDFmwXPDwbMghHyo4kKiOtVJ/kEsEzwwibw==\" type=\"application/javascript\" data-module-id=\"./tweetsodium.js\" data-src=\"https://github.githubassets.com/assets/tweetsodium-987aac13.js\"></script> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-WIOX7irV0ZR7jHpy3hhnUvbOMV6Zfu71QFQaANL5zG1k648Mv703s+V2ohGSEhdwf1VC+Bw/NdgyWIQBt+YJLA==\" type=\"application/javascript\" data-module-id=\"./user-status-submit.js\" data-src=\"https://github.githubassets.com/assets/user-status-submit-588397ee.js\"></script> <script crossorigin=\"anonymous\" async=\"async\" integrity=\"sha512-Iklsy9YupvgRWe3v9SejEpXhpW3E8+fbRMj46o4nSgLQOmuJbNrYSXBdP08V2fZjf9NGh6ME+7XapmN9UNLcmw==\" type=\"application/javascript\" src=\"https://github.githubassets.com/assets/github-bootstrap-22496ccb.js\"></script> <div class=\"js-stale-session-flash flash flash-warn flash-banner\" hidden > <svg class=\"octicon octicon-alert\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z\"></path></svg> <span class=\"js-stale-session-flash-signed-in\" hidden>You signed in with another tab or window. <a href=\"\">Reload</a> to refresh your session.</span> <span class=\"js-stale-session-flash-signed-out\" hidden>You signed out in another tab or window. <a href=\"\">Reload</a> to refresh your session.</span> </div> <template id=\"site-details-dialog\"> <details class=\"details-reset details-overlay details-overlay-dark lh-default text-gray-dark hx_rsm\" open> <summary role=\"button\" aria-label=\"Close dialog\"></summary> <details-dialog class=\"Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal\"> <button class=\"Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0\" type=\"button\" aria-label=\"Close dialog\" data-close-dialog> <svg class=\"octicon octicon-x\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z\"></path></svg> </button> <div class=\"octocat-spinner my-6 js-details-dialog-spinner\"></div> </details-dialog> </details> </template> <div class=\"Popover js-hovercard-content position-absolute\" style=\"display: none; outline: none;\" tabindex=\"0\"> <div class=\"Popover-message Popover-message--bottom-left Popover-message--large Box box-shadow-large\" style=\"width:360px;\"> </div> </div> </body> </html> " 200 #<HASH-TABLE :TEST EQUAL :COUNT 17 {1003BA5353}> #<QURI.URI.HTTP:URI-HTTPS https://github.com/fukamachi/fast-http> #<CL+SSL::SSL-STREAM for #<FD-STREAM for "socket 192.168.0.88:55356, peer: 140.82.121.3:443" {1002ACEF53}>> *
Raw
Annotate
Repaste