Camlp5 Version 5.13:
--------------------

* [02 Nov 09] Added compatibility with OCaml 3.11.2.
* [02 Nov 09] Updated compatibility with OCaml 3.12.0.
* [30 Jul 09] Added 'lazy' patterns (added in OCaml version 3.11).
* [09 Jun 09] Fixed bug in pr_r.cmo: did not always break after "in" (in
  "let..in" statements) even with -flag l.
* [08 Jun 09] Fixed bug in pr_r.cmo: missing case "#use" for structure and
  signature items.

Camlp5 Version 5.12:
--------------------

* [23 May 09] Added compatibility with OCaml 3.11.1.
* [31 Dec 08] In macros (pa_macro.cmo):
  - added ability to use IFDEF and IFNDEF for record labels declarations.

Camlp5 Version 5.11:
--------------------

* [19 Dec 08] Added compatibility with OCaml 3.12.0.

Camlp5 Version 5.10:
--------------------

* [16 Oct 08] Added compatibility with OCaml 3.11.0.
* [01 Aug 08] Added flag "Plexer.utf8_lexing" to specify that the lexers
  built by "Plexer.gmake ()" must consider the input as utf-8 encoded.

Camlp5 Version 5.09:
--------------------

* [05 Jun 08] Changed all '#!/bin/bash" in shells scripts into '#!/bin/sh'
  and changed all $(...) into `...` because there are compatibilities
  problems according to Unix versions.
* [31 Mar 08] Fixed bug: "let f ~_x () = ()" generated syntax error.
* [31 Mar 08] Fixed bug: "x $ y" generated syntax error (normal syntax).
* [02 Jan 08] Added compatibility with OCaml 3.10.3.

Camlp5 Version 5.08:
--------------------

* [08 Feb 08] Fixed bug in normal syntax: a.{x,y} (access to big array) was
  interpreted as a.{(x,y)}.
* [22 Jan 08] Added missing cases in printers pr_o and pr_r which displayed
  the message "unable to print ...".
* [02 Jan 08] Added compatibility with OCaml 3.09.4 and 3.10.2.
* [21 Jan 08] Fixed bug under windows: the file META could not be build
  if the library path name contained colons.
* [13 Jan 08] Added missing man page for camlp5sch (link to the same man
  page as camlp5).
* [05 Jan 08] Added "pr_extprint.cmo", printer rebuilding EXTEND_PRINTER
  statements in their original syntax.
* [05 Jan 08] Fixed bug in EXTEND_PRINTER statement: the match cases with
  "when" did not work.

Camlp5 Version 5.07:
--------------------

* [02 Jan 08] Added "pprintf" statement to use the Camlp5 pretty print
  system more easily and shortly.
* [27 Dec 07] Added function [Grammar.Entry.parse_all] returning the
  list of all solutions when using the parsing algorithm [Backtracking].

Camlp5 Version 5.06:
--------------------

* [19 Dec 07] Upgraded to add compatibilitly with OCaml version 3.10.1.

Camlp5 Version 5.05:
--------------------

* [17 Dec 07] Added function [Pcaml.quotation_location] returning the
  location of the quotation in the source in the context of a quotation
  expander.
* [04 Dec 07] Added generation of file META for ocamlfind in directory
  etc (built but not installed).
* [28 Nov 07] Upgraded to reflect changes done in parse tree in current
  OCaml (version 3.11+dev6).
* [27 Nov 07] Fixed bug in installation. Some files where installed in
  the bin directory instead of lib directory.
* [27 Nov 07] Fixed bug in parsing comments: comments containing '\' where
  incorrectly parsed.

Camlp5 Version 5.04:
--------------------

* [24 Nov 07] Fixed bug in install under MSVC Windows: object and library
  files were not installed (using wrong extensions).
* [24 Nov 07] Fixed bug under Windows: line numbers in error messages were
  wrong (twice the normal value).
* [24 Nov 07] Added ability to change the parsing algorithm of extensible
  grammars, with the function "Grammar.set_algorithm" whose parameter can
  be "predictive" or "backtracking".
