----------------------------------------------------------------------
Changes in 1.1
----------------------------------------------------------------------

Bug fixes:

- Netmime.write_mime_message: The [crlf] argument is correctly passed
  to recursive invocations of this function. One can now print 
  multi-part messages with crlf:false.

- PCRE: Newer versions of the library raise Not_found instead of
  returning "" when get_substring does not have a matching string.
  This turned out to be a problem in Netencoding.Html. It is now
  fixed.

- FastCGI: In previous versions it was not possible to POST larger
  data blocks. This is now fixed.

Addition of smtp:

- New library component smtp, a simple SMTP client protocol processor.
  (A contribution by Pierre Habouzit.)

Addition of nethttpd:

- The library nethttpd implements a full-fledged HTTP server.
  (This work was possible because Baretta s.r.l. sponsored it.
  Thank you, Alex.)

- New module Nethttp in netstrings for basic HTTP types and
  parsing/printing. A number of types have been moved from
  Netcgi_types and Netcgi_env to this module. (But the types
  are still also defined in their old locations.)

- Extensions of cgi_environment: Methods cgi_properties, cgi_request_uri,
  set_status, and log_error.

- Note that nethttpd is licensed under the terms of the GPL, while
  the rest of the library is still under the libpng/zlib license.
  So we have now a split license.

----------------------------------------------------------------------
Changes in 1.0
----------------------------------------------------------------------

Only bug fixes and improvements to ease debugging of problems:

Mail infrastructure:
- One can now select a single LF as line terminator to write
  mail messages. This is the default when Netsendmail.sendmail
  pipes messages to the (external) MTA.

FastCGI:
- Improved exception handling. Low-level errors are signaled by the
  new FCGI_Error exception.

CGI:
- Many exceptions explain in more detail what is going wrong.

----------------------------------------------------------------------
Changes in 0.98.1
----------------------------------------------------------------------

Two bug fixes:

- Improved fastcgi compatibility, works now also with lighttpd
- Quoting errors in Neturl.

----------------------------------------------------------------------
Changes in 0.98:
----------------------------------------------------------------------

**********************************************************************
* IMPORTANT: There is one API change that is incompatible with       *
* previous versions of ocamlnet.                                     *
**********************************************************************

Incompatible Change: the method "input" of the object channels
signals the end of the channel in a different way. In previous
versions of Ocamlnet, the return value 0 was used. Now the
exception End_of_file is raised. - This change was necessary
to make Ocamlnet compatible with a recent recommendation about
object channels in O'Caml in order to improve inter library
compatibility. - This change may cause that programs or libraries
using ocamlnet fail. The symptom is usually that the running
program stops with the uncaught exception "End_of_file". The
fix is to catch this exception when the "input" method is
called, e.g.

  try
    ch # input s k l
  with
    End_of_file ->
      (* Here put the action for end of file, e.g. return 0 *)
      0

It is known that the PXP library is affected by this problem:
Versions up to 1.1.6 and up to 1.1.94.2.

Further changes:

The legacy Cgi module is no longer built by default. One can still
create it by -enable-compatcgi.

Bugfixes in Netconversion's cursor implementation. It is now better
specified, and the corner cases are handled in a better way.

Bugfix in Mimestring.write_value: Folding of long encoded words is
now correct.

Bugfix in Netencoding.QuotedPrintable: Soft line breaks are added
when lines would become too long otherwise. Uses CRLF as line
separator in output now.

Bugfix in Nethtml: In some rare cases, end tags were handled
incorrectly.

Addition: In Netchannels, there are now delegation classes. Useful
if one wants only to redefine individual methods, and not whole
classes.

Addition: Netchannels.lift_in and lift_out is a simplified interface
to lift a class from raw_in/out_channel to in/out_obj_channel.

Improvement: Netmime.basic_mime_header avoids unnecessary modifications
of the order of existing header fields. It is also faster.

Additions: Mimestring.split_mime_type, split_uri.
Netbuffer.add_char, insert_string, insert_sub_string, insert_char.

Addition: Netulex is a support module for ulex

Improvement: For bytecode, ocamlnet includes now "accelerators",
i.e. C implementations of some time-intensive auxiliary functions.
Currently, the character set conversions from ISO-8859-1 and from
UTF-8 are accelerated.

Enhanced Netsendmail module: It is now possible to create much
more complicated mails, e.g. multipart/related mails.

Improvements in Neturl: New function parse_url automatically selects
the URL syntax. Support for a lot of new URL schemes. Enhanced
URL syntax: Support for userparam, and the prevention of relative
URLs.

Added charset CP-1047 (= Latin1 as EBCDIC).

Added ocamldoc to module interfaces, including a lot of tutorials.

----------------------------------------------------------------------
Changes in 0.97.1:
----------------------------------------------------------------------

A single bugfix: netmappings_min.{cmx,o} are installed.

----------------------------------------------------------------------
Changes in 0.97:
----------------------------------------------------------------------

This is a bugfix release. Ocamlnet can now be built when only
vmthreads are supported.

Furthermore, there is experimental support for fastcgi (contributed
by Eric Stokes).

----------------------------------------------------------------------
Changes in 0.96:
----------------------------------------------------------------------

Netconversion: A lot of changes, more or less I have rewritten this
module. First, the new module is _much_ faster, you will really
notice it. Second, there are a number of new features:

- There are now cursors. Cursors are pointers into encoded strings
  that can be moved by multiples of characters (not bytes).

- There are a number of string functions that are implemented on
  top of cursors. For example: ustring_length counts the characters
  in a string; ustring_sub extracts a substring.

- The Japanese encoding EUC-JP is fully supported.

- The conversion tables are now loaded at runtime. Optionally, the
  old method of linking them into the executable is still available.

----------------------------------------------------------------------
Changes in 0.95:
----------------------------------------------------------------------

Several bugfixes in the jserv modules. There is now a jserv
property "ocamlnet.https" to set that the server assumes 
the HTTPS protocol. New jserv config options js_idle_worker
and js_idle_master to perform idle callbacks when nothing is to
do.

----------------------------------------------------------------------
Changes in 0.94:
----------------------------------------------------------------------

There is now a preliminary manual (doc/intro/html).

Netchannels: raw_input_channel/raw_output_channel stuff has been
improved.

Netstreams: class input_stream: The ~len argument is interpreted
correctly.

Netconversion: Minor fixes

Netcgi: Support for the HEAD method. Workaround for bug in IE when
the cookie value is the empty string.

----------------------------------------------------------------------
Changes between 0.92 and 0.93:
----------------------------------------------------------------------

Netbuffer: Large buffers are better supported, especially on 32 bit
platforms.

Netconversion/Netmappings_*: Added ISO-8859-16. There is now an intermediate
format for netmappings that does not depend on the current O'Caml version.
There is now a pipeline class for character conversion. `Enc_subset is
new.

Netencoding: Html.encode and Html.decode are now available for other encodings
than ISO-8859-1.

Nethtml: encode and decode are now available for other encodings
than ISO-8859-1. The HTML parser can cope with such other encodings,
too, provided that they are ASCII-compatible.

Netmime: The ~strip argument is available again.

Netstream: The interpretation of the ~len argument of the class input_stream
has been fixed.

Netstring_pcre: Fixed bounded_split and split.

Netcgi_jserv: Works now under mod_jk, too. Support for the `Process_pool
model (pool of preforked processes)
