OCaml Weekly News
Hello
Here is the latest OCaml Weekly News, for the week of October 08 to 15, 2019.
Table of Contents
capnp-rpc 0.4.0
Thomas Leonard announced
I'm pleased to announce the release of capnp-rpc 0.4.0, an OCaml implementation of the Cap'n Proto RPC specification.
If you haven't used the library before, please see the documentation and tutorial. Cap'n Proto RPC aims to provide secure, efficient, typed communications between multiple parties.
This library is now being used to build ocaml-ci, where it is used for all communication between the web frontend and backend services, and to provide a command-line client.
Main changes since v0.3
Breaking changes:
- Wrap errors with the
`Capnp
tag to make it easier to compose with other types of error. - Prefix all command-line options with
capnp-
. e.g.--listen-address
is now--capnp-listen-address
. The old names were confusing for applications that supported other protocols too (e.g. a web server).
New features:
- Add
Capability.with_ref
convenience function. This automatically callsdec_ref
when done. - Add Unix
Cap_file
module to load and saveSturdy_refs
. In particular, this ensures that saved cap files get a mode of0o600
, since they contain secrets. - Export cmdliner network address parsing. This is useful if you don't want to use the default option parsing. For example, if you want to make Cap'n Proto an optional feature of your program.
- Upgrade from
uint
(which is deprecated) to the newerstdint
. The latest version ofuint
is just a wrapper aroundstdint
, so this shouldn't break anything if you are using the latest version. - Put cmdliner options in their own man-page section.
Use
Capnp_rpc_unix.manpage_capnp_options
to control where in your man-page they appear. Enable
SO_KEEPALIVE
for TCP connections. For use with Docker's libnetwork, try something like this in yourstack.yml
:sysctls: - 'net.ipv4.tcp_keepalive_time=60'
Ocaml-protoc.plugin.1.0.0
Anders Fugmann announced
I'm happy to announce the second release of ocaml-protoc-plugin.
Ocaml-protoc-plugin is a plugin to googles protoc
compiler which generates type idiomatic to ocaml from .proto
files including full compliant serialization and deserialization functions.
Most noteworthy changes in this release:
- Full proto2 support.
- The list of dependencies has been slimmed way down, and now only depends on
conf-protoc
(theprotoc
compiler and googles well known types). - Buckescript support.
- Added options to change the ocaml (type for scalar types (int, int64 or int32).
Many thanks to Wojtek Czekalski for helping trimming dependencies and for Buclescript support.
Full changelog:
- Support enum aliasing
- Avoid name clash with on 'name'
- Fix code generation when argument contains a path
- Refactor internal types to make serialization and deserialization type spec symmetrical.
- Optimize deserialization for messages with max_id < 1024
- Don't depend on Base in runtime
- Slim runtime dependencies: Remove need for base, ocplib-endian and ppx_let
- Honor [packed=…] flag.
- Make fixed scalar types default to int32 and int64
- Support proto2 specification
- Add options to switch between int64|int32 and int
- Fix name clash problem with special enum names
- Refactor serialization and deserialization to simplify emitted code
- Eagerly evaluate serialization (for speed).
Old CWN
If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.
If you also wish to receive it every week by mail, you may subscribe online.