-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[new release] http, cohttp, cohttp-top, cohttp-server-lwt-unix, cohttp-mirage, cohttp-lwt, cohttp-lwt-unix, cohttp-lwt-jsoo, cohttp-eio, cohttp-curl, cohttp-curl-lwt, cohttp-curl-async and cohttp-async (6.0.0~alpha0) #22353
Conversation
Could you add the |
and maybe make it unavailable with opam-version < "2.1.0" |
Should The opam bound is to make sure avoid-version works? |
yes otherwise for people with opam 2.0 it will still get installed regardless given the flag didn't exist then and non-existing flags are ignore by default.
all would be better |
packages/cohttp-server-lwt-unix/cohttp-server-lwt-unix.6.0.0~alpha0/opam
Outdated
Show resolved
Hide resolved
789868d
to
8d3073c
Compare
…p-mirage, cohttp-lwt, cohttp-lwt-unix, cohttp-lwt-jsoo, cohttp-eio, cohttp-curl, cohttp-curl-lwt, cohttp-curl-async, cohttp-bench and cohttp-async (6.0.0~alpha0) CHANGES: - cohttp-eio: ensure "Host" header is the first header in http client requests (bikallem mirage/ocaml-cohttp#939) - cohttp-eio: add TE header in client. Check TE header is server (bikallem mirage/ocaml-cohttp#941) - cohttp-eio: add User-Agent header to request from Client (bikallem mirage/ocaml-cohttp#940) - cohttp-eio: add Content-Length header to request/response (bikallem mirage/ocaml-cohttp#929) - cohttp-eio: add cohttp-eio client api - Cohttp_eio.Client (bikallem mirage/ocaml-cohttp#879) - http: add requires_content_length function for requests and responses (bikallem mirage/ocaml-cohttp#879) - cohttp-eio: use Eio.Buf_write and improve server API (talex5 mirage/ocaml-cohttp#887) - cohttp-eio: update to Eio 0.3 (talex5 mirage/ocaml-cohttp#886) - cohttp-eio: convert to Eio.Buf_read (talex5 mirage/ocaml-cohttp#882) - cohttp lwt client: Connection cache and explicit pipelining (madroach mirage/ocaml-cohttp#853) - http: add Http.Request.make and simplify Http.Response.make (bikallem mseri mirage/ocaml-cohttp#878) - http: add pretty printer functions (bikallem mirage/ocaml-cohttp#880) - New eio based client and server on top of the http library (bikallem mirage/ocaml-cohttp#857) - New curl based clients (rgrinberg mirage/ocaml-cohttp#813) + cohttp-curl-lwt for an Lwt backend + cohttp-curl-async for an Async backend - Completely new Parsing layers for servers (anuragsoni mirage/ocaml-cohttp#819) + Cohttp now uses an optimized parser for requests. + The new parser produces much less temporary buffers during read operations in servers. - Faster header comparison (gasche mirage/ocaml-cohttp#818) - Introduce http package containing common signatures and structures useful for compatibility with cohttp - and no dependencies (rgrinberg mirage/ocaml-cohttp#812) - async(server): allow reading number of active connections (anuragsoni mirage/ocaml-cohttp#809) - Various internal refactors (rgrinberg, mseri, mirage/ocaml-cohttp#802, mirage/ocaml-cohttp#812, mirage/ocaml-cohttp#820, mirage/ocaml-cohttp#800, mirage/ocaml-cohttp#799, mirage/ocaml-cohttp#797) - http (all cohttp server backends): Consider the connection header in response in addition to the request when deciding on whether to keep a connection alive (anuragsoni, mirage/ocaml-cohttp#843) + The user provided Response can contain a connection header. That header will also be considered in addition to the connection header in requests when deciding whether to use keep-alive. This allows a handler to decide to close a connection even if the client requested a keep-alive in the request. - async(server): allow creating a server without using conduit (anuragsoni mirage/ocaml-cohttp#839) + Add `Cohttp_async.Server.Expert.create` and `Cohttp_async.Server.Expert.create_with_response_action`that can be used to create a server without going through Conduit. This allows creating an async TCP server using the Tcp module from `Async_unix` and lets the user have more control over how the `Reader.t` and `Writer.t` are created. - http(header): faster `to_lines` and `to_frames` implementation (mseri mirage/ocaml-cohttp#847) - cohttp(cookies): use case-insensitive comparison to check for `set-cookies` (mseri mirage/ocaml-cohttp#858) - New lwt based server implementation: cohttp-server-lwt-unix + This new implementation does not depend on conduit and has a simpler and more flexible API - async: Adapt cohttp-curl-async to work with core_unix. - *Breaking changes* + refactor: move opam metadata to dune-project (rgrinberg mirage/ocaml-cohttp#811) + refactor: deprecate Cohttp_async.Io (rgrinberg mirage/ocaml-cohttp#807) + fix: move more internals to Private (rgrinberg mirage/ocaml-cohttp#806) + fix: deprecate transfer encoding field (rgrinberg mirage/ocaml-cohttp#805) + refactor: deprecate Cohttp_async.Body_raw (rgrinberg mirage/ocaml-cohttp#804) + fix: deprecate more aliases (rgrinberg mirage/ocaml-cohttp#803) + refactor: deprecate connection value(rgrinberg mirage/ocaml-cohttp#798) + refactor: deprecate using attributes (rgrinberg mirage/ocaml-cohttp#796) + cleanup: remove cohttp-{curl,server}-async (rgrinberg mirage/ocaml-cohttp#904) + cleanup: remove cohttp-{curl,server,proxy}-lwt (rgrinberg mirage/ocaml-cohttp#904) + fix: all parsers now follow the spec and require `\r\n` endings. Previously, the `\r` was optional. (rgrinberg, mirage/ocaml-cohttp#921) - `cohttp-lwt-jsoo`: do not instantiate `XMLHttpRequest` object on boot (mefyl mirage/ocaml-cohttp#922)
8d3073c
to
66345be
Compare
The PR itself looks fine but there are quite a few revdeps to fix first |
@icristescu @metanivek there is a series of failures of irmin-unix and irmin-http that may totally or partially related to the new cohttp. Can you help me to understand what is happening? They don't always happen. When they happen they look like the following:
I did re-run them a few times. Sometimes they are fine and sometimes they are not. |
@mseri our http tests are flakey (as you've seen) and in fact we've disabled them in our latest release (002e138). Maybe there is something in this cohttp release that makes them more so, but it's not immediately obvious. Our usage of cohttp is very small (https://github.com/mirage/irmin/blob/98e0ed00d69847997e125d8a9d0f51fc801b8476/test/irmin-http/test_http.ml#L168-L170) but perhaps it triggers an idea from you. We're investigating on our side as well. |
Thanks a lot! That code path has not really changed in this release, so I will play a bit with it but I don't think this should block the release or require upper bounds. @kit-ty-kate what do you think? |
Ah yes, irmin-unix and so on are known to have flaky tests. We can ignore that |
I've been playing with this on Also, we have plans to replace @mseri lmk if you need any further help debugging but I'm happy to ignore these flakey tests to let this move forward (:pray: @kit-ty-kate). |
Thanks a lot. I will look into it on the side and try to get to the bottom of it. If I need more help I'll ping you in a new cohttp issue. |
Thanks |
Thanks a lot |
Cohttp is an OCaml library for creating HTTP daemons. It has a portable HTTP parser, and implementations using various asynchronous programming libraries:
Links:
dune build @doc
CHANGES:
in servers.
compatibility with cohttp - and no dependencies (rgrinberg feature: introduce http package mirage/ocaml-cohttp#812)
refactor: stop relying on name mangling mirage/ocaml-cohttp#797)
in addition to the request when deciding on whether to keep a connection
alive (anuragsoni, http: Consider the user provided response when considering connection keep-alive mirage/ocaml-cohttp#843)
will also be considered in addition to the connection header in requests
when deciding whether to use keep-alive. This allows a handler to decide to
close a connection even if the client requested a keep-alive in the
request.
Cohttp_async.Server.Expert.create
andCohttp_async.Server.Expert.create_with_response_action
that can be used tocreate a server without going through Conduit. This allows creating an
async TCP server using the Tcp module from
Async_unix
and lets the userhave more control over how the
Reader.t
andWriter.t
are created.to_lines
andto_frames
implementation (mseri bench(http): optimize to_frames and to_lines functions mirage/ocaml-cohttp#847)set-cookies
(mseri Cookies: case-insensitive check of set-cookies mirage/ocaml-cohttp#858)more flexible API
\r\n
endings.Previously, the
\r
was optional. (rgrinberg, fix: require \r\n in all parsers mirage/ocaml-cohttp#921)cohttp-lwt-jsoo
: do not instantiateXMLHttpRequest
object on boot (mefyl Do not systematically create a XMLHttpRequest object. mirage/ocaml-cohttp#922)