Version française
Home     About     Download     Resources     Contact us    
Browse thread
ANNOUNCE: OCaml NAE releases Cf-0.6
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: james woodyatt <jhw@w...>
Subject: ANNOUNCE: OCaml NAE releases Cf-0.6
everyone--

Today, my OCaml Network Application Environment (NAE) project is 
releasing another maintenance update of its core foundation library.  
As the 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:

         <http://sf.net/projects/ocnae/>

The Cf library was formerly known as the Pagoda Core Foundation, but it 
was never connected with the Pagoda project on SourceForge and should 
not be confused with it.  An excerpt of the README file and the 
complete CHANGES record for this release are below.

===== OCaml NAE Core Foundation (cf) library =====

This distribution is the Objective Caml Network Application Environment 
(NAE)
Core Foundation library, which is a collection of miscellaneous 
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/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.

===== Required Components =====

This library requires the following external components:

- Objective Caml (v3.08.3 or newer)
- Findlib (tested with v0.8.1 and v1.0.4)

Principal development was on Mac OS X 10.3.  The final version of this
library also compiled successfully and passed all self-tests without 
warnings
on Suse Linux 9.0 for x86-32.  Other platforms with POSIX-like 
environments
should require only a minimal porting effort.

One major open issue: the extended socket interface is broken under 
WIN32.
(The author invites help porting the library to other environments.)

===== Version 0.6 =====

Highlights of the changes:

+ More bugs fixed (some critical).

--- [Cf_rbtree]
     Fix bug in [Map.insert] that failed to replace nodes when the key 
specifies
     a node that is already in the map.  (Thanks to Craig Falls, once 
again, for
     finding this bug.)

--- [Cf_dfa]
     Improved lazy DFA module with a better functorial interface, to 
allow for
     more efficient symbol maps (to support, e.g. wide character lexers) 
and to
     decouple the symbol type from the cursor type, so that Cf_parser.X 
can be
     used easily in place of Cf_parser.

--- [Cf_dfa, Cf_lexer]
     Fixed the documentation for the [( $@ )] operator to reflect the 
actual
     behavior.  When the action parser does not accept the recognized 
sequence,
     then no other rule is selected and no other action functions are 
executed.

--- [Cf_lexer]
     Updated to use the new [Cf_dfa] interface, though it is now 
deprecated in
     favor of the new, improved [Cf_lex] module (see below).

--- [Cf_uri]
     Updated to use the new [Cf_lex] in place of the deprecated 
[Cf_lexer].

--- [various .c files]
     Rename custom data tags from 'pagoda' to 'ocnae'.

+ New functions.

--- [Cf_rbtree, Cf_set, Cf_map]
     Add [of_list_incr], [of_list_decr], [of_seq_incr] and 
[of_seq_decr], which
     are optimized for lists and sequences known to be in increasing or
     decreasing order.

     These functions were derived from code contributed by Brian Hurt 
(thanks!)
     and implement a variant on Hinze's algorithm:
         <http://citeseer.ist.psu.edu/hinze99constructing.html>

--- [Cf_set]
     Add [size] function.

--- [Cf_seq]
     Add [nil] value.
     Add [flatten] function.
     Requires Ocaml-3.08 now.

--- [Cf_flow]
     Add [commute_string] function.

--- [Cf_parser]
     Add [of_extended] and [to_extended] functions.
     Add [req] parser, an efficient shortcut for [alt (p :: err f :: 
[])].
     Add [Error] exception for generic unparameterized errors.
     Add [altz] parser for match from a sequence (instead of a list) of 
choices.

--- [Cf_scan_parser]
     Change [scanf] to return an ordinary Cf_parser.t function.
     Add [scanfx] to return a Cf_parser.X.t function.

--- [Cf_regex]
     New module for regular expression parsing, matching and search.

--- [Cf_lex]
     A new and improved lexical analysis module, with an interface 
derived from
     the now deprecated [Cf_lexer].  It offers a more flexible interface 
to the
     underlying [Cf_dfa] module, and its [( !~ )] and [( !$ )] operators 
parse
     their string arguments as regular subexpressions with the format 
defined in
     the new [Cf_regex] module.

--- [README]
     Fixed an embarrassing word-choice bug, i.e. principle vs. principal.


-- 
j h woodyatt <jhw@wetware.com>
markets are only free to the people who own them.