6 years of changes. 3.5.1 in particular has:
it is time for another version of Ocamlnet. The new release 3.5 focuses on
the system interface, and includes a long list of smaller improvements.
The system interface, Netsys_posix, is extended by:
- Support for POSIX clocks and POSIX timers (with nanosecond resolution)
- Netsys_posix.spawn usses now the posix_spawn call if present on the OS
- Adding support for pollable events (as e.g. provided by Linux via
eventfd). For other OS an emulation is available.
- Support for epoll on Linux
Note that Netsys_posix covers now large parts of POSIX realtime.
Other improvements:
- The code generator for XDR has been improved. A new switch -direct for
ocamlrpcgen can be used to generate direct mappings between OCaml values
and binary representation (in many cases). Speedups up to 50% are
possible for large XDR values.
- The new module Uq_mt allows it to access an event-driven resource from
several kernel threads (e.g. use an RPC client commonly from several
threads).
- The thread-safety of Netplex container functions has been improved.
- Netmulticore condition variables can now be polled, for better
integration into event-based programs.
- Option greedy_accepts for Netplex to support servers that accept
many connections per second. With this improvement, Netplex can
now accept more than 5000 connections/s, and assign them to worker
processes.
Last but not least there is now a new tutorial for Equeue (event systems
and engines). In particular, the section about combining Ocamlnet with Lwt
might be interesting.
The Ocamlnet project provides a collection of modules for the
Objective Caml language which focus on application-level Internet
protocols and conventions.
The current distribution contains:
- a mature implementation of the CGI protocol
- an implementation of the JSERV protocol (AJP-1.2), can be used with
mod_jserv (Apache JServ) and mod_jk (Jakarta connector) to connect
application servers written in O'Caml with web servers
- a FastCGI implementation
- a POP3 client
- an SMTP client
- a library of string processing functions related to Internet
protocols (formerly known as "netstring" and distributed separately):
MIME encoding/decoding, Date/time parsing, Character encoding
conversion, HTML parsing and printing, URL parsing and printing,
OO-representation of channels, and a lot more.
- an experimental web server component