Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Caml-list] ANNOUNCE: OCaml NAE releases cf-0.8 and iom-0.3

3 views
Skip to first unread message

j h woodyatt

unread,
Jul 15, 2006, 3:16:55 AM7/15/06
to The Caml Trade, OCNAE Help
everyone--

The OCaml Network Application Environment (NAE) released updates to
the Core Foundation (Cf) and I/O Monad (Iom) library modules today.
See the project page on SourceForge.Net for downloads.

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

The update to Cf is mostly bug fixes, but type names were changed
almost everywhere to remove confusing "_t" suffixes. Also, the
[Cf_gadget] interface was significantly altered. The update to Iom
is completely overhauled (again, <sigh/>).

===== 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.

===== OCaml NAE Reactive I/O Monad (iom) library =====


This distribution is the Objective Caml Network Application
Environment (NAE)
Reactive I/O Monad library, which implements I/O monad functions
designed to
facilitate writing of concurrent, reactive, single-threaded network
application
services in a functional style.

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.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
4.0. No
other platforms were tested for interoperability.

===== Changes in Cf-0.8 =====

Highlights of the changes:

+ Fix bugs and remove warnings generated when compiling with OCaml
3.09 series.
+ Changed named of types to remove [_t] suffixes (that were never a
good idea).
+ Rewrote the gadget monad again, to permit input backtracking on the

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]

and
[of_seq] convenience functions.

--- [Cf_rbtree]
Optimizations for better performance. (Further optimizations
are possible.
While these modules offer more adaptability than the standard
OCaml library
data structures, they do not offer superior performance. In
some cases,
performance is a little better than the standard, but in most
cases, the
standard library is runs faster. This is particularly true for
the binary
set operator functions.)

--- [Cf_ip4_addr,Cf_ip6_addr]
Fixed an awful bug in the [compare] functions that caused the
return value
to be mistyped.

--- [Cf_tai64]
Update the hard-coded TAI-UTC leap second archive. Add a
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
dropped from the
monad, and the scheduler is no longer implemented in the
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
improvements.

Use [try... with] to catch only the [Queue.Empty] exceptions
raised by the
calls to [Queue.take] in the scheduler itself. All other
exceptions are
passed through the flow produced by [Cf_gadget.eval].

Added [abort] and [wirepair] monads. Simplified by removing
[fsimplex]
monad, and the [simplex_t] and [duplex_t] types.

--- [Cf_machine]
Obsolescent. Use the [start] and [next] classes in [Cf_gadget]
instead.

--- [Cf_message, Cf_seq]
Add [to_function] for convenience constructing [Scanf.scanbuf]
objects.
The indirection is required to keep [Scanf] from having to be
loaded if it
isn't used.

--- [Cf_journal]
Add [`Notice] event level, and associated method in [agent]
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
concrete variant
type and removed the polymorphism on the state variant in all
the derived
event classes. Event classes are now parameterized by event
type alone.

Changed [time] class to be a repeating interval timer event.

Fixed [idle] so that events that reload themselves are not
serviced until
the next cycle.

--- [Cf_ipX_proto, Cf_xxx_socket]
Moved the definitions of the protocol modules into the
[Cf_ipX_proto]
modules. This will allow [Iom] to link with the core socket API

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],
[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],
[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],
[segment_t],
[abs_path_v], [rel_path_v], [path_t],
[absolute_t],
[relative_t], [reference_t] [abs_special_t],
[abs_special_hier_t]

--- [t_cf]
Test Cf_scan_parser.scanfx "%!".

===== Changes in Iom-0.3 =====

This release is yet another major overhaul. The programming
interfaces are
all new again and coded from scratch-- this time with more extensive,

but still
far from exhaustive, testing and regression.

Previous release were rough drafts, and this new one is every bit as
much of a
rough draft as those were, but I feel more confident than before that

no major
overhauls of this design will be required. Minor design flaws may
require
corrections, and bugs are very likely to be exposed over time with
usage, but
future changes in the 0.xxx version sequence should be incremental,
rather than
total.

All along, I have been aiming for a framework that appears to be as
adaptable
as the venerable STREAMS framework from Unix SVR4. With this
release, I feel
like I have finally succeeded in that effort. Only time will tell,
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
gadgets on
multiple wires, i.e. a [jack] is used for sending control and
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

layers,
e.g. framing discipline, packet multiplexing, etc.

See t/t-relay.ml for an undocument example of how to use the new Iom
modules.



j h woodyatt <j...@conjury.org>
san francisco, california

_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

0 new messages