===== 2.4.3 (2012-12-27) =====

  * fix Lwt_ssl.{in,out}_channel_of_descr: shutdown and close the
    socket when the channel is closed

===== 2.4.2 (2012-09-28) =====

  * fix the stub for Lwt_unix.readdir
  * change the default method for Lwt_glib.install
    (use the glib main loop by default: more portable)
  * ignore invalid file descriptors returned by glib
    (like the emulation of select in glib does)
  * use environment variables in discover.ml
    - use LIBRARY_PATH and C_INCLUDE_PATH for searching headers
    - allow to pass flags for a library in <LIB>_CLFAGS and <LIB>_LIBS
  * add Lwt_unix.on_signal_full

===== 2.4.1 (2012-08-22) =====

  * Add Lwt_stream.on_terminate
  * Fix Lwt_gc
  * Fix stubs for get_credentials on *BSD

===== 2.4.0 (2012-07-16) =====

  * Reimplement Lwt_stream
    - much simpler and more efficient
    - do not use Weak
    - add bounded push streams
  * Add Lwt.async
  * Add Lwt_preemptive.run_in_main
  * Implement Lwt_unix.get_credentials on MacOS X/OpenBSD
  * Ensure that on_cancel functions are executed first
  * Better implementation of Lwt.cancel with more tests
  * Simplify the API for unix jobs
  * Better handling of the master lock in libev stubs
  * Windows fixes/updates:
    - pass -lws2_32 instead of ws2_32.lib if building with mingw
    - fix a bug causing Lwt_unix.read/write to block when a socket
      is not readable/writable
    - port Lwt_process and Lwt_unix.system to windows
  * Compatibility with ocaml 4.00:
    - add O_SHARE_DELETE to Lwt_unix.open_flag
    - add -package compiler-libs.toplevel for files using Toploop
  * Do not use module Sys for signal handling to avoid
    ocaml code to be called in a C thread
  * Fix Lwt_unix.wrap_syscall: try instead of Lwt.catch
  * Fix a dead-lock between lwt_unix_send_notification
    and lwt_unix_recv_notifications
  * Fix #277: add a function to return the Ssl.socket of a Lwt_ssl.socket
  * Fix problems with C libraries detection/linking

===== 2.3.2 (2011-11-04) =====

  * Add location informations in logs:
    ** allow loggers to get the current location through local storage
    ** pass current location to logging functions
    ** pass the current location with the syntax extension
  * Add Lwt.on_termination
  * Add Lwt_unix.reinstall_signal_handler
  * Add Lwt_io.flush_all
  * Add assert_lwt keyword to the syntax extension
  * Add Lwt.wrap
  * Add Lwt_glib.iter and Lwt_glib.wakeup
  * ocaml 3.13 ready
  * Allow to compile without libev support
  * Fix bugs in Lwt_io
  * Better handling of forks
  * Fix many problems on Windows

===== 2.3.1 (2011-07-13) =====

  * Fix building of documentation when using the tarball
  * Add Lwt_unix.fsync and Lwt_unix.fdatasync
  * Fix the stubs for Lwt_unix.send_msg when fd-passing is not
    available
  * Add -lwt-sequence-strict option to the syntax extension
  * Use a custom PRNG state for Lwt.choose and Lwt.pick
  * Fix a display glitch when starting the toplevel
  * Add Lwt_unix.fork which should now be used when one want to use
    Lwt in the child process
  * Better implementation of Lwt_unix.readlink and
    Lwt_unix.gethostbyname, which fixes compilation on Hurd
  * Add Lwt.wakeup_later and Lwt.wakeup_later_exn to be used when one
    need to do lot of nested wakeup, which fixes a buffer overflow in
    Lwt_mutex
  * Fix Lwt_unix.abort and Lwt_unix.close (threads was never wakeup)
  * Fix Lwt_throttle for correct timings
  * Fix subtle use of cancel

