From dca7bb6945a3cd2f303d0c634bb43d6dee98cdf3 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Tue, 29 Aug 2023 11:42:52 +0100 Subject: [PATCH] [new release] eio (5 packages) (0.12) CHANGES: New features / API changes: - Replace objects with variants (@talex5 @patricoferris ocaml-multicore/eio#553 ocaml-multicore/eio#605 ocaml-multicore/eio#608, reviewed by @avsm). Some potential users found object types confusing, so we now use an alternative scheme for OS resources. For users of the resources, the only thing that changes is the types: - Instead of taking an argument of type `#foo`, you should now take `_ foo`. - Instead of returning a value of type `foo`, you should now return `foo_ty Eio.Resource.t`. To provide your own implementation of an interface, you now provide a module rather than an object. For example, to provide your own source flow, use `Eio.Flow.Pi.source (module My_source)`. If you want to define your own interfaces, see the `Eio.Resource` module documentation. - Add `Eio.Pool` (@talex5 @darrenldl ocaml-multicore/eio#602, reviewed by @patricoferris). A lock-free pool of resources. This is similar to `Lwt_pool`. - Add `Eio.Lazy` (@talex5 ocaml-multicore/eio#609, reviewed by @SGrondin). If one fiber tries to force a lazy value while another is already doing it, this will wait for the first one to finish rather than raising an exception (as `Stdlib.Lazy` does). - Add `Eio.Path.native` (@talex5 ocaml-multicore/eio#603, reviewed by @patricoferris). This is useful when interacting with non-Eio libraries, for spawning sub-processes, and for displaying paths to users. - Add `Flow.single_write` (@talex5 ocaml-multicore/eio#598). - Add `Eio.Flow.Pi.simple_copy` (@talex5 ocaml-multicore/eio#611). Provides an easy way to implement the `copy` operation when making your own sink. - Eio_unix: add FD passing (@talex5 ocaml-multicore/eio#522). Allows opening a file and passing the handle over a Unix-domain socket. - Add `Process.run ?is_success` to control definition of success (@SGrondin ocaml-multicore/eio#586, reviewed by @talex5). - Add `Eio_mock.Domain_manager` (@talex5 ocaml-multicore/eio#610). This mock domain manager runs everything in a single domain, allowing tests to remain deterministic. - Add `Eio.Debug.with_trace_prefix` (@talex5 ocaml-multicore/eio#610). Allows prefixing all `traceln` output. The mock domain manager uses this to indicate which fake domain is running. Bug fixes: - Fork actions must not allocate (@talex5 ocaml-multicore/eio#593). When using multiple domains, child processes could get stuck if they forked while another domain held the malloc lock. - eio_posix: ignore some errors writing to the wake-up pipe (@talex5 ocaml-multicore/eio#600). If the pipe is full or closed, the wake-up should simply be ignored. Build/test fixes: - Fix some MDX problems on Windows (@polytypic ocaml-multicore/eio#597). - The README depends on kcas (@talex5 ocaml-multicore/eio#606). - Clarify configuration for lib_eio_linux and enable tests on other arches (@dra27 ocaml-multicore/eio#592). - eio_linux tests: skip fixed buffer test if not available (@talex5 ocaml-multicore/eio#604). - eio_windows: update available line to win32 (@talex5 ocaml-multicore/eio#588 ocaml-multicore/eio#591). --- packages/eio/eio.0.12/opam | 56 ++++++++++++++++++++++ packages/eio_linux/eio_linux.0.12/opam | 44 +++++++++++++++++ packages/eio_main/eio_main.0.12/opam | 44 +++++++++++++++++ packages/eio_posix/eio_posix.0.12/opam | 41 ++++++++++++++++ packages/eio_windows/eio_windows.0.12/opam | 41 ++++++++++++++++ 5 files changed, 226 insertions(+) create mode 100644 packages/eio/eio.0.12/opam create mode 100644 packages/eio_linux/eio_linux.0.12/opam create mode 100644 packages/eio_main/eio_main.0.12/opam create mode 100644 packages/eio_posix/eio_posix.0.12/opam create mode 100644 packages/eio_windows/eio_windows.0.12/opam diff --git a/packages/eio/eio.0.12/opam b/packages/eio/eio.0.12/opam new file mode 100644 index 00000000000..5e1ba0eb0d7 --- /dev/null +++ b/packages/eio/eio.0.12/opam @@ -0,0 +1,56 @@ +opam-version: "2.0" +synopsis: "Effect-based direct-style IO API for OCaml" +description: "An effect-based IO API for multicore OCaml with fibers." +maintainer: ["anil@recoil.org"] +authors: ["Anil Madhavapeddy" "Thomas Leonard"] +license: "ISC" +homepage: "https://github.com/ocaml-multicore/eio" +doc: "https://ocaml-multicore.github.io/eio/" +bug-reports: "https://github.com/ocaml-multicore/eio/issues" +depends: [ + "dune" {>= "3.9"} + "ocaml" {>= "5.0.0"} + "bigstringaf" {>= "0.9.0"} + "cstruct" {>= "6.0.1"} + "lwt-dllist" + "optint" {>= "0.1.0"} + "psq" {>= "0.2.0"} + "fmt" {>= "0.8.9"} + "hmap" {>= "0.8.1"} + "domain-local-await" {>= "0.1.0"} + "crowbar" {>= "0.2" & with-test} + "mtime" {>= "2.0.0"} + "mdx" {>= "2.2.0" & with-test} + "dscheck" {>= "0.1.0" & with-test} + "odoc" {with-doc} +] +conflicts: [ + "ocaml-base-compiler" {< "5.0.0~beta1"} + "ocaml-variants" {< "5.0.0~beta1"} + "ocaml-system" {< "5.0.0~beta1"} + "seq" {< "0.3"} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocaml-multicore/eio.git" +url { + src: + "https://github.com/ocaml-multicore/eio/releases/download/v0.12/eio-0.12.tbz" + checksum: [ + "sha256=d84847ce85ffb78641496ad24be3c6ab5cc2c6885cedad6ae257ecac59d926a0" + "sha512=fbcbc8e7e8eaaeacd6c7b3be04fec19b356f900307b2cc1bf6c1cd6bd538c4ea59ab2c7d936fac00c52a3277737671759f1584025c24e0a7727447609c633821" + ] +} +x-commit-hash: "ad7149dc297b856c9bedd692e5809538fd27a4e2" diff --git a/packages/eio_linux/eio_linux.0.12/opam b/packages/eio_linux/eio_linux.0.12/opam new file mode 100644 index 00000000000..a88a48e6639 --- /dev/null +++ b/packages/eio_linux/eio_linux.0.12/opam @@ -0,0 +1,44 @@ +opam-version: "2.0" +synopsis: "Eio implementation for Linux using io-uring" +description: "An Eio implementation for Linux using io-uring." +maintainer: ["anil@recoil.org"] +authors: ["Anil Madhavapeddy" "Thomas Leonard"] +license: "ISC" +homepage: "https://github.com/ocaml-multicore/eio" +doc: "https://ocaml-multicore.github.io/eio/" +bug-reports: "https://github.com/ocaml-multicore/eio/issues" +depends: [ + "dune" {>= "3.9"} + "alcotest" {>= "1.7.0" & with-test} + "eio" {= version} + "mdx" {>= "2.2.0" & with-test} + "logs" {>= "0.7.0"} + "fmt" {>= "0.8.9"} + "cmdliner" {>= "1.1.0" & with-test} + "uring" {>= "0.5"} + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocaml-multicore/eio.git" +url { + src: + "https://github.com/ocaml-multicore/eio/releases/download/v0.12/eio-0.12.tbz" + checksum: [ + "sha256=d84847ce85ffb78641496ad24be3c6ab5cc2c6885cedad6ae257ecac59d926a0" + "sha512=fbcbc8e7e8eaaeacd6c7b3be04fec19b356f900307b2cc1bf6c1cd6bd538c4ea59ab2c7d936fac00c52a3277737671759f1584025c24e0a7727447609c633821" + ] +} +x-commit-hash: "ad7149dc297b856c9bedd692e5809538fd27a4e2" diff --git a/packages/eio_main/eio_main.0.12/opam b/packages/eio_main/eio_main.0.12/opam new file mode 100644 index 00000000000..44fd1e2f0b8 --- /dev/null +++ b/packages/eio_main/eio_main.0.12/opam @@ -0,0 +1,44 @@ +opam-version: "2.0" +synopsis: "Effect-based direct-style IO mainloop for OCaml" +description: "Selects an appropriate Eio backend for the current platform." +maintainer: ["anil@recoil.org"] +authors: ["Anil Madhavapeddy" "Thomas Leonard"] +license: "ISC" +homepage: "https://github.com/ocaml-multicore/eio" +doc: "https://ocaml-multicore.github.io/eio/" +bug-reports: "https://github.com/ocaml-multicore/eio/issues" +depends: [ + "dune" {>= "3.9"} + "mdx" {>= "2.2.0" & with-test} + "kcas" {>= "0.3.0" & with-test} + "yojson" {>= "2.0.2" & with-test} + "eio_linux" {= version & os = "linux"} + "eio_posix" {= version & os != "win32"} + "eio_windows" {= version & os = "win32"} + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocaml-multicore/eio.git" +url { + src: + "https://github.com/ocaml-multicore/eio/releases/download/v0.12/eio-0.12.tbz" + checksum: [ + "sha256=d84847ce85ffb78641496ad24be3c6ab5cc2c6885cedad6ae257ecac59d926a0" + "sha512=fbcbc8e7e8eaaeacd6c7b3be04fec19b356f900307b2cc1bf6c1cd6bd538c4ea59ab2c7d936fac00c52a3277737671759f1584025c24e0a7727447609c633821" + ] +} +x-commit-hash: "ad7149dc297b856c9bedd692e5809538fd27a4e2" +x-ci-accept-failures: ["macos-homebrew"] diff --git a/packages/eio_posix/eio_posix.0.12/opam b/packages/eio_posix/eio_posix.0.12/opam new file mode 100644 index 00000000000..057ebcacc18 --- /dev/null +++ b/packages/eio_posix/eio_posix.0.12/opam @@ -0,0 +1,41 @@ +opam-version: "2.0" +synopsis: "Eio implementation for POSIX systems" +description: "An Eio implementation for most Unix-like platforms" +maintainer: ["anil@recoil.org"] +authors: ["Anil Madhavapeddy" "Thomas Leonard"] +license: "ISC" +homepage: "https://github.com/ocaml-multicore/eio" +doc: "https://ocaml-multicore.github.io/eio/" +bug-reports: "https://github.com/ocaml-multicore/eio/issues" +depends: [ + "dune" {>= "3.9"} + "eio" {= version} + "iomux" {>= "0.2"} + "mdx" {>= "2.2.0" & with-test} + "fmt" {>= "0.8.9"} + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocaml-multicore/eio.git" +url { + src: + "https://github.com/ocaml-multicore/eio/releases/download/v0.12/eio-0.12.tbz" + checksum: [ + "sha256=d84847ce85ffb78641496ad24be3c6ab5cc2c6885cedad6ae257ecac59d926a0" + "sha512=fbcbc8e7e8eaaeacd6c7b3be04fec19b356f900307b2cc1bf6c1cd6bd538c4ea59ab2c7d936fac00c52a3277737671759f1584025c24e0a7727447609c633821" + ] +} +x-commit-hash: "ad7149dc297b856c9bedd692e5809538fd27a4e2" diff --git a/packages/eio_windows/eio_windows.0.12/opam b/packages/eio_windows/eio_windows.0.12/opam new file mode 100644 index 00000000000..2038b940235 --- /dev/null +++ b/packages/eio_windows/eio_windows.0.12/opam @@ -0,0 +1,41 @@ +opam-version: "2.0" +synopsis: "Eio implementation for Windows" +description: "An Eio implementation using OCaml's Unix.select" +maintainer: ["anil@recoil.org"] +authors: ["Anil Madhavapeddy" "Thomas Leonard"] +license: "ISC" +homepage: "https://github.com/ocaml-multicore/eio" +doc: "https://ocaml-multicore.github.io/eio/" +bug-reports: "https://github.com/ocaml-multicore/eio/issues" +depends: [ + "dune" {>= "3.9"} + "eio" {= version} + "kcas" {>= "0.3.0" & with-test} + "alcotest" {>= "1.7.0" & with-test} + "odoc" {with-doc} +] +build: [ + ["dune" "subst"] {dev} + [ + "dune" + "build" + "-p" + name + "-j" + jobs + "@install" + "@runtest" {with-test} + "@doc" {with-doc} + ] +] +dev-repo: "git+https://github.com/ocaml-multicore/eio.git" +url { + src: + "https://github.com/ocaml-multicore/eio/releases/download/v0.12/eio-0.12.tbz" + checksum: [ + "sha256=d84847ce85ffb78641496ad24be3c6ab5cc2c6885cedad6ae257ecac59d926a0" + "sha512=fbcbc8e7e8eaaeacd6c7b3be04fec19b356f900307b2cc1bf6c1cd6bd538c4ea59ab2c7d936fac00c52a3277737671759f1584025c24e0a7727447609c633821" + ] +} +x-commit-hash: "ad7149dc297b856c9bedd692e5809538fd27a4e2" +available: [os = "win32"]