| 1 | -*- org -*- |
| 2 | |
| 3 | * upcoming/planned/todo |
| 4 | ** Language: |
| 5 | - Semantic patch for other languages |
| 6 | - Support metavariables, virtual rules and virtual identifiers |
| 7 | in initialize and finalize rules |
| 8 | - Support for matching #ifdef, etc. |
| 9 | - function-typed metavariables |
| 10 | |
| 11 | ** Features: |
| 12 | - New scripting languages |
| 13 | |
| 14 | ** Bugfix: |
| 15 | - Add more information in documentation, man pages and wiki |
| 16 | |
| 17 | * 0.2.5 |
| 18 | ** Language: |
| 19 | - Make a very small attempt to parse C++ code, amounting to accepting |
| 20 | identifiers containing ::, tilde, and template invocations. Use the |
| 21 | option -c++. This is not likely to be very useful in practice. |
| 22 | - Added metavariable metavariable type. |
| 23 | - Add disjunctions on identifiers in some contexts |
| 24 | - Pretend that & indicates a pointer in -c++ mode |
| 25 | - Support for new and delete |
| 26 | - Allow arrays in smpl parameter declarations. Thanks to Jesper Louis |
| 27 | Andersen for pointing out the problem. |
| 28 | - Field list metavariables |
| 29 | - Add the ability to add __attributes__ (NB, no matching on attributes) |
| 30 | - Slightly improved the error message for transformation on multiple |
| 31 | variable declaration. Thanks to Jonathan Nieder for pointing out the |
| 32 | problem. |
| 33 | |
| 34 | ** Features: |
| 35 | - support transformations on variables (only) in declarations that declare |
| 36 | multiple variables |
| 37 | - allow #endif XXX in C code |
| 38 | - relax_include_path now applied to non local includes too, in which case |
| 39 | it tries to find a unique file with a suffix of the provided name. |
| 40 | this is useful for directories that are intended to be symbolic links. |
| 41 | - support matching and removing #undef |
| 42 | - support for iteration in ocaml, requires use of -no_show_diff |
| 43 | - calls to likely and unlikely propagate test expression status to their |
| 44 | arguments |
| 45 | - reuse typedefs and macros from complete parsing when reparsing the |
| 46 | transformed code |
| 47 | - better explanation when presenting glimpse tokens |
| 48 | - optimization for an if branch that is just { ... } |
| 49 | - spatch -control_flow_to_file file.c generates a file file.dot |
| 50 | - include files with names ending in .cpp if -c++ option is given |
| 51 | - removed use of the no longer supported sexplib function Conv.hashtbl_of_sexp |
| 52 | - add information about which Fedora packages are needed |
| 53 | |
| 54 | ** Bugfix: |
| 55 | - improved parsing of expressions to allow ... to the right of operators in |
| 56 | more places |
| 57 | - Fix check_config for Python 2.7 on Fedora 14 (Reported-by: Michael Stefaniuc) |
| 58 | - Check for ocamlfind in configure (Reported-by: Paul E. McKenney) |
| 59 | - Postpone use of ocamlfind at runtime to report fewer errors |
| 60 | - Add support for Python 2.4 binding with the provided pycaml library |
| 61 | - Allow '@' in script code. Thanks to Laurent Reveillere for noticing the |
| 62 | problem. |
| 63 | - Remove an optimization of x or true to true in asttoctl2 for the case |
| 64 | where x may make a modification, eg the case of -thing ?-thing |
| 65 | - Allow adding comments before a function. |
| 66 | - Introduction of newlines in function arguments needs to take into account |
| 67 | that the code added by SmPL can include newlines. Thanks to Thomas |
| 68 | Gleixner for finding the problem. |
| 69 | |
| 70 | * 0.2.4 |
| 71 | ** Language: |
| 72 | - scripts now have names and can declare metavariables that are seen by |
| 73 | SmPL as identifier metavariables, see demos/{python,ocaml}tococci.cocci |
| 74 | - declaration (match variable declarations) and field (match structure |
| 75 | field declarations) metavariables |
| 76 | - matching of array initializations and of enum declarations |
| 77 | |
| 78 | ** Features: |
| 79 | - compatability with Python 2.7. Thanks to Richard W.M. Jones for pointing |
| 80 | out the problem |
| 81 | - python and ocaml string representations of parameter lists and expression |
| 82 | lists |
| 83 | - try simpler patterns on glimpse failure |
| 84 | - graceful and immediate failure when a virtual rule is defined on the |
| 85 | command line, but not in the rule |
| 86 | - spatch returns -1 when a virtual rule is requested that is not supported |
| 87 | - no transformation when using * with the option -no_show_diff |
| 88 | - expanded +++ file name for match output |
| 89 | - struct *^* and enum *^* metavariable types |
| 90 | - allow an assignment to match a variable initialization, even if multiple |
| 91 | variables are declared at the same time. |
| 92 | - add the option -recursive_includes |
| 93 | - added the option -use_idutils. The requires the previous use of the |
| 94 | script idutils_index.sh |
| 95 | |
| 96 | ** Bugfix: |
| 97 | - detect used after metavariables in simple statement metavariable match |
| 98 | - allow inheriting position variables over rules that make transformations |
| 99 | but depend on virtual rules that are not defined on the command line |
| 100 | - treat top-level tokens in decl visitor. Thanks to Peter Tummeltshammer |
| 101 | for noticing a resulting problem. |
| 102 | - improve typing of the result of an assignment expression |
| 103 | - eliminate some recursive calls in C code parsing to avoid stack overflows |
| 104 | - better pretty printing of #define when the whole line is removed |
| 105 | - better pretty printing of asm code containing |
| 106 | "::[input]"r"(&coherence_data[i])" |
| 107 | - allow pretty printing of C code with nameless bit fields |
| 108 | - avoid adding an error message to standard output if ocamlfind is not |
| 109 | found |
| 110 | - struct/union/enum-typed metavariables with a metavariable type name |
| 111 | - better management of whitespace between deleted lines. Thanks to |
| 112 | Andriy Gapon for noticing the problem. |
| 113 | - improved parsing recovery for badly parsed struct/enum typedefs |
| 114 | - drop expanded tokens in sgrep output. Thanks to Andriy Gapon for |
| 115 | noticing the problem. |
| 116 | - constant strings have array type, not pointer type. Thanks to Vasiliy |
| 117 | Kulikov for noticing the problem. |
| 118 | - improve indentation when adding code after a function call with indented |
| 119 | arguments. |
| 120 | - return type of sizeof converted to unsigned long. Thanks to Vasiliy |
| 121 | Kulikov for noticing the problem. |
| 122 | - improve spacing when adding structure initializers. Thanks to Vasiliy |
| 123 | Kulikov for noticing the problem. |
| 124 | |
| 125 | * 0.2.3 |
| 126 | ** Language: |
| 127 | - <= constraints relating an expression metavariable to one or more |
| 128 | inherited expression metavariables that it should be a subexpression of |
| 129 | - the -inplace and -outplace options have been renamed -in_place and |
| 130 | -out_place. -in_place no longer makes a backup. A backup can be |
| 131 | requested using the option -backup_suffix, eg -backup_suffix .bk |
| 132 | - identifiers can be constrained to be different from an inherited |
| 133 | identifier metavariable, or from a set containing both concrete |
| 134 | identifiers and inherited identifier metavariables. |
| 135 | - support for ocaml scripting |
| 136 | - ast available in ocaml scripts |
| 137 | |
| 138 | ** Features: |
| 139 | - drop inconsistent paths check when only one node was matched |
| 140 | - allow #define id with no definition |
| 141 | - attempt to add newlines in the generated code when function calls in the |
| 142 | smpl cause passing column 80 |
| 143 | - allow - in front of statement level nests, if everything inside the nest |
| 144 | is also - |
| 145 | - 'configure' looks for some system libraries: menhirLib, sexplib, pycaml. |
| 146 | Not available libraries are replaced by a copy provided with the sources. |
| 147 | - added static for a function goes just before what is specified in the |
| 148 | semantic patch, not before any comments etc. |
| 149 | - Add a new option, -ignore_unknown_options, to ease the integration |
| 150 | of Coccinelle as a checker in a toolchain. |
| 151 | - error in python code causes immediate abort of spatch |
| 152 | - use the same algorithm for collecting grep tokens as for collecting |
| 153 | glimpse tokens |
| 154 | - Add scripts/spatch.bash_completion for automatic completion of common |
| 155 | options under the bash shell. |
| 156 | - Print rule name when a script rule crashes |
| 157 | - Allow the declaration of an expression list or parameter list |
| 158 | metavariable to specify the number of expressions or parameters, |
| 159 | respectively. |
| 160 | |
| 161 | ** Bugfix: |
| 162 | - drop inconsistent paths check when only one node was matched |
| 163 | - better take into account virtual rules when selecting glimpse tokens |
| 164 | - print diff when only a comment is added |
| 165 | - the type of the C code !x should be int regardless of the type of x |
| 166 | - allow python code at the beginning of an included file |
| 167 | - better adjustment of whitespace when deleting adjacent lines. Thanks to |
| 168 | Wolfram Sang for pointing out the problem. |
| 169 | - allow metavariables to be inherited from included files |
| 170 | - allow ? on goto |
| 171 | - more graceful failure on finding a strange character in a macro parameter |
| 172 | list |
| 173 | - support Parameter metavariables |
| 174 | - add space after the last comma in an added portion of an argument list |
| 175 | - SmPL nameless struct should only match a nameless struct, not a nameless |
| 176 | union. Thanks to Peter Tummeltshammer for pointing out the problem. |
| 177 | - adjustments to storage don't modify inline as well |
| 178 | - matching and transformation allowed on inline |
| 179 | - allow removed field between two ... in structure initialization |
| 180 | - allow removing an entire structure initialization |
| 181 | - manage labels within do while 0 macros |
| 182 | - added space after : in printing a conditional expression. Thanks to Josh |
| 183 | Triplett for noticing the problem. |
| 184 | - dropped trailing whitespace when code at the end of a line is deleted. |
| 185 | Thanks to Josh Triplett for noticing the problem. |
| 186 | - Fixed environment management when script rule uses cache. Thanks to |
| 187 | Bissyande for finding the problem. |
| 188 | - when false matches if with no else |
| 189 | - ensure { ... } with whencode checks to the end of the function. Thanks to |
| 190 | Rene Rydhof Hansen for finding the problem. |
| 191 | |
| 192 | * 0.2.2 |
| 193 | ** Language: |
| 194 | - Added ToTestExpression to iso language, see standard.iso for an |
| 195 | explanation |
| 196 | - Added depends on to initialize and finalize script code |
| 197 | |
| 198 | ** Features: |
| 199 | - Update Emacs mode (cocci.el) to support 'virtual' rules and fix other |
| 200 | keywords sush as 'depends on', 'using', 'disable' |
| 201 | - better treatment of != 0 in isos, communtativity for ==/!= for all |
| 202 | constants |
| 203 | - allow adding // comments and blank lines (even after cocci + code) |
| 204 | - Add support for multiple -I options |
| 205 | |
| 206 | ** Bugfix: |
| 207 | - correct interaction between virtual rules and included .cocci files |
| 208 | - improvement in treatment of ! in isos, to avoid duplicating + code |
| 209 | - improvement in treatment of metavars as isos, to avoid duplicating + code |
| 210 | between toplevel and variable instantiation |
| 211 | - test expression of smpl conditional, etc no longer assumed to have type |
| 212 | int |
| 213 | - correct + line numbers in the patch produced when using * |
| 214 | - iso constant metavariable matches an identifier whose name is all capital |
| 215 | letters, eg NULL |
| 216 | - allow / at the end of the name of a directory (-dir) or patch prefix |
| 217 | (-patch) |
| 218 | - dropped space in + code after the binding of a type metavariable that is |
| 219 | a pointer type |
| 220 | - better handling of . or .. in -dir name |
| 221 | - allow keywords and metavariable names in identifier constraints (not sure |
| 222 | keywords is very useful, though) |
| 223 | - no lubtype on arguments of && and || in SmPL |
| 224 | - allow unknown as type for array indices in SmPL |
| 225 | - support matching of static annotation on functions that are both static |
| 226 | and inline |
| 227 | - support ENOTDIR error in Common.lfile_exists, to allow for the case where |
| 228 | an include file is in a subdirectory that exists but is an ordinary file, |
| 229 | not a directory. |
| 230 | - better management of unbound position variables that appear in |
| 231 | constraints |
| 232 | - cause python parser to skip over // comments, hoping that // is not |
| 233 | meaningful inside python |
| 234 | - require + on every line of a multiline comment |
| 235 | - correct calculation of line numbers when there is script code |
| 236 | - always annotate arguments of && || and ! as test expressions in C code. |
| 237 | |
| 238 | * 0.2.1 |
| 239 | ** Language: |
| 240 | - Add virtual identifiers |
| 241 | - Add coccilib.report and coccilib.trac Python modules |
| 242 | - coccilib.org and coccilib.report are imported by default but not loaded |
| 243 | in the current scope. |
| 244 | |
| 245 | ** Features: |
| 246 | - Parse_error_msg now more helpful. New option -verbose_parsing for even |
| 247 | more information. |
| 248 | - Improve Python import handling. They are imported once during script |
| 249 | initialization. |
| 250 | |
| 251 | ** Bugfix: |
| 252 | - correct treatment of depends on with || for virtual rules |
| 253 | |
| 254 | * 0.2.0 |
| 255 | ** Language: |
| 256 | |
| 257 | ** Features: |
| 258 | - Remove duplicated code in disjunctions |
| 259 | - Better error message when grep finds nothing relevant. Thanks to Joe |
| 260 | Perches for the suggestion. |
| 261 | - added -keep_comments option for the unparsing of the transformed code |
| 262 | - Option "-version" now also gives information about built-in |
| 263 | Python binding support. |
| 264 | - slightly faster environment manipulation in pathological cases |
| 265 | - hack added to accept well-formed #define after function header |
| 266 | |
| 267 | ** Bugfix: |
| 268 | - Proper consideration of #define macro arguments in checking for the use |
| 269 | of metavariables and in computing the line numbers of complex terms |
| 270 | - Better parsing of included .cocci files |
| 271 | - Put included .cocci files in the right order |
| 272 | - Bind position variables only once for #include |
| 273 | - Fix bug in include_match that caused everything to halt when all matches |
| 274 | were discarded |
| 275 | - Merge unlikely/likely iso rules under a iso rule named unlikely |
| 276 | - Some fixes to coccicheck rules, thanks to Andrew Lunn |
| 277 | - Support groups in regular expression, thanks to Michael Stefaniuc |
| 278 | |
| 279 | * 0.1.11 |
| 280 | |
| 281 | ** Language: |
| 282 | - Meta-identifier/function and constant could be filtered from SmPL by |
| 283 | regular expressions using the "~=" and "!~=" operators followed by |
| 284 | an OCaml regular expression (see man Str) in double quote. |
| 285 | - Virtual rules, which can be referenced in depends, and set and unset |
| 286 | using the command-line options -D |
| 287 | - ++ for multiple additions |
| 288 | |
| 289 | ** Features: |
| 290 | - coccicheck: a framework to check a series of SmPL files on a project |
| 291 | see scripts/coccicheck for more information |
| 292 | |
| 293 | ** Bugfix: |
| 294 | - bind position variables to the correct starting position in the case of a |
| 295 | complex statement such as an if or while. Thanks to Derek Jones for |
| 296 | pointing out the problem. |
| 297 | - checking for non mentioned case lines in switch should be unchecked. |
| 298 | - space should be printed after sizeof when there are no parentheses around |
| 299 | the argument. Thanks to Daniel Walker for pointing out the problem. |
| 300 | - avoid introducing sharing in propagating ! over () in treatment of isos |
| 301 | - save_excursion has to handle and rethrow exceptions |
| 302 | - eliminate unnecessary consideration of CVS strings. Thanks to David |
| 303 | Young for pointing out the problem. |
| 304 | - completely new treatment of statement metavariables |
| 305 | - better type checking for macro definitions |
| 306 | - drop regression testing in -parse_c |
| 307 | |
| 308 | * 0.1.10 |
| 309 | |
| 310 | ** Language: |
| 311 | - declarations allowed in switch, suggested by Derek M. Jones |
| 312 | |
| 313 | ** Features: |
| 314 | - use interval timer for timeouts. Thanks to Derek M. Jones for the |
| 315 | implementation. |
| 316 | - more flexible env.sh, thanks to Derek Jones. |
| 317 | - faster Python invocation |
| 318 | - simplify unparsing in the sgrep case |
| 319 | |
| 320 | ** Bugfix: |
| 321 | - for glimpse there is no point to create a pattern containing a numeric |
| 322 | constant because glimpse doesn't index them |
| 323 | - add spaces after commas in function calls and function headers |
| 324 | - made python integration more like the ubuntu version |
| 325 | http://patches.ubuntu.com/by-release/extracted/debian/c/coccinelle/0.1.5dbs-2/01-system-pycaml |
| 326 | this fixes some memory management problems with None, True, and False |
| 327 | - correct labels associated with a switch in the CFG so that a statement |
| 328 | metavariable can match a switch. Thanks to Derek Jones for pointing out |
| 329 | the problem. |
| 330 | - keep switch pattern within switch body. Thanks to Derek Jones for |
| 331 | pointing out the problem. |
| 332 | - Allow expanded tokens to be stored in metavariables, as long as they are |
| 333 | not removed. But this does currently allow them in + code, which will |
| 334 | produce the expansion. Thanks to Ali-Erdem Ozcan for pointing out the |
| 335 | problem. |
| 336 | - improved adjustment of spacing when code removed at the beginning of a line |
| 337 | |
| 338 | * 0.1.9 |
| 339 | |
| 340 | ** Language: |
| 341 | - allow fresh identifiers to be declared using ## such that the value mixes |
| 342 | both strings and previously declared metavariables |
| 343 | |
| 344 | ** Features: |
| 345 | - better handling of expanded code containing ##. Now compute the |
| 346 | result. |
| 347 | - more precise warning message for the "'\' outside define". |
| 348 | Thanks to Nicholas Mc Guire for pointing out the problem. |
| 349 | - more precise warning message related to ifdefization. |
| 350 | Thanks to Derek Jones for pointing out the problem. |
| 351 | - we don't create any more certain files in /tmp (they may be a cause |
| 352 | of security problems). |
| 353 | Thanks to Eugeniy Meshcheryakov for pointing out the problem. |
| 354 | - More optimization for the case of just deleting a complete function. |
| 355 | Allows this to happen without tracing through all the control-flow |
| 356 | paths. Thanks to Francois Bissyande for pointing out the problem. |
| 357 | - prevent code from being added to the beginning or end of a disjunction |
| 358 | - more information about why a script is not applied when using -debug option |
| 359 | - added -no_safe_expressions option |
| 360 | - added -no_loops option. Ignores back edges derived from looping |
| 361 | constructs. This is unsafe, but perhaps useful for bug finding, as it can |
| 362 | be more efficient. |
| 363 | - for semantic matches, allow "minus" on same code with multiple |
| 364 | environments |
| 365 | - better error message for mismatch of parenthesis in column 0 with normal |
| 366 | parenthesis. Thanks to Derek Jones for pointing out the problem. |
| 367 | - allow disjunctions on function return types. Thanks to Pierre Habouzit |
| 368 | for pointing this out. |
| 369 | |
| 370 | ** Bugfix: |
| 371 | - keep disjunction in the proper order for structure initialization fields |
| 372 | - variables declared in different places should not seem to match each |
| 373 | other |
| 374 | - drop complaints about label metavariables not being used |
| 375 | - drop test information from the type of an expression when the expression |
| 376 | is bound to a metavariable |
| 377 | - nests should not extend beyond the before and after code, even if the |
| 378 | before and after code matches the nest code |
| 379 | - nests should extend into conditionals that end in error exit |
| 380 | - take into account metavariables on "else". Thanks to Derek Jones for |
| 381 | pointing out the problem. |
| 382 | - print single quotes on generated character constants |
| 383 | - better typedef handling in the initialisation/affectation builtin |
| 384 | isomorphism, cf -test init_affect_typedef |
| 385 | - support disjunction of types on variable declaration |
| 386 | - allow @ within strings in script code. ignore // comment lines in script |
| 387 | code. |
| 388 | - don't drop + code placed after the transformed code |
| 389 | - drop spaces produced by removing code before semicolons |
| 390 | - adjusted spacing within generated code |
| 391 | - less verbose -sp. Thanks to Derek Jones for pointing out the problem. |
| 392 | - accept multiple type names in a SmPL typedef declaration. |
| 393 | |
| 394 | * 0.1.8 |
| 395 | |
| 396 | ** Language: |
| 397 | |
| 398 | ** Features: |
| 399 | - Metavariables now capture the cpp code contained within their definitions |
| 400 | - When - fragments are separated by ... or nest boundaries in the semantic |
| 401 | patch, but end up matching adjacent source code, the comments, cpp code |
| 402 | and whitespace that are between them are not deleted. |
| 403 | - better parsing of C: do expansion of macros only when needed when |
| 404 | have actually a parse error and also leverage the definition of macros |
| 405 | in the parsed file (or in a optional_standard.h file passed as a parameter). |
| 406 | This should reduce the need for many hardcoded definitions in standard.h |
| 407 | - new semantics for the -macro_file option, by default now expand macros |
| 408 | only when necessary. To force use the -macro_file_builtins option instead. |
| 409 | - a new -extract_macros command line action to help the parser. Works with |
| 410 | the -macro_file option. e.g. |
| 411 | $ ./spatch -extract_macros ~/linux > /tmp/alldefs.h |
| 412 | $ ./spatch -macro_file /tmp/alldefs.h -sp_file foo.cocci -dir ~/linux |
| 413 | - removed -D macro_file option, not consistent with what -D usually means |
| 414 | - reattempt to be more efficient for statement metavariables that are just |
| 415 | placeholders (ie, no modification, no reuse) |
| 416 | - triples now returned from ctl in sorted order. The main key is the |
| 417 | state. On the other hand, the state order does not always agree with the |
| 418 | order of appearance in the code. |
| 419 | - spatch is now less verbose on the things it does yet handle. Less confusing |
| 420 | for new users. |
| 421 | - slightly better error report. Thanks to Derek Jones for the suggestion. |
| 422 | - added the options -linux_spacing and -smpl_spacing. -linux_spacing |
| 423 | causes spatch to follow the spacing conventions of Linux, while |
| 424 | -smpl_spacing causes spatch to follow the spacing in the semantic patch. |
| 425 | -linux_spacing is the default. |
| 426 | - more informative error reporting for the already tagged token case. |
| 427 | Thanks to Erik Hovland for the suggestion. |
| 428 | |
| 429 | ** Bugfix: |
| 430 | - better parsing of declare macro at toplevel and in structure. |
| 431 | cf -text xfield |
| 432 | - allowing back typedef names for fieldname |
| 433 | - better printing of else in generated code |
| 434 | - slightly better type inference for binary operators. |
| 435 | - clear out declarer names and iterator names between SmPL files (for |
| 436 | -testall) |
| 437 | - better parsing and type checking of macro type aliases. Cf -test macro_int16. |
| 438 | Thanks to Li Yingtong for pointing out the problem. |
| 439 | - make insert_virtual_positions tail rec, avoid stack overflow pb. |
| 440 | Thanks to Diego Liziero <diegoliz@gmail.com> for pointing out the |
| 441 | problem. |
| 442 | - Better type inference for arithmetic binary operators |
| 443 | Thanks to Li Yingtong for pointing out the problem. |
| 444 | - Better type inference for constants |
| 445 | Thanks to Li Yingtong for pointing out the problem. |
| 446 | - move computing of adjacency information for semantic patches to after |
| 447 | application of isomorphisms, because isomorphisms can introduce "..." |
| 448 | - compute adjacency information for negated ... |
| 449 | - record with each transformation site the set of indices of the witness |
| 450 | trees that caused the transformation site to come about. Whitespace and |
| 451 | comments between remove tokens associated with disjoint witness trees is |
| 452 | not removed. |
| 453 | - correct treatment of function pointer typed parameters in the SmPL ast0 |
| 454 | visitor. |
| 455 | - better parsing error message and error recovery when comments are not ended, |
| 456 | when some macros have a weird body, and when some switch have a weird |
| 457 | Body. |
| 458 | Thanks to Derek Jones for pointing out the problem. |
| 459 | - better detection and passing of "dangerous" ifdefs, cf -test |
| 460 | double_switch. |
| 461 | - dropped the separation of decls and body in Seq. This gives better |
| 462 | positioning of the bindings of metavariables shared between them. |
| 463 | Thanks to Erik Hovland for an example that shows the problem. |
| 464 | |
| 465 | ** Internals: |
| 466 | - supress warning in compiling ocamlsexp (warning caused by a new behavior |
| 467 | of cpp used internally in processing files in ocamlsexp/) |
| 468 | |
| 469 | * 0.1.7 |
| 470 | |
| 471 | ** Language: |
| 472 | - initialize and finalize script code, cf demos/initial_final.cocci |
| 473 | |
| 474 | ** Features: |
| 475 | - -iso_limit option to limit the depth of isomorphism application |
| 476 | - with the dir option, the include path is implicitly set to the "include" |
| 477 | subdirectory of the specified directory, if the option -I is not used. |
| 478 | - give a seed for the name of a fresh identifier |
| 479 | - better handling of cpp "constructed" identifiers as in a##b, that in |
| 480 | the futur will make it easier to match over those idents. |
| 481 | cf tests/pb_parsing_macro.c. Thanks to Ali-Erdem Ozcan for pointing |
| 482 | out the problem. A new "parsing hack hint" is also available: |
| 483 | YACFE_IDENT_BUILDER, cf standard.h. |
| 484 | |
| 485 | ** Bugfix: |
| 486 | - drop excessive "optimization" in ctl generation for while and for loops |
| 487 | - allow . as the name of the directory |
| 488 | - for type inference for an assignment, take the type of the right-hand |
| 489 | side expression, not the type of the assigned variable |
| 490 | - allow for with a declartion in the first header element, as in C++ |
| 491 | (partial support) |
| 492 | - allow for matching against variable declarations that include only |
| 493 | storage, eg static, but no type at all. |
| 494 | - allow for matching against types that contain both short/long and int |
| 495 | - allow the type metavariable in the SmPL code "unsigned T" to match a T |
| 496 | that is a type consisting of more than one word, eg long int. |
| 497 | - -ifdef_to_if option made to process nested ifdefs |
| 498 | (partial support) |
| 499 | |
| 500 | ** Internals: |
| 501 | - improve and fix installation process (usable on BSD) |
| 502 | - improve and fix testing process |
| 503 | - apply patches from Eugeniy Meshcheryakov |
| 504 | - reorganize the way we parse C identifiers, especially concatenated cpp |
| 505 | identifiers as in a##b. This may lead to some regressions as we may |
| 506 | not parse as much code as before. |
| 507 | - removed popl/ and popl09/ and popl related stuff from official distrib. |
| 508 | |
| 509 | * 0.1.6 |
| 510 | |
| 511 | ** Language: |
| 512 | - the ability to add comments |
| 513 | |
| 514 | ** Features: |
| 515 | - grouping of generated rules with -hrule option |
| 516 | - handling of special coccinelle comments |
| 517 | /* {{coccinelle:skip_start}} */ and |
| 518 | /* {{coccinelle:skip_end}} */ |
| 519 | allowing to give more hints to the C parser. |
| 520 | Thanks to Flavien@lebarbe.net for the idea. |
| 521 | - the ability to print the values of more (but not all) kinds of |
| 522 | metavariables from python |
| 523 | - new vim SmPL mode. |
| 524 | Thanks to Alexander Faroy. |
| 525 | |
| 526 | ** Bugfix: |
| 527 | - consider the ident tokens also in the 2 lines before the error line for the |
| 528 | 10-most-problematic-parsing-errors diagnostic. |
| 529 | - SmPL parser allows cast as the argument of a pointer |
| 530 | - SmPL type checker allows enum as an array index |
| 531 | - Better generation of fresh metavariables names in hrule |
| 532 | - no more warnings about things that should be metavariables when there is |
| 533 | a disjunction in a function position |
| 534 | - bugfix in parser, better error message. |
| 535 | Thanks to Ali-Erdem OZCAN <ali-erdem.ozcan@st.com> for the bug report. |
| 536 | |
| 537 | ** Internals: |
| 538 | |
| 539 | * 0.1.5 |
| 540 | |
| 541 | ** Language: |
| 542 | - added initialiser metavariable |
| 543 | - added sequences of designators in structures |
| 544 | |
| 545 | ** Features: |
| 546 | - improved printing of the C code corresponding to metavariables |
| 547 | - improved printing when code (eg declarations) is removed at the beginning |
| 548 | of a block, and then is followed by a blank line |
| 549 | - slightly less verbose error reporting in parsing_hacks |
| 550 | |
| 551 | ** Bugfix: |
| 552 | - fixed some problems with parsing SmPL code where a nest appears after a | |
| 553 | - better treatment of { }, form in macros wrt unparse_c |
| 554 | - less quiet for -parse_c |
| 555 | - improve parsing heuristics regarding macro statement |
| 556 | |
| 557 | ** Internals: |
| 558 | |
| 559 | * 0.1.4 |
| 560 | |
| 561 | ** Language: |
| 562 | - long long added to SmPL |
| 563 | |
| 564 | ** Documentation: |
| 565 | - add grammar reference and spatch command line options reference |
| 566 | |
| 567 | ** Features: |
| 568 | - can match patterns of the form unsigned T or signed T, where T is a |
| 569 | metavariable |
| 570 | - dropped the sizeof_parens isomorphism, which was made redundant by the |
| 571 | paren isomorphism |
| 572 | - simple rule generation |
| 573 | |
| 574 | ** Bugfix: |
| 575 | - trailing , ; and ) no longer left on a line by themselves |
| 576 | - better treatment of error exit when the searched for code matches the |
| 577 | error exit condition. |
| 578 | - fix incorrect treatment of parentheses in test_exps that could allow + |
| 579 | code to be added twice |
| 580 | - don't ask whether iterator names and declarer names should be declared as |
| 581 | metavariables. |
| 582 | - slightly better support for expression list metavariables. |
| 583 | - short and long allowed for array index types in SmPL |
| 584 | - more restrictions on type inference for pointer arithmetic in SmPL |
| 585 | - allow isomorphisms to apply when + code is anywhere within all - terms |
| 586 | - changed order of printing const and volatile |
| 587 | - allow eg ... <... in plus code |
| 588 | - better formatting of generated if/while/etc. code |
| 589 | - better parse error reporting when the problem is at the end of the file |
| 590 | |
| 591 | ** Internals: |
| 592 | - isomorphisms don't apply under signed/unsigned, to prevent the creation |
| 593 | of things like unsigned signed int. Need a better solution for this. |
| 594 | |
| 595 | * 0.1.3 |
| 596 | |
| 597 | ** Features: |
| 598 | - help in building the configuration macro file. The -parse_c action |
| 599 | now returns the 10 most frequent parsing errors. This give useful |
| 600 | hints to extend standard.h. |
| 601 | |
| 602 | ** Bugfix: |
| 603 | - positions no longer allowed on \(, \|, and \) |
| 604 | - improved propagation of negation for isos in the presence of parens |
| 605 | - convert Todos in flow graph construction to recoverable errors |
| 606 | - fixed bug in treatment of when != true and when != false, to allow more |
| 607 | than one of them per ... |
| 608 | - improve parsing of typedef of function pointer. |
| 609 | - improve typing. |
| 610 | - parsing and typing support for old style C function declaration. |
| 611 | - consider position variables as modifications when optimizing the |
| 612 | translation into CTL of function definitions |
| 613 | |
| 614 | ** Internals: |
| 615 | |
| 616 | * 0.1.2 |
| 617 | |
| 618 | ** Bugfix: |
| 619 | - better handling of ifdef on statements in control flow graph. |
| 620 | - transform files even if they do not end in .c (thanks to Vegard Nossum) |
| 621 | |
| 622 | ** Internals: |
| 623 | - merge code of yacfe |
| 624 | |
| 625 | * 0.1.1 |
| 626 | |
| 627 | ** Language: |
| 628 | - support for initializer at toplevel, cf -test substruct |
| 629 | |
| 630 | * 0.1 |
| 631 | |
| 632 | ** first public release of the source code: |
| 633 | |
| 634 | ** Language: |
| 635 | - embeded python scripting |
| 636 | - position |
| 637 | |
| 638 | ** Features |
| 639 | |
| 640 | * beta |
| 641 | |
| 642 | ** first public release of the binary |
| 643 | |
| 644 | * alpha |
| 645 | |
| 646 | ** Features |
| 647 | - lots of features ... look at coccinelle research papers and tutorials. |