===== 2.3.0 (2011-04-12) =====

  * Add an extensible system of engines to:
    ** allow the user to replace libev by another event system, such
       as select
    ** allow easier integration of external libraries supporting
       asynchronous operations
  * Lots of improvements for windows:
    ** use the ocaml select instead of libev by default on windows
    ** make asynchronous operations on non-socket file descriptors
       such as pipes to work
    ** make glib integration to work
  * Better use of engines in Lwt_unix: now events are cached to minimize
    the amount of calls to epoll_ctl
  * Use an eventfd when possible for notifications for faster delivery
  * Add modules:
    ** Lwt_sys: allow to test availability of extra features
    ** Lwt_react: replace Lwt_event and Lwt_signal
  * Allow to configure logging rules at runtime in Lwt_log
  * Add match_lwt and while_lwt to the syntax extension
  * Fixes:
    ** syntax extension: handle "lwt ... = ... in ..." at toplevel
    ** make the notification system fork-proof
    ** fix an issue with stubs not raising correctly exceptions

===== 2.2.1 (2011-01-26) =====

  * Better interaction with Js_of_ocaml.
  * Add functions {{{Lwt.register_pause_notifier}}} and {{{Lwt.paused_count}}}.

===== 2.2.0 (2010-12-13) =====

  * Bugfixes:
    ** Fix a bug with cancellable threads causing {{{Canceled}}}
       exceptions to be raised randomly
    ** Fix a fd-leak in Lwt_io.open_connection
  * {{{Lwt_unix}}} now use libev instead of select
  * Add thread local storage support to {{{Lwt}}}
  * Add backtrace support to {{{Lwt}}}. Now {{{Lwt}}} exceptions can
    be recored by using the syntax extension with the {{{-lwt-debug}}}
    command line switch.
  * Allow blocking system calls to be executed in parallels
  * Change the type of many functions of {{{Lwt_unix}}}, which now
    return a {{{Lwt}}} thread
  * Add functions {{{Lwt_unix.readable}}} and {{{Lwt_unix.writable}}}
  * Add function {{{Lwt_io.is_busy}}}
  * Add functions {{{Lwt_event.delay}}} and {{{Lwt_signal.delay}}}
  * Add function {{{Lwt_term.render_update}}}
  * Add function {{{Lwt_ssl.embed_socket}}}
  * Add module {{{Lwt_bytes}}} defining operations on bigarrays
    instead of strings
  * Use bigarrays in Lwt_io instead of strings for the internal buffer.
    Lwt_io.make now takes a function that uses a bigarray.
  * Add module {{{Lwt_switch}}}

===== 2.1.1 (2010-06-13) =====

  * Many bugfixes, including:
    ** buggy behaviour of cancellable threads
    ** file descriptor leakage in {{{Lwt_unix.accept_n}}}
  * Add {{{Lwt.nchoose}}} and {{{Lwt.npick}}}
  * Use {{{set_close_on_exec}}} for fds created by {{{Lwt_log}}}
  * Better implementation of lwtized react functions

