permit multiline comments and strings in macros
[bpt/coccinelle.git] / changes.txt
index 691ac4b..c4b64c4 100644 (file)
 - virtual typedef, declarer name, iterator name
 - regexps for type metavariables
 - 'symbol' metadeclaration for C identifiers that are guaranteed not intended as meta variables. 
+- allow mixing isomorpisms with normal rules
 
 ** Features:
 - New scripting languages
 - more than one SP on the command line
+- interpret #if, as is done for #ifdef
 
 ** Bugfix:
 - Add more information in documentation, man pages and wiki
   suggesting this features.
 - Python code now receives expressions and identifiers as ordinary strings,
   not as elements of specific structures.
+- Allow size_t as the type of an array index in smpl code.  Reported by
+  Mansour Moufid.
+- Allow renaming an expression as an identifier (@i)
+- Support const/volatile after *.  Thanks to Lars-Peter Clausen for
+  pointing out the problem.
+- Support variable declarations in the first element of a for loop header.
 
 ** Features:
 - Preserve spacing before // comments when not at the beginning of a line
 - Slightly more efficient handling of lists.
 - Slightly better error message in the case of inconsistent paths
 - Improve limited size caching
-- Remove #ifdefs when everything else is removed
+- Remove zero #ifdefs when everything else is removed
+- Mac OSX compatibility (tested on OSX Lion)
+- 'Make depend' is called automatically when starting from a cleaned source
+- Configure flag --enable-release makes 'make' build the optimized version of
+  coccinelle if possible.
+- The installed 'bin/spatch' calls spatch.opt or spatch with default parameters
+  for iso/headers/python. 'bin/spatch.opt' and 'bin/spatch.byte'
+- The bundled packages are now in the 'bundles' subdirectory and in the
+  form of their original tarballs. These are extracted and used on-demand.
+- Compatibility with python 2 and python 3. Also, a small bug is fixed in the order
+  of library includes that caused sometimes trouble when building the pycaml library.
+- Dropped the dependency on Perl in the Makefiles
+- The configure script uses pkg-config and ocaml findlib and provides many
+  flags for tuning/overriding the build process (including the ocaml
+  compiler and the C compiler and preprocessor).
+- Add line number directives to the .ml file generated from a .cocci file
+- Added 'make check' as an alternative to 'make test'. It can run after
+  building spatch, checks whether some featues work (python and ocaml scripts,
+  regexes) if these features are enabled, and then launches the test suite
+  with a 75% success rate requirement. It also does not ask for user input
+  and can be used in autonomous builds.
+- Added an experimental --reverse flag to invert the semantic patch before application.
+  Note that not all patches can be inverted, nor is it guaranteed that applying
+  a patch followed by applying its inverse is an identity operation.
+- Cache prefix takes distribution index into account.
+- Add --defined and --undefined options allowing some code not to be
+  touched.  Suggested by Eric Leblond.
+- Dropped the need for the ocaml-extlib and ocaml-sexplib packages.
+- Changed the file format of the regression test results. Files in the old format
+  are no longer readable by spatch.
+- Added a crude mechanism for integrating the results of external analyses with
+  coccinelle, using positions to connect them together. This is an experimental
+  feature. See demos/external_ana.{c,cocci,data}.
+- Try to do better pretty printing when array elements are individually
+  replaced
+- Just fail quietly on attempt to remove a multi-variable declaration,
+  allowing the semantic patch to continue.  A warning message is printed.
+- Ignore unknown identifiers around known types.
+- Ignore --use-glimpse if multiple directories given
+- Added support for c++ namespace syntax in cocci files.
+- Improved c++ parsing
+- Addition of gcc min and max operators.  Thanks to Holden Karau
 
 ** Bugfix:
 - Corrected parsing of script strings delimited by a single quote.  Thanks
 - Pretty printing of const/volatile arrays in smpl code.
 - Don't allow just dropping an exp or type
 - Avoid removing #endif when surrounded by - code
+- Print some important error messages even with the --very-quiet flag.
+- Fixed parallel building in the Makefiles
+- Fixed the compilation of the "pure bytecode" version. If you use the
+  bundled pycaml or ocaml-pcre, you'll need their stub libraries in
+  your LD_LIBRARY_PATH.
+- For get_constants, virtuals should be false, not true
+- C parsing of top-level declarers with initializations.
+- Remove constraints in predicates in match result, to avoid PCRE equality
+  problems
+- Enum assignment matching an enum value shouldn't cause a
+  crash. Likewise, an identifier matching an initialized enum field
+  shouldn't cause a crash.
+- Make when forall in an exists rule behave (more) like forall
+- Ocaml 4.00.0 compatibility fixes
+- Drop inlines, reduce parser code size
+- Bind const_vol in the right order in Ast0 visitor
+- use arg_expression for printing iterator arguments instead of expression,
+  to get the right spacing.  Thanks to Lars-Peter Clausen for the fix.
+- Better spacing for generated argument lists.  Thanks to Lars-Peter Clausen
+  for reporting the problem.
+- Collect all module interfaces for ocaml scripting in a single
+  coccilib.cmi file, with the list of exposed internal modules in
+  ocaml/exposed_modules.ml. This simplifies the installation of the
+  ocaml version of coccilib, and allows us to specify which modules
+  can be accessed by an ocaml script. The coccilib.cmi must either
+  reside in $COCCI_DIR/ocaml/ or $COCCI_DIR/ocaml/coccilib/.
+- Ocamlbuild-based compilation of coccinelle (experimental). In a
+  cleaned repository, use the configure option --enable-ocamlbuild to
+  enable it. The Makefiles will then use ocamlbuild.
+- Ocamlscripts can access more of coccinelle: the file
+  ocaml/exposed_modules.ml specifies which modules are accessible.
+- Use arg_expression to print macro arguments.  Thanks to Lars-Peter
+  Clausen for the fix.
+- Remove some trailing whitespace due to unindent or added if braces.
+  Thanks to Eric LeBlond for reporting one of the problems.
+- Remove undesired newline after if header when body is a metavariable.
+  Thanks to Eric LeBlond for reporting the problem.
+- Improve macro expansion to take into account variable numbers of
+  arguments
+- Don't count macros or ifdefs in counting fields
+- Better counting of indent size when indent contains multiple tabs
+- Get the right annotation on trailing , that is after a nest.  Requires
+  avoiding double processing in transformation_c.ml
+- Fixed an issue where an 'Impossible' exception could be raised.
+- Fixed an issue where some identifiers were incorrectly interpreted as typedef.
+- allow __ at the beginning of a struct or union name
+- unparsing with precedence
+- Type metavariable should not match a case where there is no type in the
+  C code.  Thanks to SF Markus Elfring for pointing out the problem.
+- Allow an expression list metavariable to be attached to a parameter list
+  metavariable, to allow using the parameter names as an argument list.
+  Thanks to Michael Stefaniuc for pointing out the need for this feature.
 
 * 0.2.5
 ** Language: