Skip to content
Snippets Groups Projects
  1. Nov 25, 2016
  2. Sep 21, 2016
  3. Sep 14, 2016
    • Eelco Dolstra's avatar
      Enable HTTP/2 support · 90ad02bf
      Eelco Dolstra authored
      The binary cache store can now use HTTP/2 to do lookups. This is much
      more efficient than HTTP/1.1 due to multiplexing: we can issue many
      requests in parallel over a single TCP connection. Thus it's no longer
      necessary to use a bunch of concurrent TCP connections (25 by
      default).
      
      For example, downloading 802 .narinfo files from
      https://cache.nixos.org/, using a single TCP connection, takes 11.8s
      with HTTP/1.1, but only 0.61s with HTTP/2.
      
      This did require a fairly substantial rewrite of the Downloader class
      to use the curl multi interface, because otherwise curl wouldn't be
      able to do multiplexing for us. As a bonus, we get connection reuse
      even with HTTP/1.1. All downloads are now handled by a single worker
      thread. Clients call Downloader::enqueueDownload() to tell the worker
      thread to start the download, getting a std::future to the result.
      90ad02bf
  4. Jul 26, 2016
  5. Jun 01, 2016
  6. Apr 15, 2016
  7. Mar 02, 2016
  8. Feb 29, 2016
  9. Feb 04, 2016
    • Eelco Dolstra's avatar
      Eliminate the "store" global variable · c10c6144
      Eelco Dolstra authored
      Also, move a few free-standing functions into StoreAPI and Derivation.
      
      Also, introduce a non-nullable smart pointer, ref<T>, which is just a
      wrapper around std::shared_ptr ensuring that the pointer is never
      null. (For reference-counted values, this is better than passing a
      "T&", because the latter doesn't maintain the refcount. Usually, the
      caller will have a shared_ptr keeping the value alive, but that's not
      always the case, e.g., when passing a reference to a std::thread via
      std::bind.)
      c10c6144
  10. Oct 21, 2015
  11. Oct 07, 2015
  12. Oct 01, 2015
Loading