===== 2.1.0 (2010-04-19) =====

  * Rename {{{Lwt.select}}} to {{{Lwt.pick}}}
  * Removing module {{{Lwt_monitor}}} in favour of {{{Lwt_mutex}}} and
    new module {{{Lwt_condition}}}
  * More react helpers:
    ** {{{Lwt_event.next}}}
    ** {{{Lwt_event.limit}}} and {{{Lwt_signal.limit}}}
    ** {{{Lwt_event.from}}}
  * Adding function {{{Lwt_main.fast_yield}}}
  * Adding unit tests
  * Optimisation of {{{Lwt}}}
  * Adding module {{{Lwt_log}}} for logging
  * Adding a camlp4 filter for remmoving logging statement or inlining
    tests
  * Adding module {{{Lwt_daemon}}}
  * Adding function {{{Lwt_unix.recv_msg}}} and {{{Lwt_unix.send_msg}}}
  * Adding function {{{Lwt_unix.wait4}}}
  * Adding function {{{Lwt_io.establish_server}}}
  * Adding module {{{Lwt_list}}}
  * Enhancement in {{{Lwt_process}}}, it now support redirections and
    timeouts
  * Allow to use {{{select}}} on arbitrary high file descriptors
  * More commands and features in {{{Lwt_read_line}}}:
    ** Handle "undo" command
    ** New controlable read-lines instances
    ** More edition commands
    ** Completion as you type
    ** Backward search
  * Enhancement in {{{Lwt_term}}}: more drawing functions and allow to
    put the terminal into drawing mode
  * Optimisation of {{{Lwt_stream}}}
  * Optimisation of {{{Lwt_io.write_char}}} and {{{Lwt_io.read_char}}}
  * Bugfix of {{{Lwt_stream}}}: two parallel {{{Lwt_stream.get}}}
    returned the same value
  * Bugfix in {{{Lwt_unix.connect}}}: it returned immediatly on EINPROGRESS
  * Bugfixes in {{{Lwt_glib}}}: file descriptors were not monitored correctly

===== 2.0.0 (2009-10-15) =====

  * Adding modules:
    ** {{{Lwt_stream}}}: lwt-aware version of the {{{Stream}}} module
    ** {{{Lwt_gc}}} for using {{{finalise}}} without
       {{{Lwt_unix.run}}}
    ** {{{Lwt_io}}}: a new implementation of buffered channels with
       more features and better handling of concurrent access
    ** {{{Lwt_text}}}: implementation of text channels
    ** {{{Lwt_process}}}: helpers to spawn processes and communicate
       with them
    ** {{{Lwt_main}}} for abstracting the main loop and allowing
       replacement by a custom main loop
    ** {{{Lwt_glib}}} for integration into the glib main event loop
    ** {{{Lwt_term}}} for interaction with the terminal
    ** {{{Lwt_read_line}}} for interactive user input
    ** {{{Lwt_monitor}}}, {{{Lwt_mvar}}}: combined locks for
       synchronization with conditional variables for notification
    ** {{{Lwt_throttle}}} for limiting rate of execution
       (e.g. for authentication procedure)
    ** {{{Lwt_sequence}}}: mutable sequence of elements
    ** {{{Lwt_event}}}, {{{Lwt_signal}}}: helpers for reactive
       programming with lwt
  * Adding a syntax extension {{{pa_lwt}}}:
    ** handles anonymous bind {{{a >> b}}}
    ** adds syntactic sugar for catching errors (ticket #6)
    ** adds syntactic sugar for parallel let-binding construction
    ** adds syntactic sugar for for-like loops
  * Top-level integration:
    ** threads can runs while reading user input
    ** line editing support
  * New enhanced OCaml toplevel with some basic completion features
  * Adding C stubs to reimplement {{{Unix.read}}} and {{{Unix.write}}}
    with assumption of non-blocking behaviour
  * Adding more functions/helpers in {{{Lwt}}}
  * Fixing memory leaks in {{{Lwt.choose}}}
  * Bugfix in {{{Lwt_chan.close_*}}} (ticket #66)
  * Separate the type of threads (covariant) from the type of thread
    wakeners (contravariant); the type of many functions related to
    {{{Lwt.wait}}} has been changed
  * Add cancelable threads
  * Unix-dependent part is now put in its own archive and findlib
    package.

===== 1.1.0 (2008-06-25) =====

  * Adding module {{{Lwt_pool}}} for creating pools (for example pools
    of connections)
  * Adding a few functions in {{{Lwt_chan}}}
  * Fixing bugs in {{{Lwt_util.map_serial}}} and
    {{{Lwt_util.iter_serial}}}
  * Putting {{{Lwt_preemptive}}}, {{{Lwt_lib}}} and {{{Lwt_ssl}}} in
    separate libraries and findlib subpackages so that lwt.cma depends
    only on unix.cma.

===== 1.0.0 (and before) =====

  * See Ocsigen changelog
