bpt/coccinelle.git
13 years agoRelease coccinelle-0.1.8
Coccinelle [Sun, 3 Oct 2010 11:57:53 +0000 (13:57 +0200)]
Release coccinelle-0.1.8

** Features:
   - Metavariables now capture the cpp code contained within their definitions
   - When - fragments are separated by ... or nest boundaries in the semantic
     patch, but end up matching adjacent source code, the comments, cpp code
     and whitespace that are between them are not deleted.
   - better parsing of C: do expansion of macros only when needed when
     have actually a parse error and also leverage the definition of macros
     in the parsed file (or in a optional_standard.h file passed as a parameter).
     This should reduce the need for many hardcoded definitions in standard.h
   - new semantics for the -macro_file option, by default now expand macros
     only when necessary. To force use the -macro_file_builtins option instead.
   - a new -extract_macros command line action to help the parser. Works with
     the -macro_file option. e.g.
       $ ./spatch -extract_macros ~/linux > /tmp/alldefs.h
       $ ./spatch -macro_file /tmp/alldefs.h -sp_file foo.cocci -dir ~/linux
   - removed -D macro_file option, not consistent with what -D usually means
   - reattempt to be more efficient for statement metavariables that are just
     placeholders (ie, no modification, no reuse)
   - triples now returned from ctl in sorted order.  The main key is the
     state.  On the other hand, the state order does not always agree with the
     order of appearance in the code.
   - spatch is now less verbose on the things it does yet handle. Less confusing
     for new users.
   - slightly better error report. Thanks to Derek Jones for the suggestion.
   - added the options -linux_spacing and -smpl_spacing.  -linux_spacing
     causes spatch to follow the spacing conventions of Linux, while
     -smpl_spacing causes spatch to follow the spacing in the semantic patch.
     -linux_spacing is the default.
   - more informative error reporting for the already tagged token case.
     Thanks to Erik Hovland for the suggestion.

** Bugfix:
   - better parsing of declare macro at toplevel and in structure.
     cf -text xfield
   - allowing back typedef names for fieldname
   - better printing of else in generated code
   - slightly better type inference for binary operators.
   - clear out declarer names and iterator names between SmPL files (for
     -testall)
   - better parsing and type checking of macro type aliases. Cf -test macro_int16.
     Thanks to Li Yingtong for pointing out the problem.
   - make insert_virtual_positions tail rec, avoid stack overflow pb.
     Thanks to Diego Liziero <diegoliz@gmail.com> for pointing out the
     problem.
   - Better type inference for arithmetic binary operators
     Thanks to Li Yingtong for pointing out the problem.
   - Better type inference for constants
     Thanks to Li Yingtong for pointing out the problem.
   - move computing of adjacency information for semantic patches to after
     application of isomorphisms, because isomorphisms can introduce "..."
   - compute adjacency information for negated ...
   - record with each transformation site the set of indices of the witness
     trees that caused the transformation site to come about.  Whitespace and
     comments between remove tokens associated with disjoint witness trees is
     not removed.
   - correct treatment of function pointer typed parameters in the SmPL ast0
     visitor.
   - better parsing error message and error recovery when comments are not ended,
     when some macros have a weird body, and when some switch have a weird
     Body.
     Thanks to Derek Jones for pointing out the problem.
   - better detection and passing of "dangerous" ifdefs, cf -test
     double_switch.
   - dropped the separation of decls and body in Seq.  This gives better
     positioning of the bindings of metavariables shared between them.
     Thanks to Erik Hovland for an example that shows the problem.

** Internals:
   - supress warning in compiling ocamlsexp (warning caused by a new behavior
     of cpp used internally in processing files in ocamlsexp/)

13 years agoRelease coccinelle-0.1.7
Coccinelle [Sun, 3 Oct 2010 11:57:49 +0000 (13:57 +0200)]
Release coccinelle-0.1.7

** Language:
   - initialize and finalize script code, cf demos/initial_final.cocci

** Features:
   - -iso_limit option to limit the depth of isomorphism application
   - with the dir option, the include path is implicitly set to the "include"
     subdirectory of the specified directory, if the option -I is not used.
   - give a seed for the name of a fresh identifier
   - better handling of cpp "constructed" identifiers as in a##b, that in
     the futur will make it easier to match over those idents.
     cf tests/pb_parsing_macro.c. Thanks to Ali-Erdem Ozcan for pointing
     out the problem. A new "parsing hack hint" is also available:
     YACFE_IDENT_BUILDER, cf standard.h.

** Bugfix:
   - drop excessive "optimization" in ctl generation for while and for loops
   - allow . as the name of the directory
   - for type inference for an assignment, take the type of the right-hand
     side expression, not the type of the assigned variable
   - allow for with a declartion in the first header element, as in C++
     (partial support)
   - allow for matching against variable declarations that include only
     storage, eg static, but no type at all.
   - allow for matching against types that contain both short/long and int
   - allow the type metavariable in the SmPL code "unsigned T" to match a T
     that is a type consisting of more than one word, eg long int.
   - -ifdef_to_if option made to process nested ifdefs
     (partial support)

** Internals:
   - improve and fix installation process (usable on BSD)
   - improve and fix testing process
   - apply patches from Eugeniy Meshcheryakov
   - reorganize the way we parse C identifiers, especially concatenated cpp
     identifiers as in a##b. This may lead to some regressions as we may
     not parse as much code as before.
   - removed popl/ and popl09/ and popl related stuff from official distrib.

