From: james woodyatt <jhw@wetware.com>
To: The Caml Trade <caml-list@inria.fr>,
OCNAE Help <ocnae-help@lists.sourceforge.net>
Subject: ANNOUNCE: OCaml NAE releases Cf-0.6
Date: Wed, 1 Jun 2005 21:28:29 -0700 [thread overview]
Message-ID: <7165ecfc8178b3091aee728db7083011@wetware.com> (raw)
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.
reply other threads:[~2005-06-02 4:28 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7165ecfc8178b3091aee728db7083011@wetware.com \
--to=jhw@wetware.com \
--cc=caml-list@inria.fr \
--cc=ocnae-help@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox