- [bug] Fix
cppo -version
, which used to print a blank line (#92).
- [+ui] Multi-line macros, without line terminators
\
, can now be defined using#def
and#enddef
. These macro definitions can be nested. - [+ui] Higher-order macros: a macro can now take a parameterized macro as a parameter.
- [compat] Better locations for some syntax error messages.
- [bug] Fix multiline string support (#81)
- [compat] Allow version strings without patch numbers, e.g.
8.13+beta1
The patch number will be set to 0 upon empty, i.e.(8, 13, 0)
- [compat] Treat ~ and - the same in semver in order to parse OCaml 4.12.0 pre-release versions.
- [compat] Restore 4.02.3 compatibility.
- [pkg] port build system to dune from jbuilder.
- [pkg] upgrade opam metadata to 2.0 format.
- [pkg] remove topkg and use dune-release.
- [compat] Use
String.capitalize_ascii
to remove warning.
- [bug] Fix 'asr' operator (#61)
- [compat] Tests should now work with older versions of jbuilder.
- [compat] Fix tests.
- [compat] Emit line directives always containing the file name, as mandated starting with ocaml 4.07.
- [pkg] BREAKING: cppo and cppo_ocamlbuild are now two distinct opam packages.
- [+ui] Added the
CAPITALIZE()
function.
- [compat] Cppo is now safe-string ready.
- [pkg] Cppo can now be built on MSVC.
- [bug] Possible to have #endif between two matching parenthesis.
- [+ui] Removed the need for escaping commas and parenthesis in macros.
- [+ui] Blanks is now allowed in argument list in macro definitions.
- [+ui] #directive with wrong arguments is now giving a proper error.
- [bug] Fixed expansion of FILE and LINE.
- [+ui] Ocamlbuild_cppo: added the ocamlbuild flag
cppo_V(NAME:VERSION)
, equivalent to-V NAME:VERSION
(for _tags file).
- [+ui] Ocamlbuild_cppo: added the ocamlbuild flag
cppo_V_OCAML
, equivalent to-V OCAML:VERSION
(for _tags file).
- [+ui] Added the
-V NAME:VERSION
option. - [+ui] Support for tuples in comparisons: tuples can be constructed
and compared, e.g.
#if (2 + 2, 5) < (4, 5)
.
- [+ui]
#elif
and#else
can now be used in the same #if-#else statement. - [bug] Fixed the Ocamlbuild flag
cppo_n
.
- [bug] OCaml comments are now better parsed. For example, (* '"' *) works.
- [+ui] Added the ocamlbuild_cppo plugin for Ocamlbuild. To use it:
-plugin(cppo_ocamlbuild)
.
- [pkg] New way of building the tar.gz archive.
- [+ui] Added two predefined macros STRINGIFY and CONCAT for making string literals and for building identifiers respectively.
- [+ui] Added support for processing sections of files using external programs (#ext/#endext, -x option)
- [doc] Moved and extended documentation into the README file.
- initial public release