13 years agoRelease coccinelle-0.1.6a
Coccinelle [Sun, 3 Oct 2010 11:57:45 +0000 (13:57 +0200)]
Release coccinelle-0.1.6a

Bugfix.

13 years agoRelease coccinelle-0.1.6
Coccinelle [Sun, 3 Oct 2010 11:57:41 +0000 (13:57 +0200)]
Release coccinelle-0.1.6

** Language:
   - the ability to add comments

** Features:
   - grouping of generated rules with -hrule option
   - handling of special coccinelle comments
     /* {{coccinelle:skip_start}} */ and
     /* {{coccinelle:skip_end}} */
     allowing to give more hints to the C parser.
     Thanks to Flavien@lebarbe.net for the idea.
   - the ability to print the values of more (but not all) kinds of
     metavariables from python
   - new vim SmPL mode.
     Thanks to Alexander Faroy.

** Bugfix:
   - consider the ident tokens also in the 2 lines before the error line for the
     10-most-problematic-parsing-errors diagnostic.
   - SmPL parser allows cast as the argument of a pointer
   - SmPL type checker allows enum as an array index
   - Better generation of fresh metavariables names in hrule
   - no more warnings about things that should be metavariables when there is
     a disjunction in a function position
   - bugfix in parser, better error message.
     Thanks to Ali-Erdem OZCAN <ali-erdem.ozcan@st.com> for the bug report.

13 years agoRelease coccinelle-0.1.5
Coccinelle [Sun, 3 Oct 2010 11:57:38 +0000 (13:57 +0200)]
Release coccinelle-0.1.5

** Language:
   - added initialiser metavariable
   - added sequences of designators in structures

** Features:
   - improved printing of the C code corresponding to metavariables
   - improved printing when code (eg declarations) is removed at the beginning
     of a block, and then is followed by a blank line
   - slightly less verbose error reporting in parsing_hacks

** Bugfix:
   - fixed some problems with parsing SmPL code where a nest appears after a |
   - better treatment of { }, form in macros wrt unparse_c
   - less quiet for -parse_c
   - improve parsing heuristics regarding macro statement

13 years agoRelease coccinelle-0.1.4
Coccinelle [Sun, 3 Oct 2010 11:57:33 +0000 (13:57 +0200)]
Release coccinelle-0.1.4

** Language:
   - long long added to SmPL

** Documentation:
   - add grammar reference and spatch command line options reference

** Features:
   - can match patterns of the form unsigned T or signed T, where T is a
     metavariable
   - dropped the sizeof_parens isomorphism, which was made redundant by the
     paren isomorphism
   - simple rule generation

** Bugfix:
   - trailing , ; and ) no longer left on a line by themselves
   - better treatment of error exit when the searched for code matches the
     error exit condition.
   - fix incorrect treatment of parentheses in test_exps that could allow +
     code to be added twice
   - don't ask whether iterator names and declarer names should be declared as
     metavariables.
   - slightly better support for expression list metavariables.
   - short and long allowed for array index types in SmPL
   - more restrictions on type inference for pointer arithmetic in SmPL
   - allow isomorphisms to apply when + code is anywhere within all - terms
   - changed order of printing const and volatile
   - allow  eg ... <... in plus code
   - better formatting of generated if/while/etc. code
   - better parse error reporting when the problem is at the end of the file

** Internals:
   - isomorphisms don't apply under signed/unsigned, to prevent the creation
     of things like unsigned signed int.  Need a better solution for this.

13 years agoRelease coccinelle-0.1.3
Coccinelle [Sun, 3 Oct 2010 11:56:42 +0000 (13:56 +0200)]
Release coccinelle-0.1.3

** Features:
   - help in building the configuration macro file. The -parse_c action
     now returns the 10 most frequent parsing errors. This give useful
     hints to extend standard.h.

** Bugfix:
   - positions no longer allowed on \(, \|, and \)
   - improved propagation of negation for isos in the presence of parens
   - convert Todos in flow graph construction to recoverable errors
   - fixed bug in treatment of when != true and when != false, to allow more
     than one of them per ...
   - improve parsing of typedef of function pointer.
   - improve typing.
   - parsing and typing support for old style C function declaration.
   - consider position variables as modifications when optimizing the
     translation into CTL of function definitions

13 years agoRelease coccinelle-0.1.2
Coccinelle [Sun, 3 Oct 2010 11:56:16 +0000 (13:56 +0200)]
Release coccinelle-0.1.2

** Bugfix:
   - better handling of ifdef on statements in control flow graph.
   - transform files even if they do not end in .c (thanks to Vegard Nossum)

** Internals:
   - merge code of yacfe

13 years agoRelease coccinelle-0.1.1
Coccinelle [Sun, 3 Oct 2010 11:56:01 +0000 (13:56 +0200)]
Release coccinelle-0.1.1

** Language:
    - support for initializer at toplevel, cf -test substruct

13 years agoRelease coccinelle-0.1
Coccinelle [Sun, 3 Oct 2010 11:46:58 +0000 (13:46 +0200)]
Release coccinelle-0.1

 * First public release of the source code:
 * Features
   - embeded python scripting
   - position