there is now a release candidate of the upcoming ocamlnet-2.2 library
"The Best of 2006":
http://www.ocaml-programming.de/packages/ocamlnet-2.2rc1.tar.gz
Developers interested in the upcoming 2.2 version can have look at it,
and experienced developers are invited to test it, and to help finding
the remaining bugs and problems. This version will be the final release
if no serious bugs are found. The release will happen
before December 31.
In the rest of this (long) email, I'll explain certain aspects of this
version:
1. What's new in ocamlnet-2.2
2. Release notes
3. How you can help testing
4. Resources
5. Credits
Gerd
------------------------------------------------------------
1. What's new in ocamlnet-2.2
------------------------------------------------------------
Ocamlnet now includes equeue, netclient, and rpc
These libraries were previously distributed as separate software
packages. All four libraries form now together the new ocamlnet-2.2.
This allows much deeper integration of their functionality.
Building servers with Netplex
The framework Netplex simplifies the development of server applications
that require the parallel execution of requests. It focuses on
multi-processing servers but also allows multi-threading servers.
Netplex manages the start and stop of processes/threads, and dynamically
adapts itself to the current workload. Netplex allows it to integrate
several network protocols into one application, and as it also supports
SunRPC as protocol, one can consider it even as component architecture.
Furthermore, it has infrastructure to read configuration files and to
log messages.
Ocamlnet includes add-ons for Netplex to build SunRPC servers, web
servers, and web application servers (the latter over the protocols AJP,
FastCGI, or SCGI).
The revised API for web applications
The library netcgi2 is a revised version of the old cgi API (now also
called netcgi1). The changes focus on restructuring the library in order
to improve its modularity. It is hoped that beginners find more quickly
the relevant functions and methods. The API is essentially the same, but
the support for cookies has been enhanced. The connectors allowing a web
server to talk with the application have been completely redeveloped -
all four connectors (CGI, AJP, FastCGI, SCGI) support the same features.
The connector for SCGI is new. The connector for AJP has been upgraded
to protocol version 1.3. There are Netplex add-ons for the connectors.
The old API is still available, but its features are frozen. It is
recommended to port applications to netcgi2.
Improvements for SunRPC applications
It is now possible to use the SunRPC over SSL tunnels. All features are
available, including asynchronous messages. As a side effect of this,
the SunRPC implementation is now transport-independent, i.e. it is
sufficient to implement a few class types to run RPC over any kind of
transport.
Furthermore, a few details have been improved. SunRPC servers can now
implement several RPC programs or program versions at the same time.
SunRPC clients can now connect to their servers in the background. A few
bugs have been fixed, too.
Shared memory
As multi-processing has become quite important due to Netplex, Ocamlnet
supports now the inter-process communication over shared memory. The
implementation is brand-new and probably not very fast, but shared
memory makes sometimes things a lot easier for multi-processing
applications.
Old things remain good
Of course, this version of Ocamlnet supports the long list of features
it inherited from its predecessors. This includes an enhanced HTTP
client, a Telnet client, a (still incomplete) FTP client, a POP client,
and an SMTP client. The shell library is an enhanced version of
Sys.command. The netstring library is a large collection of string
routines useful in the Internet context (supports URLs, HTML, mail
messages, date strings, character set conversions, Base 64, and a few
other things).
------------------------------------------------------------
2. Release notes
------------------------------------------------------------
Stability
In general, the stability of this version is excellent. About 90
% of the code has been taken over from previous versions of ocamlnet,
equeue, netclient, and rpc, and this means that this code is already
mature. About 10 % of the code has been newly developed:
- netcgi2 is a revised version of the cgi library. Large parts
are completely new.
- netplex is the new server framework. Fortunately, it could already
be used in a production environment, and it has proven excellent
stability there.
- netcgi2-plex combines netcgi2 and netplex.
- nethttpd has now the option to use netcgi2 as cgi provider
(configure option -prefer-netcgi2).
- netshm adds shared memory support.
- equeue-ssl and rpc-ssl add SSL support to the RPC libraries.
Known Problems
There are known problems in this release which won't be solved
until the release of 2.2 but in a later version:
- There is no good concept to manage signals. This is currently done
ad-hoc. For now, this does not make any problems, or better, there
is always the workaround that the user sets the signal handlers
manually if any problems occur.
- The new cookie implementation of netcgi2 should replace the old
one in netstring. Users should be prepared that Netcgi.Cookie
will eventually become Nethttp.Cookie in one of the next releases.
- In netcgi2-plex, the "mount_dir" and "mount_at" options are not yet
implemented.
- In netclient, aggressive caching of HTTP connections is still
buggy. Do not use this option (by default, it is not enabled).
- The FTP client is still incomplete.
------------------------------------------------------------
3. How you can help testing
------------------------------------------------------------
It would be great if experienced developers tested the libraries,
especially the new and revised ones. Discussions should take place in
the Ocamlnet mailing list (see resources section below).
It is important to know that this version of Ocamlnet also includes the
libraries formerly distributed as equeue, netclient, and rpc. If you
upgrade an O'Caml installation, you _must_ remove old versions of these
libraries prio to the installation of the new Ocamlnet.
For GODI users, there is a convenient way of installing ocamlnet2. First
install GODI as usual (either for O'Caml 3.08 or 3.09). Then, change
godi.conf, and add the line
GODI_BUILD_SITES += http://www.ocaml-programming.de/godi-build/branch-ocamlnet2/
update packages and rebuild. You can install
godi-ocamlnet
godi-ocamlnet-gtk1
godi-ocamlnet-gtk2
godi-ocamlnet-tcl
godi-ocamlnet-ssl
where the latter four packages contain add-ons that need further
libraries to be installed. The packages
godi-equeue*, godi-rpc, godi-netclient
are only fake packages that include godi-ocamlnet as predecessors.
------------------------------------------------------------
4. Resources
------------------------------------------------------------
On online version of the reference manual can be found here:
http://ocamlnet.sourceforge.net/manual-2.2/
The current development version is available in Subversion:
https://gps.dynxs.de/svn/lib-ocamlnet
Note that the ocamlnet file tree in Sourceforge refers to
ocamlnet-1 only.
There is a mailing list for Ocamlnet development:
http://sourceforge.net/mail/?group_id=19774
In case of problems, you can also contact me directly:
Gerd Stolpmann <ge...@gerd-stolpmann.de>
------------------------------------------------------------
5. Credits
------------------------------------------------------------
A number of people and institutions helped creating this new version:
- Christophe Troestler wrote the revised CGI library
- The California State University sponsored the development
of Netplex and the SSL support for SunRPC. Special thanks
to Eric Stokes who convinced the University, and David
Aragon for his business support.
- All companies who hired me this year and made it possible
that I can make a living from O'Caml development. Without
that it would have been impossible to put so much energy
into this. Special thanks go to Yaron Minsky and Mika
Illouz.
--
------------------------------------------------------------
Gerd Stolpmann * Viktoriastr. 45 * 64293 Darmstadt * Germany
ge...@gerd-stolpmann.de http://www.gerd-stolpmann.de
Phone: +49-6151-153855 Fax: +49-6151-997714
------------------------------------------------------------
_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs
Gerd: Is there a way to call such SunRPC/SSL from other languages
(specifically, from C clients using, say, libc6 or another
implementation of SunRPC)? In general, how compatible are
OCamlNet-generated SunRPC servers with clients in other languages?
Rich.
--
Richard Jones
Red Hat UK Limited
The SunRPC implementation sticks to the standard (there is an RFC about
it). Lex Stein used it to develop an NFSv3 server in OCaml
(http://www.eecs.harvard.edu/~stein/bdbfs/). I personally connected
OCaml and Java (remotetea).
Concerning SSL: This is an extension. I don't know of any other
implementation that supports SSL - although this is straight-forward. In
libc you'd need an external program to do the SSL tunnelling on the C
side (like stunnel).
Gerd
--
------------------------------------------------------------
Gerd Stolpmann * Viktoriastr. 45 * 64293 Darmstadt * Germany
ge...@gerd-stolpmann.de http://www.gerd-stolpmann.de
Phone: +49-6151-153855 Fax: +49-6151-997714
------------------------------------------------------------
_______________________________________________