From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 491E1BB84 for ; Sat, 15 Jul 2006 09:14:27 +0200 (CEST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id k6F7EQKc009654 for ; Sat, 15 Jul 2006 09:14:26 +0200 Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id JAA02299 for ; Sat, 15 Jul 2006 09:14:25 +0200 (MET DST) Received: from mta.conjury.org (grymling.conjury.org [69.12.155.90]) by nez-perce.inria.fr (8.13.6/8.13.6) with ESMTP id k6F7ENUF022574 for ; Sat, 15 Jul 2006 09:14:24 +0200 Received: from localhost (localhost [127.0.0.1]) by mta.conjury.org (Postfix) with ESMTP id 0132D121E35; Sat, 15 Jul 2006 00:14:17 -0700 (PDT) Received: from mta.conjury.org ([127.0.0.1]) by localhost (grymling.conjury.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 25628-03; Sat, 15 Jul 2006 00:14:06 -0700 (PDT) Received: from [10.0.1.200] (station.conjury.org [69.12.155.91]) by mta.conjury.org (Postfix) with ESMTP id 73FC3121E14; Sat, 15 Jul 2006 00:14:06 -0700 (PDT) Mime-Version: 1.0 (Apple Message framework v752.2) Content-Transfer-Encoding: quoted-printable Message-Id: <67023D66-DB86-4C47-8F61-EB55A64A2A8B@conjury.org> Content-Type: text/plain; charset=WINDOWS-1252; delsp=yes; format=flowed To: The Caml Trade , OCNAE Help From: j h woodyatt Subject: ANNOUNCE: OCaml NAE releases cf-0.8 and iom-0.3 Date: Sat, 15 Jul 2006 00:14:04 -0700 X-Mailer: Apple Mail (2.752.2) X-Virus-Scanned: by amavisd-new at conjury.org X-Miltered: at concorde with ID 44B895D2.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at nez-perce with ID 44B895D0.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; woodyatt:01 jhw:01 ocaml:01 everyone--:01 ocaml:01 bug:01 red-black:01 binary:01 associative:01 red-black:01 binary:01 catenable:01 deque:01 parsing:01 dfa:01 X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.3 everyone-- The OCaml Network Application Environment (NAE) released updates to =20 the Core Foundation (Cf) and I/O Monad (Iom) library modules today. =20 See the project page on SourceForge.Net for downloads. The update to Cf is mostly bug fixes, but type names were changed =20 almost everywhere to remove confusing "_t" suffixes. Also, the =20 [Cf_gadget] interface was significantly altered. The update to Iom =20 is completely overhauled (again, ). =3D=3D=3D=3D=3D OCaml NAE Core Foundation (cf) library =3D=3D=3D=3D=3D This distribution is the Objective Caml Network Application =20 Environment (NAE) Core Foundation library, which is a collection of miscellaneous =20 extensions to the Objective Caml standard library. Highlighted features include: - Functional streams and stream processors (extended). - Functional bootstrapped skew-binomial heap. - Functional red-black binary tree (associative array). - Functional sets based on red-black binary tree. - Functional real-time catenable deque. - Functional LL(x) parsing using state-exception monad. - Functional lazy deterministic finite automaton (DFA). - Functional lexical analyzer (using lazy DFA and monadic parser). - Functional substring list manipulation (message buffer chains). - Gregorian calendar date manipulation. - Standard time manipulation. - System time in Temps Atomique Internationale (TAI). - Unicode transcoding. - Extended socket interface (supports more options, and UDP w/=20 multicast). - Universal resource identifier (URI) manipulation. - I/O event multiplexing (with Unix.select). Note: see the ISSUES file for a list of open problems in this release. =3D=3D=3D=3D=3D OCaml NAE Reactive I/O Monad (iom) library =3D=3D=3D=3D=3D= This distribution is the Objective Caml Network Application =20 Environment (NAE) Reactive I/O Monad library, which implements I/O monad functions =20 designed to facilitate writing of concurrent, reactive, single-threaded network =20 application services in a functional style. Note: see the ISSUES file for a list of open problems in this release. =3D=3D=3D=3D=3D Required Components =3D=3D=3D=3D=3D This library requires the following external components: - Objective Caml (v3.09 or newer) - Findlib (tested with v1.0.4) - OCaml NAE Core Foundation (cf-0.8) Principal development was on Mac OS X 10.4 w/ XCode 2.3 using GCC =20 4.0. No other platforms were tested for interoperability. =3D=3D=3D=3D=3D Changes in Cf-0.8 =3D=3D=3D=3D=3D Highlights of the changes: + Fix bugs and remove warnings generated when compiling with OCaml =20 3.09 series. + Changed named of types to remove [_t] suffixes (that were never a =20 good idea). + Rewrote the gadget monad again, to permit input backtracking on the =20= flow resulting from evaluation. + Minor changes to event polling to simplify interface. + Modularity improvements to socket API. + Update the hard-coded TAI-UTC leap second archive. + Update copyrights and author email address. + Minor improvements to lazy sequences and functional messages. + Removed obsolete modules. --- [Makefile] Use -warn-error A on debug builds. --- [Cf_deque] Use recursive module instead of magic. Add [to_list], [of_list] =20= and [of_seq] convenience functions. --- [Cf_rbtree] Optimizations for better performance. (Further optimizations =20 are possible. While these modules offer more adaptability than the standard =20 OCaml library data structures, they do not offer superior performance. In =20 some cases, performance is a little better than the standard, but in most =20 cases, the standard library is runs faster. This is particularly true for =20 the binary set operator functions.) --- [Cf_ip4_addr,Cf_ip6_addr] Fixed an awful bug in the [compare] functions that caused the =20 return value to be mistyped. --- [Cf_tai64] Update the hard-coded TAI-UTC leap second archive. Add a =20 comment describing where to retrieve the data. --- [Cf_scan_parser] Fix brokenness surfaced by OCaml 3.09 series. --- [Cf_gadget] Re-engineered, again. This time, the integrated state is =20 dropped from the monad, and the scheduler is no longer implemented in the =20 imperative style. As a result, evaluating the monad now produces a flow that permits backtracking on the input. --- [Cf_state_gadget] This is the old [Cf_gadget] from version 0.7, with some minor =20 improvements. Use [try... with] to catch only the [Queue.Empty] exceptions =20 raised by the calls to [Queue.take] in the scheduler itself. All other =20 exceptions are passed through the flow produced by [Cf_gadget.eval]. Added [abort] and [wirepair] monads. Simplified by removing =20 [fsimplex] monad, and the [simplex_t] and [duplex_t] types. --- [Cf_machine] Obsolescent. Use the [start] and [next] classes in [Cf_gadget] =20 instead. --- [Cf_message, Cf_seq] Add [to_function] for convenience constructing [Scanf.scanbuf] =20 objects. The indirection is required to keep [Scanf] from having to be =20 loaded if it isn't used. --- [Cf_journal] Add [`Notice] event level, and associated method in [agent] =20 class. Cleared up some ambiguous language in the documentation. --- [Cf_nameinfo] Interface was busted for all queries except with the default hints. Refined interface to support narrowed queries. --- [Cf_poll] Unified ['a state_t] and ['a file_state_t] into a single =20 concrete variant type and removed the polymorphism on the state variant in all =20 the derived event classes. Event classes are now parameterized by event =20 type alone. Changed [time] class to be a repeating interval timer event. Fixed [idle] so that events that reload themselves are not =20 serviced until the next cycle. --- [Cf_ipX_proto, Cf_xxx_socket] Moved the definitions of the protocol modules into the =20 [Cf_ipX_proto] modules. This will allow [Iom] to link with the core socket API =20= without also linking in all the convenience classes for synchronous I/O. --- [Cf_lexer] Obsolete, therefore removed. --- Changed names of types to remove [_t] suffixes. Module Type names changed ------ ------------------ [Cf_journal] [invalid_t], [fail_t], [error_t], [warn_t], =20 [info_t], [debug_t], [basic_t], [enable_t], [level_t] [Cf_seq] [cell_t] [Cf_flow] [cell_t] [Cf_gadget_t] [work_t], [gate_t], [wire_t], [guard_t] [Cf_lex] [counter_t] [Cf_socket] [socktype_t], [domain_t], [protocol_t], =20 [sockaddr_t], [sockopt_t], [tag_t], [address_t], [msg_flag_t] [Cf_sock_common] [address_t] [Cf_ip4_addr] [network_t] [Cf_ip4_proto] [tag_t], [address_t] [Cf_ip6_proto] [tag_t], [address_t], [mreq_t] [Cf_uri] [host_t], [server_t], [authority_t], =20 [segment_t], [abs_path_v], [rel_path_v], [path_t], =20 [absolute_t], [relative_t], [reference_t] [abs_special_t], [abs_special_hier_t] --- [t_cf] Test Cf_scan_parser.scanfx "%!". =3D=3D=3D=3D=3D Changes in Iom-0.3 =3D=3D=3D=3D=3D This release is yet another major overhaul. The programming =20 interfaces are all new again and coded from scratch-- this time with more extensive, =20= but still far from exhaustive, testing and regression. Previous release were rough drafts, and this new one is every bit as =20 much of a rough draft as those were, but I feel more confident than before that =20= no major overhauls of this design will be required. Minor design flaws may =20 require corrections, and bugs are very likely to be exposed over time with =20 usage, but future changes in the 0.xxx version sequence should be incremental, =20 rather than total. All along, I have been aiming for a framework that appears to be as =20 adaptable as the venerable STREAMS framework from Unix SVR4. With this =20 release, I feel like I have finally succeeded in that effort. Only time will tell, =20 however, if I am right. Highlights of the new design: + Uses new stateless [Cf_gadget] module (from Cf-0.8) with state classes instead of the old stateful [Cf_gadget] (from Cf-0.7). + Conventions established for multiplexing communication between =20 gadgets on multiple wires, i.e. a [jack] is used for sending control and =20 receiving notification, and a [plug] is used for receiving control and sending notification. + Support for Unix pipes. + Redesigned interface to TCP streams. + Generalized support for simplex and duplex octet stream processsing =20= layers, e.g. framing discipline, packet multiplexing, etc. See t/t-relay.ml for an undocument example of how to use the new Iom =20 modules. =97 j h woodyatt san francisco, california