* [22 Nov 07] Added backtracking parsers. Functions defined in the module
  Fstream (already containing functional streams and parsers). Syntax
  added in pa_fstream.cmo (already containing syntax for functinal streams
  and parsers). The new syntax uses "bparser" instead of "fparser" and
  a backtracking parser returns, together with its result and its
  remaining stream, the continuation to compute the next solution.

Camlp5 Version 5.03:
--------------------

* [20 Nov 07] Added commands mkcamlp5 and mkcamlp5.opt to build camlp5
  executables with predefined loaded modules. Added installation of ocpp
  with name ocpp5, instead of just ocpp.
* [19 Nov 07] Added more installed cmx and cmxa files to allow building
  native code linking of all combinations of Camlp5.
* [14 Nov 07] Fixed bug in pr_o.cmo: failed with printing "{a.(i) with ...}".
* [14 Nov 07] Fixed bug under Windows for the printers (pr_o.cmo, pr_r.cmo
  and pr_scheme.cmo): extra return character '\r' was added at end of
  lines.  
* [09 Nov 07] Fixed bug in camlp5o.opt in strict mode: did not parse
  correctly, in particular type expression (the version "camlp5o" without
  ".opt" however worked).
* [29 Oct 07] Added [Pcaml.inter_phrases], a way to set, by program,
  the value of the "-sep" option of the printers kits.
* [28 Oct 07] Fixed bug in pa_fstream.cmo (functional parsers): the
  keyword after "match with" was "parser" instead of "fparser" and
  its code was wrong.
* [27 Oct 07] Added a default lexing buffer (in module [Plexing]) for
  pa_lexer.cmo: then, the programmer does not need to write it any
  more.

Camlp5 Version 5.02:
--------------------

* [14 Oct 07] Changed 'pa_lex.cmo' into 'pa_lexer.cmo' with a different
  syntax (see the documentation).
* [14 Oct 07] In the EXTEND statement, added "LIKE s" as possible
  level position to specify a level containing a rule containing "s"
  in its keywords or tokens.
* [11 Oct 07] Rewritten parsers and printers in Scheme syntax. Deleted
  old module Spretty.

Camlp5 Version 5.01:
--------------------

* [06 Oct 07] Fixed bug in grammars: there was a parsing confusion with
  entries with qualified names with same final identifier, resulting
  bad results. Example: (qualified names "Prim.ident" and "Constr.ident"
  have the same final identifier "ident").
    EXTEND
      Prim.ident: [ [ ... ] ];
      Constr.ident: [ [ ... ] ];
    END;
* [05 Oct 07] In Scheme syntax (pa_scheme.cmo), added "type*" (symmetric
  to "define*") and "exceptionrebind".
* [04 Oct 07] Added flag C in pr_r.cmo and pr_o.cmo to add comments inside
  phrases (default = True).
* [01 Oct 07] Added flag E in pr_r.cmo and pr_o.cmo to ask to equilibrate
  cases in 'match', 'if', 'parse', 'EXTEND' statements, i.e if one case does
  not fit on the line, all cases must be cut (default = False).
* [01 Oct 07] Added module "Diff" in the library (general comparison of
  two arrays). Implemented with the same algorithm as the Unix 'diff'
  command.
* [01 Oct 07] Fixed bug in pa_o.cmo (normal syntax) introduced in version
  5.00. The example: "function Atom atext as cur :: tl' -> 0" did not
  parse, printing the error "incorrect alias pattern".

Camlp5 Version 5.00:
--------------------

* In Camlp5 compiled distributions, there are now two modes. If one wants
  to compile Camlp5, the 'configure' script can select the mode:

  The two modes are:

  - transitional mode: the syntax tree is compatible with the previous
    version; users don't have to change their programs, but in the
    syntax tree quotations introduced by the new parsing kit
    'q_ast.cmo', the antiquotations are not available.

  - strict mode: the syntax tree is not compatible with the previous
    version. The user programs may compile without change, but may
    not.  It depends on the fact that these programs use the syntax
    tree with their constructors forms instead of their quotation
    forms. There is a new feature: the syntax tree quotations in user
    syntax, introduced by the new parsing kit 'q_ast.cmo".

