Small change in ocsigen_lib: encoding of parameters with ''
fix Ocsigen_http_client.get_url (and other) first "/" was missing (close #311)
Installation: Do not try to chown files to a different user
Fix error on make logrotate
redirectmod: fixing default to permanent (as written in manual)
Minor additions in the API
2.1
2.0.4 (2012-06-02)
Rename and split Ocsigen_pervasives into Ocsigen_lib and Ocsigen_lib_base
Adapt to lower-case module names in TyXML
2.0.4 (2012-03-08)
Fix licencing problems of staticmod icons
Server:
Add a notification for connections closed by the client
2.0.3 (2012-01-31)
Staticmod: add a "cache" option
Cgimod: fix use of old $1 notation instead of \1
Fix problem with etags, post and safari
Add charset to content served as something/xml
Licence of polytable and ocsigen_cache changed from GPL to LGPL
2.0.2 (2011-11-18)
Server:
The command line options where not parsed when the server was not compiled with -linkall.
Improve error messages when the log firectory is not present.
Add a Cross-Origin Resource Sharing extension.
Libraries:
Allow Ocsigen_sender.{Html5,Xhtml}_content to choose the returned content type (close #53).
Ocsigen_extensions.get_port: do not return the actual request port if an Host HTTP header is present.
2.0.1 (2011-09-28)
Directory listing: do not use URL encoding for displaying the current path in HTML.
2.0 (2011-09-20)
Small fixes in documentation.
2.0-rc1 (2011-07-15)
Fix installation without dbm
Option to compile without preemptive threads
Get rid of C stubs: they are now included in Ocaml standard library
Log files are opened with the right UID
1.91 (2011-04-08)
Split the ocsigen package in three : tyxml, ocsigenserver and eliom
Rename into ocsigenserver
Revproxy, Accesscontrol: Handling X-Forwarded-For and X-Forwarded-Proto headers
HTTP parser rewrited
1.90
New module Eliom_client
for client/server Eliom programs using js_of_ocaml.
Eliom client: calling a service from client side code.
Eliom: Services taking Caml values as parameters.
Eliom: services sending Caml values.
Eliom: new implementation of forms and links to be compatible with
client side programs.
Eliom: sp parameter has been removed (now using Lwt's thread storage)
Eliom: Eliom_predefmod renamed Eliom_output
Eliom: New module Eliom_output.Customize to create your
own register functions from another registration module
Eliom: Module Eliom_sessions replaced by Eliom_state,
Eliom_request_info and Eliom_config.
Eliom: new implementation of user cookies.
Eliom: Client process cookies.
Like usual browser cookies but for one client side process.
Eliom: Client process server side state data.
Like session data but for one client side process.
Eliom: Client process session services.
Eliom: Session group data.
Like session data but for all sessions in a session group.
Eliom: Session group services.
Eliom: session replaced by a more general concept of "server side state".
States have a scope: client process, session or group of sessions.
Eliom: session tables and request cache now deprecated,
replaced by Eliom references
Eliom client: Possible to call another service without stopping the
client side program, with bookmark support and back button support.
New extension Comet to allow server -> client communication.
Eliom: client/server communication channels.
Eliom: client/server reactive programming using React.
Eliom client: syntax extension for separating client and server code.
Eliom: New module Eliom_output.Eliom_appl for registering pages
that belong to the same Eliom application.
Eliom client: syntax extension and wrapping/unwrapping mechanism to
access server side values in client side code.
Eliom client: Relinking the DOM on client side after loading a (portion of)
page. This allows to use directly nodes created on server side in client
side code.
Eliom client: XHR redirections for Eliom applications.
Eliom: safe unmarshaling of caml values sent by client side programs
Xhtml: Xhtml5 support
Atom module and Pubsubhubbub
OpenID support
SVG module
Documentation: New tutorial
Documentation: New Eliom manual
and many other things ...
1.3.4
Eliom: Now supporting list of lists in service parameters
1.3.3 (2010-06-13)
Eliom: Fix some typos in Eliom's tutorial stylesheet
Server: Fix usage of accept_n to avoid file descriptor leakage
XHTML: Adding missing elements and attributes in XHTML.M
Cleaning Ocsigen_cache
Eliom: Fixing actions with uploads
1.3.2 (2010-04-30)
Add dummy findlib packages ocsigen.xhtml*, that depend on
ocsigen_xhtml*, for compatibility with previous versions. These
packages might be removed in a future (major) release.
Port to Lwt 2.1.0
1.3.1 (2010-04-23)
Split out ocsigen_xhtml findlib package
Configuration file: when no protocol is specified in <port>, listen
on IPv6 (if possible) and IPv4 (always)
1.3.0 (2010-01-22)
Server: Each request now has a polymorphic data table
(called request cache), where you can
store the data you want to keep during the whole page generation.
Eliom: actions now return ().
Use the request cache to send information to fallbacks.
Eliom: CSRF-safe coservices
Eliom: the number of sessions without group by IP address is now limited
Eliom: efficient implementation of limitation of sessions by groups
(or now IP) for large limits
Eliom: the number of anonymous coservices by session is now limited
Eliom: the number of anonymous coservices without session
by IP address is now limited
Eliom: now possible to unregister services
Eliom: New (very) experimental module Eliom_obrowser
to use Eliom with Obrowser
Eliom: Now possible to have constant parts in suffixes to allow
URLS like /param1/something/param2
Eliom: services with optional suffixes
Eliom: form towards a service with suffix: it is now possible to choose
whether you want the redirection towards the suffix form or not
Eliom: lists and sets in suffixes
Eliom: Now possible to create services sending custom HTTP header values
or customizing the content-type
Eliom: New notion: "Non localized parameters". Can be sent to any service.
Eliom: changing the order of parameters for user type form widgets
Eliom: changing the order of parameters for user type form widgets
Eliom: Eliom_tools.menu and hierarchical_menu now compare the URL strings
(was: compare the service)
Eliom: textarea now take a string (was pcdata)
Eliom: The type of the iterator for lists in parameters has changed
Eliom: New options in configuration file to set session timeouts
Server: now possible to give the config file name to reload server command
Server: now possible to do a "graceful shutdown" of the server
using the "shutdown" server command
Server: now possible to add custom commands for the command pipe
Server: EXPERIMENTAL now possible to observe HTTP headers before sending
the result
Xhtmlpp: the parsing now fails if a quotation for an Xhtml element
contains superfluous elements. (This can cause the parsing of previously
incorrect code to fail)
Staticmod/Eliom: attempting to access a file whose name contains a NULL
character will result in a 403.
Server: HTTP headers containing newlines are now properly escaped.
Server: correct missing xmlns in Xhtml DTD
Server: now send last-modified and etag headers when returning a 403
Server: Now accepting several requests at a time
(as explained in "Accept()able strategies" by Tim Brecht & all)
Rewritemod: more rewriting possibilities (still very basic)
Eliom menus are now more robust when finding which item is active
Fixed handling of incorrectly-sized multipart requests. Thanks to
Mauricio Fernandez for noticing the bug
Upload directory and maximum file size can now be configured on a
per-site basis
Renamed the field of Ocsigen_http_frame.t
Javascript events support in Xhtml.M ; Thanks to john @ 5070.info
for the patch
1.2.2 (2009-10-17)
Add react and lwt.unix to the list of built-in findlib packages
1.2.1 (2009-09-26)
Lwt 2.0 compatibility:
Adapt to Lwt.t/Lwt.u splitting
fix Makefile to deal with lwt.unix findlib package
Fix ocsipersist-dbm Makefile
Fix for pcre-ocaml 6.0.0
Fix typo regarding –stubdir in configure script
1.2.0 (2009-03-25)
Native code version now compiled by default
Now possible to link extensions and Eliom modules statically, for
example to use a native code server on platforms where native
dynlink is not supported
Build C stubs into a shared library so that bytecode executables
may be not linked in custom mode; new --stubdir option in
configure script
Eliom: non-attached services now called "named non-attached
coservices" and created using Eliom_services.new_coservice'
with the optional name parameter
Eliom: now possible to create named attached coservices using the
optional name parameter
Eliom: now possible to write libraries for Eliom sites, loaded
inside <host>, but not generating any page
Eliom and server: EXPERIMENTAL now possible to make extensions
that can use Eliom's data
XHTML.M's pretty printer: now possible to set the DOCTYPE manually
Eliom: now possible to set manually the DOCTYPE when registering
an XHTML.M service
Redirectmod and Revproxy: now possible to do more complex
rewriting
Accesscontrol: add support for <port> and <ssl>
conditions
Config file: aliases attribute now called hostfilter
Revproxy and Redirectmod: now possible to filter on server, port
and protocol
New extension extendconfiguration to allow dynamic changes in the
configuration (mimetypes, charsets, followsymnlink, directory
listing, ...)
Server: new module LocalFiles factoring the common parts
for sending static files (with Eliom and staticmod for example),
while checking that the files can safely be sent.
Now possible to use XHTML pretty printers without Ocsigen, using
the xhtmlpretty.cma library
Eliom_duce: New pretty printer for XHTML fixing pretty printing of
empty tags
Eliom: secure sessions, secure services, (absolute) https
links/forms, and using secure cookies
Eliom: Adding special "void action", without any parameters
Eliom: Eliom_predefmod.Redirections now called
Eliom_predefmod.String_redirection, and adding new module
Eliom_predefmod.Redirection that use GET services without
parameters as data type.
Eliom and XHTML.M: Small changes of types in interfaces
Eliom: New session ID generator
Eliom: Adding types int32 and int64 for parameters and
forms
Eliom: Adding functions lwt_get_form and lwt_post_form
for creating forms using cooperative functions
Eliom and Staticmod: now possible to give GET parameters to static
pages
Eliom: Bugfix in Makefiles for native code version
Eliom forms: Adding missing types in interfaces
Eliom_tools: current page is now optional in menus
Userconf and Eliom: there was a bug when loading both Eliom and
Userconf together
Reverse Proxy: Now sending content length when available
Web server: The default content-type is now
application/octet-stream
Creating and installing a cma file for all Ocsigen libraries not
installed elsewhere
Ocsipersist-dbm: fixing bug when removing data
Deflatemod: fixing memory leak
And small bugfixes in XHTML.M, Eliom, ...
1.0.0 (2008-04-01)
Config file: findlib integration
Eliom and Ocsigen: changing namespace convention for modules
Access control: simplification of config file syntax
Eliom: Allowing (module dependent) parameters for registration
functions
New xhtml output without pretty printing
Web server: Bugfix in HTTP/1.0 with keep-alive
Reverse proxy: Bugfix GET parameters were wrong
Reverse proxy: Bugfix memory consumption when the connection was
closed by client
0.99.5 (2008-01-11)
Revproxy: pipelining of requests
Access control: simplification, generalization of filters and
syntax changes in config file
Eliom: EXPERIMENTAL session groups
Eliom: non-attached services
Eliomduce: new functor SubXhtml for creating registration
modules
Eliomduce: new module Eliomducetools with same features as
Eliomtools, but for Eliomduce
Web server: now possible to split the configuration file into
several files using the <extconf/> option.
Web server: now possible to have <site> option inside
another <site> in configuration files, and the the first one
is optional
Web server: EXPERIMENTAL user configuration files, with restricted
possibilities (for security reasons)
Web server: IPv6 support
Deflatemod: now possible to filter on file extensions
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.
Eliom: now retry all extensions after actions (not only Eliom)
Eliom: cleaning Eliommod interface
Ocsigen server: Internal changes in server (removing "send"
functions, debug messages lazier)
Lwt: Adding a few functions in Lwt_chan interface
Staticmod: Allowing to personalize default error pages for HTTP
errors
Ocsipersist (dbm and sqlite): better handling of database
errors
XHTML: New pretty printer for xhtml using streams (up to 15%
speedup on requests)
XHTML: Allowing any value for <link> rel attribute (for
example shortcut icon).
0.99.3 (2007-11-07)
Ocsigen: New module Deflatemod to compress data before sending to
the browser.
Ocsigen: EXPERIMENTAL - New module Revproxy (reverse proxy).
Eliom: New session mechanism, with the ability to name the
sessions and thus have several sessions for the same site.
Eliom: Now possible to have one site with session inside a
subdirectory of another one.
Lwt: New module Lwt_timeout to implement timeouts, new
module Lwt_chan, new module Lwt_mutex, new function
Lwt_unix.abort to make all threads waiting on a file
descriptor abort with an exception.
Ocsigen: New implementation of lots of Web server
internals. Better management of Ocsigen's streams, file
descriptors, exceptions, timeouts ...
A lot of enhancements and bug fixes:
Eliom: Single <select> now always return one parameter
(`Opt replaced by `One, and the first item is
selected by default to prevent selecting nothing with some
browsers).
Eliom: More secure cookies.
Eliom: new version of the tutorial.
Eliom splitted in several modules.
Eliom: Nurpawiki example now called Miniwiki.
Eliom: any_... form widgets now called raw_...
Eliom: ~url parameter (for new_service, etc.) now
called ~path.
Eliom: Bugfix escaping characters in URL was wrong
Eliom: Adding a new parameter ~prefix to
new_external_service for the scheme and server name. Not
encoded.
Eliom: Eliomboxes now called Eliomtools, with new widget
"hierarchical menu" for sites with sections and subsections.
Eliom: Adding Eliompredefmod.Streamlist.
Ocsigen: EXPERIMENTAL - now possible to do HTTP requests.
Ocsigen: New module Redirectmod to define HTTP redirections in
the config file.
Ocsigen: Make possible to create new kind of extensions to
filter the output (for ex compression)
Ocsigen: Bugfix - HEAD requests were broken in 0.99.2
Ocsigen: Bugfix - HTTP errors were sometimes sending a body in
respond to a HEAD request.
Cgimod: Bugfix - HEAD requests were sending an error 500.
Cgimod: Bugfix - Some file descriptors were not closed.
Cgimod: Implementing a timeout on CGI scripts.
0.99.2 (2007-08-21)
Eliom: New implementation of forms. All missing cases implemented,
and more possibilities, such as untyped forms.
Ocsipersist: New implementation of Ocsipersist using SQLite
instead of DBM. (You can still use the old one).
Cgimod: EXPERIMENTAL - New extension for using CGI scripts with
Ocsigen (including PHP through CGI).
Staticmod: Allowing to have several static directories for one
site.
Staticmod: Allowing to list the content of directories.
Ocsigen: HTTP Header "Transfer-Encoding: chunked" implemented for
sending or receiving data without knowing the Content-Length
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).
Eliom: Removing the old actions (use new actions towards
non-attached coservices instead)
Eliom: New module Unit for actions without reload
Eliom: New module Redirections to register redirection
pages.
Eliom: New module Files to register services that send
files.
Eliom: New module Any to register services that choose what
they send.
Eliom: New module {{{Blocks to register services that send a box
of type body content.
Eliom: Module Text replaced by HtmlText, and adding
CssText and Text (for any content type).
Eliom: Bugfix - Typing errors of parameters are now catched only
if the names of parameters fit exactly.
Eliom: register_service now called register.
Eliom: EXPERIMENTAL Fallbacks can now get a "Session expired" from
previous pages and actions may send informations to the page
generated (using exception).
Eliom: Now possible to pre-apply services (to make links or to be
used as fallbacks for coservices)
Eliom: services can now set their own cookies
Eliom: Disposable coservices (coservices that you can use only n
times)
Eliom: Nurpawiki: example of Wiki written by Janne Hellsten
Eliom: New handling of URLs with suffixes
Ocsigen: New module Ocsipersist for persistent data, using its own
DBM server (ocsidbm)
Eliom: Persistent sessions using Ocsipersist
Eliom: Timeouts for sessions
Eliom: Timeouts for coservices
Ocsigen: It is now possible to give parameters to extensions in
configuration file.
Ocsigen: Simplifying parsing of configuration file (could be
improved).
Ocsigen: EXPERIMENTAL It is now possible to reload the modules
without stoping the server.
Staticmod: Rewriting of URLs using regular expressions.
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
Bugfix NetBSD: Makefile
Bugfix Debian for HPPA, Mips, Alpha: Makefile
Bugfix: preemptive.cmi was missing in the installation directory
Adding manpage (S. Mimram)
Adding logrotate configuration
Daemon mode: adding setsid and redirect stdout/stderr to
/dev/null. Closing stdin.
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: Use of preemptive threads for non cooperative
libraries (detach function).
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
0.3.23 (2006-02-07)
Better handling of static files and "403 Forbidden" message