From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Delivered-To: caml-list@yquem.inria.fr Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by yquem.inria.fr (Postfix) with ESMTP id 1A8ADBB81 for ; Fri, 31 Dec 2004 08:36:38 +0100 (CET) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id iBV7abvc026832 for ; Fri, 31 Dec 2004 08:36:37 +0100 Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id IAA08464 for ; Fri, 31 Dec 2004 08:36:36 +0100 (MET) Received: from wetware.com ([199.108.16.1]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id iBV7aYQC021206 for ; Fri, 31 Dec 2004 08:36:36 +0100 Received: from [208.177.152.17] (helo=[10.0.1.5]) by wetware.com with esmtp (Exim 4.20) id 1CkHKU-0007Ju-Ec; Thu, 30 Dec 2004 23:36:10 -0800 Mime-Version: 1.0 (Apple Message framework v619) Content-Transfer-Encoding: 7bit Message-Id: Content-Type: text/plain; charset=US-ASCII; format=flowed To: OCNAE Help , The Caml Trade From: james woodyatt Subject: announce: OCaml NAE releases Cf-0.5 and Iom-0.1 Date: Thu, 30 Dec 2004 23:36:09 -0800 X-Mailer: Apple Mail (2.619) X-Miltered: at nez-perce with ID 41D50185.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at concorde with ID 41D50182.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; woodyatt:01 jhw:01 wetware:01 ocaml:01 everyone--:01 ocaml:01 sourceforge:01 stack:01 scheduler:01 deque:01 bug:01 seq:01 bug:01 iterated:01 scheduler:01 X-Spam-Checker-Version: SpamAssassin 3.0.0 (2004-09-13) on yquem.inria.fr X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.0 X-Spam-Level: everyone-- Today, the OCaml Network Application Environment (NAE) has released maintenance updates of two of its published libraries. As its project page on SourceForge.Net says, OCaml NAE is "a collection of Objective Caml libraries to support the development of concurrent, single-threaded Internet application servers." For downloads and more information, please see: The two libraries updated in this release are the Core Foundation (Cf) and the Reactive I/O Monad (Iom). The Cf library was formerly known as the Pagoda Core Foundation. The complete CHANGES records for both libraries since their previous releases follows below. ===== OCaml NAE Core Foundation (cf) library ===== ===== Version 0.5 ===== Highlights of the changes: + Many bugs fixed (some critical). + IPv6 socket addresses are now a triple, containing the scope identifier. + Fixed a very bad stack leak problem in the [Cf_gadget] scheduler. --- [Cf_deque] Fix major bug in [fold] that caused a BUS ERROR (ack!), and also fixed [filter] so that it uses the non-recursive [fold] function here instead of going to the extra work of using [Cf_seq.fold]. --- [Cf_rbtree] Fix a bug in [iterate] (found by Craig Falls; thanks Craig!) caused by a stoopid typo. Caused some elements to be iterated twice, and others not at all. --- [Cf_gadget] Moderate surgery on the scheduler to fix a bad stack leak. The new code is probably a tiny bit more efficient too, because I got rid of some unnecessary uses of {Lazy.t} in places, and there is a bit less lifting between monads. I didn't benchmark it, though. --- [Cf_socket] Added a special case for Mac OS X to work around a bug in Apple's network stack that errors in connect(2) on a non-blocking socket do not get in the errno system variable. You have to get them out of the socket with the SO_ERROR socket option. --- [Cf_ip4_addr] Make the network subnet manipulation functions cope with networks that are not unicast networks. (Yes, there are multicast ranges that can be treated like subnets.) --- [Cf_ip6_proto] Add a third element to the socket address type: an int32 for the scope id. --- [Cf_ip6_addr] Fix the [v4compat] and [v4mapped] address type tags so that they are actually polymorphic variants, like they're supposed to be. This was another stoopid typo, but I found it myself. --- [Cf_netif] Fixed the C-language code to call if_nametoindex() with the proper arguments. Again, this was a stoopid typo. --- [Cf_poll] A minor change to the commented bits of debugging code in the middle of the select loop to use [Cf_journal] instead of my [xprintf] hackery. --- {TESTS} Added a test for the [Cf_gadget] scheduler to detect stack leaks. ===== OCaml NAE Reactive I/O Monad (iom) library ===== ===== Version 0.1 ===== Highlights of this release: + Rewrote the [Iom_sock_stream.endpoint] reactor to fix bugs (and hopefully improve performance in some edge cases). + More optional tests coded (but they're still suboptimal, and maybe buggy). --- [Iom_sock_stream] Rewrote the [endpoint] reactor to use less consing, i.e. the state is now a couple of mutable objects derived from [Cf_poll.event]. Events are plumbed around the inside of the reactor in shorter paths. --- [T_iom] Change to be compatible with cf-0.5 notion of IPv6 socket addresses, which now contain an int32 element for the scope identifier. --- {New Tests} Added a couple of new programs which help me work out bugs. I don't think these programs are really done, since they don't quite give me the control I need to be able to adequately test and benchmark the performance of code based on the [Iom] library. I'll probably need to hammer on these for awhile before I have something to document. In the meantime, consider them curiosities for your amusement. -- j h woodyatt