* [25 Sep 07] Fixed bug: if parsing error at end of file, the error
  message printed a bad line number.
* [17 Sep 07] Added [Ploc.call_with], a pervasive function.
* [15 Sep 07] Added 'q_ast.cmo': this is the syntax tree quotations in
  the current syntax, including the possible user syntax extensions.
  The antiquotations work only in 'strict' mode, not in 'transitional'
  mode.
* [15 Sep 07] In module Pcaml, added grammar entries 'ipatt', 'match_case',
  'constructor_declaration', 'with_constr', 'poly_variant'.
* [09 Sep 07] In macros (pa_macro.cmo):
  - changed parameters syntax: now in curried form instead of parentheses,
  - added ability to define macro type expressions in signatures, e.g.:
       DEFINE V t = t -> t
  - added ability to use IFDEF and IFNDEF for constructors declarations and
    matchs cases.
* [08 Sep 07] Fixed bug in normal syntax (pa_o.cmo):
     class foo : ?foo:unit -> bar
     type foo = ?bar: unit -> unit;;
  were accepted but not with space(s) after the colon:
     class foo : ?foo: unit -> bar
     type foo = ?bar : unit -> unit;;
* [06 Sep 07] Fixed problem of bad errors locations in Lisp and Scheme
  syntaxes.
* [01 Sep 07] Renamed modules Stdpp into Ploc and Token into Plexing.
  Changed the names of some of their definitions. Backward compatibility
  assumed.
* [31 Aug 07] For packagers: added DESTDIR in Makefiles to allow installation
  in fake root directories. Usage: make install DESTDIR=fake-root-dir

Camlp5 Version 4.08:
--------------------

* [] Updated documentation.
* [30 Aug 07] Added IFDEF macros for signatures (.mli files).
* [26 Aug 07] Added left factorization for consecutive rules of parsers
  (and lexers).
* [21 Aug 07] Added equality functions over syntax trees in module Pcaml.
* [21 Aug 07] Improved compiled version (camlp5o.opt) to add the fact
  that the grammar is LL(n) for rules starting with n terminals.
* [20 Aug 07] Updated library interface comments.
* [19 Aug 07] Added option -define with 'pa_macro.cmo' which prints the
  predefined macros and exit.
* [16 Aug 07] Added pa_extprint.cmo, a new syntax for extensible pretty
  printers adding a statement EXTEND_PRINTER (cf files pr_r.cmo and pr_o.ml
  as examples). Added library module Eprinter. Changes (simplifications) in
  interfaces of Pcaml for the printers.

Camlp5 Version 4.07:
--------------------

* [02 Aug 07] Fixed bug: option -o did not work for pr_r.cmo and pr_o.cmo
  (was always stdout).
* [01 Aug 07] In EXTEND statement, added symbol FLAG: like OPT but return
  a boolean value. The antiquotation kind "flag" must be used in this case,
  but the "opt" still works by compatibility.
* [30 Jul 07] Fixed bug in normal syntax: let C x = C 1 was not accepted.
* [30 Jul 07] Changed pretty printing *normal* syntax: let C x = .. printed
  like that, *not* transformed into let x = match .. with C x -> x.

Camlp5 Version 4.06:
--------------------

* [25 Jul 07] Fixed bug: in normal syntax, the declaration of a constructor
  named "True" or "False" did not work.
* [25 Jul 07] While expanding stream parsers, transform unused bound
  variables into wildcards to prevent compiler warnings.
* [21 Jul 07] Fixed bug in normal syntax and printing of normal syntax:
  "poly type" was accepted with revised syntax, i.e. with "!" at beginning
  and displayed like it. Fixed also the printing of abstract module type
  which was not implemented. Added printing syntax of fun binding fof class
  parameters.
* [20 Jul 07] Added revised syntax for bigarrays (same than normal syntax)
  and pretty print them in their initial syntax.
* [18 Jul 07] In Grammar.Entry.print, local entries are displayed with
  a star character "*".
* [18 Jul 07] In Grammar module, added type 'parsable', functions 'parsable'
  and 'Entry.parse_parsable' like for the functorial interface.

Camlp5 Version 4.05:
--------------------

