Tags: DavidAlphaFox/lwt
Tags
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).
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).
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).
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).
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 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.
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).
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).
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).
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.
PreviousNext