#

# Lwt - API Reference

## Core library

The core library (lwt package) contains the `Lwt` module, which defines cooperative threads with all the primitives to manipulate them. It also provides several general purpose modules, which do not depend on any external package.

Lwt | Module `Lwt`: cooperative light-weight threads.
Lwt_condition | Conditions
Lwt_list | List helpers
Lwt_mutex | Cooperative locks for mutual exclusion
Lwt_mvar | Mailbox variables
Lwt_pool | Creating pools (for example pools of connections to a database).
Lwt_sequence | Mutable sequence of elements
Lwt_pqueue |
Lwt_stream | Data streams
Lwt_switch | Lwt switches

## Unix bindings

The lwt.unix package provides:

- the `Lwt_unix` module, which wrap system calls into cooperative ones
- the `Lwt_io` module, which defines cooperative byte channel, in replacement of ones of the standard library
- module helpers for logging, spawning processes, ...

Lwt_daemon | Daemon helpers
Lwt_gc | Interaction with the garbage collector
Lwt_io | Buffered byte channels
Lwt_log | Logging facility
Lwt_main | Main loop and event queue
Lwt_engine | Lwt unix main loop engine
Lwt_process | Process management
Lwt_throttle | Rate limiters
Lwt_timeout | Timeouts
Lwt_unix | Cooperative system calls
Lwt_bytes | Byte arrays
Lwt_sys | System informations.

This package depends on the core library and the unix package.

## Reactive programming helpers

The lwt.react package provides helpers for functionnal reactive programming with Lwt. It is based on the react package. The `Lwt_react` module is a replacement for the `React` module. It contains:

- all the functions of the `React` module
- Lwt specific primitives
- cooperative versions of react functions

Lwt_react | React utilities

This package depends on the core library and the react package.

## Syntax extensions

Lwt is shipped with two syntax extensions. The first one, contained in the lwt.syntax package, aims to make coding with Lwt easier, and to make code more readable. The second, contained in the package lwt.syntax.log, is a camlp4 filter which decreases the performance penalty when using logging by inlining level tests.

Pa_lwt | Syntactic sugars for lwt
Pa_lwt_log | Logging facility

## Terminal manipulation

The package lwt.text provides:

- terminal manipulation through the module `Lwt_term`
- text channels which behaves as byte channels but are aware of the text encoding
- a cooperative, fully customizable read-line facility

Lwt_read_line | Interactive line input
Lwt_term | Terminal control
Lwt_text | Text channels

This package depends on the core library, and the lwt.react, lwt.unix, text packages.

## Miscellaneous

The following modules are wrapper for integration of non-Lwt functions/packages into Lwt.

Lwt_glib | Glib integration
Lwt_lib | Cooperative unix system calls
Lwt_preemptive | This module allows to mix preemptive threads with `Lwt` cooperative threads.
Lwt_ssl | OCaml-SSL integration

## Index

- Index of types
- Index of exceptions
- Index of values
- Index of class attributes
- Index of class methods
- Index of classes
- Index of class types
- Index of modules
- Index of module types