From: Ben Millwood <bmillwood@janestreet.com>
To: ocaml-core@googlegroups.com, caml-list@inria.fr
Subject: [Caml-list] [ANN] Core Suite 111.03.00
Date: Thu, 6 Mar 2014 17:37:44 +0000 [thread overview]
Message-ID: <CA+MHO51sUi7PQ4S8XWAR4LvocXxXJwugXAFm07zgRd38Po8v=g@mail.gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 4840 bytes --]
I am pleased to announce the 111.03.00 release of the Core suite.
The following packages were upgraded:
- async
- async_extra
- async_kernel
- async_unix
- bin_prot
- core
- core_extended
- core_kernel
- custom_printf
- jenga
- ocaml_plugin
- re2
- sexplib
- textutils
In addition, with this release we are including a new package:
- enumerate, a syntax extension for enumerating finite types.
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:
# 111.03.00
## async_extra
- Add `?max_connections:int` argument to `Rpc.Connection.serve`.
`max_connections` is passed to `Tcp.Server.create`, and limits the
number of connections that an Rpc server will accept.
- Improved `Log.Rotation`:
- Made `Log.Rotation.t` abstract; use `create` rather than an
explicit record.
- Added a `` `Dated`` `naming_scheme`.
- Add `Log.Rotation.default`, for getting a sensible default
rotation scheme.
- Added an optional (but discouraged) option to symlink the latest
log file.
- Every log rotation scheme has an associated `Time.Zone.t`.
- Changed the internal representation of `Log.Rotation.t`, but
`t_of_sexp` is backwards compatible, so existing config files will
continue to work.
- Changed `Udp.bind_any` to use `Socket.bind ~reuseaddr:false`, to
ensure a unique port.
- Added `Tcp.Server.listening_socket`, which returns the socket the
server is listening on.
Changed `Tcp.Server` so that if the listening socket is closed, the
server is closed.
- Added to `Udp.Config.t` a `max_ready : int` field to prevent UDP
receive loops from starving other async jobs.
- Improved `File_tail` to cut the number of `fstat` calls in half.
`File_tail` uses a stat loop to monitor a file and continue reading
it as it grows. We had made two `fstat` invocations per loop
iteration, using `Async.Std.Unix.with_file` which constructs an
`Fd.t` and therefore does it own `fstat`. Switching to
`Core.Std.Unix.with_file` with `In_thread.run` eliminated the extra
`fstat`.
## async_unix
- Improved `Socket.accept` to abort and return `` `Socket_closed`` when
the file descriptor underlying the socket is closed.
- Added to `Socket.bind` a `?reuseaddr:bool` argument, preserving the
default as `true`.
- Added `Fd.close_started`, which becomes determined when `close` is
called on an `Fd.t`.
## bin_prot
- Fixed build on ARM.
## core
- Added `Unix.Syslog` module.
- Changed `Command.run` to no longer ignore the first element of its
`~argv` parameter.
- Made `Time.Span.to_short_string` show microsecond precision.
## core_extended
- Added `Set_lang`, a DSL for sets with constants, union, intersection,
and difference.
- In `Process`, use `epoll` rather than `select` when possible,
This prevents errors when selecting on file descriptors numbered
greater than `FD_SETSIZE` (1024).
- Removed `Syslog` module. There is now `Unix.Syslog` in core instead;
the APIs are not compatible, but they are similar.
## core_kernel
- Added `Error.to_string_hum_deprecated` that is the same as
`Error.to_string_hum` pre 109.61.
- Changed `Error.to_string_hum` so that
`Error.to_string_hum (Error.of_string s) = s`.
This fixed undesirable sexp escaping introduced in 109.61 and
restores the pre-109.61 behavior for the special case of
`Error.of_string`. A consequence of the removal of the custom
`to_string_hum` converter in 109.61 was that:
Error.to_string_hum (Error.of_string s) = Sexp.to_string_hum (Sexp.Atom
s)
That introduced sexp escaping of `s`.
- Added to `Doubly_linked` functions for moving an element
within a list.
val move_to_front : 'a t -> 'a Elt.t -> unit
val move_to_back : 'a t -> 'a Elt.t -> unit
val move_after : 'a t -> 'a Elt.t -> anchor:'a Elt.t -> unit
val move_before : 'a t -> 'a Elt.t -> anchor:'a Elt.t -> unit
- Improved `Core_map_unit_tests.Unit_tests` to allow arbitrary data
in the map, not just `ints`.
This was done by eta expansion.
## custom_printf
- Simplified the code generated by `pa_custom_printf` to make it
more readable.
## re2
- Fixed a bug with `replace_exn` and anchoring.
Fixed this bug:
$ R.replace_exn ~f:(fun _ -> "a") (R.create_exn "^") "XYZ";;
- : string = "aXaYaZa"
$ R.replace_exn ~f:(fun _ -> "a") (R.create_exn "^X") "XXXYXXZ";;
- : string = "aaaYXXZ"
## textutils
- Changed `Textutils.Console` to not reference `Async.Log`, so that
building inline benchmark runners no longer requires building `Async`.
The change makes `Textutils`, and by extension `Core_extended` and
`Core_bench`, not depend on `Async`.
---
We hope you enjoy it!
-- Ben Millwood, for the Core team
[-- Attachment #2: Type: text/html, Size: 9649 bytes --]
reply other threads:[~2014-03-06 17:37 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CA+MHO51sUi7PQ4S8XWAR4LvocXxXJwugXAFm07zgRd38Po8v=g@mail.gmail.com' \
--to=bmillwood@janestreet.com \
--cc=caml-list@inria.fr \
--cc=ocaml-core@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox