1. james woodyatt
  2. oni

Commits

james woodyatt  committed 7438be4

Move the CHANGES file into the etc folder.

  • Participants
  • Parent commits 7727b94
  • Branches default

Comments (0)

Files changed (9)

File beep/CHANGES

-===== Pagoda Blocks Extensible Exchange Core (mime) library =====
-
-This file describes in technical detail the functional differences between
-released versions of the library.
-
-
-===== Version 0.0 =====
-
-This was the initial release of the library.  Major and minor version numbers
-count upward from zero.  Major version numbers with a minor version number of
-zero indicate the first release in a "stable" branch.  Non-zero minor version
-numbers indicate "development" branches converging on the next stable release.
-Patches to stable releases are numbered with a third level of numbering.
-
-
---j h woodyatt <jhw@conjury.org>

File cf/CHANGES

-===== OCaml NAE Core Foundation (cf) library =====
-
-This file describes in technical detail the functional differences between
-released versions of the library.
-
-
-===== Version 0.11 =====
-
-Highlights of the changes:
-
-+ Improvements to [Cf_set], [Cf_cmonad] and [Cf_scmonad].
-
---- [Cf_scmonad]
-    Added the [bridge] and [eval] functions.
-    Changed [lift] to [liftC] and added [liftS].
-    Cleaned up the documentation.
-
---- [Cf_cmonad]
-    Added [bridge] function.
-    Cleanup the documentation.
-
---- [Cf_set]
-    Added [disjoint] function.  (Implemented in [Cf_rbtree]).
-
-===== Version 0.10 =====
-
-Highlights of the changes:
-
-+ Compatibility with FreeBSD 6.2.
-+ Compatibility with OCaml-3.10.x
-+ Deprecated all the network extension modules, which are now delivered in the
-  Nx library.  If you still need them Cf versions, you can restore them by a
-  simple edit of the Makefile.
-+ Changed type of [Cf_gadget.null] to a monad.  Added some additional monads.
-+ Renamed [jack] and [plug] to [fix] and [pad], for cosmetic reasons.
-
---- [Cf_gadget]
-    The [null] object is now a monad that producs a null wire.  New [connect]
-    and [connectpair] functions are generalizations of the [simplex] and
-    [duplex] functions.  Renamed [jack] to [fix].  Renamed [plug] to [pad].
-    Renamed [gates] to [gate].
-
-===== Version 0.9 =====
-
-Highlights of the changes:
-
-+ Compatibility with OCaml-3.10+beta.
-+ Fix bug in Cf_rbtree.nearest_(incr|decr) functions.
-+ Minor performance improvement.
-+ Minor bugs in tests fixed.
-+ Noted that socket extensions and event multiplexing are moving to the
-  forthcoming Nx library.
-
---- [Cf_scan_parser]
-    Upgrade to OCaml-3.10.0.
-
---- [Cf_sbheap]
-    Improve performance of [head].
-
---- [Cf_rbtree]
-    Fix bug in [Cf_rbtree.nearest_(incr|decr)] causing the whole tree to be
-    returned if there is an exact match for the key.
-
---- [t_cf]
-    Fix T11 and T12 to orderly close the transmit before receiving.
-    Fix typographical errors in diagnostic messages.
-    Add T18 for testing [Cf_rbtree.nearest_(incr|decr)].
-
-===== Version 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 "%!".
-
-===== Version 0.7 =====
-
-Highlights of the changes:
-
-+ Some very minor bugs fixed.
-+ Minor performance and improvements.
-+ Additions to [Cf_parser] interface.
-+ Minor modifications to [Cf_parser] and [Cf_lex] interfaces.
-+ New module [Cf_machine]: object-oriented layer over [Cf_gadget].
-+ Removed trailing underscores from private methods defined in class types
-  for the purpose of establishing a convention.
-
---- [Cf_seq]
-    Added [sentinel].  Added [?x] optional argument to [limit].
-
---- [Cf_rbtree]
-    Fixed error in [member] that could produce false negatives.
-
---- [Cf_parser]
-    Fixed [to_extended] to work given the new physical equality rules enforced
-    by Ocaml-3.08.X.  Still need to write a test case for this.
-    Added [Error] exception and two new functions, [err] and [req], to the [X]
-    module.  They do the expected thing.
-    Changed the [err f] function to [err ?f ()] instead.
-    Fix [lit] and [X.lit] to not evaluate past the end of the literal.
-
---- [Cf_scan_parser]
-    Removed unused [this_] member from [scanner] class object.
-
---- [Cf_lex]
-    Change name of [line_cursor] class to [cursor] for simplicity.
-
---- [Cf_message]
-    Fixed [normalize] so that it works even when compiled with -unsafe.
-    Improved performance of [normalize] by verifying the list before filtering.
-    Removed [to_seq2] because it's really not necessary.  Added [?x] optional
-    argument to [to_seq] and [limit].
-
---- [Cf_flow,Cf_rbtree,Cf_parser]
-    Use Cf_seq.nil in place of Lazy.lazy_from_val Cf_seq.Z.
-
---- [Cf_machine]
-    New module.  Object-oriented framework for [Cf_gadget] state machines.
-
---- [Cf_poll]
-    Allow subclasses [Cf_poll.file] to have more states.  Changed the type
-    parameter of the [event] class to 'state, rather than 'event.  Added the
-    rwx_t convenience type, i.e. type rwx_t = [ `R | `W | `X ]
-
---- [Cf_socket]
-    Add [`SOCK_SEQPACKET] to the allowed socket types in the [listen] function.
-    There is no support for that socket type yet, but we must make room for it.
-    When [setsockopt] fails, raise Unix_error with the right function name.
-
---- [Cf_sock_common]
-    Make [setsockopt] and [getsockopt] method explicitly polymorphic.
-
---- [Cf_sock_dgram, Cf_sock_stream] Explicitly specify socket type tags.
-
---- [cf_socket_p.c, cf_ip4_proto_p.c, cf_ip6_proto.c] Use socklen_t instead of
-    other types, in order to shut up compiler warnings when using GCC 4.0.
-
-===== 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.
-
-===== 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.
-
-===== Version 0.4 =====
-
-Highlights of the changes:
-
-+ Fix Makefile for architectures that do not support native compilers.
-+ Fix major bug in the [Cf_gadget] scheduler that caused some wires to be
-  prematurely collected without delivering events to their receivers.
-
---- [Cf_gadget]
-    Fix major bug in the scheduler.  Events transmitted on wires that are no
-    longer connected to a receiver are now delivered to any pending guards that
-    were queued before the receiver was collected.  Minor changes to the
-    debugging hints to use Cf_journal.
-
---- [Makefile]
-    Samuel Mimram, the Debain maintainer of this package, says: There are some
-    minor issues with your Makefile concerning non-native archs [...]:
-    - the doc rule should use ocamldoc instead of ocamldoc.opt since it is
-    not available on all archs (or add a optdoc rule);
-    - the install rule should not depend on cf.cmxa and cf.a since they are
-    not necessarly built.
-    Thanks to Mr. Mimram for catching this.
-
-
-===== Version 0.3 =====
-
-Highlights of the changes:
-
-+ Rewrite the scheduler in [Cf_gadget] so that it sucks less wind.  The kernel
-  is now built entirely out of mutable structures, and we got rid of the 'pin'
-  type because we don't represent wires internally as integer keys in a map.
-+ Added [Cf_journal], a foundation for extensible diagnostic event journaling
-  inspired by Log4j from the Apache Foundation.  (Look for a full suite of
-  extensions to be sold separately.)
-+ Removed the [?xf] optional exception function from the [Cf_lexer.create]
-  function.  Use a derived cursor class with an [error] method that can be
-  overridden for this purpose.
-+ Added [Cf_scan_parser], which scans an input sequence using the [Scanf]
-  module in the standard library.
-+ Minor convenience functions added to [Cf_parser].
-+ Other bug fixes.
-
-
---- [Cf_deque]
-    Apply the iterative function in left-to-right order for all the utility
-    functions.
-
---- [Cf_journal]
-    All new functions.
-
---- [Cf_parser]
-    Added the [filter], [map] and [optmap] functions for transforming parser
-    with higher order functions on their output symbols.
-
---- [Cf_scan_parser]
-    New module, allowing the mixing of [Scanf] and [Cf_lexer] in the same
-    parser/lexer system.
-
---- [Cf_dfa, Cf_lexer]
-    Added new ['i cursor] class.  Removed the ['c raise_exn_t] type and the
-    [?xf] optional parameter from the [create] function.
-
---- [Cf_uri]
-    Fixed bug in [refer_to_base] that allowed relative paths to resolve to
-    absolute paths with a [".."] segment at the beginning of the path.  Also,
-    changed to throw [Rel_undefined] instead of [Invalid_argument] (as the
-    documentation specifies).
-    Also, use the new [Cf_lexer.cursor] class, as now required.
-
---- [Cf_gadget]
-    Major modifications for new scheduler.  The [pin_t] type is no longer.
-    Should be more efficient (and less buggy).
-
---- [all *.c files]
-    Stop abusing Field() as a lvalue in the C primitives.  The GC is reputed
-    to hate that, and while we haven't encountered it in this library, we've
-    seen it in others.  Best to be safe.
-
-    Also: stop using CAMLlocalX() in subblocks of functions.  Just use them
-    at the top of the main function block.  It seems to like that.
-
-===== Version 0.2 =====
-
-Highlights of the changes:
-
-+ Major overhaul of [Cf_rbtree] to address serious performance issues (should
-  improve performance of [Cf_dfa], [Cf_lexer], [Cf_poll] and [Cf_gadget]).
-+ Defined [Cf_set.T] and [Cf_map.T] module types for use in abstracting the
-  underlying algorithm behind sets and maps.
-+ Added [Cf_seq.constrain] (and [Cf_seq.constrain2] for consistency).
-+ Defined [Cf_heap.T] and [Cf_pqueue.T] module types for use in abstracting
-  the use of skew-binomial heaps as either a heap or a priority queue.
-  Reimplemented the interface to [Cf_sbheap] so it is consistent with the
-  new [Cf_rbtree] interface.
-
---- [new files]
-    Added [Cf_heap], [Cf_map], [Cf_pqueue] (and changed the meaning of the
-    [Cf_set] module to be consistent).  These files all contain module types
-    for common data structure algorithms implemented in the {Cf} library.
-    Specific implementations are separated out into other modules.
-
---- [Cf_rbtree]
-    Completely rewritten to address serious performance issues and to combine
-    the interface for both sets and maps.  Use the new [Cf_rbtree.Set(K)] and
-    [Cf_rbtree.Map(K)] functors.  Most functions now offer better performance
-    for smoothly distributed input than do the [Set] and [Map] modules in the
-    Ocaml standard library.  (Note: the [subset] function has been fixed so
-    that it considers its arguments in the same order as the standard library.)
-
---- [Cf_sbheap]
-    Minor modifications to conform to the new [Cf_heap] and [Cf_pqueue] module
-    types.  Use the new [Cf_sbheap.Heap(K)] and [Cf_sbheap.PQueue(K)] functors.
-
---- [Cf_ordered]
-    Removed the [KV_Pair_T] module type and its associated functor [KV_Pair],
-    since these types are unecessary.
-
---- [Cf_seq]
-    Added the [constrain] and [constrain2] functions for constraining a
-    sequence to just those elements until the constraining function is false.
-
---- [Cf_dfa Cf_gadget Cf_poll]
-    Modified to use the new [Cf_rbtree] and [Cf_sbheap] interface.
-
---- [t_cf]
-    Added a new test case, that covers [Cf_flow.commute] and a few other
-    things.  (Test coverage is still abyssmally poor, if you ask me.)
-
-===== Version 0.1 =====
-
-Highlights of the changes:
-
-+ Compile and pass self-tests on Suse Linux 9.0.
-+ Unified [sequence] and [accumulate] monad functions in [Cf_seq].
-+ Added [Cf_exnopt] module with a simple convenience type.
-+ New monadic constructors for [Cf_seq] and [Cf_flow] types.
-+ Moderate overhaul of [Cf_gadget] (fix bugs, design problems).
-+ Fix portability bugs in [Cf_socket] and cognates.
-+ Add support for UDP, IP multicast and network interface selection.
-+ Fix bug in [Cf_poll.idle] event polling (and give a timestamp).
-+ Slightly better self-tests for [Cf_socket].
-
---- [Cf_cmonad, Cf_smonad, Cf_scmonad]
-    Removed the [sequence] and [accumulate] functions.  Use the new functions
-    in [Cf_seq] for this.
-
---- [Cf_exnopt]
-    Added to library.  This is a simple sum type useful for defining monads
-    that answer with either a value result or an Ocaml exception.
-
---- [Cf_seq]
-    Added new functions for monadic construction.
-    Use [writeC] to construct a sequence with a continuation monad.
-    Use [writeSC] to construct a sequence with a state-continuation monad.
-    Added new modules, [C] and [SC], containing the [sequence] and [accumulate]
-    functions from [Cf_cmonad] and [Cf_scmonad] respectively.  (The functions
-    from [Cf_smonad] have been removed completely.)
-
---- [Cf_flow]
-    Added new function for monadic construction.
-    Use [readC] and [writeC] to construct a flow with a continuation monad.
-    Use [readSC] and [writeSC] to construct a flow with a state-continuation
-    monad.
-    Evaluating a continuation monad or a state-continuation monad with [evalC]
-    or [evalSC] gives a resulting [('i, 'o) Cf_flow.t] value.
-
---- [Cf_gadget]
-    In the [gate0_t] record, removed the [g_ptr_] field and changed the type
-    of the [g_id_] field from an integer to a [pin_t] value.
-    In the [kernel_t] record, changed the [k_rdyq_] field from a queue of
-    [process0_t] values to a queue of [process0_t Lazy.t] values.
-    Use [Cf_cmonad] by references, instead of by copy and paste.
-    Define new class [Cf_gadget.connection] as the common base class of
-    [Cf_gadget.rx] and [Cf_gadget.tx] to contain the [pin] method and two new
-    methods: [check], which returns [false] if the other end of the connection
-    has been collected by the garbage collector; and [id] which returns a text
-    representation of the pin identifier (suitable for use in debug log
-    messages).
-    Removed [zguard] to replace with new [guard] and [rx] interface.  The new
-    [rx#get] method returns a [guard_t] continuation monad which is evaluated
-    by the new [guard method].  Internally, this is done by redefining [gate_t]
-    as a continuation monad constructing a sequence of [gate0_t] values
-    (parameterized by state).
-    Optimized [tx#put] so that it does not enter the [scheduler_] function.
-    Only [guard] can invoke a full pass through the scheduler now (though the
-    scheduler could still use improvements for efficiency-- see ISSUES).
-    Fixed an efficiency bug in [write] that unnecessarily constructed
-    continuations.
-
---- [Cf_socket]
-    Many platforms do not have a [sa_len] field in [sockaddr], so we now
-    allocate socket address custom blocks with an extra [size_t] field at the
-    beginning to carry the size of the structure.
-    Stop using buffers of [SOCK_MAXADDRLEN] length and use the structure
-    defined in RFC 3493 instead, i.e. [struct sockaddr_storage].
-    Some socket options are not available on all platforms; therefore, allow
-    the [opt_get] and [opt_set] fields in an option structure to be NULL if a
-    platform doesn't support them.  The [getsockopt] and [setsockopt] function
-    raise [Failure] when those socket options are used on those platforms.
-    The [SO_REUSEPORT] and [SO_NOSIGPIPE] options are not available on Linux.
-
---- [Cf_nameinfo]
-    Removed [ni_withscopeid] from list of flags.  This is a Mac OS X extension
-    and I'm not sure how I will support address scoping issues yet.  Maybe it
-    comes back later.
-    Changes to handling of [sockaddr] structures to accommodate new
-    representation required for [Cf_socket] functions.
-    Stop using buffers of [SOCK_MAXADDRLEN] length and use the structure
-    defined in RFC 3493 instead, i.e. [struct sockaddr_storage].
-
---- [Cf_netif]
-    New module.  Provides wrapper around [if_nameindex] and cognates.
-
---- [Cf_ip4_addr, Cf_ip6_addr]
-    Fixed several endianness bugs caused by failure to apply (or misapplication
-    of) [ntohX] and [htonX] macros.
-    Linux does not define [IN_LINKLOCAL], so we define it if it's undefined.
-    Linux also does not define [IN6ADDR_NODELOCAL_ALLNODES_INIT],
-    [IN6ADDR_LINKLOCAL_ALLNODES_INIT] or [IN6ADDR_LINKLOCAL_ALLROUTERS_INIT].
-    Fix error in [cf_ip4_addr_compute_limits].
-
---- [Cf_ip_common, Cf_ip4_proto, Cf_ip6_proto]
-    Add new protocol number for IPv6.
-    Add [TCP_NODELAY] socket option.
-    Add [Cf_ip4_proto.mreq_t] type for [IP_ADD/DROP_MEMBERSHIP] socket options.
-    Add [Cf_ip6_proto.mreq_t] type for [IPV6_JOIN/LEAVE_GROUP] socket options.
-    Add new socket options for IPv4 sockets: IP_TTL, IP_ADD_MEMBERSHIP,
-    IP_DROP_MEMBERSHIP, IP_MULTICAST_IF, IP_MULTICAST_TTL and
-    IP_MULTICAST_LOOP.
-    Add new socket options for IPv6 sockets: IPV6_UNICAST_HOPS, IPV6_V6ONLY,
-    IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP, IPV6_MULTICAST_IF, IPV6_MULTICAST_HOPS,
-    IPV6_MULTICAST_LOOP.
-    Changes to handling of [sockaddr_in] and [sockaddr_in6] structures to
-    accommodate new representation required for [Cf_socket] functions.
-    Added a new primitive function [Cf_ip4_proto.siocgifaddr] that returns the
-    interface address for a named interface.
-
---- [Cf_sock_common]
-    Remove [send] and [recv] private methods from [Cf_sock_common.basic] class.
-
---- [Cf_sock_stream]
-    Change [send] and [recv] methods on [Cf_sock_stream.endpoint] class from
-    virtual override to simple concrete methods.
-    Use an abbreviation module for [Cf_socket] in the implementation.
-
---- [Cf_sock_dgram]
-    New module for SOCK_DGRAM sockets.
-
---- [Cf_udp4_socket, Cf_udp6_socket]
-    New modules for UDP sockets (both IPv4 and IPv6).
-
---- [Cf_poll]
-    Change [p_idle_queue_] field of [Cf_poll.t] record so that the callback
-    function in each entry of the queue takes a [Cf_tai64n.t] timestamp
-    indicating the timestamp when the idle condition arrived.
-    Fix [cycle] so that idle polls are processed even when no other polls
-    are loaded.
-
-
-===== Version 0.0 =====
-
-This was the initial release of the library.  Major and minor version numbers
-count upward from zero.  Major version numbers with a minor version number of
-zero indicate the first release in a "stable" branch.  Non-zero minor version
-numbers indicate "development" branches converging on the next stable release.
-Patches to stable releases are numbered with a third level of numbering.
-
-
---j h woodyatt <jhw@conjury.org>

File ej/CHANGES

-===== Pagoda Simple Authentication and Security Layer Core (sasl) library =====
-
-This file describes in technical detail the functional differences between
-released versions of the library.
-
-
-===== Version 0.0 =====
-
-This was the initial release of the library.  Major and minor version numbers
-count upward from zero.  Major version numbers with a minor version number of
-zero indicate the first release in a "stable" branch.  Non-zero minor version
-numbers indicate "development" branches converging on the next stable release.
-Patches to stable releases are numbered with a third level of numbering.
-
-
---j h woodyatt <jhw@conjury.org>

File etc/CHANGES

View file
+===== CHANGES =====
+
+This file provides some technical discussion of the functional differences
+between released versions of the Oni libraries.
+
+
+==== Version 1.0 ===
+
+This release marks the repackaging of the separately distributed libraries in
+the OCaml Network Application Environment (OCaml NAE) as a single GODI package now simply called Oni.
+
+Highlights of the changes since version 0.10 of the Cf library:
+
++ Improvements to [Cf_set], [Cf_cmonad] and [Cf_scmonad].
+
+--- [Cf_scmonad]
+    Added the [bridge] and [eval] functions.
+    Changed [lift] to [liftC] and added [liftS].
+    Cleaned up the documentation.
+
+--- [Cf_cmonad]
+    Added [bridge] function.
+    Cleanup the documentation.
+
+--- [Cf_set]
+    Added [disjoint] function.  (Implemented in [Cf_rbtree]).
+
+Highlights of the changes since version 0.0 of the Nx library:
+
++ No functional differences.
+
+Highlights of the changes since version 0.4 of the Iom library:
+
++ No functional differences.
+
+
+-- james woodyatt <jhw@conjury.org>

File iom/CHANGES

-===== OCaml NAE Reactive I/O Monad (iom) library =====
-
-This file describes in technical detail the functional differences between
-released versions of the library.
-
-
-===== Version 0.4 =====
-
-This release is a minor overhaul.  The programming interfaces are basically the
-same, and the implementations are only changed in minor ways, but the code is
-now better organized to make room for new features.  This means that a lot of
-names have changed, but the existing functions remain the same.
-
-Highlights of this release:
-
-+ Renamed [plug] to [pad] and [jack] to [com] conventionally throughout.
-+ Migrate to using new "Network Extensions" (Nx) library.
-+ Consolidated Iom_stream.produce and Iom_stream.consume into
-  Iom_layer.transform and swapped the meaning of block/unblock with ready/wait
-  in the tranformer state and its related process gadgets classes.
-+ Merge [`Complete] indication in Iom_reactor with [`Wait].
-+ Move [Iom_sock_stream.T.socket] to [Iom_socket.T.create] and add
-  [Iom_socket.T.createpair].
-
-I don't expect any more major changes to the interface will be necessary.
-
-===== Version 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.
-
-===== Version 0.2 =====
-
-This release is a major refactoring of almost all of the interfaces and
-implementations.  Basically, everything north of the underlying [Cf_gadget]
-wrapper has been designed over from scratch.
-
-The main reason for doing this is to leverage the knowledge gained from other
-experimental projects that used the interfaces defined in the previous release.
-The new interface should offer more opportunities for reuse and be more easily
-adapted for new types of I/O requirements, e.g. UDP sockets, AF_LOCAL sockets,
-multicast, etcetera.
-
-Highlights of refactoring this release:
-
-+ OCNAE Cf-0.7 is now required (for additions to [Cf_gadget] and other things).
-+ Add new module [Iom_machine] to match the [Cf_machine] new with Cf-0.7.
-+ Replace the [Iom_gadget.poll] function with a virtual subclass of
-  [Iom_machine.state].
-+ Redesigned interface to core reactors in [Iom_reactor] module.
-+ New modules [Iom_file] and [Iom_socket] containing virtual classes for state
-  machines that process more generalized I/O events.
-+ Redesigned interface to TCP connection/listening reactors and SOCK_STREAM
-  endpoint reactors.
-
-Additional interfaces for UDP sockets, AF_LOCAL sockets and multicast, etc. are
-deferred until the next minor release at the earliest.
-
-===== 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.
-
-===== Version 0.0 =====
-
-This was the initial release of the library.  Major and minor version numbers
-count upward from zero.  Major version numbers with a minor version number of
-zero indicate the first release in a "stable" branch.  Non-zero minor version
-numbers indicate "development" branches converging on the next stable release.
-Patches to stable releases are numbered with a third level of numbering.
-
-
---j h woodyatt <jhw@conjury.org>
-  san francisco, ca

File mime/CHANGES

-===== Pagoda Multimedia Internet Message Exchange Core (mime) library =====
-
-This file describes in technical detail the functional differences between
-released versions of the library.
-
-
-===== Version 0.0 =====
-
-This was the initial release of the library.  Major and minor version numbers
-count upward from zero.  Major version numbers with a minor version number of
-zero indicate the first release in a "stable" branch.  Non-zero minor version
-numbers indicate "development" branches converging on the next stable release.
-Patches to stable releases are numbered with a third level of numbering.
-
-
---j h woodyatt <jhw@conjury.org>

File nx/CHANGES

-===== OCaml NAE Network Extensions (Nx) library =====
-
-This file describes in technical detail the functional differences between
-released versions of the library.
-
-
-===== Version 0.0 =====
-
-This was the initial release of the library, produced by copying the source
-code from the Cf library and transposing all the names to Nx.
-
-Major and minor version numbers count upward from zero.  Major version numbers
-with a minor version number of zero indicate the first release in a "stable"
-branch.  Non-zero minor version numbers indicate "development" branches
-converging on the next stable release.  Patches to stable releases are numbered
-with a third level of numbering.
-
-
---j h woodyatt <jhw@conjury.org>

File sasl/CHANGES

-===== Pagoda Event Journaling (ej) library =====
-
-This file describes in technical detail the functional differences between
-released versions of the library.
-
-
-===== Version 0.0 =====
-
-This was the initial release of the library.  Major and minor version numbers
-count upward from zero.  Major version numbers with a minor version number of
-zero indicate the first release in a "stable" branch.  Non-zero minor version
-numbers indicate "development" branches converging on the next stable release.
-Patches to stable releases are numbered with a third level of numbering.
-
-
---j h woodyatt <jhw@wetware.com>

File xml/CHANGES

-===== Pagoda XML Parsing and Transformation (xml) library =====
-
-This file describes in technical detail the functional differences between
-released versions of the library.
-
-
-===== Version 0.0 =====
-
-This was the initial release of the library.  Major and minor version numbers
-count upward from zero.  Major version numbers with a minor version number of
-zero indicate the first release in a "stable" branch.  Non-zero minor version
-numbers indicate "development" branches converging on the next stable release.
-Patches to stable releases are numbered with a third level of numbering.
-
-
---j h woodyatt <jhw@conjury.org>