2.1.0 (2012-02-24)

We do not traverse the HTML tree anymore for retrieving links
and putting events handlers, it use querySelectorAll instead.
(with a fallback for older browsers)

We do not send a sparse tree along the page anymore.

It is faster and more resilient to ugly browser plugins

Add css loading optimisations: It fetch the css included
using @include with XHR before changing page and construct only
one concatenated css. It avoids page blinking when the css change
and is faster (browsers tend to render the page once per css).

Unwrapping hand rewritten in js.

And a lot of other optimisations.

Rework of unique nodes:

Introduce new lightweight 'unique' node of scope request,
a.k.a. DOM nodes: use it through HTML5.DOM.{div,...} or its alias
HTML5.{div,...}.

To create unique node of scope application, the function
'HTML5.M.unique ?copy' has been renamed 'HTML5.create_global_elt
?id'

Abstract id for application node are created with
"HTML.new_global_elt_id"

Node representation now differs between the client and the
server. They are unwrapped on the client to simplify the XML
representation: "unique" node that have already a "Javascript DOM
representation" only contains a reference to the DOM
representation.

Server API Changes:

Add Eliom_state.get_*_session_group_size to know the number of
session in a session group

in forms declared outside of the sp's scope, hrefs were incorrect:
url calculation is now done for each request

the function Eliom_client.caml_call_service was broken with some kind
of services

application cookies are now always sent

fix incorrect sharing of type variables in the syntax extension (thanks to
William Le Ferrand)

404 and 403 errors are not dropped by applications anymore (This fix is
partial: when the page content is application content, this still does not
work when an exception handler returns something else)

Eliom: new option to keep GET non-attached parameters or not when
doing a POST form towards a non-attached coservice.

Eliom: bugfix path of session cookies

Eliom: bugfix POST non-attached coservices called from a page with
non-attached GET parameters were not found.

Lwt: now catching exceptions raised after timeouts

Cgimod: bufixes in path handling

Web server: bugfix - some files were not closed

0.99.4 (2007-11-21)

Ocsigen: Changes in the extension mechanism. The extensions are
not tried in the order in which they are loaded any more, but in
the order in which the options are specified for each site in the
configuration file.

Ocsigen: Bugfix in preemptive.ml when lots of simultaneous
connections

Ocsigen: Improvements in the extension mechanism

Ocsigen: New file extensiontemplate.ml: an example explaining how
to write your own extensions

Ocsigen: Bugfix - fixing limitation of simultaneous connections

Eliom: Bugfix - type of all_suffix_string was wrong in
eliom.mli.

Eliom: GET Services do not answer any more to POST requests
without parameters.

0.99.1 (2007-05-15)

Eliom: Now possible to set an exception handler for the whole site
to personalize error pages (404, 500, etc.)

Eliom: Now possible to register main services after initialization

Eliom: Unifying register and register_public. Use the
optional ~sp parameter to register during session.

Eliom: Idem for all functions ..._during_init and
..._during_session

Eliom: Functions to remove data from tables

Ocsigen: Debug mode: the exception is printed on the error page

Ocsigen: Bugfix in Preemptive.detach when used with
Lwt_unix.run

Ocsigen: Bugfix - launching ocsidbm for MacOS

Eliom: Bugfix - GC of sessions and session data

Eliom: Bugfix - GET actions were not working properly

0.99.0 (2007-05-05)

