ocnae-help Mailing List for OCaml Network Application Environment
Status: Pre-Alpha
Brought to you by:
jhwoodyatt
You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(1) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: james w. <jh...@we...> - 2005-07-26 07:38:39
|
On 26 Jul 2005, at 00:25, james woodyatt wrote: > > 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." Oops. Only one of those libraries, cf-0.7, is really in a "maintenance" mode. The truth is the iom-0.2 library is still pretty experimental, and this release amounted to a major refactoring of the code. My apologies for the mistake. -- j h woodyatt <jh...@we...> that's my village calling... no doubt, they want their idiot back. |
From: james w. <jh...@we...> - 2005-07-26 07:26:17
|
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: <http://sf.net/projects/ocnae/> 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 excerpts of the README files. ===== 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 v1.0.4) Principal development was on Mac OS X 10.3 and Mac OS X 10.4 w/ XCode 2.1 using GCC 4.0. The final version of this library also compiled successfully and passed all self-tests without warnings on Suse Linux 9.2 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.) ===== 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.08.3 or newer) - Findlib (v1.0.4) - OCaml NAE Core Foundation (cf-0.7) Principal development was on Mac OS X 10.3 and Mac OS X 10.4 w/ XCode 2.1 using GCC 4.0. The final version of this library also compiled successfully and passed all self-tests without warnings on Suse Linux 9.2 for x86-32. Other platforms with POSIX-like environments should require only a minimal porting effort. ===== CHANGES ===== |
From: james w. <jh...@we...> - 2005-06-02 04:28:53
|
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 <jh...@we...> markets are only free to the people who own them. |
From: james w. <jh...@we...> - 2004-12-31 07:59:31
|
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: <http://sf.net/projects/ocnae/> 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 <jh...@we...> |
From: james w. <jh...@we...> - 2004-11-14 08:24:22
|
I fixed the very bad stack leak in the Cf_gadget scheduler. The top of the CVS tree has the fix now, and I'll be rolling out a new release with it sometime in the next week. The behavior of the Cf-0.4 gadget scheduler is that all the work between any particular state of the underlying Cf_flow object is stacked up in the evaluation of a single monad that folds the current state into the sequence of bindings without any tail-recursion optimization. It's highly inefficient, actually. In the forthcoming Cf-0.5 gadget scheduler, I've rewritten the entire Cf_gadget module to not fold the Cf_flow object into the low-level monad functions. Instead, the elements of the flow are pipelined through a series of Queues in the scheduling kernel. The new Cf_gadget module has exactly the same signature as the old one. It's just faster and doesn't eat the stack at such a prodigious rate. -- j h woodyatt <jh...@we...> |