ocsigen/lwt ↗
Created Jan 9, 2021 · View the ocsigen/lwt repository page
OCaml promises and concurrent I/O
Want this for your repo?
Render a free sample of any GitHub repo in seconds.
Contributors
121
Lines of Code
6,414
From
May 24, 2008
To
Dec 18, 2020
About ocsigen/lwt
Lwt is a concurrent programming library for OCaml that introduces promises as its core abstraction. A promise represents a value that will be computed in the future, and creating one spawns a computation. When that computation involves I/O operations, Lwt executes them in parallel with your OCaml code while keeping all user-facing OCaml code running in a single thread by default, eliminating concerns about locks and preemption.
The library provides extensive functionality beyond basic promises, including Unix system call bindings through Lwt_unix, higher-level I/O channels via Lwt_io, subprocess handling with Lwt_process, and pure-OCaml concurrency primitives like mutexes, condition variables, and message variables. A PPX syntax extension allows developers to write concurrent code naturally using familiar let-binding syntax. Lwt compiles to native code across Linux, macOS, Windows, and other systems, and can also compile to JavaScript for front-end development via js_of_ocaml.
The project maintains a substantial ecosystem of compatible libraries for HTTP clients and servers, JSON parsing, logging, testing, and web frameworks. It's designed to support both CPU-bound work through opt-in system threads and I/O-bound work through non-blocking file descriptors and worker threads, making it suitable for building everything from simple concurrent programs to complex server applications.

