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