opam-version: "2.0"

synopsis: "Promises and event-driven I/O"
license: "MIT"
homepage: "https://github.com/ocsigen/lwt"
doc: "https://ocsigen.org/lwt"
bug-reports: "https://github.com/ocsigen/lwt/issues"

authors: [
  "Jérôme Vouillon"
  "Jérémie Dimino"
]
maintainer: [
  "Raphaël Proust <code@bnwr.net>"
  "Anton Bachin <antonbachin@yahoo.com>"
]
dev-repo: "git+https://github.com/ocsigen/lwt.git"

depends: [
  "cppo" {build & >= "1.1.0"}
  "dune" {>= "1.8.0"}
  "dune-configurator"
  "mmap" {>= "1.1.0" & "os" != "win32"} # mmap is needed as long as Lwt supports OCaml < 4.06.0.
  "ocaml" {>= "4.02.0" & "os" != "win32 " | >= "4.06.0"}
  ("ocaml" {>= "4.08.0"} | "ocaml-syntax-shims")
  "ocplib-endian"
  "result" # result is needed as long as Lwt supports OCaml 4.02.
  "seq" # seq is needed as long as Lwt supports OCaml < 4.07.0.

  # Until https://github.com/aantron/bisect_ppx/pull/327.
  # "bisect_ppx" {dev & >= "2.0.0"}
  "ocamlfind" {dev & >= "1.7.3-1"}
]

depopts: [
  "base-threads"
  "base-unix"
  "conf-libev"
]

conflicts: [
  "ocaml-variants" {= "4.02.1+BER"}
]

build: [
  ["dune" "exec" "-p" name "src/unix/config/discover.exe" "--" "--save"
    "--use-libev" "%{conf-libev:installed}%"]
  ["dune" "build" "-p" name "-j" jobs]
]

description: "A promise is a value that may become determined in the future.

Lwt provides typed, composable promises. Promises that are resolved by I/O are
resolved by Lwt in parallel.

Meanwhile, OCaml code, including code creating and waiting on promises, runs in
a single thread by default. This reduces the need for locks or other
synchronization primitives. Code can be run in parallel on an opt-in basis."
url {
  src: "https://github.com/ocsigen/lwt/archive/refs/tags/5.5.0.tar.gz"
  checksum: [
    "md5=94272fac89c5bf21a89c102b8a8f35a5"
    "sha512=8951b94555e930634375816d71815b9d85daad6ffb7dab24864661504d11be26575ab0b237196c54693efa372a9b69cdc1d5068a20a250dc0bbb4a3c03c5fda1"
  ]
}
