X-Git-Url: http://git.hcoop.net/bpt/coccinelle.git/blobdiff_plain/c491d8eea333ab3273dc415c7d7af192e1d0b682..17ba07880e1838028b4516ba7a2db2147b3aa1c9:/changes.txt diff --git a/changes.txt b/changes.txt index 1f37fb6..be84db4 100644 --- a/changes.txt +++ b/changes.txt @@ -5,13 +5,217 @@ - Semantic patch for other languages - Support metavariables, virtual rules and virtual identifiers in initialize and finalize rules +- Support for matching #ifdef, etc. +- function-typed metavariables +- virtual typedef, declarer name, iterator name +- regexps for type metavariables +- 'symbol' metadeclaration for C identifiers that are guaranteed not intended as meta variables. ** Features: - New scripting languages +- more than one SP on the command line ** Bugfix: - Add more information in documentation, man pages and wiki +- typedefs from C code should not be used before their point of inference + (saved_typedefs in cprogram_of_file) +* 1.0.0 +** Language: +- Addition of initializer list metavariables. Thanks to Michael Stefaniuc + for noticing the need for them. +- Allow multiple position variables per token +- ++ can now be associated with - code +- Allow /* */ comments as smpl comments, not only as + code +- Add support for && (label addresses) +- local idexpression metavariable no longer matches static local x +- Consider using to be a comment in C++ code. Patch submitted by Jani Monoses. +- Command line cocci +- print_main etc for ocaml Coccilib +- =~ not ~= is used to indicate a regular expression constraint on an + identifier. And !~ for a nonmatch. +- allow long double, short int, long int, and long long int in SmPL code. +- gcc constructors allowed in SmPL. Thanks to Uwe Kleine-Koenig for + pointing out the problem. +- Allow ! to appear before () in depends. Thanks to SF Markus Elfring for + noticing the problem. +- Can add code containing #pragma or #line. +- Multicharacter command-line options now begin with -- and contain - + rather than _. +- Allow multiple types of hidden metavariables, each preceded by @. + Position variables can be attached to these. +- Python code now receives a structure containing a list of matched + elements for list metavariables. Thanks to Michael Stefaniuc for + suggesting this features. +- Python code now receives expressions and identifiers as ordinary strings, + not as elements of specific structures. + +** Features: +- Preserve spacing before // comments when not at the beginning of a line +- Adjusted parsing of endif to put it after jump code +- Improve warning message when using -use_cache +- More helpful initial value for exported variables in python +- Support - on expression nests +- Better handling of the case of a matched declaration that should only + be replaced by other top level things. +- Allow a semantic patch beginning and ending with braces to match the + complete body of a function if the braces are not removed and if nothing + is added before the first brace or after the last one. +- Add -cache_prefix option, to specify where to put cached files. +- Allow module_init(foo); to match module_init(foo) (or likewise for any + declarer), when no transformation is specified on the semicolon. +- Add Coccilib.exit() for ocaml code and cocci.exit() for python code, + to abort the treatment of the current file. +- Don't multiply print the same patch for the same file +- Drop date in diff +- Don't repeat smpl type warnings +- -sp_file/-cocci_file are now optional. If not present an argument that + ends in .cocci is assumed to be the name of the file containing the + semantic patch. +- Allow limiting the size of a named cache using -cache_limit +- Cache name specified with -cache_prefix is extended according to the + index (parallelism), if any. +- Allow multi-character constants in C code and SmPL code. Thanks to Kamil + Pilch for pointing out the problem. +- Better parsing of K&R C functions. No longer convert all parameters to + typedefs. +- Implement newes as a hash table, for more efficiency on big sets of + environments. +- A local variable that is declared without a type is not considered to be + a local variable. Actually, such a variable is probably really a macro + that expends to a declaration, and this macro is not the variable name. +- Allow iteration to make modifications when the modifications are done + inplace. +- -debug gives information about defined virtual rules and about virtual + identifier bindings. +- no more crashing on c++-like code without the c++ argument. +- dependencies can have ! on () +- Give ocaml code access to Flag and thus the current file name. +- Slightly more efficient handling of lists. +- Slightly better error message in the case of inconsistent paths +- Improve limited size caching + +** Bugfix: +- Corrected parsing of script strings delimited by a single quote. Thanks + to Eugeniy Meshcheryakov for reporting the problem. +- Improved indentation of added ifdefs. +- Allow added comments and #ifdefs to precede other added code. Thanks to + Jani Monoses for noticing the problem. +- Corrected failure to due missing ocamlfind. Thanks to Derek M. Jones for + reporting the problem. +- Allow fake nodes to be - in the allminus case, to drop tokens related to + a function definition or forward declaration but before the first code + mentioned in the semantic patch. +- Drop __init etc when deleting a whole function. +- Cause appropriate newlines to be preserved when multiple matches (trees) + contain adjacent modifications derived from the same SmPL code. +- check_meta takes into account fresh identifier seed information. +- Types for worth-trying optimization should not be followed by space +- Improved filtering of result of matching atomic patterns +- Drop positions before creating function prototype rules +- Adjust position of { introduced by adding multiple statements in a + single-statement position +- Drop newline after function call ( when all arguments on that line are + eliminated +- Accept removal of a single declaration, replaced by arbitrary, + non-declaration code +- smpl_spacing takes into account newlines, indentation +- Improved prevention of transformations on toplevel { ... } from causing + changes outside function boundaries; also outside ifs, whiles, etc. + Changes are still allowed on { ... } present for other reasons. +- Fix bug in include_match that caused everything to halt when all matches + were discarded +- Don't call Insert_plus on rules that cannot be evaluated due to failed + dependencies. +- Allow variable declaration right after a case in switch. +- The top of a loop is also after the body of a loop, for ... in loop body +- Do not anchor Str regexp at the beginning of the string to check +- Type annotation for C code uses most recent env for typedefs when + possible. Thanks to Andrea Canciani for pointing out the problem. +- Pretty print pointer types without a trailing space. Thanks to Michael + Stefaniuc for pointing out the problem. +- Propagate dependencies further in get_constants2 +- Make lexer more dos friendly +- slightly better handling of long long +- Strip constraints from metavariables in function prototype treatment + before comparison, due to incomparability of pcre regexps. +- Fixed obsolete regexp doc, thanks to Dmitry Osmakov +- Improved x || ... || y to avoid double modification +- Transparently allow \( \| and \) to be on lines beginning with -. The - + has no effect. +- Remove memory leak related to pr2_once management. Thanks to Robert + Gomulka for helping to solve the problem. Don't use once hashtable if + messages won't be printed anyway. +- Change the type of subtraction mixing pointer and array to have int result. + Thanks to Robert Gomulka for noticing the problem. +- Fix interpretation of dependencies in the presence of virtual rules. + Ignore constraints on inherited position metavariables in a rule that + will be ignored. +- Better support meta iterator and meta declarer tokens, and symid tokens. +- Better indentation after added noindent. +- Fixed length bug in the treatment of structures. +- Allow inheriting declaration/field metavariables. +- Don't drop spaces after parentheses in when no minus code present. + Thanks to Terry Wilson for reporting the problem. +- Keep inherited metavariables in asttomember (preprocessing for matching) +- allminus for types, to allow removing const, not just matching it +- improved pretty printing when something is added before a closed brace +- Allow matching on nameless structs. Thanks to Ron Minnich for reporting + the problem. +- Pretty printing of const/volatile arrays in smpl code. + +* 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 and delete +- Allow arrays in smpl parameter declarations. Thanks to Jesper Louis + Andersen for pointing out the problem. +- Field list metavariables +- Add the ability to add __attributes__ (NB, no matching on attributes) +- Slightly improved the error message for transformation on multiple + variable declaration. Thanks to Jonathan Nieder for pointing out the + problem. + +** 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 +- better explanation when presenting glimpse tokens +- optimization for an if branch that is just { ... } +- spatch -control_flow_to_file file.c generates a file file.dot +- include files with names ending in .cpp if -c++ option is given +- removed use of the no longer supported sexplib function Conv.hashtbl_of_sexp +- add information about which Fedora packages are needed + +** 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 +- Allow '@' in script code. Thanks to Laurent Reveillere for noticing the + problem. +- Remove an optimization of x or true to true in asttoctl2 for the case + where x may make a modification, eg the case of -thing ?-thing +- Allow adding comments before a function. +- Introduction of newlines in function arguments needs to take into account + that the code added by SmPL can include newlines. Thanks to Thomas + Gleixner for finding the problem. * 0.2.4 ** Language: @@ -31,6 +235,13 @@ 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 @@ -39,12 +250,27 @@ - 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 tack overflows +- 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 +- 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: