- Semantic patch for other languages
- Support metavariables, virtual rules and virtual identifiers
in initialize and finalize rules
+- Support for matching #ifdef, etc.
** Features:
- New scripting languages
- Add more information in documentation, man pages and wiki
+* 0.2.5
+** Language:
+- Make a very small attempt to parse C++ code, amounting to accepting
+ identifiers containing ::, tilde, and template invocations. Use the
+ option -c++. This is not likely to be very useful in practice.
+- Added metavariable metavariable type.
+- Add disjunctions on identifiers in some contexts
+- Pretend that & indicates a pointer in -c++ mode
+- Support for new
+
+** Features:
+- support transformations on variables (only) in declarations that declare
+ multiple variables
+- allow #endif XXX in C code
+- relax_include_path now applied to non local includes too, in which case
+ it tries to find a unique file with a suffix of the provided name.
+ this is useful for directories that are intended to be symbolic links.
+- support matching and removing #undef
+- support for iteration in ocaml, requires use of -no_show_diff
+- calls to likely and unlikely propagate test expression status to their
+ arguments
+- reuse typedefs and macros from complete parsing when reparsing the
+ transformed code
+- optimization for an if branch that is just { ... }
+- spatch -control_flow_to_file file.c generates a file file.dot
+
+** Bugfix:
+- improved parsing of expressions to allow ... to the right of operators in
+ more places
+- Fix check_config for Python 2.7 on Fedora 14 (Reported-by: Michael Stefaniuc)
+- Check for ocamlfind in configure (Reported-by: Paul E. McKenney)
+- Postpone use of ocamlfind at runtime to report fewer errors
+- Add support for Python 2.4 binding with the provided pycaml library
+
+* 0.2.4
+** Language:
+- scripts now have names and can declare metavariables that are seen by
+ SmPL as identifier metavariables, see demos/{python,ocaml}tococci.cocci
+- declaration (match variable declarations) and field (match structure
+ field declarations) metavariables
+- matching of array initializations and of enum declarations
+
+** Features:
+- compatability with Python 2.7. Thanks to Richard W.M. Jones for pointing
+ out the problem
+- python and ocaml string representations of parameter lists and expression
+ lists
+- try simpler patterns on glimpse failure
+- graceful and immediate failure when a virtual rule is defined on the
+ command line, but not in the rule
+- spatch returns -1 when a virtual rule is requested that is not supported
+- no transformation when using * with the option -no_show_diff
+- expanded +++ file name for match output
+- struct *^* and enum *^* metavariable types
+- allow an assignment to match a variable initialization, even if multiple
+ variables are declared at the same time.
+- add the option -recursive_includes
+- added the option -use_idutils. The requires the previous use of the
+ script idutils_index.sh
+
+** Bugfix:
+- detect used after metavariables in simple statement metavariable match
+- allow inheriting position variables over rules that make transformations
+ but depend on virtual rules that are not defined on the command line
+- treat top-level tokens in decl visitor. Thanks to Peter Tummeltshammer
+ for noticing a resulting problem.
+- improve typing of the result of an assignment expression
+- eliminate some recursive calls in C code parsing to avoid stack overflows
+- better pretty printing of #define when the whole line is removed
+- better pretty printing of asm code containing
+ "::[input]"r"(&coherence_data[i])"
+- allow pretty printing of C code with nameless bit fields
+- avoid adding an error message to standard output if ocamlfind is not
+ found
+- struct/union/enum-typed metavariables with a metavariable type name
+- better management of whitespace between deleted lines. Thanks to
+ Andriy Gapon for noticing the problem.
+- improved parsing recovery for badly parsed struct/enum typedefs
+- drop expanded tokens in sgrep output. Thanks to Andriy Gapon for
+ noticing the problem.
+- constant strings have array type, not pointer type. Thanks to Vasiliy
+ Kulikov for noticing the problem.
+- improve indentation when adding code after a function call with indented
+ arguments.
+- return type of sizeof converted to unsigned long. Thanks to Vasiliy
+ Kulikov for noticing the problem.
+- improve spacing when adding structure initializers. Thanks to Vasiliy
+ Kulikov for noticing the problem.
+
+* 0.2.3
+** Language:
+- <= constraints relating an expression metavariable to one or more
+ inherited expression metavariables that it should be a subexpression of
+- the -inplace and -outplace options have been renamed -in_place and
+ -out_place. -in_place no longer makes a backup. A backup can be
+ requested using the option -backup_suffix, eg -backup_suffix .bk
+- identifiers can be constrained to be different from an inherited
+ identifier metavariable, or from a set containing both concrete
+ identifiers and inherited identifier metavariables.
+- support for ocaml scripting
+- ast available in ocaml scripts
+
+** Features:
+- drop inconsistent paths check when only one node was matched
+- allow #define id with no definition
+- attempt to add newlines in the generated code when function calls in the
+ smpl cause passing column 80
+- allow - in front of statement level nests, if everything inside the nest
+ is also -
+- 'configure' looks for some system libraries: menhirLib, sexplib, pycaml.
+ Not available libraries are replaced by a copy provided with the sources.
+- added static for a function goes just before what is specified in the
+ semantic patch, not before any comments etc.
+- Add a new option, -ignore_unknown_options, to ease the integration
+ of Coccinelle as a checker in a toolchain.
+- error in python code causes immediate abort of spatch
+- use the same algorithm for collecting grep tokens as for collecting
+ glimpse tokens
+- Add scripts/spatch.bash_completion for automatic completion of common
+ options under the bash shell.
+- Print rule name when a script rule crashes
+- Allow the declaration of an expression list or parameter list
+ metavariable to specify the number of expressions or parameters,
+ respectively.
+
+** Bugfix:
+- drop inconsistent paths check when only one node was matched
+- better take into account virtual rules when selecting glimpse tokens
+- print diff when only a comment is added
+- the type of the C code !x should be int regardless of the type of x
+- allow python code at the beginning of an included file
+- better adjustment of whitespace when deleting adjacent lines. Thanks to
+ Wolfram Sang for pointing out the problem.
+- allow metavariables to be inherited from included files
+- allow ? on goto
+- more graceful failure on finding a strange character in a macro parameter
+ list
+- support Parameter metavariables
+- add space after the last comma in an added portion of an argument list
+- SmPL nameless struct should only match a nameless struct, not a nameless
+ union. Thanks to Peter Tummeltshammer for pointing out the problem.
+- adjustments to storage don't modify inline as well
+- matching and transformation allowed on inline
+- allow removed field between two ... in structure initialization
+- allow removing an entire structure initialization
+- manage labels within do while 0 macros
+- added space after : in printing a conditional expression. Thanks to Josh
+ Triplett for noticing the problem.
+- dropped trailing whitespace when code at the end of a line is deleted.
+ Thanks to Josh Triplett for noticing the problem.
+- Fixed environment management when script rule uses cache. Thanks to
+ Bissyande for finding the problem.
+- when false matches if with no else
+- ensure { ... } with whencode checks to the end of the function. Thanks to
+ Rene Rydhof Hansen for finding the problem.
+
* 0.2.2
** Language:
- Added ToTestExpression to iso language, see standard.iso for an
keywords sush as 'depends on', 'using', 'disable'
- better treatment of != 0 in isos, communtativity for ==/!= for all
constants
-- allow adding // comments
+- allow adding // comments and blank lines (even after cocci + code)
- Add support for multiple -I options
** Bugfix:
- correct interaction between virtual rules and included .cocci files
- improvement in treatment of ! in isos, to avoid duplicating + code
-- improvement intreatment of metavars as isos, to avoid duplicating + code
+- improvement in treatment of metavars as isos, to avoid duplicating + code
between toplevel and variable instantiation
- test expression of smpl conditional, etc no longer assumed to have type
int
- better handling of . or .. in -dir name
- allow keywords and metavariable names in identifier constraints (not sure
keywords is very useful, though)
+- no lubtype on arguments of && and || in SmPL
+- allow unknown as type for array indices in SmPL
+- support matching of static annotation on functions that are both static
+ and inline
+- support ENOTDIR error in Common.lfile_exists, to allow for the case where
+ an include file is in a subdirectory that exists but is an ordinary file,
+ not a directory.
+- better management of unbound position variables that appear in
+ constraints
+- cause python parser to skip over // comments, hoping that // is not
+ meaningful inside python
+- require + on every line of a multiline comment
+- correct calculation of line numbers when there is script code
+- always annotate arguments of && || and ! as test expressions in C code.
* 0.2.1
** Language:
- isomorphisms don't apply under signed/unsigned, to prevent the creation
of things like unsigned signed int. Need a better solution for this.
-
* 0.1.3
** Features: