X-Git-Url: https://git.hcoop.net/bpt/coccinelle.git/blobdiff_plain/c3e37e979447bade993c7c600dc0b22ca64a571d..4dfbc1c2559051afaa06fbd7f7be19276d24bf44:/changes.txt diff --git a/changes.txt b/changes.txt index 10b9ddb..011dd85 100644 --- a/changes.txt +++ b/changes.txt @@ -5,6 +5,7 @@ - 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 @@ -13,6 +14,162 @@ - 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 @@ -24,13 +181,13 @@ 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 @@ -44,6 +201,20 @@ - 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: @@ -402,7 +573,6 @@ - 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: