libuv bindings for OCaml
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

Uwt

Uwt provides OCaml bindings for libuv - on top of lwt.

Travis build Status AppVeyor Build Status

  • Requests are translated to lwt-threads.

  • Callbacks that are called continually are most of the time not translated to the usual lwt semantic.

  • naming conventions mirror the conventions of libuv, so you can easily consult the official libuv manual. Only the differences are explained inside uwt.mli

  • Uwt is not compatible with lwt.unix. It's not a further Lwt_engine in addition to select and libev. However, the findlib package uwt.ext provides alternatives to the higher level modules of lwt.unix with a nearly identic interface (Uwt_io, Uwt_process, Uwt_log). You can also open the module Uwt_compat (package uwt.compat) that provides aliases with module names as found in lwt (e.g. Lwt_main instead of Uwt.Main). This is necessary, if you want to use the camlp4 syntax extension of lwt.

  • Uwt is not thread safe. All uwt functions should be called from your main thread.

Installation

Quick install guide

$ opam install uwt
# or for the latest development version
$ opam pin add uwt --dev-repo

Manual install

Dependencies:

  • OCaml 4.02.1 or later
  • lwt 2.6.0 or later
  • libuv 1.8 or later

Build dependencies:

  • pkg-config / pkgconf
  • findlib
  • omake
  • cppo
  • ppx_deriving (test only)
  • ppx_import (test only)
  • ounit (test only)
  • autoconf (repo pinning only)
$ omake all
$ omake install

libuv will be compiled locally, if is not already installed on your system. You can also explicity enforce one option:

$ omake all BUILD_LIBUV=true
# or
$ omake all BUILD_LIBUV=false