1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209
|
===== 5.9.1 =====
====== Packaging ======
* lwt_ppx is compatible with newer versions of ppxlib. (Patrick Ferris, Kate Deplaix, Sora Morimoto, #1033)
====== Other ======
* Misc repository maintenance. (Sora Morimoto)
* Misc typo. (Kaustubh Maske Patil, #1056)
===== 5.9.1 =====
====== Fixes ======
* META files now carry version information. (Hugo Heuzard, #1042, #1053)
===== 5.9.0 =====
====== Additions ======
* Lwt_stream.junk_available is a Lwt-free alternative to Lwt_stream.junk_old. (Alain Mebsout, #1036)
* Lwt_engine.libev#backend indicates which backend was picked by libev. (mefyl, bnguyenvanyen, #985)
====== Documentation ======
* Many fixes. (Arvid Jakobsson, #1038)
====== Other ======
* Misc repository maintenance. (Sora Morimoto, Shon Feder, #1037, #1035)
===== 5.8.1 =====
====== Fixes ======
* META files now carry version information. (Hugo Heuzard, #1042, #1053)
===== 5.8.0 =====
====== Improvements ======
* Make Lwt_seq.of_list lazier, make Lwt_set.to_list tail-rec. (Samer Abdallah, #1019)
* Convert more Lwt.fail into raise to increase availibility of backtraces. (#1008)
====== Documentation ======
* Small fixes. (Nils André, #1001, #1006)
* Convert manual to mld. (#951, Antonin Décimo)
====== Other ======
* Many improbements to the CI. (Sora Morimoto, Idir Lankri, #986, #1009, #1011, #1013, #1014, #1016, #1020, #1021, #1023, #1024, #1025)
* Improbements to the packaging. (Sora Morimoto, #1010, #1015)
* Make C code pass the stricter checks of GCC 14. (Jerry James, #1004)
* Fix many many C warnings and other fixes. (Antonin Décimo, #1007, #1022)
===== 5.7.0 =====
====== Breaking API changes ======
* Lwt_result.catch now takes a function (unit -> 'a t) rather than a promise ('a t). (#965)
* Remove the deprecated Lwt.result type (use Stdlib.result instead). (#968)
* Remove the deprecated Lwt.make_value and Lwt.make_result functions (use Ok and Error instead). (#968)
* Remove the deprecated and unsafe waiter_of_wakener (keep the waiter around when you create the wakener instead). (#968)
* Remove the deprecated Lwt_stream.on_termination and Lwt_stream.on_terminate (bind to Lwt_stream.closed instead). (#968)
* Remove the deprecated Lwt_stream.result type (use Stdlib.result instead). (#968)
* Remove the deprecated Lwt_stream.map_exn function (use wrap_exn instead). (#968)
====== Additions ======
* Lwt.Exception_filter for enabling/disabling system-exception catching. (#964)
* Lwt.reraise an exception raising function which preserves backtraces, recommended for use in Lwt.catch. (#963)
* Expose Lwt_io.delete_recursively for deleting a directory and its content recursively. (#984, Antonin Décimo)
* Lwt_preemptive.run_in_main_dont_wait to run a function in the main preemptive thread but without waiting for the result. (Kate Deplaix, #960)
* Lwt_unix.handle_signal and Lwt_engine.forwards_signal to allow other IO libraries (such as Eio) to share signal handlers. (Thomas Leonard, #993, #991)
====== Build ======
* Remove unused dependency in dune file. (#969, Kate Deplaix)
* Fix some compilation warnings for C stubs with OCaml 5. (#976, Antonin Décimo)
====== Fixes ======
* Use SA_ONSTACK on OCaml5 to avoid SIGSEGV. (Thomas Leonard, #993, #981)
* Fix race in worker loop. (Thomas Leonard, #993, #994)
* Fix marshall header size in Lwt_io.read_value. (Simmo Saan, #995)
====== Misc ======
* Resolve paused promises only once in main loop. This lets Lwt.pause behave identical to Lwt_unix.yield. (#917, Christopher Zimmermann, Favonia)
===== 5.6.1 =====
====== Fixes ======
* Fix null file descriptor being closed when used as redirection for standard fd of child processes. (#957, Antonin Décimo)
===== 5.6.0 =====
====== Installability ======
* Lwt is now compatible with OCaml 5.00. Lwt is now incompatible with OCaml 4.02. (#925, #923, Kate Deplaix, Patrick Ferris)
* Lwt is now incompatible with OCaml.4.07 and earlier. (#947, Hannes Mehnert, Tim McGilchrist)
* Lwt-unix is now compatible with OCaml 5.0.0. (#953, David Allsopp)
====== Additions ======
* In the Lwt_io module, add `?cloexec:bool` optional arguments to functions that create file descriptors (`pipe`). The `?cloexec` argument is simply forwarded to the wrapped Lwt_unix function. (#872, #911, Antonin Décimo)
* Add Lwt_result.error, Lwt_result.iter, and Lwt_result.iter_error for consistency with Stdlib. (#927, Antonin Décimo)
* Lwt_result.bind_error. (#943, Boning Dong)
* Add ?cloexec parameter to Lwt_io.pipe. (#911, Antonin Décimo)
====== Misc ======
* On Windows, make Lwt_process.create_process duplicate standard handles given to the child process if they're not inheritable, to mimic the behaviour of Unix.create_process. (#909, Antonin Décimo)
* Add missing dependency to `cppo` in lwt-react's opam file. (#946, Rizo I)
* Improve documentation (especially internal links). (#928, Antonin Décimo)
* Fix documentation of infix choose. (#952, Reynir Björnsson)
* Only define OCAML_NAME_SPACE for OCaml<5.0.0. (#929, Antonin Décimo)
* Replace mentions of Pervasives with Stdlib in the doc. (#954, Antonin Décimo)
* Improve deprecation message for auto_yield. (#908, Seb Mondet)
* Fix mirage tutorial link. (#936, Tuomas Lukka)
* Fix issues in opam file. (#937, Andreas Hauptmann)
====== Fixes ======
* Fix win32_spawn leaking dev_null fd in the parent process. (#906, Antonin Décimo)
* Prefer SetHandleInformation to DuplicateHandle in set_close_on_exec for sockets. DuplicateHandle mustn't be used on sockets. (#907, Antonin Décimo)
* Lwt.pick and Lwt.choose select preferentially failed promises as per documentation (#856, #874, Raman Varabets)
* Use the WSA_FLAG_NO_HANDLE_INHERIT on Windows when creating sockets with WSASocket if the cloexec (non-inheritable) parameter is true. Fixes a Windows problem where a child process would inherit a supposedly non-inheritable socket. (#910, Antonin Décimo)
* Fix macOS/arm64 tests which have a 16k page. (#932, Kate Deplaix)
* Fix Lwt_unix.closedir incorrectly checking the return value of closedir(3). (#942, Antonin Décimo)
* Fix custom_operations struct not fully initialized after OCaml 4.08. (Antonin Décimo, #918)
* Fix missing include directive. (#940, Antonin Décimo)
* Fix missing initialisation in Unix stub. (#941, Antonin Décimo)
====== Deprecations ======
* Alias Lwt_result.map_err and Lwt_result.bind_lwt_err to Lwt_result.map_error and Lwt_result.bind_lwt_error for consistency with Stdlib. (#927, Antonin Décimo)
===== 5.5.0 =====
====== Deprecations ======
* Lwt_main.yield and Lwt_unix.yield are deprecated in favor of the generic Lwt.pause, and Lwt_unix.auto_yield is deprecated in favor of the new Lwt_unix.auto_pause. Currently, Lwt_main.run resolves paused promises more frequently than yielded promises; the difference is unintended but existing applications could unintentionally depend on it. (#855, #858, Favonia)
====== Fixes ======
* Use is_blocking in dup and dup2 to fix ENOTSOCK on Windows. (#869, Antonin Décimo)
* Lwt_unix.lstat was incorrectly calling Unix.stat on Win32. Fixes the behavior of Lwt_io.with_temp_dir following symlinks to directories on Win32. (#883, Antonin Décimo)
* Support deleting symlinks on Windows during cleanup of Lwt_io.with_temp_dir. (#886, Antonin Décimo)
* Lwt_react.S.l[2-6]_s used polymorphic equality which could cause errors when handling functional values. (#893, Jérôme Vouillon)
* On Windows, treat ERROR_BROKEN_PIPE on read as zero-read instead of error. See OCaml PR #4790. (#898, Antonin Décimo)
* Fix compilation under MSVC by replacing Noreturn with CAMLnoreturn. (#880, #887, Nicolás Ojeda Bär)
====== Additions ======
* Lwt_bytes.blit_from_string: string complement of Lwt_bytes.blit. (#882, Hugo Heuzard)
* Lwt_seq: a Seq-like data-structure with Lwt delayed nodes. (#836, #842, Zach Shipko)
* Lwt_unix.auto_pause: the replacement of Lwt_unix.auto_yield that uses Lwt.pause instead of Lwt_unix.yield. (#855, #858, Favonia)
* Lwt_stream.return, Lwt_stream.return_lwt: singleton stream constructors. (#864, Boning Dong)
* Add ?to_dir param from Unix.symlink to Lwt_unix.symlink wrapper. (#884, Antonin Décimo)
* Lwt_stream.of_lwt_seq to convert an Lwt-sequence into an Lwt-stream. (#873)
* Support IPv6 (always) and PF_UNIX (with OCaml >= 4.14) socketpair on Windows. (#870, #876, Antonin Décimo, David Allsopp)
* In the Lwt_unix module, add `?cloexec:bool` optional arguments to functions that create file descriptors (`dup`, `dup2`, `pipe`, `pipe_in`, `pipe_out`, `socket`, `socketpair`, `accept`, `accept_n`). The `?cloexec` argument is simply forwarded to the wrapped Unix function (with OCaml >= 4.05, see PR ocaml/ocaml#650), or emulated as best-effort with `Unix.set_close_on_exec` on older OCaml versions. (#327, #847, #872, #901, Antonin Décimo)
* Lwt_domain: helpers for using domainslib from Lwt. (#860, Sudha Parimala)
====== Misc ======
* Code quality improvement: remove an unneeded Obj.magic. (#844, Benoit Montagu)
* On Windows, use the Unicode API in C stubs and functions introduced in OCaml 4.06 to handle Unicode strings. Raise the minimum requirement to OCaml 4.06 (on Windows only). (#843, #903, Antonin Décimo)
* More complete coverage in the CI. (#890, #894, #896, Sora Morimoto)
* Code quality improvement: use exception pattern instead of try-with. (#895, Antonin Décimo)
* Code quality improvement: fix warnings on 4.13. (#899)
===== 5.4.2 =====
====== Bugs fixed ======
* Fix compilation on Windows by providing missing dummy stubs (#868, Andreas Hauptmann, Antonin Décimo).
===== 5.4.1 =====
====== Bugs fixed ======
* Fix Lwt_fmt.stderr to actually point to stderr (#852, #850, Volker Diels-Grabsch).
* Make temporary files created by Lwt_io.with_temp_dir deletable on Windows by removing the RO bit (#849, #861, Antonin Décimo).
* Handle ECONNABORTED in Lwt_io.establish_server* (#829, #830, Reynir Björnsson, Hannes Mehnert).
====== Bugfixes ======
* Fix Lwt_fmt.stderr to actually point to stderr (#852, #850, Volker Diels-Grabsch).
* Lwt_io.establish_server* handles ECONNABORTED (#829, #830, Reynir Björnsson)
===== 5.4.0 (2020-12-16) =====
====== Installability ======
* Support for OCaml 4.12 (#804, #826, Kate Deplaix).
* lwt_ppx now uses ppxlib. This introduce a transitive dependency to OCaml.4.04 (#807, Philippe Veber).
====== Bugfixes ======
* Catch exceptions in Lwt_react.of_stream (#809, Petter A. Urkedal).
* Avoid segfaults in Lwt_unix.tcsetattr (#798, Frédéric Fortier).
====== Additions ======
* fork method in Lwt_engine. This method is a noop in the released engines but it paves the way to a libuv-based engine (#811, Ulrik Strid, Anton Bachin).
* Lwt_main.abandon_yielded_and_paused for use in conjunction with Lwt.fork (#789, Julien Tesson).
* Lwt.wrap_in_cancelable to complete protect and no_cancel (#785).
* Support for IOV_MAX in [Lwt_unix.IO_vectors.system_limit (#801, Pino Toscano).
* Lwt_unix.send_msgto (#805, Antonio Nuno Monteiro).
* Lwt.dont_wait, a more explicit alternative to Lwt.async (#820, François Thiré).
====== Miscellaneous ======
* Avoid double-reversing when traversing lists. This may change the order in which some promises are collected, which may change which of several rejection is arbitrarily selected during concurrent traversal (#784).
* Numerous documentation improvements (including external contributions from Bikal Lem, Sudha Parimala, and Hannes Mehnert).
===== 5.3.0 (2020-04-22) =====
* Add let* and and* in Lwt.Syntax and Lwt_result.Syntax (#775, Rahul Kumar).
* Also add let+ and and+ (#776, Craig Ferguson).
* Add Lwt_result.both (#775, Rahul Kumar).
* Always use libev if detected (#601).
===== 5.2.0 (2020-03-09) =====
* Add Lwt_unix.pread, Lwt_unix.pwrite, and Lwt_unix.pwrite_string (#768,
Pierre Chambart).
* Internally use accept4(2) when available (#769, Pierre Chambart).
* PPX: internally use 4.10 ASTs (#765).
===== 5.1.2 (2020-02-23) =====
====== Bugs fixed ======
* Do not run C exit hooks after failed exec (#764, diagnosed Lucian Wischik).
* discover.ml: don't add flags for missing system libraries (#760, #761, Olaf
Hering).
* discover.ml: don't run the opam binary (#761).
* Warning on 4.10 in lwt_unix_stubs.c (#766).
===== 5.1.1 (2020-01-07) =====
====== Bugs fixed ======
* Exception raised by Lwt_main.run upon call to exit (#758, reported Gal
Schlezinger).
===== 5.1.0 (2019-12-28) =====
====== Additions ======
* Lwt.all (9976f67).
====== Documentation ======
* Add index.mld for nicer odoc output (1059a80, prompted Anurag Soni).
* Link to rwo-lwt from the online manual to make it more discoverable
(4129a22, suggested Anurag Soni).
* Fix doc links in opam files (7617607).
===== 5.0.1 (2019-12-22) =====
====== Bugs fixed ======
* Additional fix for libev detection under esy (#757, Antonio Nuno Monteiro).
===== 5.0.0 (2019-12-15) =====
====== Breaking ======
See #584 for an extended summary and discussion of this release as a whole, or
individual issues for each change specifically.
* The callback passed to Lwt.async must now evaluate to unit Lwt.t, rather
than _ Lwt.t (#603, requested @cfcs).
* Lwt.choose, Lwt.nchoose, Lwt.nchoose_split, Lwt.pick, and Lwt.npick now
raise Invalid_argument if given the empty list (#557, Tim Reinke).
* Catch nested calls to Lwt_main.run (#607, #609, prompted François-René
Rideau).
* Use the new Lwt_unix.IO_vectors in Lwt_unix.recv_msg and Lwt_unix.send_msg
(#594, prompted Marcello Seri).
* Make Lwt_unix.Async_switch a synonym for Lwt_unix.Async_detach (#572).
* Remove the redundant configure.ml (#700).
* PPX: remove support for general [%lwt ...] expressions (#527).
* PPX: remove support for Lwt_log and the -log option (#520).
* PPX: remove the -no-debug option (#528).
====== Bugs fixed ======
* libev detection under esy (#755, Antonio Nuno Monteiro).
===== 4.5.0 (2019-12-15) =====
====== Additions ======
* Implement Lwt_unix.readv and Lwt_unix.writev on Windows using Lwt_unix.read
and Lwt_unix.write (#745, requested Ulrik Strid).
* Implement Lwt_unix.wait4 on Android using Unix.waitpid, as on Windows (#752,
@EduardoRFS).
* LWT_DISCOVER_ARGUMENTS=--verbose flag, passed through environment variable,
for debugging the feature discovery (configuration) process (#740).
====== Bugs fixed ======
* To help with fork, don't call back into Lwt_main at process exit to call Lwt
exit hooks when there are none (#737, prompted Martin Jambon).
* Properly retain references to buffers in Lwt_unix.readv, Lwt_unix.writev,
Lwt_bytes.read, Lwt_bytes.write, and Lwt_bytes.mincore; the references could
be released too early in rare circumstances (#742, prompted Olaf Hering).
* Don't install a SIGCHLD handler when Lwt is linked in but not used (#738,
requested Sam Goldman, additional information Waleed Khan).
* Link with -lpthread on more platforms that support and require the flag
(#748, Olivier Andrieu).
* Fix syntax errors in feature test programs (#748, Olivier Andrieu).
* C warning with OCaml 4.10 (#751, @kit-ty-kate).
====== Miscellaneous ======
* Make tests more reliable (#726, #743, prompted Olaf Hering).
* Fix deprecation annotation on internal API (#735, Antonio Nuno Monteiro).
* Fix broken link in Lwt_mvar docs (#739, reported @tg-x).
* Fix broken links in README (#750, @imbsky).
===== 4.4.0 (2019-10-09) =====
====== Additions ======
* ?suffix argument for Lwt_io.with_temp_file and Lwt_io.open_temp_file (#724,
requested Volker Diels-Grabsch).
* Lwt_io.with_temp_dir and Lwt_io.create_temp_dir (#724, requested Volker
Diels-Grabsch).
====== Changes ======
* Lwt_io.establish_server: increase default backlog from 5 to SOMAXCONN (#731,
suggested Konstantin Olkhovskiy).
* PPX: use OCaml 4.09 ASTs to support recent features (074f679).
* PPX: deprecate let%lwt structure items (#733, prompted Didier Le Botlan).
====== Miscellaneous ======
* Tests now pass in more environments (#721, #722, #725, #729, reported Olaf
Hering).
===== 4.3.1 (2019-09-26) =====
====== Bugs fixed ======
* Lwt clobbered backtraces (#714, 6e855b8, 4694853, reported Volker
Diels-Grabsch).
* Lwt_unix.fork was broken on glibc 2.28 (#704, @ygrek).
* Fix build with musl-gcc (#718, #719, reported Fabian Hemmer).
* Support more Lwt_unix.madvise options (#716, Anton Kochkov).
====== Miscellaneous ======
* Silence configure script (#717, requested Anil Madhavapeddy).
* Greatly sped up CI and tests.
===== 4.3.0 (2019-08-20) =====
====== Planned to break in 5.0.0 ======
For general discussion of breakage in Lwt 5.0.0, see #584. See #293 about how
Lwt announces and does breaking changes.*
* The signature of Lwt.async will change from (unit -> 'a Lwt.t) -> unit to
(unit -> unit Lwt.t) -> unit (#603, prompted @cfcs).
* Lwt_unix.send_msg and Lwt_unix.recv_msg will be changed to take
Lwt_unix.IO_vectors.t instead of Lwt_unix.io_vectors (#702, prompted
Marcello Seri).
* Nesting calls to Lwt_main.run will be forbidden, and will raise an
Failure. Most programs don't do this (#609, prompted François-René Rideau).
* configure.ml will be removed in favor of an improved discover.ml This
affects only users who are configuring Lwt as part of a manual installation
(i.e., not users of opam or esy). See discover.ml for usage (#700).
* Lwt_unix.async_method will have no effect. In practice, it already does
nothing, and has almost no users (#572).
====== Additions ======
* Lwt_process: allow setting working directory for new processes (#694, Thomas
Leonard).
* PPX: use OCaml 4.08 ASTs to support latest features (#697).
* Lwt_io.NumberIO: use compiler intrinsics for better performance (#178,
requested Mauricio Fernandez).
====== Bugs fixed ======
* Race condition in Lwt_react.S.limit (4e592eb).
* Use fallback rule during configuration (#693, Hongchang Wu).
* Fix typos (#688, #692, @Fourchaux).
===== 4.2.1 (2019-04-02) =====
====== Bug fixed ======
* Detect libev correctly when building under esy (#679, Antonio Nuno
Monteiro).
===== 4.2.0 (2019-03-25) =====
====== Additions ======
* Lwt.both (#668, Brendan Long, Jeremy Yallop).
* ppx_let support with open Lwt.Infix (#667, Brendan Long).
* Lwt_stream.of_seq (#646, Hezekiah Carty).
* Lwt_io.is_closed (#635, Andreas Garnaes).
* Lwt_unix.IO_vectors.byte_count (#645, Raphaël Proust).
* Support for higher baud rates in Lwt_unix.tcgetattr and Lwt_unix.tcsetattr
(#678, Frédéric Fortier).
* Replacement functions in Lwt_main for deprecated functions based on
Lwt_sequence (#660).
====== Bugs fixed ======
* 4.08 compatibility (#658).
* Stack overflow in Lwt_stream.iter_p (#432, Varun Kohli).
* Incorrect bounds check in Lwt_bytes.mincore (#627, Cédric Le Moigne).
* Lwt_bytes.mincore will not be available in future releases of OpenBSD (#663,
Kenneth Westerback).
* Missing header in the Android build (#652, Justus Matthiesen).
* Build broken on MSVC (98303de, 85535f7, Dmitry Bely).
* Build broken on OpenBSD (#672, Christopher Zimmermann).
* Lwt_io.of_bytes produces a channel with inaccurate positions (#636, Nathan
Rebours).
* Lwt_io._.read_int behaves incorrectly on 32-bit systems (#671, reported
Dmitry Bely).
* Inaccurate locations for errors related to ;%lwt (#602, @kandu).
* (_ : t) not recognized as a catch-all pattern by the PPX (#640, Florian
Angeletti).
* Race condition in Lwt_react.E.limit (#606, Avni Fatehpuria).
* Premature deallocation in Lwt_react.E.with_finaliser and
Lwt_react.S.with_finaliser (#626, El-Hassan Wanas).
====== Miscellaneous ======
* New tests for Lwt_bytes, portions of Lwt_unix (#619, #621, #628, #630, #673,
Cédric Le Moigne, Anurag Soni).
* Test suite improvements (#656, Dave Parfitt).
* Clarifications for documentation of Lwt.try_bind, Lwt.pick (#648, #650,
Bikal Lem).
* Fixed documentation of Lwt_io.read_line (#657, Yoni Levy).
* Fixed some typos (#611, #613, Rich Neswold).
===== 4.1.0 (2018-06-26) =====
====== Additions ======
* Change license to MIT (#560).
* Lwt_fmt, an Lwt-aware version of Format (#548, Gabriel Radanne).
* Lwt_io.establish_server_with_client_socket (#586).
====== Bugs fixed ======
* Lwt_stream.iter_n: rename ?max_threads argument to ?max_concurrency (#581,
Hezekiah Carty).
* PPX: reject match expressions that have only exception cases (#597, Raphaël
Proust).
====== Miscellaneous ======
* Improvements to Lwt_pool docs (#575, Bobby Priambodo).
* Restore all PPX tests (#590, Jess Smith).
===== 4.0.1 (2018-04-13) =====
====== Bugs fixed ======
* Race condition in worker thread management in Lwt_unix (#569, diagnosed Gabe
Levi).
* Hang in Lwt_unix.read on Windows (#574, #569, 86a6baf, diagnosed Gabe Levi).
* Docs: note that Lwt_io.open_file for writing truncates the file by default
(#570, reported Tóth Róbert).
===== 4.0.0 (2018-03-30) =====
====== Breaking ======
These changes were announced in Lwt 3.1.0 and Lwt 3.2.0. See #453 about smooth
upgrade paths.
* Delete package lwt.ppx. The PPX syntax is in package lwt_ppx since Lwt 3.2.0
(#338).
* Remove >> syntax from the PPX (#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 (#484, initiated Hannes Mehnert).
* Delete package lwt.preemptive. It is an alias for lwt.unix since Lwt 3.2.0
(#487).
* Delete package lwt.syntax. The Camlp4 syntax is in package lwt_camlp4 since
Lwt 3.2.0 (#370).
* Delete module Lwt_chan, a predecessor of Lwt_io (#441).
* Delete package lwt.simple-top, a predecessor of utop (#371).
* Make resolvers (Lwt.u) contravariant (#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 (#562, Tim Reinke, prompted Hezekiah
Carty).
* Remove translation of [%lwt ...] to Lwt.catch from the PPX (#527).
* Remove -no-debug option from the PPX (#528).
* Remove Lwt_log support from the PPX (#520).
====== Bugs fixed ======
* Lwt_io.file_length now fails with EISDIR when used on a directory (#563,
requested Cedric Cellier).
* Lwt_react.E.limit and Lwt_react.S.limit now working more correctly (#566,
@Freyr666).
====== Miscellaneous ======
* Documentation improvements (#561, Jason Evans).
===== 3.3.0 (2018-03-07) =====
====== Bugs fixed ======
* Restore backtrace support (#554, #556, Gabe Levi).
* Serious logic error that could cause Lwt to hang or crash (#549, reported
@koen-struyve).
* All Lwt_list functions are now tail-recursive (#538, Joseph Thomas).
====== Additions ======
* Support ;%lwt syntax in the PPX (#307, Hezekiah Carty).
* Lwt_stream.iter_n (#312, Hezekiah Carty).
====== Miscellaneous ======
* Testing improvements (#536, #541, @cedlemo).
* Documentation improvements (#544, #546, #547, #553, #559, Daniil Baturin,
Jason Evans, Jess Smith, Milo Turner).
===== 3.2.1 (2018-01-11) =====
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 (#534).
* The [%lwt ...] PPX syntax should be replaced by Lwt.catch (#534).
====== Fixes ======
* Clean up PPX -help usage message output (#525, Zan Doye).
====== Miscellaneous ======
* More thorough testing (#512, #535, Joseph Thomas).
* Clarification of the C binding (#521, @cedlemo).
===== 3.2.0 (2017-12-19) =====
====== Additions ======
* Lwt_mvar.take_available, Lwt_mvar.is_empty (#459, Hezekiah Carty).
* Lwt_io.open_temp_file, Lwt_io.with_temp_file (#467, Joe Thomas).
* New reference documentation for module Lwt (#469).
* Lwt_pool.clear and ?dispose argument for Lwt_pool.create (#483,
Hezekiah Carty).
* Lwt_pool.wait_queue_length (#493, Jerome Vouillon).
====== Bugs fixed ======
* Lwt.npick never worked (#447, Zack Coker).
* Lwt_pool.use now always calls ?validate on elements (#461, Joe Thomas).
* Better locations generated by the PPX (#470, Fabian Hemmer).
* Keep worker thread count accurate in Lwt_unix when pthread_create fails
(#493, @koen-struyve).
* Leaked exceptions in Lwt_list (#499).
* Memory leak in Lwt_unix.getnameinfo (#503, Hannes Mehnert).
====== Planned to break in 4.0.0 ======
See #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
(#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 (#338).
* Similarly, the deprecated Camlp4 syntax will be factored out into
lwt_camlp4, which is installable from opam now (#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 (#484, Hannes Mehnert).
* The >> construct from the PPX will be deleted (#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 (#487).
====== Deprecations ======
* Lwt.waiter_of_wakener should not be used, as it can lead to soundness bugs
in future (but not current) Lwt (#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 (#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 (#359, #469).
====== Miscellaneous ======
* Replace references to Camlp4 in the manual with the PPX (#457, Bobby
Priambodo).
* More tests for Lwt_pool (#464, Joe Thomas).
* Expect tests for the PPX (#474, Fabian Hemmer).
===== 3.1.0 (2017-07-19) =====
====== 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_log functions tail-recursive (#348, Jan Doms).
* Make more of Lwt_list tail-recursive (#347, Jan Doms).
* Improve string messages in exceptions (#368, #382, Jan Doms, Raphaël
Proust).
* Don't call Unix.set_nonblock or Unix.clear_nonblock unnecessarily on
some fds (#356, David Sheets).
* Lwt_unix.sleep and Lwt_unix.timeout returning too early when using
libev (#433, Stijn Devriendt).
* Lwt_sequence.fold_r iterating the wrong way in some cases (#405,
Stijn Devriendt).
* Build conflicts in some cases due to duplicate cst_to_constr
function (#362, Jérémie Dimino).
* Don't use deprecated readdir_r system 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_glib get new minor
releases, the change being new Jbuilder build systems (#374, Andrew
Ray).
===== 3.0.0 (2017-04-10) =====
====== Breaking ======
* These changes were originally announced in release 2.7.0 (#308).
* Lwt_engine.libev now has an optional argument for selecting the libev back
end (#269, #294, Jeremy Yallop).
* Lwt_io.establish_server has been changed to make it more difficult to leak
file descriptors (#258, #260).
* Lwt_io.shutdown_server now evaluates to a promise, which completes when the
listening socket's close(2) operation completes (#259).
* Lwt_unix.bind now evaluates to a promise, because the bind(2) system call
can block for Unix domain sockets (#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 (#301).
===== 2.7.1 (2017-04-08) =====
====== Fixes ======
* OCaml 4.05 compatibility (Mauricio Fernandez, #322).
* Give Lwt_unix.file_exists the same semantics as Sys.file_exists, with
respect to not raising Unix.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).
===== 2.7.0 (2017-01-03) =====
====== General ======
* Values of types a Lwt.t are 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.fdatasync is 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.libev will have an argument for selecting the libev back end
(#269, #294, Jeremy Yallop).
* Lwt_io.establish_server will be replaced by a version that makes it
difficult to leak file descriptors (#258, #260).
* Lwt_io.shutdown_server will evaluate to a promise, which indicates when the
close operation completes (#259).
* Lwt_unix.bind will evaluate to a promise, since bind can block for Unix
domain sockets (#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 (#301).
====== Additions ======
* Lwt_unix.readv and Lwt_unix.writev - zero-copy scatter/gather I/O
(#291, #299).
* ?fail_on_error argument for Lwt_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_string now
immediately push all elements into the created streams
(#239, Spiros Eliopoulos).
====== Deprecations ======
* Lwt_stream.map_exn in favor of Lwt_stream.wrap_exn, which uses OCaml's
standard result type (#295).
====== Bugs fixed ======
* Ungraceful failure if directory handle used after Lwt_unix.closedir (#292).
* Buffer overflow in Lwt_unix.readdir and Lwt_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.
===== 2.6.0 (2016-10-27) =====
====== Additions ======
* Lwt_stream.closed and Lwt_stream.is_closed (#223, Spiros Eliopoulos).
* Lwt_switch.with_switch (#256, Thomas Leonard).
* Define 'a Lwt.result as ('a, exn) result (#247, Simon Cruanes).
* Lwt_condition.broadcast_exn (#241, Nicolas Ojeda Bar).
* Lwt_unix.utimes (#193).
====== Bugfixes ======
* 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_off hook exception handling (995b704).
* Handling of ENOTCONN when channels passed to handler of
Lwt_io.establish_server are 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 libev loops (#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 on Lwt_stream.closed instead.
* Lwt.make_value, Lwt.make_error: use result's Ok and Error constructors.
* Lwt_pqueue, Lwt_sequence: use min-heaps and linked lists from another
library (#135).
* Pa_lwt, Pa_lwt_log: use Ppx_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 (Hezekiah Carty, Etienne Millon,
Leo Wzukw, Sebastien Mondet, reports by others).
* A bunch of new tests.
===== 2.5.2 (2016-04-25) =====
* Fix compatibility for 4.03 (#227)
* Various documentation fixes (#199,#200,#210)
* Improve wildcard detection in the ppx (#198)
* Fix Lwt_stream: bounded_push#close wake the reader (#201)
* Fix infinite loop with Lwt_stream.choose (#214)
* Fix laziness failure with Lwt_io.common#close (#207)
===== 2.5.1 (2015-12-07) =====
* Lwt_stream.on_terminate -> Lwt_stream.on_termination
* Lwt_unix: handle O_CLOEXEC
* Lwt_log: add OSX syslog path
* Ppx: Improve lwt%match, improve catchall detection
* Add Lwt_unix.file_exists and Lwt_unix.Large_file.file_exists
* Build fixes
===== 2.5.0 (2015-07-03) =====
* 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.
===== 2.4.8 (2015-03-11) =====
* Fix compilation under Windows (#117, #129)
* Fix Lwt_engine.on_timer (#121)
* Add Lwt_log_core.reset_rules (#123)
* Fixed typos in the documentation (#119, #131)
===== 2.4.7 (2015-01-06) =====
* camlp4 is now optional.
* Add safe_string compliance except for Lwt_ssl (need ocaml-ssl fix).
* Add Lwt.Infix module to open instead of Lwt to have (>>=), etc.
* Add Lwt_list.filter_map_{s,p} functions.
* Add Lwt.fail_{with,invalid_arg} functions.
* Improved Android support.
* Remove deprecated lwt.text and lwt.top libraries.
* Remove deprecated Lwt_signal and Lwt_event modules from
lwt.react.
* Fix #111: try_lwt wrongly warns about unused match case.
* Fix #96: Fix Lwt_react.S.limit and Lwt_react.E.limit.
* Fix #91: Workaround to fix compilation on OSX.
===== 2.4.6 (2014-10-12) =====
* Add a ppx syntax extension
* Add a ?fd argument to
Lwt_io.{open_connection,with_connection,establish_server}.
* Fix stub for getaddrinfo and getprotobyname
* Windows fix: don't throw an exception in the notification handler
if we're shutting down
* Fix include file search in ./configure
* ./configure fixes for windows
* Fix: use sys_exit instead of exit when Unix.execv fails
===== 2.4.5 (2014-04-21) =====
* Lwt_ssl: expand API to allow setting socket options with Ssl
functions
* fix for camlp4 trunk
* support for React 1.0.0
* add Lwt_sequence.find_node_* functions
* Lwt_log: get backtrace early to overcome exns in
Printexc.to_string
* fix potential deadlock in lwt_unix_recv_notifications
* lwt.glib fixes:
- handle HUP
- fix for BSD/OSX
* do not raise an exception in Lwt_log if argv[0] is blank
===== 2.4.4 (2013-10-22) =====
* add Android support
* fix issues in stubs for Lwt_unix jobs
* fix compatibility issue with OCaml 4.01
* fix the stub for ev_timer_init
* add Lwt.log containing Lwt_log_core, the Unix-free part of Lwt_log
* add Lwt_ssl.get_fd
* fix stdout/stderr redirections in Lwt_daemon.daemonize
* add Lwt_list.{map,iter}i{_s,_p}
===== 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 recorded 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 controllable 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 immediately 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
|