Initial packaging
[pkg-ocaml-eliom.git] / CHANGES
blob848c93c2d5291ea229409e3af19d5cf48ebbe059
1 ===== 2.0.1 (2011-09-28) =====
3  * Bugfixes in eliom appl.:
4  ** Preload css when changing page to avoid a disgraceful "flash" effect
5  ** Use <base href=""> to preserve links in unique node when changing page
6  ** Fragment in URL aren't ignored anymore
7  ** Proper exception handling in eliomc, js_of_eliom, ...
8  ** Display a correct URL after submitting a <form>
10 ===== 2.0 (2011-09-20) =====
12  * Bugfixes:
13  ** Correct handling of HTTP redirections hidden by XHR
14  ** Fix links from http to https on client application
16 ===== 2.0-rc2 (2011-09-06) =====
18  * Feature:
19  ** api history: when the api history is available, application URLs are more
20     readable ( no more #! )
22  * Bugfixes:
23  ** fix browser compatibility: it should work with Firefox ( >= 3.0 ), Chrome
24     ( all recent version we tested ), Safari 5, Opera ( tested 11.51 ), Internet
25     explorer ( 9, ie 8 almost work )
26  ** in forms declared outside of the sp's scope, hrefs were incorrect:
27     url calculation is now done for each request
28  ** the function {{{Eliom_client.caml_call_service}}} was broken with some kind
29     of services
30  ** application cookies are now always sent
31  ** fix incorrect sharing of type variables in the syntax extension (thanks to
32     William Le Ferrand)
33  ** 404 and 403 errors are not dropped by applications anymore ( This fix is
34     partial: when the page content is application content, this still does not
35     work when an exception handler returns something else )
36  ** Fix problems with url generation for non-attached coservices inside an
37     application
38  ** tail recursive marshalling and demarshalling: no more limit on the depth of
39     data sent along the page
40  ** Fix problems with redirection and action with `NoReload exiting the application
41  ** Handle correctly 204 code in application ( do nothing with change page, fail
42     with caml_call_service )
43  ** Fix escape character '>': problem with strings containing "]]>"
45 ===== 2.0-rc1 (2011-07-15) =====
47   * Eliom_client.change_page type now correctly forbid to call it on
48     non-eliom application services
49   * Stateless implementation of comet channels
50   * Scope and state names parameters of functions are now fused in one
51     parameter ( called scope )
52   * Change the type of 'send' functions: forbid use of incompatible output
53     with Eliom_output.Any together.
54   * Change the format of page loaded by an application: all pages are sent
55     in HTML5 format. ( first answers were in HTML5 subsequent were marshalled
56     caml tree )
57   * XML representation is now shared by client and server: conversion to
58     Dom nodes is made by Eliom_client.Html5.of_ functions
59   * Remove the need for an application container: application pages are
60     now classical HTML5 pages.
61   * Add Eliom_pervasives.{HTML5/XML/SVG}.unique function to declare XML node
62     handled "by reference"
63   * Fix ocamldoc generation with Eliom_output
64   * Eliom_appl are now stateless if no data is stored in session
65   * Allow dynamic wrapping with values sent to client with
66     caml services and comet channel
67   * Add Eliom_react.S: server to client React signals
68   * Add lazy site values: lazy evaluated one time per site
69   * Option to compile without preemptive threads
70   * And lots of simplifications and bug fixes
72 ===== 1.91 (2011-04-08) =====
74   * Split the ocsigen package in three : tyxml, ocsigenserver and eliom
75   * Rename into eliom
76   * It's now possible to set a //priority// on services
77     registered on the same path, to choose in which order Eliom will try them.
78   * New implementation of internal application forms with formData
79     when available
80   * New build system for eliom application
81   * No type restriction in value sent from the server to the client
83 ===== 1.90 =====
85   * New module {{{Eliom_client}}}
86     for client/server Eliom programs using js_of_ocaml.
87   * Eliom client: calling a service from client side code.
88   * Eliom: Services taking Caml values as parameters.
89   * Eliom: services sending Caml values.
90   * Eliom: new implementation of forms and links to be compatible with
91     client side programs.
92   * Eliom: sp parameter has been removed (now using Lwt's thread storage)
93   * Eliom: {{{Eliom_predefmod}}} renamed {{{Eliom_output}}}
94   * Eliom: New module {{{Eliom_output.Customize}}} to create your
95     own register functions from another registration module
96   * Eliom: Module {{{Eliom_sessions}}} replaced by {{{Eliom_state}}},
97     {{{Eliom_request_info}}} and {{{Eliom_config}}}.
98   * Eliom: new implementation of user cookies.
99   * Eliom: Client process cookies.
100     Like usual browser cookies but for one client side process.
101   * Eliom: Client process server side state data.
102     Like session data but for one client side process.
103   * Eliom: Client process  session services.
104   * Eliom: Session group data.
105     Like session data but for all sessions in a session group.
106   * Eliom: Session group services.
107   * Eliom: session replaced by a more general concept of "server side state".
108     States have a scope: client process, session or group of sessions.
109   * Eliom: session tables and request cache now deprecated,
110     replaced by //Eliom references//
111   * Eliom client: Possible to call another service without stopping the
112     client side program, with bookmark support and back button support.
113   * New extension Comet to allow server -> client communication.
114   * Eliom: client/server communication channels.
115   * Eliom: client/server reactive programming using React.
116   * Eliom client: syntax extension for separating client and server code.
117   * Eliom: New module Eliom_output.Eliom_appl for registering pages
118     that belong to the same Eliom application.
119   * Eliom client: syntax extension and wrapping/unwrapping mechanism to
120     access server side values in client side code.
121   * Eliom client: Relinking the DOM on client side after loading a (portion of)
122     page. This allows to use directly nodes created on server side in client
123     side code.
124   * Eliom client: XHR redirections for Eliom applications.
125   * Eliom: safe unmarshaling of caml values sent by client side programs
126   * Xhtml: Xhtml5 support
127   * Atom module and Pubsubhubbub
128   * OpenID support
129   * SVG module
130   * Documentation: New tutorial
131   * Documentation: New Eliom manual
132   * //and many other things ...//
134 ===== 1.3.4 =====
136   * Eliom: Now supporting list of lists in service parameters
138 ===== 1.3.3 (2010-06-13) =====
140   * Eliom: Fix some typos in Eliom's tutorial stylesheet
141   * Server: Fix usage of {{{accept_n}}} to avoid file descriptor leakage
142   * XHTML: Adding missing elements and attributes in XHTML.M
143   * Cleaning Ocsigen_cache
144   * Eliom: Fixing actions with uploads
147 ===== 1.3.2 (2010-04-30) =====
149   * Add dummy findlib packages ocsigen.xhtml*, that depend on
150     ocsigen_xhtml*, for compatibility with previous versions. These
151     packages might be removed in a future (major) release.
152   * Port to Lwt 2.1.0
154 ===== 1.3.1 (2010-04-23) =====
156   * Split out ocsigen_xhtml findlib package
157   * Configuration file: when no protocol is specified in {{{<port>}}}, listen
158     on IPv6 (if possible) and IPv4 (always)
160 ===== 1.3.0 (2010-01-22) =====
162   * Server: Each request now has a polymorphic data table
163     (called //request cache//), where you can
164     store the data you want to keep during the whole page generation.
165   * Eliom: actions now return {{{()}}}.
166     Use the request cache to send information to fallbacks.
167   * Eliom: CSRF-safe coservices
168   * Eliom: the number of sessions without group by IP address is now limited
169   * Eliom: efficient implementation of limitation of sessions by groups
170     (or now IP) for large limits
171   * Eliom: the number of anonymous coservices by session is now limited
172   * Eliom: the number of anonymous coservices without session
173   by IP address is now limited
174   * Eliom: now possible to unregister services
175   * Eliom: New (very) experimental module {{{Eliom_obrowser}}}
176     to use Eliom with Obrowser
177   * Eliom: Now possible to have constant parts in suffixes to allow
178     URLS like {{{/param1/something/param2}}}
179   * Eliom: services with optional suffixes
180   * Eliom: form towards a service with suffix: it is now possible to choose
181     whether you want the redirection towards the suffix form or not
182   * Eliom: lists and sets in suffixes
183   * Eliom: Now possible to create services sending custom HTTP header values
184     or customizing the content-type
185   * Eliom: New notion: "Non localized parameters". Can be sent to any service.
186   * Eliom: changing the order of parameters for user type form widgets
187   * Eliom: changing the order of parameters for user type form widgets
188   * Eliom: Eliom_tools.menu and hierarchical_menu now compare the URL strings
189     (was: compare the service)
190   * Eliom: textarea now take a string (was pcdata)
191   * Eliom: The type of the iterator for lists in parameters has changed
192   * Eliom: New options in configuration file to set session timeouts
193   * Server: now possible to give the config file name to reload server command
194   * Server: now possible to do a "graceful shutdown" of the server
195     using the "shutdown" server command
196   * Server: now possible to add custom commands for the command pipe
197   * Server: EXPERIMENTAL now possible to observe HTTP headers before sending
198   the result
199   * Xhtmlpp: the parsing now fails if a quotation for an Xhtml element
200     contains superfluous elements. (This can cause the parsing of previously
201     incorrect code to fail)
202   * Staticmod/Eliom: attempting to access a file whose name contains a NULL
203     character will result in a 403.
204   * Server: HTTP headers containing newlines are now properly escaped.
205   * Server: correct missing xmlns in Xhtml DTD
206   * Server: now send last-modified and etag headers when returning a 403
207   * Server: Now accepting several requests at a time
208     (as explained in "Accept()able strategies" by Tim Brecht & all)
209   * Rewritemod: more rewriting possibilities (still very basic)
210   * Eliom menus are now more robust when finding which item is active
211   * Fixed handling of incorrectly-sized multipart requests. Thanks to
212     Mauricio Fernandez for noticing the bug
213   * Upload directory and maximum file size can now be configured on a
214     per-site basis
215   * Renamed the field of Ocsigen_http_frame.t
216   * Javascript events support in Xhtml.M ; Thanks to john @ 5070.info
217     for the patch
219 ===== 1.2.2 (2009-10-17) =====
221   * Add react and lwt.unix to the list of built-in findlib packages
223 ===== 1.2.1 (2009-09-26) =====
225   * Lwt 2.0 compatibility:
226     ** Adapt to Lwt.t/Lwt.u splitting
227     ** fix Makefile to deal with lwt.unix findlib package
228   * Fix ocsipersist-dbm Makefile
229   * Fix for pcre-ocaml 6.0.0
230   * Fix typo regarding --stubdir in configure script
232 ===== 1.2.0 (2009-03-25) =====
234   * Native code version now compiled by default
235   * Now possible to link extensions and Eliom modules statically, for
236     example to use a native code server on platforms where native
237     dynlink is not supported
238   * Server: Partial requests implemented (Range HTTP header)
239   * Build C stubs into a shared library so that bytecode executables
240     may be not linked in custom mode; new {{{--stubdir}}} option in
241     {{{configure}}} script
242   * Eliom: non-attached services now called "named non-attached
243     coservices" and created using {{{Eliom_services.new_coservice'}}}
244     with the optional {{{name}}} parameter
245   * Eliom: now possible to create named attached coservices using the
246     optional {{{name}}} parameter
247   * Eliom: now possible to write libraries for Eliom sites, loaded
248     inside {{{<host>}}}, but not generating any page
249   * Eliom and server: EXPERIMENTAL now possible to make extensions
250     that can use Eliom's data
251   * XHTML.M's pretty printer: now possible to set the DOCTYPE manually
252   * Eliom: now possible to set manually the DOCTYPE when registering
253     an XHTML.M service
254   * Redirectmod and Revproxy: now possible to do more complex
255     rewriting
256   * Accesscontrol: add support for {{{<port>}}} and {{{<ssl>}}}
257     conditions
258   * Config file: {{{aliases}}} attribute now called {{{hostfilter}}}
259   * Revproxy and Redirectmod: now possible to filter on server, port
260     and protocol
261   * New extension extendconfiguration to allow dynamic changes in the
262     configuration (mimetypes, charsets, followsymnlink, directory
263     listing, ...)
264   * Server: new module {{{LocalFiles}}} factoring the common parts
265     for sending static files (with Eliom and staticmod for example),
266     while checking that the files can safely be sent.
267   * Now possible to use XHTML pretty printers without Ocsigen, using
268     the {{{xhtmlpretty.cma}}} library
269   * Add {{{Ocsigen_lib.register_exn_printer}}}, better error messages
270   * Now possible to use the same configuration file in native code and
271     in bytecode (.cmo/.cma filenames are internally translated to
272     .cmxs)
273   * Signature of Ocsigen_extensions.register_extension is now more
274     complete and more lightweight
275   * Userconf: the options set in the local .userconf file are kept
276     in the enclosing {{{<site>}}} tag
277   * Server: possibility to ignore or to supply an alternative
278     command-line
279   * Ocsigen_http_client: timeout when the distant server does not
280     exists
281   * OCaml versions < 3.10 are not supported anymore
282   * Extensions are now much more strict w.r.t. the syntax of
283     configuration files
284   * Staticmod: accessing a directory for which indexing is disallowed
285     returns an error 404 (instead of a 403 previously)
287 ===== 1.1.0 (2008-07-15) =====
289   * Lwt removed (now distributed separately)
290   * {{{XHTML.M}}} pretty printer: fixing pretty printing of empty tags
291     (for browser compatibility)
292   * Eliom_duce: New pretty printer for XHTML fixing pretty printing of
293     empty tags
294   * Eliom: secure sessions, secure services, (absolute) https
295     links/forms, and using secure cookies
296   * Eliom: Adding special "void action", without any parameters
297   * Eliom: {{{Eliom_predefmod.Redirections}}} now called
298     {{{Eliom_predefmod.String_redirection}}}, and adding new module
299     {{{Eliom_predefmod.Redirection}}} that use GET services without
300     parameters as data type.
301   * Eliom and XHTML.M: Small changes of types in interfaces
302   * Eliom: New session ID generator
303   * Eliom: Adding types {{{int32}}} and {{{int64}}} for parameters and
304     forms
305   * Eliom: Adding functions {{{lwt_get_form}}} and {{{lwt_post_form}}}
306     for creating forms using cooperative functions
307   * Eliom and Staticmod: now possible to give GET parameters to static
308     pages
309   * Eliom: Bugfix in Makefiles for native code version
310   * Eliom forms: Adding missing types in interfaces
311   * Eliom_tools: current page is now optional in menus
312   * Userconf and Eliom: there was a bug when loading both Eliom and
313     Userconf together
314   * Reverse Proxy: Now sending content length when available
315   * Web server: The default content-type is now
316     {{{application/octet-stream}}}
317   * Creating and installing a cma file for all Ocsigen libraries not
318     installed elsewhere
319   * Ocsipersist-dbm: fixing bug when removing data
320   * Deflatemod: fixing memory leak
321   * And small bugfixes in XHTML.M, Eliom, ...
323 ===== 1.0.0 (2008-04-01) =====
325   * Config file: findlib integration
326   * Eliom and Ocsigen: changing namespace convention for modules
327   * Access control: simplification of config file syntax
328   * Eliom: Allowing (module dependent) parameters for registration
329     functions
330   * New xhtml output without pretty printing
331   * Web server: Bugfix in HTTP/1.0 with keep-alive
332   * Reverse proxy: Bugfix GET parameters were wrong
333   * Reverse proxy: Bugfix memory consumption when the connection was
334     closed by client
336 ===== 0.99.5 (2008-01-11) =====
338   * Revproxy: pipelining of requests
339   * Access control: simplification, generalization of filters and
340     syntax changes in config file
341   * Eliom: EXPERIMENTAL session groups
342   * Eliom: non-attached services
343   * Eliomduce: new functor {{{SubXhtml}}} for creating registration
344     modules
345   * Eliomduce: new module Eliomducetools with same features as
346     Eliomtools, but for Eliomduce
347   * Web server: now possible to split the configuration file into
348     several files using the {{{<extconf/>}}} option.
349   * Web server: now possible to have {{{<site>}}} option inside
350     another {{{<site>}}} in configuration files, and the the first one
351     is optional
352   * Web server: EXPERIMENTAL user configuration files, with restricted
353     possibilities (for security reasons)
354   * Web server: IPv6 support
355   * Deflatemod: now possible to filter on file extensions
356   * Eliom: new option to keep GET non-attached parameters or not when
357     doing a POST form towards a non-attached coservice.
358   * Eliom: bugfix path of session cookies
359   * Eliom: bugfix POST non-attached coservices called from a page with
360     non-attached GET parameters were not found.
361   * Lwt: now catching exceptions raised after timeouts
362   * Cgimod: bufixes in path handling
363   * Web server: bugfix - some files were not closed
365 ===== 0.99.4 (2007-11-21) =====
367   * Ocsigen: Changes in the extension mechanism. The extensions are
368     not tried in the order in which they are loaded any more, but in
369     the order in which the options are specified for each site in the
370     configuration file.
371   * New experimental extension: access control
372   * A few small enhancements
373     ** Eliom: internal cookie management rewritten (+ bugfix)
374     ** Eliom: Small changes in function names
375     ** Eliom: now retry all extensions after actions (not only Eliom)
376     ** Eliom: cleaning {{{Eliommod}}} interface
377     ** Ocsigen server: Internal changes in server (removing "send"
378        functions, debug messages lazier)
379     ** Lwt: Adding a few functions in {{{Lwt_chan}}} interface
380     ** Staticmod: Allowing to personalize default error pages for HTTP
381        errors
382     ** Ocsipersist (dbm and sqlite): better handling of database
383        errors
384     ** XHTML: New pretty printer for xhtml using streams (up to 15%
385        speedup on requests)
386     ** XHTML: Allowing any value for {{{<link>}}} rel attribute (for
387        example {{{shortcut icon}}}).
389 ===== 0.99.3 (2007-11-07) =====
391   * Ocsigen: New module Deflatemod to compress data before sending to
392     the browser.
393   * Ocsigen: EXPERIMENTAL - New module Revproxy (reverse proxy).
394   * Eliom: New session mechanism, with the ability to name the
395     sessions and thus have several sessions for the same site.
396   * Eliom: Now possible to have one site with session inside a
397     subdirectory of another one.
398   * Lwt: New module {{{Lwt_timeout}}} to implement timeouts, new
399     module {{{Lwt_chan}}}, new module {{{Lwt_mutex}}}, new function
400     {{{Lwt_unix.abort}}} to make all threads waiting on a file
401     descriptor abort with an exception.
402   * Ocsigen: New implementation of lots of Web server
403     internals. Better management of Ocsigen's streams, file
404     descriptors, exceptions, timeouts ...
405   * A lot of enhancements and bug fixes:
406     ** Eliom: Single {{{<select>}}} now always return one parameter
407        ({{{`Opt}}} replaced by {{{`One}}}, and the first item is
408        selected by default to prevent selecting nothing with some
409        browsers).
410     ** Eliom: More secure cookies.
411     ** Eliom: new version of the tutorial.
412     ** Eliom splitted in several modules.
413     ** Eliom: Nurpawiki example now called Miniwiki.
414     ** Eliom: {{{any_...}}} form widgets now called {{{raw_...}}}
415     ** Eliom: {{{~url}}} parameter (for {{{new_service}}}, etc.) now
416        called {{{~path}}}.
417     ** Eliom: Bugfix escaping characters in URL was wrong
418     ** Eliom: Adding a new parameter {{{~prefix}}} to
419        {{{new_external_service}}} for the scheme and server name. Not
420        encoded.
421     ** Eliom: Eliomboxes now called Eliomtools, with new widget
422        "hierarchical menu" for sites with sections and subsections.
423     ** Eliom: Adding {{{Eliompredefmod.Streamlist}}}.
424     ** Ocsigen: EXPERIMENTAL - now possible to do HTTP requests.
425     ** Ocsigen: New module Redirectmod to define HTTP redirections in
426        the config file.
427     ** Ocsigen: Make possible to create new kind of extensions to
428        filter the output (for ex compression)
429     ** Ocsigen: Bugfix - HEAD requests were broken in 0.99.2
430     ** Ocsigen: Bugfix - HTTP errors were sometimes sending a body in
431        respond to a HEAD request.
432     ** Ocsigen: Now sending 403 when upload is forbidden
433     ** Ocsigen: HTTP headers {{{If-Match}}}, {{{If-None-Match}}},
434        {{{If-Unmodified-Since}}} implemented
435     ** Cgimod: Bugfix - HEAD requests were sending an error 500.
436     ** Cgimod: Bugfix - Some file descriptors were not closed.
437     ** Cgimod: Implementing a timeout on CGI scripts.
439 ===== 0.99.2 (2007-08-21) =====
441   * Eliom: New implementation of forms. All missing cases implemented,
442     and more possibilities, such as untyped forms.
443   * Ocsipersist: New implementation of Ocsipersist using SQLite
444     instead of DBM. (You can still use the old one).
445   * Cgimod: EXPERIMENTAL - New extension for using CGI scripts with
446     Ocsigen (including PHP through CGI).
447   * Staticmod: Allowing to have several static directories for one
448     site.
449   * Staticmod: Allowing to list the content of directories.
450   * Ocsigen: HTTP Header "Transfer-Encoding: chunked" implemented for
451     sending or receiving data without knowing the Content-Length
452   * Ocsigen: Bugfix in preemptive.ml when lots of simultaneous
453     connections
454   * Ocsigen: Improvements in the extension mechanism
455   * Ocsigen: New file extensiontemplate.ml: an example explaining how
456     to write your own extensions
457   * Ocsigen: Bugfix - fixing limitation of simultaneous connections
458   * Eliom: Bugfix - type of {{{all_suffix_string}}} was wrong in
459     {{{eliom.mli}}}.
460   * Eliom: GET Services do not answer any more to POST requests
461     without parameters.
463 ===== 0.99.1 (2007-05-15) =====
465   * Eliom: Now possible to set an exception handler for the whole site
466     to personalize error pages (404, 500, etc.)
467   * Eliom: Now possible to register main services after initialization
468   * Eliom: Unifying {{{register}}} and {{{register_public}}}. Use the
469     optional {{{~sp}}} parameter to register during session.
470   * Eliom: Idem for all functions {{{..._during_init}}} and
471     {{{..._during_session}}}
472   * Eliom: Functions to remove data from tables
473   * Ocsigen: Debug mode: the exception is printed on the error page
474   * Ocsigen: Bugfix in {{{Preemptive.detach}}} when used with
475     {{{Lwt_unix.run}}}
476   * Ocsigen: Bugfix - launching ocsidbm for MacOS
477   * Eliom: Bugfix - GC of sessions and session data
478   * Eliom: Bugfix - GET actions were not working properly
480 ===== 0.99.0 (2007-05-05) =====
482   * EXPERIMENTAL: Native code support. It is now possible to use
483     Ocsigen in native code. BUT: to use that, you need a modified
484     version of OCaml, that allows dynlinking of native code modules
485     (natdynlink branch in OCaml's CVS, by Alain Frisch).
486   * OCaml 3.10 support (syntax extension with new Camlp4)
487   * The functor Ocsigen.Make (add new types of pages for Ocsigenmod)
488     is now divided into two functors, one for "register" functions,
489     and one for forms and links (if needed).
490   * New module for dynamic page creation called Eliom. Ocsigenmod is
491     now deprecated but is still in the distribution. Eliom is based on
492     Ocsigenmod.
493   * Eliom: replacing auxiliary services by coservices. Coservices may
494     have GET or (and) POST state parameter.
495   * Eliom: adding notion of non-attached coservices. They can take GET
496     or POST parameters.
497   * Eliom: Creation of a new module {{{Actions}}}. It is possible to
498     register actions on main services, coservices (attached or not).
499   * Eliom: Removing the old actions (use new actions towards
500     non-attached coservices instead)
501   * Eliom: New module {{{Unit}}} for actions without reload
502   * Eliom: New module {{{Redirections}}} to register redirection
503     pages.
504   * Eliom: New module {{{Files}}} to register services that send
505     files.
506   * Eliom: New module {{{Any}}} to register services that choose what
507     they send.
508   * Eliom: New module {{{Blocks to register services that send a box
509     of type body content.
510   * Eliom: Module {{{Text}}} replaced by {{{HtmlText}}}, and adding
511     {{{CssText}}} and {{{Text}}} (for any content type).
512   * Eliom: Bugfix - Typing errors of parameters are now catched only
513     if the names of parameters fit exactly.
514   * Eliom: {{{register_service}}} now called {{{register}}}.
515   * Eliom: EXPERIMENTAL Fallbacks can now get a "Session expired" from
516     previous pages and actions may send informations to the page
517     generated (using exception).
518   * Eliom: Now possible to pre-apply services (to make links or to be
519     used as fallbacks for coservices)
520   * Eliom: services can now set their own cookies
521   * Eliom: Disposable coservices (coservices that you can use only n
522     times)
523   * Eliom: Nurpawiki: example of Wiki written by Janne Hellsten
524   * Eliom: New handling of URLs with suffixes
525   * Ocsigen: New module Ocsipersist for persistent data, using its own
526     DBM server (ocsidbm)
527   * Eliom: Persistent sessions using Ocsipersist
528   * Eliom: Timeouts for sessions
529   * Eliom: Timeouts for coservices
530   * Ocsigen: It is now possible to give parameters to extensions in
531     configuration file.
532   * Ocsigen: Simplifying parsing of configuration file (could be
533     improved).
534   * Ocsigen: EXPERIMENTAL It is now possible to reload the modules
535     without stoping the server.
536   * Staticmod: Rewriting of URLs using regular expressions.
538 ===== 0.6.0 (2007-03-14) =====
540   * {{{configure}}} script
541   * {{{<select>}}} in forms, by Stéphane Dalmas
542   * EXPERIMENTAL: The Web server is now extensible. It means that you
543     can add modules (like Apache modules) for generating pages,
544     filters of requests, extensions of config files. For now there are
545     two modules, one for static pages, and one for dynamic pages. The
546     only changes for users is that they need to dynlink staticmod.cmo
547     and ocsigenmod.cma from the configuration file. The syntax of
548     config file for modules and staticdir also changed.
549   * It is now possible to specify the encoding of characters for each
550     sub-site.
551   * Now usable with Ocamlnet 2.2 or 1.1.2.
552   * EXPERIMENTAL: If OCamlDuce is installed on your system, you can
553     now use it to do the type-checking of your pages (see the
554     documentation). Warning: This is broken with OCamlDuce 3.09.2
555     patch level 2. You need at least OCamlDuce 3.09.3 patch level 1.
556   * Removing Ocsimore from the default distribution. That version of
557     Ocsimore is not supported anymore. Ocsimore has been rewritten
558     from scratch by Piero Furiesi.
560 ===== 0.5.1 (2006-12-14) =====
562   * Bugfix Konqueror: Multipart forms with now work correctly with
563     Konqueror
564   * Bugfix Internet Explorer: getting around a bug of Internet
565     Explorer while displaying page
566   * Bugfix NetBSD: Makefile
567   * Bugfix Debian for HPPA, Mips, Alpha: Makefile
568   * Bugfix: preemptive.cmi was missing in the installation directory
569   * Adding manpage (S. Mimram)
570   * Adding logrotate configuration
571   * Daemon mode: adding setsid and redirect stdout/stderr to
572     /dev/null. Closing stdin.
574 ===== 0.5.0 (2006-11-23) =====
576   * HTTP 1.1 improved (HEAD, ETag, keep-alive implemented,
577     If-Modified-Since, ...)
578   * HTTPS support
579   * Pipelining of requests
580   * Server can listen on several ports
581   * Multiple servers: you can now define several servers in the config
582     file.
583   * Virtual hosts: filtering on hostnames/ports (with wildcards)
584   * Asynchronous file upload with multipart support
585   * Large file transfer improved.
586   * MIME types are now parsed from a file
587   * Changes in the syntax of config file
588   * Accessors for server parameters. Use ({{{get_user_agent sp}}})
589     instead of {{{sp.user_agent}}}.
590   * Page generation is now using {{{Lwt}}} cooperative threads, to
591     make it possible the generation of several pages at the same
592     time. Practically, add {{{Lwt.return}}} before the page you want
593     to send, and use cooperative input/output functions.
594   * Typing errors of parameters are now catchable.
595   * {{{static_dir}}} is now a function
596   * Most of global references have been removed. You now need to give
597     sp as parameter to {{{register_for_session}}}, {{{static_dir}}},
598     {{{close_session}}}, etc.
599   * Links and forms now take {{{server_params}}} instead of
600     {{{current_url}}} ({{{sp}}} is shorter than {{{sp.current_url}}})
601   * EXPERIMENTAL: Use of preemptive threads for non cooperative
602     libraries ({{{detach}}} function).
603   * EXPERIMENTAL: The {{{Ocsigen}}} module now contains a functor
604     {{{Make}}} to allows the use of several ways of generating
605     XHTML. The default way (using {{{XHTML.M}}} or the syntax
606     extension) can be used by doing {{{open Ocsigen.Xhtml}}}. There is
607     also an untyped xhtml generation module called {{{Ocsigen.Text}}}.
608   * EXPERIMENTAL: extension of forms.
609   * Reorganisation of the code
610   * Bugfixes in makefiles
611   * Bugfix: escaping of strings in xhtml with syntax extension (thanks
612     to David Mentre)
614 ===== 0.4.0 (2006-06-06) =====
616   * Full reimplementation of the core using Generalized Algebraic Data
617     Types,
618   * {{{_int}}}, {{{_string}}}, etc. are now called {{{int}}},
619     {{{string}}}, etc.
620   * The type {{{_http_params}}} is now called {{{server_params}}},
621   * Services functions now all take 3 parameters, one for server
622     parameters, one for GET parameters, and one for POST
623     parameters. Note that {{{**}}} is used to create **pairs** and not
624     tuples.
625   * The {{{a}}} and {{{post_form}}} functions now take a fix number of
626     parameters, correponding to GET parameters.
627   * //URLs// are now called //services//,
628   * //state URLs// are now called //auxiliary services//,
629   * {{{register_post_url}}} does not exist anymore. use
630     {{{register_service}}} instead (idem for all other
631     {{{register_post_*}}} functions).
632   * Changes for prefix URLs
633   * Small changes for actions
634   * EXPERIMENTAL: sums, bool and list types for services and forms
635   * small bugfixes
637 ===== 0.3.27 (2006-04-27) =====
639   * Change the way to get server parameters
641 ===== 0.3.26 =====
643   * Load unsafe modules
644   * Other small changes
646 ===== 0.3.25-2 (2006-02-24) =====
648   * Small bugfix for 64 bits processors
649   * bugfix for static files
650   * {{{action_link}}} is now called {{{action_a}}}
652 ===== 0.3.24 (2006-02-07) =====
654   * More documentation
655   * Change types {{{internal_url}}} and {{{external_service}}} to use
656     polymorphic variants
658 ===== 0.3.23 (2006-02-07) =====
660   * Better handling of static files and "403 Forbidden" message