I am delighted to announce the 111.08.00 release of the Core suite. The following packages were upgraded: - async_extra - async_kernel - async_ssl - async_unix - core - core_kernel - enumerate - jenga - ocaml_plugin - pa_test - re2 This time we are including another new package: - bignum, a Core-flavoured wrapper around arbitrary-precision rational numbers provided by the zarith library. Heads up, though: in preparation for the public release of bignum, we made a few changes and improvements to the library, but they weren't completed in time and weren't essential enough to hold up the release for them. Next public release, bignum will have an improved rounding API, fewer dependencies, and a better bin_prot encoding. Files and documentation for this release are available on our website and all packages are in opam: https://ocaml.janestreet.com/ocaml-core/111.03.00/individual/ https://ocaml.janestreet.com/ocaml-core/111.03.00/doc/ Here is the list of changes for this version: ## async_extra - Added `Log.Message.add_tags`, which extends a message with a list of key-value pairs. val add_tags : t -> (string * string) list -> t ## async_kernel - Changed low-level error messages to use `Sexp.to_string_hum` rather than `to_string_mach`. ## async_ssl - Improved the propagation of SSL errors to the caller. ## async_unix - Added `Sys.when_file_changes : string -> Time.t Pipe.Reader.t`. - Added `Time.now ()` to some error messages. ## core - Improved `Command` to print a good error message if command-line parsing raises. `Command`'s `Exn.handle_uncaught` now protects the phase of parsing command-line arguments in addition to protecting the phase of running the `main` function as it did already. ## core_kernel - Added `Hashtbl.for_all` and `for_alli`. - Added `Float.to_padded_compact_string` for converting a floating point number to a lossy, compact, human-readable representation. E.g., `1_000_001.00` becomes `"1m "`. - Tweaked the form of the definition of `Blang.Stable.V1`. Removed a `type t_` that is not necessary now that we can use `nonrec` without triggering spurious warnings. ## enumerate - Restricted the signature of the `all` value generated by `with enumerate`. Now, in: type t = [ `Foo | ... ] with enumerate the type of `all` will be `t list`, instead of `[> t] list`. When taking unions of polymorphic variant types, inserted the appropriate coercions. ## jenga - Fix a hang. Jenga could reach a state with a non-zero todo-count, but have no jobs actually running, and then hang in this state forever. The hang would be evident from a progress line with not all targets built and with `j=0+0` such as: todo: 17 (100406 / 100423) j=0+0 con=149956 act=3303, finish at: 16:20 ## ocaml_plugin - Use `ocamldep` to generate the dependencies of an `.ml` file, if requested. Added a function to find the dependencies of a module, but did not change the existing behavior and interface of the library if one does not choose to use this functionality. ## pa_test - Made it possible to use `<:test_eq< >>` and friends in `Core_kernel`. Removed the dependency of the code generated by `pa_test` on `Core_kernel`, so `pa_test` can be used there. ## re2 - Upgraded to upstream library version 20140304. Added options `Dot_nl` and `Never_capture`. --- We hope you enjoy it! -- Ben Millwood, on behalf of the Core team