* [16 Jul 07] Fixed bug in normal syntax: optional semicolon was no more
  accepted at end of stream patterns.
* [16 Jul 07] Fixed syntax problems with "~id:" and "~id :" (with a space).

Camlp5 Version 4.04:
--------------------

* [11 Jul 07] Renamed application as "camlp5".
* [11 Jul 07] Fixed compilation problems with ocaml version 3.08.1.

Camlp4s Version 4.03:
---------------------

* [10 Jul 07] Added argument "-name" in "configure" to specify another name
  of commands and libraries (default = camlp4). E.g. "configure -name camlp5"
  will build "camlp5", "camlp5r", "camlp5o", "camlp5.1", and so on, and
  the library directory will be installed in ocaml library directory as
  name "camlp5".
* [10 Jul 07] Deleted command "mkcamlp4" which seems not to work any more.
  This will be fixed in a future version.

Camlp4s Version 4.02:
---------------------

* [08 Jul 07] Added missing compatibility with ocaml 3.10.0
* [05 Jul 07] Rebuilt pretty printers with new pretty printer module
* [27 Jun 07] Added private flag in type declarations and with constraints
* [21 Jun 07] Added "let..in" in parsers
* [14 Jun 07] Added html documentation for:
  - the "extfun" statement
  - the "fparser" statement
  - the "lexer" statement
  - the "parser" statement
  - the "#pragma" directive
  - the module Pretty
  - the new pretty print in Camlp4 (using Pretty and "extfun")
* [14 Jun 07] Library module Sformat renamed Pretty. The first parameter
  of the function horiz_vertic is now a function of type "unit -> 'a".
* [31 May 07] Quotation "row_field" renamed "poly_variant".
* [03 May 07] Fixed bug in pr_o: did not print "let f ?a = ()".

Camlp4s Version 4.01:
---------------------

* [27 Apr 07] Added compatibility with ocaml 3.11

Camlp4s Version 4.00:
---------------------

* [31 Jan 07] Added a new syntax, "lexer", to write parsers of characters
  in a shorter way. New syntax extension "pa_lex.cmo".

* [26 Jan 07] Deleted "LOCATE" lexing token kind and associated parsing
  stuff. Seems to be an old thing never used.

* [20 Jan 07] Added "lookahead" stream pattern component kind.
          syntax ::= "?=" list lookhd_patt sep_by "|"
     lookhd_patt ::= "[" list pattern sep_by ";" "]"
  Checks the first stream elements against the pattern, without removing
  them from the stream (but possibly unfreezing them), continues the stream
  pattern if ok, fails (Stream.Failure or Stream.Error depending on the
  position of the component) if not. If there are more than one lookahead
  pattern, they must be of the same length. Examples in lib/plexer.ml.

* [31 Dec 06] Added the ability to add "!" (in Revised syntax) or "?!"
  (in normal syntax) after a stream parser component to hint the preprocessor
  that the called parser cannot fail (which must be true, but not checked)
  which allows shorter code. E.g.
     parser [: x = f; y = g ! :] -> (x, y)
  This example is equivalent to:
     parser [: x = f; s :] -> let y = g s in (x, y)

* [19 Dec 06] Added "pa_pragma.cmo" adding the directive "#pragma <expr>"
  which executes <expr> in the context of the preprocessor.

* [16 Dec 06] Added ability to add directives: "Pcaml.add_directive".

* [05 Dec 06] Fixed old bug: "camlp4 foo/bar.cmo" now searchs from the
  current directory (i.e in its subdirectory "foo"), instead of searching
  in the path. Before, we had to write "camlp4 ./foo/bar.cmo".

* [01 Dec 06] In "pa_macro.cmo", the expression after IFDEF can use
  the infix operators OR and AND, the prefix one NOT and expressions
  between parentheses.

* [01 Dec 06] The same distribution can compile with several versions
  of OCaml. After "./configure", the good version of OCaml interfaces
  are selected.

* [01 Dec 06] The type "location" is now abstract. Defined in stdpp.mli.

* [01 Dec 06] First distributed version; started from old camlp4
  version 3.06 and updated.
