This is an update of ocamlnet to its newest version, 3.6. Changes are:
* Netsys_sem: a new abstraction for emulating anonymous
semaphores on systems that only provide named semaphores,
like OS X. All users of semaphores inside Ocamlnet now
base on Netsys_sem.
* reimplementing Netstring_str for the case the Str engine
is used. It is now thread-safe without having to use
mutexes.
* The default is now -disable-pcre
* The module Netstring_pcre has been moved to a library of its
own, namely netstring-pcre. It is only installed if -enable-pcre
* Nethttp.Header.best_media_type: improved
(patch by Christopher Zimmemann)
* Netsys_mem.alloc_memory_pages: one can now mark the memory
pages as executable
* src/netsys/configure: disabling POSIX semaphore check
for win32
* Fixes for OpenBSD (by Christopher Zimmermann)
* Netcgi connectors (SCGI, AJP, FCGI): unifying the ~sockaddr
and ~port arguments. ~port now also assumes a loopback binding.
(Suggested by Christopher Zimmermann).
* Allowing posix_spawn again for MacOS. It turns out the
number of file actions is limited. If we are above the
limit, posix_spawn is not used.
* Ssl_exts: adding function for returning the fingerprint of
a certificate
* Https_client: new verify callback for additional certificate
checks
DragonFly doesn't define AT_SYMLINK_FOLLOW. The added patch will
appropriately disable linkat support.
No revbump necessary - this patch doesn't change the binary on systems
for which it has already built.
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