Skip to content

Tags: DavidAlphaFox/lwt

Tags

4.0.1

Toggle 4.0.1's commit message
Bugs fixed

- Race condition in worker thread management in Lwt_unix (ocsigen#569,
  diagnosed Gabe Levi).
- Hang in Lwt_unix.read on Windows (ocsigen#574, ocsigen#569, 86a6baf, diagnosed Gabe
  Levi).
- Docs: note that Lwt_io.open_file for writing truncates the file by
  default (ocsigen#570, reported Tóth Róbert).

4.0.0

Toggle 4.0.0's commit message
Version 4.0.0

Breaking

These changes were announced in Lwt 3.1.0 and Lwt 3.2.0. See ocsigen#453 about
smooth upgrade paths.

- Delete package lwt.ppx. The PPX syntax is in package lwt_ppx since Lwt
  3.2.0 (ocsigen#338).
- Remove >> syntax from the PPX (ocsigen#495).
- Delete modules Lwt_log, Lwt_daemon, Lwt_log_core, and package lwt.log.
  These are in package lwt_log since Lwt 3.2.0, but it is recommended to
  use Logs_lwt from the logs library instead (ocsigen#484, initiated Hannes
  Mehnert).
- Delete package lwt.preemptive. It is an alias for lwt.unix since Lwt
  3.2.0 (ocsigen#487).
- Delete package lwt.syntax. The Camlp4 syntax is in package lwt_camlp4
  since Lwt 3.2.0 (ocsigen#370).
- Delete module Lwt_chan, a predecessor of Lwt_io (ocsigen#441).
- Delete package lwt.simple-top, a predecessor of utop (ocsigen#371).
- Make resolvers (Lwt.u) contravariant (ocsigen#458).

Planned to break in 5.0.0

- Lwt.pick will raise Invalid_argument on the empty list, instead of
  returning a forever-pending promise. Also applies to Lwt.choose,
  Lwt.npick, Lwt.nchoose, and Lwt.nchoose_split (ocsigen#562, Tim Reinke,
  prompted Hezekiah Carty).
- Remove transation of [%lwt ...] to Lwt.catch from the PPX (ocsigen#527).
- Remove -no-debug option from the PPX (ocsigen#528).
- Remove Lwt_log support from the PPX (ocsigen#520).

Bugs fixed

- Lwt_io.file_length now fails with EISDIR when used on a directory
  (ocsigen#563, requested Cedric Cellier).
- Lwt_react.E.limit and Lwt_react.S.limit now working more correctly
  (ocsigen#566, @Freyr666).

Miscellaneous

- Documentation improvements (ocsigen#561, Jason Evans).

3.3.0

Toggle 3.3.0's commit message
Version 3.3.0

The changes affecting Lwt_ppx are also released concurrently as Lwt_ppx
1.1.0.

Bugs fixed

- Restore backtrace support (ocsigen#554, ocsigen#556, Gabe Levi).
- Serious logic error that could cause Lwt to hang or crash (ocsigen#549,
  reported @koen-struyve).
- All `Lwt_list` functions are now tail-recursive (ocsigen#538, Joseph Thomas).

Additions

- Support `;%lwt` syntax in the PPX (ocsigen#307, Hezekiah Carty).
- `Lwt_stream.iter_n` (ocsigen#312, Hezekiah Carty).

Miscellaneous

- Testing improvements (ocsigen#536, ocsigen#541, @cedlemo).
- Documentation improvements (ocsigen#544, ocsigen#546, ocsigen#547, ocsigen#553, ocsigen#559, Daniil
  Baturin, Jason Evans, Jess Smith, Milo Turner).

3.2.1

Toggle 3.2.1's commit message
Version 3.2.1

Lwt 3.2.1 is released because it still packages lwt.ppx, a deprecated
copy of package lwt_ppx, and the two packages should be kept in sync.

Deprecations

- All PPX options are deprecated and should not be used (ocsigen#534).
- The [%lwt ...] PPX syntax should be replaced by Lwt.catch (ocsigen#534).

Fixes

- Clean up PPX -help usage message output (ocsigen#525, Zan Doye).

Miscellaneous

- More thorough testing (ocsigen#512, ocsigen#535, Joseph Thomas).
- Clarification of the C binding (ocsigen#521, @cedlemo).

3.2.0

Toggle 3.2.0's commit message
Version 3.2.0

Additions

- Lwt_mvar.take_available, Lwt_mvar.is_empty (ocsigen#459, Hezekiah Carty).
- Lwt_io.open_temp_file, Lwt_io.with_temp_file (ocsigen#467, Joe Thomas).
- New reference documentation for module Lwt (ocsigen#469).
- Lwt_pool.clear and ?dispose argument for Lwt_pool.create (ocsigen#483,
  Hezekiah Carty).
- Lwt_pool.wait_queue_length (ocsigen#493, Jerome Vouillon).

Bugs fixed

- Lwt.npick never worked (ocsigen#447, Zack Coker).
- Lwt_pool.use now always calls ?validate on elements (ocsigen#461, Joe
  Thomas).
- Better locations generated by the PPX (ocsigen#470, Fabian Hemmer).
- Keep worker thread count accurate in Lwt_unix when pthread_create
  fails (ocsigen#493, @koen-struyve).
- Leaked exceptions in Lwt_list (ocsigen#499).
- Memory leak in Lwt_unix.getnameinfo (ocsigen#503, Hannes Mehnert).

Planned to break in 4.0.0

See ocsigen#453 for details and instructions about planned breakage in Lwt
4.0.0.

- The semantics of Lwt will be adjusted for better exception and stack
  safety (ocsigen#500).
- The PPX will be factored out into its own opam package, lwt_ppx. This
  package is installable from opam now, as of Lwt 3.2.0 (ocsigen#338).
- Similarly, the deprecated Camlp4 syntax will be factored out into
  lwt_camlp4, which is installable from opam now (ocsigen#370).
- Modules Lwt_log, Lwt_log_core, Lwt_log_rules, and Lwt_daemon are being
  deprecated and factored out into opam package lwt_log, also
  installable from opam now. Use the logs library for logging, in
  particular module Logs_lwt. Direct daemonization is deprecated on most
  platforms (ocsigen#484, Hannes Mehnert).
- The >> construct from the PPX will be deleted (ocsigen#471, Raphaël Proust).
- Package lwt.preemptive is being merged into lwt.unix. In 3.2.0,
  lwt.preemptive becomes an alias for lwt.unix, and the package name
  lwt.preemptive will be deleted in 4.0.0 (ocsigen#487).

Deprecations

- Lwt.waiter_of_wakener should not be used, as it can lead to soundness
  bugs in future (but not current) Lwt (ocsigen#458).
- Lwt_sequence was deprecated in Lwt 2.6.0, but it now has a warning
  attached, as do Lwt.add_task_r and Lwt.add_task_l, which use it
  (ocsigen#361).
- Use of the following functions is discouraged, but they have not yet
  received deprecation warnings: Lwt.with_value, Lwt.cancel, Lwt.state,
  Lwt.ignore_result (ocsigen#359, ocsigen#469).

Miscellaneous

- Replace references to Camlp4 in the manual with the PPX (ocsigen#457, Bobby
  Priambodo).
- More tests for Lwt_pool (ocsigen#464, Joe Thomas).
- Expect tests for the PPX (ocsigen#474, Fabian Hemmer).

lwt_ssl-1.1.1

Toggle lwt_ssl-1.1.1's commit message
Lwt_ssl version 1.1.1

- Compatibility with -safe-string, and thus OCaml 4.06. Lwt_ssl.read and
  Lwt_ssl.write now take a buffer of type bytes as argument, rather than
  a buffer of type string.

3.1.0

Toggle 3.1.0's commit message
Version 3.1.0

Additions

- Port to Jbuilder (ocsigen#374, Andrew Ray).
- Lwt_io.establish_server_with_client_address (ocsigen#346, Rudi Grinberg).
- Lwt_unix.getcwd (ocsigen#403, Raphaël Proust).

Planned to break in 4.0.0

- Delete lwt.simple-top (ocsigen#371).
- Delete Lwt_chan (ocsigen#441).

Fixes

- Make Lwt_log functions tail-recursive (ocsigen#348, Jan Doms).
- Make more of Lwt_list tail-recursive (ocsigen#347, Jan Doms).
- Improve string messages in exceptions (ocsigen#368, ocsigen#382, Jan Doms, Raphaël
  Proust).
- Don't call Unix.set_nonblock or Unix.clear_nonblock unnecessarily on
  some fds (ocsigen#356, David Sheets).
- Lwt_unix.sleep and Lwt_unix.timeout returning too early when using
  libev (ocsigen#433, Stijn Devriendt).
- Lwt_sequence.fold_r iterating the wrong way in some cases (ocsigen#405, Stijn
  Devriendt).
- Build conflicts in some cases due to duplicate cst_to_constr function
  (ocsigen#362, Jérémie Dimino).
- Don't use deprecated readdir_r system call (ocsigen#430, Raphaël Proust).

Miscellaneous

- The Lwt core, lwt.ml, has been thoroughly refactored and commented
  (ocsigen#354, reviewed Gabriel Radanne, Edwin Török, Raphaël Proust, Jan
  Doms, Fabian Hemmer, Sebastien Mondet, Simon Cruanes, Anil
  Madhavapeddy, Pierre Chambart, and many others).
- Lots of tests for most of the Lwt core (ocsigen#339, ocsigen#389, ocsigen#392, ocsigen#440, ocsigen#448,
  ocsigen#450, Joseph Thomas, Ryan Slade).
- Documentation fixes (including by Joseph Thomas, Raphaël Proust,
  Richard Degenne, Stavros Polymenis).
- Contributing documentation (ocsigen#379).
- Massively adjust whitespace for legibility (ocsigen#400, ocsigen#409, ocsigen#416, Richard
  Degenne).
- Improvements to CI (Etienne Millon, Raphael Rafatpanah, Zack Coker,
  Yotam Barnoy).
- The additional packages lwt_ssl, lwt_react, lwt_glib get new minor
  releases, the change being new Jbuilder build systems (ocsigen#374, Andrew
  Ray).

3.0.0

Toggle 3.0.0's commit message
Version 3.0.0

Breaking

- These changes were originally announced in release 2.7.0 (ocsigen#308).
- Lwt_engine.libev now has an optional argument for selecting the libev
  back end (ocsigen#269, ocsigen#294, Jeremy Yallop).
- Lwt_io.establish_server has been changed to make it more difficult to
  leak file descriptors (ocsigen#258, ocsigen#260).
- Lwt_io.shutdown_server now evaluates to a promise, which completes
  when the listening socket's close(2) operation completes (ocsigen#259).
- Lwt_unix.bind now evaluates to a promise, because the bind(2) system
  call can block for Unix domain sockets (ocsigen#296, requested David Sheets).
- ocamlfind packages lwt.react, lwt.ssl, lwt.glib are replaced by
  lwt_react, lwt_ssl, lwt_glib. These have been separate OPAM packages,
  under those names, since 2.7.0 (ocsigen#301).

2.7.1

Toggle 2.7.1's commit message
Version 2.7.1

Fixes

- OCaml 4.05 compatibility (Mauricio Fernandez, ocsigen#322).
- Give Lwt_unix.file_exists the same semantics as Sys.file_exists, with
  respect to not raising Unix.Unix_error (Mauricio Fernandez, ocsigen#316).
- Improve diagnostics from build scripts (Tim Cuthbertson, ocsigen#313, ocsigen#314).

Additions

- Announce Lwt_result, which was originally released as an experimental
  module in release 2.6.0 (Simon Cruanes, ocsigen#320, ocsigen#247).

2.7.0

Toggle 2.7.0's commit message
Version 2.7.0

General

- Values of types a Lwt.t are now referred to as promises rather than
  threads (ocsigen#300). The manual has not yet been updated.

Breaking

- After this release, Lwt will switch to semantic versioning. Future
  breaking changes will first require deprecation, then a major version
  number increase (ocsigen#293).
- Lwt no longer supports OCaml 4.01 (ocsigen#272).
- Lwt_unix.fdatasync is no longer available on macOS. It was calling an
  undocumented system call on that system (ocsigen#285, Jeremy Yallop).

Planned to break in 3.0.0

- APIs in this category have deprecation messages attached. The messages
  will be displayed if you recompile your code, and can also be seen in
  ocsigen#308.
- Lwt_engine.libev will have an argument for selecting the libev back
  end (ocsigen#269, ocsigen#294, Jeremy Yallop).
- Lwt_io.establish_server will be replaced by a version that makes it
  difficult to leak file descriptors (ocsigen#258, ocsigen#260).
- Lwt_io.shutdown_server will evaluate to a promise, which indicates
  when the close operation completes (ocsigen#259).
- Lwt_unix.bind will evaluate to a promise, since bind can block for
  Unix domain sockets (ocsigen#296, requested David Sheets).
- ocamlfind packages lwt.react, lwt.ssl, and lwt.glib will be replaced
  by the new lwt_react, lwt_ssl, and lwt_glib. These are now distributed
  in new OPAM packages with the same names, separately from OPAM package
  lwt (ocsigen#301).

Additions

- Lwt_unix.readv and Lwt_unix.writev - zero-copy scatter/gather I/O
  (ocsigen#291, ocsigen#299).
- ?fail_on_error argument for Lwt_log.load_rules (ocsigen#306, Daniil Baturin).
- Lwt_log.level_of_string (ocsigen#306, Daniil Baturin).

Changes

- Lwt_stream.of_list, Lwt_stream.of_array, Lwt_stream.of_string now
  immediately push all elements into the created streams
  (ocsigen#239, Spiros Eliopoulos).

Deprecations

- Lwt_stream.map_exn in favor of Lwt_stream.wrap_exn, which uses OCaml's
  standard result type (ocsigen#295).

Bugs fixed

- Ungraceful failure if directory handle used after Lwt_unix.closedir
  (ocsigen#292).
- Buffer overflow in Lwt_unix.readdir and Lwt_unix.readdir_n (ocsigen#292).
- Unnecessary allocations in Lwt_unix.readdir_n
  (ocsigen#292, found Jeremly Yallop).

Miscellaneous

- Annotate existing deprecations with [@@ocaml.deprecated ...]
  (5737f5b).
- Improvements to the examples (ocsigen#288, Rich Neswold).
- Documentation fixes, including by Rich Neswold.
- New tests and various minor internal improvements.
- Run tests in CI with all OCaml warnings enabled (dadb926).
- Much cleaner build output.
- Add scratch/ directory for local use by developers.