From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=AWL,RCVD_IN_SORBS_WEB autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id 41F12BC50 for ; Tue, 3 Oct 2006 00:13:27 +0200 (CEST) Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.187]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id k92MDMnk016001 for ; Tue, 3 Oct 2006 00:13:26 +0200 Received: from [84.58.138.78] (helo=gate.lan.gerd-stolpmann.de) by mrelayeu.kundenserver.de (node=mrelayeu0) with ESMTP (Nemesis), id 0MKwh2-1GUW2F2uge-00011o; Tue, 03 Oct 2006 00:13:15 +0200 Received: from flakew.lan.gerd-stolpmann.de (fw.lan.gerd-stolpmann.de [192.168.1.1]) by gate.lan.gerd-stolpmann.de (Postfix) with ESMTP id 47698C35E; Tue, 3 Oct 2006 00:13:15 +0200 (CEST) Subject: Preview release ocamlnet-2.2test12 From: Gerd Stolpmann To: caml-list@inria.fr Cc: ocamlnet-devel Content-Type: text/plain Date: Tue, 03 Oct 2006 00:13:14 +0200 Message-Id: <1159827194.13405.107.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-Provags-ID: kundenserver.de abuse@kundenserver.de login:a6865a839c0178d9aa0ce41878507ea2 X-Miltered: at concorde with ID 45218F02.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; ocamlnet-:01 gerd:01 stolpmann:01 ocamlnet-:01 gerd:01 ocamlnet:01 netclient:01 threads:01 workload:01 ocamlnet:01 netcgi:01 netcgi:01 netstring:01 netclient:01 ad-hoc:01 Hi lists, there is a new preview release of the upcoming ocamlnet-2.2 library: http://www.ocaml-programming.de/packages/ocamlnet-2.2test12.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 is already close to the final release. 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 already 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. The stability is unclear yet. - 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. Stability is unclear. - nethttpd has now the option to use netcgi2 as cgi provider (configure option -prefer-netcgi2). This is mostly untested. - netshm adds shared memory support. The stability is unclear yet. - equeue-ssl and rpc-ssl add SSL support to the RPC libraries. Stability is unclear. The project would profit most if these libraries were tested by independent developers. Known Problems There are known problems in this preview release: - 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 ------------------------------------------------------------ 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. (The movie ended. Rewind and watch again!) -- ------------------------------------------------------------ Gerd Stolpmann * Viktoriastr. 45 * 64293 Darmstadt * Germany gerd@gerd-stolpmann.de http://www.gerd-stolpmann.de Phone: +49-6151-153855 Fax: +49-6151-997714 ------------------------------------------------------------