package uwt

  1. Overview
  2. Docs


uwt provides OCaml bindings for libuv. The main loop of libuv is integrated into lwt, the light-weight cooperative threads library.



Published: 29 Aug 2018



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

  • 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.


Quick install guide

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

Manual install


  • 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

Dependencies (11)

  1. lwt >= "2.6.0"
  2. result
  3. omake build
  4. cppo build & >= "1.3"
  5. ocamlfind build
  6. conf-pkg-config build
  7. base-bytes
  8. base-threads
  9. base-bigarray
  10. base-unix
  11. ocaml >= "4.02.1" & < "4.12"

Dev Dependencies


Used by (2)

  1. distributed-uwt
  2. vpnkit >= "0.1.1"