Releases: ocsigen/lwt
Releases · ocsigen/lwt
Lwt 3.1.0
Additions
- Port to Jbuilder (#374, Andrew Ray).
Lwt_io.establish_server_with_client_address(#346, Rudi Grinberg).Lwt_unix.getcwd(#403, Raphaël Proust).
Planned to break in 4.0.0
- Delete
lwt.simple-top(#371). - Delete
Lwt_chan(#441).
Fixes
- Make
Lwt_logfunctions tail-recursive (#348, Jan Doms). - Make more of
Lwt_listtail-recursive (#347, Jan Doms). - Improve string messages in exceptions (#368, #382, Jan Doms, Raphaël Proust).
- Don't call
Unix.set_nonblockorUnix.clear_nonblockunnecessarily on some fds (#356, David Sheets). Lwt_unix.sleepandLwt_unix.timeoutreturning too early when using libev (#433, Stijn Devriendt).Lwt_sequence.fold_riterating the wrong way in some cases (#405, Stijn Devriendt).- Build conflicts in some cases due to duplicate
cst_to_constrfunction (#362, Jérémie Dimino). - Don't use deprecated
readdir_rsystem call (#430, Raphaël Proust).
Miscellaneous
- The Lwt core,
lwt.ml, has been thoroughly refactored and commented (#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 (#339, #389, #392, #440, #448, #450, Joseph Thomas, Ryan Slade).
- Documentation fixes (including by Joseph Thomas, Raphaël Proust, Richard Degenne, Stavros Polymenis).
- Contributing documentation (#379).
- Massively adjust whitespace for legibility (#400, #409, #416, Richard Degenne).
- Improvements to CI (Etienne Millon, Raphael Rafatpanah, Zack Coker, Yotam Barnoy).
- The additional packages
lwt_ssl,lwt_react,lwt_glibget new minor releases, the change being new Jbuilder build systems (#374, Andrew Ray).
Lwt 3.0.0
Breaking
- These changes were originally announced in release 2.7.0 (#308).
Lwt_engine.libevnow has an optional argument for selecting the libev back end (#269, #294, Jeremy Yallop).Lwt_io.establish_serverhas been changed to make it more difficult to leak file descriptors (#258, #260).Lwt_io.shutdown_servernow evaluates to a promise, which completes when the listening socket'sclose(2)operation completes (#259).Lwt_unix.bindnow evaluates to a promise, because thebind(2)system call can block for Unix domain sockets (#296, requested David Sheets).ocamlfindpackageslwt.react,lwt.ssl,lwt.glibare replaced bylwt_react,lwt_ssl,lwt_glib. These have been separate OPAM packages, under those names, since 2.7.0 (#301).
Lwt 2.7.1
Fixes
- OCaml 4.05 compatibility (Mauricio Fernandez, #322).
- Give
Lwt_unix.file_existsthe same semantics asSys.file_exists, with respect to not raisingUnix.Unix_error(Mauricio Fernandez, #316). - Improve diagnostics from build scripts (Tim Cuthbertson, #313, #314).
Additions
- Announce
Lwt_result, which was originally released as an experimental module in release 2.6.0 (Simon Cruanes, #320, #247).
Lwt 2.7.0
General
- Values of types
'a Lwt.tare now referred to as promises rather than threads (#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 (#293).
- Lwt no longer supports OCaml 4.01 (#272).
Lwt_unix.fdatasyncis no longer available on macOS. It was calling an undocumented system call on that system (#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 #308.
Lwt_engine.libevwill have an argument for selecting the libev back end (#269, #294, Jeremy Yallop).Lwt_io.establish_serverwill be replaced by a version that makes it difficult to leak file descriptors (#258, #260).Lwt_io.shutdown_serverwill evaluate to a promise, which indicates when the close operation completes (#259).Lwt_unix.bindwill evaluate to a promise, sincebindcan block for Unix domain sockets (#296, requested David Sheets).ocamlfindpackageslwt.react,lwt.ssl, andlwt.glibwill be replaced by the newlwt_react,lwt_ssl, andlwt_glib. These are now distributed in new OPAM packages with the same names, separately from OPAM packagelwt(#301).
Additions
Lwt_unix.readvandLwt_unix.writev– zero-copy scatter/gather I/O (#291, #299).?fail_on_errorargument forLwt_log.load_rules(#306, Daniil Baturin).Lwt_log.level_of_string(#306, Daniil Baturin).
Changes
Lwt_stream.of_list,Lwt_stream.of_array,Lwt_stream.of_stringnow immediately push all elements into the created streams (#239, Spiros Eliopoulos).
Deprecations
Lwt_stream.map_exnin favor ofLwt_stream.wrap_exn, which uses OCaml's standardresulttype (#295).
Bugs fixed
- Ungraceful failure if directory handle used after
Lwt_unix.closedir(#292). - Buffer overflow in
Lwt_unix.readdirandLwt_unix.readdir_n(#292). - Unnecessary allocations in
Lwt_unix.readdir_n(#292, found Jeremly Yallop).
Miscellaneous
- Annotate existing deprecations with
[@@ocaml.deprecated ...](5737f5b). - Improvements to the examples (#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.
Lwt 2.6.0
Additions
Lwt_stream.closedandLwt_stream.is_closed(#223, Spiros Eliopoulos).Lwt_switch.with_switch(#256, Thomas Leonard).- Define
'a Lwt.resultas('a, exn) result(#247, Simon Cruanes). Lwt_condition.broadcast_exn(#241, Nicolas Ojeda Bar).Lwt_unix.utimes(#193).
Bugs fixed
- Memory leak in
Lwt_unix.readdir_n(#229, diagnosed Thomas Leonard). - Memory leak in
Lwt.protected(#56, #181, reported @ygrek, Mauricio Fernandez). Lwt_switch.turn_offhook exception handling (995b704).- Handling of
ENOTCONNwhen channels passed to handler ofLwt_io.establish_serverare closed (95fb431). - Duplicate exceptions on implicit close in
Lwt_io.with_connection(b1afe45). - Deadlock in
Lwt_main.at_exit(#48, #114, reported Jérôme Vouillon, Vincent Bernardoff). - Performance of
Lwt_preemptive.detach(#218, #219, Mauricio Fernandez). - Bad hash functions for
libevloops (#146, reported Mark Christiaens). - Hash of uninitialized data in
Lwt_io(#217, reported Jeremy Yallop). - Update log sections after
Lwt_log.load_rules(#188, reported @rand00). - Print three digits for milliseconds in
Lwt_log(#264, Fabian Hemmer). - Do not truncate Unix job notification ids in C (#277, diagnosed @stijn-devriendt).
Deprecations
Lwt_stream.on_termination: bind onLwt_stream.closedinstead.Lwt.make_value,Lwt.make_error: useresult'sOkandErrorconstructors.Lwt_pqueue,Lwt_sequence: use min-heaps and linked lists from another library (#135).Pa_lwt,Pa_lwt_log: usePpx_lwt.
Miscellaneous
- Update examples to use PPX syntax instead of Camlp4 (#108, Peter Zotov).
- Set up Travis, AppVeyor for testing on Linux, OS X, Cygwin, and MinGW. MSVC also planned.
- Large amount of local documentation fixes (including by Hezekiah Carty, Etienne Millon, Leo Wzukw, Sebastien Mondet).
- A bunch of new tests.
Lwt 2.5.2
Lwt 2.5.1
Lwt 2.5.0
- API CHANGE: Functions in Lwt_io that were previously using a
~buffer_size argument now takes a ~buffer argument. - Accept ?buffer argument in Lwt_ssl.{in,out}_channel_of_descr.
- Use newer Ssl bigarray read/write functionality to avoid
allocation in Lwt_ssl. - Fix non-reentrant function calls (#136)
- IPv4 multicast support.
- Add support for if%lwt in ppx extension.
- Add Lwt.return_some.
- Disable log syntax extension by default in ppx.
Give [-log] as ppx argument to enable it. - Nanosecond precision for Lwt_unix.stat.
- Minor fixes + documentation improvements.