6 - initialize and finalize script code, cf demos/initial_final.cocci
9 - -iso_limit option to limit the depth of isomorphism application
10 - with the dir option, the include path is implicitly set to the "include"
11 subdirectory of the specified directory, if the option -I is not used.
12 - give a seed for the name of a fresh identifier
13 - better handling of cpp "constructed" identifiers as in a##b, that in
14 the futur will make it easier to match over those idents.
15 cf tests/pb_parsing_macro.c. Thanks to Ali-Erdem Ozcan for pointing
16 out the problem. A new "parsing hack hint" is also available:
17 YACFE_IDENT_BUILDER, cf standard.h.
20 - drop excessive "optimization" in ctl generation for while and for loops
21 - allow . as the name of the directory
22 - for type inference for an assignment, take the type of the right-hand
23 side expression, not the type of the assigned variable
24 - allow for with a declartion in the first header element, as in C++
26 - allow for matching against variable declarations that include only
27 storage, eg static, but no type at all.
28 - allow for matching against types that contain both short/long and int
29 - allow the type metavariable in the SmPL code "unsigned T" to match a T
30 that is a type consisting of more than one word, eg long int.
31 - -ifdef_to_if option made to process nested ifdefs
35 - improve and fix installation process (usable on BSD)
36 - improve and fix testing process
37 - apply patches from Eugeniy Meshcheryakov
38 - reorganize the way we parse C identifiers, especially concatenated cpp
39 identifiers as in a##b. This may lead to some regressions as we may
40 not parse as much code as before.
41 - removed popl/ and popl09/ and popl related stuff from official distrib.
46 - the ability to add comments
49 - grouping of generated rules with -hrule option
50 - handling of special coccinelle comments
51 /* {{coccinelle:skip_start}} */ and
52 /* {{coccinelle:skip_end}} */
53 allowing to give more hints to the C parser.
54 Thanks to Flavien@lebarbe.net for the idea.
55 - the ability to print the values of more (but not all) kinds of
56 metavariables from python
58 Thanks to Alexander Faroy.
61 - consider the ident tokens also in the 2 lines before the error line for the
62 10-most-problematic-parsing-errors diagnostic.
63 - SmPL parser allows cast as the argument of a pointer
64 - SmPL type checker allows enum as an array index
65 - Better generation of fresh metavariables names in hrule
66 - no more warnings about things that should be metavariables when there is
67 a disjunction in a function position
68 - bugfix in parser, better error message.
69 Thanks to Ali-Erdem OZCAN <ali-erdem.ozcan@st.com> for the bug report.
76 - added initialiser metavariable
77 - added sequences of designators in structures
80 - improved printing of the C code corresponding to metavariables
81 - improved printing when code (eg declarations) is removed at the beginning
82 of a block, and then is followed by a blank line
83 - slightly less verbose error reporting in parsing_hacks
86 - fixed some problems with parsing SmPL code where a nest appears after a |
87 - better treatment of { }, form in macros wrt unparse_c
88 - less quiet for -parse_c
89 - improve parsing heuristics regarding macro statement
96 - long long added to SmPL
99 - can match patterns of the form unsigned T or signed T, where T is a
101 - dropped the sizeof_parens isomorphism, which was made redundant by the
103 - simple rule generation
106 - trailing , ; and ) no longer left on a line by themselves
107 - better treatment of error exit when the searched for code matches the
108 error exit condition.
109 - fix incorrect treatment of parentheses in test_exps that could allow +
110 code to be added twice
111 - don't ask whether iterator names and declarer names should be declared as
113 - slightly better support for expression list metavariables.
114 - short and long allowed for array index types in SmPL
115 - more restrictions on type inference for pointer arithmetic in SmPL
116 - allow isomorphisms to apply when + code is anywhere within all - terms
117 - changed order of printing const and volatile
118 - allow eg ... <... in plus code
119 - better formatting of generated if/while/etc. code
120 - better parse error reporting when the problem is at the end of the file
123 - isomorphisms don't apply under signed/unsigned, to prevent the creation
124 of things like unsigned signed int. Need a better solution for this.
129 - help in building the configuration macro file. The -parse_c action
130 now returns the 10 most frequent parsing errors. This give useful
131 hints to extend standard.h.
134 - positions no longer allowed on \(, \|, and \)
135 - improved propagation of negation for isos in the presence of parens
136 - convert Todos in flow graph construction to recoverable errors
137 - fixed bug in treatment of when != true and when != false, to allow more
138 than one of them per ...
139 - improve parsing of typedef of function pointer.
141 - parsing and typing support for old style C function declaration.
142 - consider position variables as modifications when optimizing the
143 translation into CTL of function definitions
150 - better handling of ifdef on statements in control flow graph.
151 - transform files even if they do not end in .c (thanks to Vegard Nossum)
154 - merge code of yacfe
159 - support for initializer at toplevel, cf -test substruct
163 ** first public release of the source code:
166 - embeded python scripting
173 ** first public release of the binary
178 - lots of features ... look at coccinelle research papers and tutorials.