Release coccinelle-0.1.8
[bpt/coccinelle.git] / changes.txt
1 -*- org -*-
2
3 * 0.1.8
4
5 ** Language:
6
7 ** Features:
8 - Metavariables now capture the cpp code contained within their definitions
9 - When - fragments are separated by ... or nest boundaries in the semantic
10 patch, but end up matching adjacent source code, the comments, cpp code
11 and whitespace that are between them are not deleted.
12 - better parsing of C: do expansion of macros only when needed when
13 have actually a parse error and also leverage the definition of macros
14 in the parsed file (or in a optional_standard.h file passed as a parameter).
15 This should reduce the need for many hardcoded definitions in standard.h
16 - new semantics for the -macro_file option, by default now expand macros
17 only when necessary. To force use the -macro_file_builtins option instead.
18 - a new -extract_macros command line action to help the parser. Works with
19 the -macro_file option. e.g.
20 $ ./spatch -extract_macros ~/linux > /tmp/alldefs.h
21 $ ./spatch -macro_file /tmp/alldefs.h -sp_file foo.cocci -dir ~/linux
22 - removed -D macro_file option, not consistent with what -D usually means
23 - reattempt to be more efficient for statement metavariables that are just
24 placeholders (ie, no modification, no reuse)
25 - triples now returned from ctl in sorted order. The main key is the
26 state. On the other hand, the state order does not always agree with the
27 order of appearance in the code.
28 - spatch is now less verbose on the things it does yet handle. Less confusing
29 for new users.
30 - slightly better error report. Thanks to Derek Jones for the suggestion.
31 - added the options -linux_spacing and -smpl_spacing. -linux_spacing
32 causes spatch to follow the spacing conventions of Linux, while
33 -smpl_spacing causes spatch to follow the spacing in the semantic patch.
34 -linux_spacing is the default.
35 - more informative error reporting for the already tagged token case.
36 Thanks to Erik Hovland for the suggestion.
37
38 ** Bugfix:
39 - better parsing of declare macro at toplevel and in structure.
40 cf -text xfield
41 - allowing back typedef names for fieldname
42 - better printing of else in generated code
43 - slightly better type inference for binary operators.
44 - clear out declarer names and iterator names between SmPL files (for
45 -testall)
46 - better parsing and type checking of macro type aliases. Cf -test macro_int16.
47 Thanks to Li Yingtong for pointing out the problem.
48 - make insert_virtual_positions tail rec, avoid stack overflow pb.
49 Thanks to Diego Liziero <diegoliz@gmail.com> for pointing out the
50 problem.
51 - Better type inference for arithmetic binary operators
52 Thanks to Li Yingtong for pointing out the problem.
53 - Better type inference for constants
54 Thanks to Li Yingtong for pointing out the problem.
55 - move computing of adjacency information for semantic patches to after
56 application of isomorphisms, because isomorphisms can introduce "..."
57 - compute adjacency information for negated ...
58 - record with each transformation site the set of indices of the witness
59 trees that caused the transformation site to come about. Whitespace and
60 comments between remove tokens associated with disjoint witness trees is
61 not removed.
62 - correct treatment of function pointer typed parameters in the SmPL ast0
63 visitor.
64 - better parsing error message and error recovery when comments are not ended,
65 when some macros have a weird body, and when some switch have a weird
66 Body.
67 Thanks to Derek Jones for pointing out the problem.
68 - better detection and passing of "dangerous" ifdefs, cf -test
69 double_switch.
70 - dropped the separation of decls and body in Seq. This gives better
71 positioning of the bindings of metavariables shared between them.
72 Thanks to Erik Hovland for an example that shows the problem.
73
74 ** Internals:
75 - supress warning in compiling ocamlsexp (warning caused by a new behavior
76 of cpp used internally in processing files in ocamlsexp/)
77
78 * 0.1.7
79
80 ** Language:
81 - initialize and finalize script code, cf demos/initial_final.cocci
82
83 ** Features:
84 - -iso_limit option to limit the depth of isomorphism application
85 - with the dir option, the include path is implicitly set to the "include"
86 subdirectory of the specified directory, if the option -I is not used.
87 - give a seed for the name of a fresh identifier
88 - better handling of cpp "constructed" identifiers as in a##b, that in
89 the futur will make it easier to match over those idents.
90 cf tests/pb_parsing_macro.c. Thanks to Ali-Erdem Ozcan for pointing
91 out the problem. A new "parsing hack hint" is also available:
92 YACFE_IDENT_BUILDER, cf standard.h.
93
94 ** Bugfix:
95 - drop excessive "optimization" in ctl generation for while and for loops
96 - allow . as the name of the directory
97 - for type inference for an assignment, take the type of the right-hand
98 side expression, not the type of the assigned variable
99 - allow for with a declartion in the first header element, as in C++
100 (partial support)
101 - allow for matching against variable declarations that include only
102 storage, eg static, but no type at all.
103 - allow for matching against types that contain both short/long and int
104 - allow the type metavariable in the SmPL code "unsigned T" to match a T
105 that is a type consisting of more than one word, eg long int.
106 - -ifdef_to_if option made to process nested ifdefs
107 (partial support)
108
109 ** Internals:
110 - improve and fix installation process (usable on BSD)
111 - improve and fix testing process
112 - apply patches from Eugeniy Meshcheryakov
113 - reorganize the way we parse C identifiers, especially concatenated cpp
114 identifiers as in a##b. This may lead to some regressions as we may
115 not parse as much code as before.
116 - removed popl/ and popl09/ and popl related stuff from official distrib.
117
118 * 0.1.6
119
120 ** Language:
121 - the ability to add comments
122
123 ** Features:
124 - grouping of generated rules with -hrule option
125 - handling of special coccinelle comments
126 /* {{coccinelle:skip_start}} */ and
127 /* {{coccinelle:skip_end}} */
128 allowing to give more hints to the C parser.
129 Thanks to Flavien@lebarbe.net for the idea.
130 - the ability to print the values of more (but not all) kinds of
131 metavariables from python
132 - new vim SmPL mode.
133 Thanks to Alexander Faroy.
134
135 ** Bugfix:
136 - consider the ident tokens also in the 2 lines before the error line for the
137 10-most-problematic-parsing-errors diagnostic.
138 - SmPL parser allows cast as the argument of a pointer
139 - SmPL type checker allows enum as an array index
140 - Better generation of fresh metavariables names in hrule
141 - no more warnings about things that should be metavariables when there is
142 a disjunction in a function position
143 - bugfix in parser, better error message.
144 Thanks to Ali-Erdem OZCAN <ali-erdem.ozcan@st.com> for the bug report.
145
146 ** Internals:
147
148 * 0.1.5
149
150 ** Language:
151 - added initialiser metavariable
152 - added sequences of designators in structures
153
154 ** Features:
155 - improved printing of the C code corresponding to metavariables
156 - improved printing when code (eg declarations) is removed at the beginning
157 of a block, and then is followed by a blank line
158 - slightly less verbose error reporting in parsing_hacks
159
160 ** Bugfix:
161 - fixed some problems with parsing SmPL code where a nest appears after a |
162 - better treatment of { }, form in macros wrt unparse_c
163 - less quiet for -parse_c
164 - improve parsing heuristics regarding macro statement
165
166 ** Internals:
167
168 * 0.1.4
169
170 ** Language:
171 - long long added to SmPL
172
173 ** Documentation:
174 - add grammar reference and spatch command line options reference
175
176 ** Features:
177 - can match patterns of the form unsigned T or signed T, where T is a
178 metavariable
179 - dropped the sizeof_parens isomorphism, which was made redundant by the
180 paren isomorphism
181 - simple rule generation
182
183 ** Bugfix:
184 - trailing , ; and ) no longer left on a line by themselves
185 - better treatment of error exit when the searched for code matches the
186 error exit condition.
187 - fix incorrect treatment of parentheses in test_exps that could allow +
188 code to be added twice
189 - don't ask whether iterator names and declarer names should be declared as
190 metavariables.
191 - slightly better support for expression list metavariables.
192 - short and long allowed for array index types in SmPL
193 - more restrictions on type inference for pointer arithmetic in SmPL
194 - allow isomorphisms to apply when + code is anywhere within all - terms
195 - changed order of printing const and volatile
196 - allow eg ... <... in plus code
197 - better formatting of generated if/while/etc. code
198 - better parse error reporting when the problem is at the end of the file
199
200 ** Internals:
201 - isomorphisms don't apply under signed/unsigned, to prevent the creation
202 of things like unsigned signed int. Need a better solution for this.
203
204
205 * 0.1.3
206
207 ** Features:
208 - help in building the configuration macro file. The -parse_c action
209 now returns the 10 most frequent parsing errors. This give useful
210 hints to extend standard.h.
211
212 ** Bugfix:
213 - positions no longer allowed on \(, \|, and \)
214 - improved propagation of negation for isos in the presence of parens
215 - convert Todos in flow graph construction to recoverable errors
216 - fixed bug in treatment of when != true and when != false, to allow more
217 than one of them per ...
218 - improve parsing of typedef of function pointer.
219 - improve typing.
220 - parsing and typing support for old style C function declaration.
221 - consider position variables as modifications when optimizing the
222 translation into CTL of function definitions
223
224 ** Internals:
225
226 * 0.1.2
227
228 ** Bugfix:
229 - better handling of ifdef on statements in control flow graph.
230 - transform files even if they do not end in .c (thanks to Vegard Nossum)
231
232 ** Internals:
233 - merge code of yacfe
234
235 * 0.1.1
236
237 ** Language:
238 - support for initializer at toplevel, cf -test substruct
239
240 * 0.1
241
242 ** first public release of the source code:
243
244 ** Language:
245 - embeded python scripting
246 - position
247
248 ** Features
249
250 * beta
251
252 ** first public release of the binary
253
254 * alpha
255
256 ** Features
257 - lots of features ... look at coccinelle research papers and tutorials.