EXPERIMENTAL: Native code support. It is now possible to use
Ocsigen in native code. BUT: to use that, you need a modified
version of OCaml, that allows dynlinking of native code modules
(natdynlink branch in OCaml's CVS, by Alain Frisch).

OCaml 3.10 support (syntax extension with new Camlp4)

The functor Ocsigen.Make (add new types of pages for Ocsigenmod)
is now divided into two functors, one for "register" functions,
and one for forms and links (if needed).

New module for dynamic page creation called Eliom. Ocsigenmod is
now deprecated but is still in the distribution. Eliom is based on
Ocsigenmod.

Eliom: replacing auxiliary services by coservices. Coservices may
have GET or (and) POST state parameter.

Eliom: adding notion of non-attached coservices. They can take GET
or POST parameters.

Eliom: Creation of a new module Actions. It is possible to
register actions on main services, coservices (attached or not).

Ocsigen: EXPERIMENTAL It is now possible to reload the modules
without stoping the server.

Staticmod: Rewriting of URLs using regular expressions.

0.6.0 (2007-03-14)

configure script

<select> in forms, by Stéphane Dalmas

EXPERIMENTAL: The Web server is now extensible. It means that you
can add modules (like Apache modules) for generating pages,
filters of requests, extensions of config files. For now there are
two modules, one for static pages, and one for dynamic pages. The
only changes for users is that they need to dynlink staticmod.cmo
and ocsigenmod.cma from the configuration file. The syntax of
config file for modules and staticdir also changed.

It is now possible to specify the encoding of characters for each
sub-site.

Now usable with Ocamlnet 2.2 or 1.1.2.

EXPERIMENTAL: If OCamlDuce is installed on your system, you can
now use it to do the type-checking of your pages (see the
documentation). Warning: This is broken with OCamlDuce 3.09.2
patch level 2. You need at least OCamlDuce 3.09.3 patch level 1.

Removing Ocsimore from the default distribution. That version of
Ocsimore is not supported anymore. Ocsimore has been rewritten
from scratch by Piero Furiesi.

0.5.1 (2006-12-14)

Bugfix Konqueror: Multipart forms with now work correctly with
Konqueror

Bugfix Internet Explorer: getting around a bug of Internet
Explorer while displaying page

0.5.0 (2006-11-23)

Multiple servers: you can now define several servers in the config
file.

Virtual hosts: filtering on hostnames/ports (with wildcards)

Asynchronous file upload with multipart support

Large file transfer improved.

MIME types are now parsed from a file

Changes in the syntax of config file

Accessors for server parameters. Use (get_user_agent sp)
instead of sp.user_agent.

Page generation is now using Lwt cooperative threads, to
make it possible the generation of several pages at the same
time. Practically, add Lwt.return before the page you want
to send, and use cooperative input/output functions.

Typing errors of parameters are now catchable.

static_dir is now a function

Most of global references have been removed. You now need to give
sp as parameter to register_for_session, static_dir,
close_session, etc.

Links and forms now take server_params instead of
current_url (sp is shorter than sp.current_url)

EXPERIMENTAL: The Ocsigen module now contains a functor
Make to allows the use of several ways of generating
XHTML. The default way (using XHTML.M or the syntax
extension) can be used by doing open Ocsigen.Xhtml. There is
also an untyped xhtml generation module called Ocsigen.Text.

EXPERIMENTAL: extension of forms.

Reorganisation of the code

Bugfixes in makefiles

Bugfix: escaping of strings in xhtml with syntax extension (thanks
to David Mentre)

0.4.0 (2006-06-06)

Full reimplementation of the core using Generalized Algebraic Data
Types,

_int, _string, etc. are now called int,
string, etc.

The type _http_params is now called server_params,

Services functions now all take 3 parameters, one for server
parameters, one for GET parameters, and one for POST
parameters. Note that ** is used to create pairs and not
tuples.

The a and post_form functions now take a fix number of
parameters, correponding to GET parameters.

URLs are now called services,

state URLs are now called auxiliary services,

register_post_url does not exist anymore. use
register_service instead (idem for all other
register_post_* functions).

Changes for prefix URLs

Small changes for actions

EXPERIMENTAL: sums, bool and list types for services and forms

small bugfixes

0.3.27 (2006-04-27)

Change the way to get server parameters

0.3.26

Load unsafe modules

Other small changes

0.3.25-2 (2006-02-24)

Small bugfix for 64 bits processors

bugfix for static files

action_link is now called action_a

0.3.24 (2006-02-07)

More documentation

Change types internal_url and external_service to use
polymorphic variants