Release coccinelle-0.2.0rc1
[bpt/coccinelle.git] / changes.txt
1 -*- org -*-
2
3 * 0.2.0
4 ** Language:
5
6 ** Features:
7 - Remove duplicated code in disjunctions
8 - Better error message when grep finds nothing relevant. Thanks to Joe
9 Perches for the suggestion.
10 - added -keep_comments option for the unparsing of the transformed code
11 - Option "-version" now also gives information about built-in
12 Python binding support.
13
14 ** Bugfix:
15 - proper consideration of #define macro arguments in checking for the use
16 of metavariables and in computing the line numbers of complex terms
17 - better parsing of included .cocci files
18 - put included .cocci files in the right order
19 - bind position variables only once for #include
20 - fix bug in include_match that caused everything to halt when all matches
21 were discarded
22
23 * 0.1.11
24
25 ** Language:
26 - Meta-identifier/function and constant could be filtered from SmPL by
27 regular expressions using the "~=" and "!~=" operators followed by
28 an OCaml regular expression (see man Str) in double quote.
29 - Virtual rules, which can be referenced in depends, and set and unset
30 using the command-line options -D
31 - ++ for multiple additions
32
33 ** Features:
34 - coccicheck: a framework to check a series of SmPL files on a project
35 see scripts/coccicheck for more information
36
37 ** Bugfix:
38 - bind position variables to the correct starting position in the case of a
39 complex statement such as an if or while. Thanks to Derek Jones for
40 pointing out the problem.
41 - checking for non mentioned case lines in switch should be unchecked.
42 - space should be printed after sizeof when there are no parentheses around
43 the argument. Thanks to Daniel Walker for pointing out the problem.
44 - avoid introducing sharing in propagating ! over () in treatment of isos
45 - save_excursion has to handle and rethrow exceptions
46 - eliminate unnecessary consideration of CVS strings. Thanks to David
47 Young for pointing out the problem.
48 - completely new treatment of statement metavariables
49 - better type checking for macro definitions
50 - drop regression testing in -parse_c
51
52 * 0.1.10
53
54 ** Language:
55 - declarations allowed in switch, suggested by Derek M. Jones
56
57 ** Features:
58 - use interval timer for timeouts. Thanks to Derek M. Jones for the
59 implementation.
60 - more flexible env.sh, thanks to Derek Jones.
61 - faster Python invocation
62 - simplify unparsing in the sgrep case
63
64 ** Bugfix:
65 - for glimpse there is no point to create a pattern containing a numeric
66 constant because glimpse doesn't index them
67 - add spaces after commas in function calls and function headers
68 - made python integration more like the ubuntu version
69 http://patches.ubuntu.com/by-release/extracted/debian/c/coccinelle/0.1.5dbs-2/01-system-pycaml
70 this fixes some memory management problems with None, True, and False
71 - correct labels associated with a switch in the CFG so that a statement
72 metavariable can match a switch. Thanks to Derek Jones for pointing out
73 the problem.
74 - keep switch pattern within switch body. Thanks to Derek Jones for
75 pointing out the problem.
76 - Allow expanded tokens to be stored in metavariables, as long as they are
77 not removed. But this does currently allow them in + code, which will
78 produce the expansion. Thanks to Ali-Erdem Ozcan for pointing out the
79 problem.
80 - improved adjustment of spacing when code removed at the beginning of a line
81
82 * 0.1.9
83
84 ** Language:
85 - allow fresh identifiers to be declared using ## such that the value mixes
86 both strings and previously declared metavariables
87
88 ** Features:
89 - better handling of expanded code containing ##. Now compute the
90 result.
91 - more precise warning message for the "'\' outside define".
92 Thanks to Nicholas Mc Guire for pointing out the problem.
93 - more precise warning message related to ifdefization.
94 Thanks to Derek Jones for pointing out the problem.
95 - we don't create any more certain files in /tmp (they may be a cause
96 of security problems).
97 Thanks to Eugeniy Meshcheryakov for pointing out the problem.
98 - More optimization for the case of just deleting a complete function.
99 Allows this to happen without tracing through all the control-flow
100 paths. Thanks to Francois Bissyande for pointing out the problem.
101 - prevent code from being added to the beginning or end of a disjunction
102 - more information about why a script is not applied when using -debug option
103 - added -no_safe_expressions option
104 - added -no_loops option. Ignores back edges derived from looping
105 constructs. This is unsafe, but perhaps useful for bug finding, as it can
106 be more efficient.
107 - for semantic matches, allow "minus" on same code with multiple
108 environments
109 - better error message for mismatch of parenthesis in column 0 with normal
110 parenthesis. Thanks to Derek Jones for pointing out the problem.
111 - allow disjunctions on function return types. Thanks to Pierre Habouzit
112 for pointing this out.
113
114 ** Bugfix:
115 - keep disjunction in the proper order for structure initialization fields
116 - variables declared in different places should not seem to match each
117 other
118 - drop complaints about label metavariables not being used
119 - drop test information from the type of an expression when the expression
120 is bound to a metavariable
121 - nests should not extend beyond the before and after code, even if the
122 before and after code matches the nest code
123 - nests should extend into conditionals that end in error exit
124 - take into account metavariables on "else". Thanks to Derek Jones for
125 pointing out the problem.
126 - print single quotes on generated character constants
127 - better typedef handling in the initialisation/affectation builtin
128 isomorphism, cf -test init_affect_typedef
129 - support disjunction of types on variable declaration
130 - allow @ within strings in script code. ignore // comment lines in script
131 code.
132 - don't drop + code placed after the transformed code
133 - drop spaces produced by removing code before semicolons
134 - adjusted spacing within generated code
135 - less verbose -sp. Thanks to Derek Jones for pointing out the problem.
136 - accept multiple type names in a SmPL typedef declaration.
137
138 * 0.1.8
139
140 ** Language:
141
142 ** Features:
143 - Metavariables now capture the cpp code contained within their definitions
144 - When - fragments are separated by ... or nest boundaries in the semantic
145 patch, but end up matching adjacent source code, the comments, cpp code
146 and whitespace that are between them are not deleted.
147 - better parsing of C: do expansion of macros only when needed when
148 have actually a parse error and also leverage the definition of macros
149 in the parsed file (or in a optional_standard.h file passed as a parameter).
150 This should reduce the need for many hardcoded definitions in standard.h
151 - new semantics for the -macro_file option, by default now expand macros
152 only when necessary. To force use the -macro_file_builtins option instead.
153 - a new -extract_macros command line action to help the parser. Works with
154 the -macro_file option. e.g.
155 $ ./spatch -extract_macros ~/linux > /tmp/alldefs.h
156 $ ./spatch -macro_file /tmp/alldefs.h -sp_file foo.cocci -dir ~/linux
157 - removed -D macro_file option, not consistent with what -D usually means
158 - reattempt to be more efficient for statement metavariables that are just
159 placeholders (ie, no modification, no reuse)
160 - triples now returned from ctl in sorted order. The main key is the
161 state. On the other hand, the state order does not always agree with the
162 order of appearance in the code.
163 - spatch is now less verbose on the things it does yet handle. Less confusing
164 for new users.
165 - slightly better error report. Thanks to Derek Jones for the suggestion.
166 - added the options -linux_spacing and -smpl_spacing. -linux_spacing
167 causes spatch to follow the spacing conventions of Linux, while
168 -smpl_spacing causes spatch to follow the spacing in the semantic patch.
169 -linux_spacing is the default.
170 - more informative error reporting for the already tagged token case.
171 Thanks to Erik Hovland for the suggestion.
172
173 ** Bugfix:
174 - better parsing of declare macro at toplevel and in structure.
175 cf -text xfield
176 - allowing back typedef names for fieldname
177 - better printing of else in generated code
178 - slightly better type inference for binary operators.
179 - clear out declarer names and iterator names between SmPL files (for
180 -testall)
181 - better parsing and type checking of macro type aliases. Cf -test macro_int16.
182 Thanks to Li Yingtong for pointing out the problem.
183 - make insert_virtual_positions tail rec, avoid stack overflow pb.
184 Thanks to Diego Liziero <diegoliz@gmail.com> for pointing out the
185 problem.
186 - Better type inference for arithmetic binary operators
187 Thanks to Li Yingtong for pointing out the problem.
188 - Better type inference for constants
189 Thanks to Li Yingtong for pointing out the problem.
190 - move computing of adjacency information for semantic patches to after
191 application of isomorphisms, because isomorphisms can introduce "..."
192 - compute adjacency information for negated ...
193 - record with each transformation site the set of indices of the witness
194 trees that caused the transformation site to come about. Whitespace and
195 comments between remove tokens associated with disjoint witness trees is
196 not removed.
197 - correct treatment of function pointer typed parameters in the SmPL ast0
198 visitor.
199 - better parsing error message and error recovery when comments are not ended,
200 when some macros have a weird body, and when some switch have a weird
201 Body.
202 Thanks to Derek Jones for pointing out the problem.
203 - better detection and passing of "dangerous" ifdefs, cf -test
204 double_switch.
205 - dropped the separation of decls and body in Seq. This gives better
206 positioning of the bindings of metavariables shared between them.
207 Thanks to Erik Hovland for an example that shows the problem.
208
209 ** Internals:
210 - supress warning in compiling ocamlsexp (warning caused by a new behavior
211 of cpp used internally in processing files in ocamlsexp/)
212
213 * 0.1.7
214
215 ** Language:
216 - initialize and finalize script code, cf demos/initial_final.cocci
217
218 ** Features:
219 - -iso_limit option to limit the depth of isomorphism application
220 - with the dir option, the include path is implicitly set to the "include"
221 subdirectory of the specified directory, if the option -I is not used.
222 - give a seed for the name of a fresh identifier
223 - better handling of cpp "constructed" identifiers as in a##b, that in
224 the futur will make it easier to match over those idents.
225 cf tests/pb_parsing_macro.c. Thanks to Ali-Erdem Ozcan for pointing
226 out the problem. A new "parsing hack hint" is also available:
227 YACFE_IDENT_BUILDER, cf standard.h.
228
229 ** Bugfix:
230 - drop excessive "optimization" in ctl generation for while and for loops
231 - allow . as the name of the directory
232 - for type inference for an assignment, take the type of the right-hand
233 side expression, not the type of the assigned variable
234 - allow for with a declartion in the first header element, as in C++
235 (partial support)
236 - allow for matching against variable declarations that include only
237 storage, eg static, but no type at all.
238 - allow for matching against types that contain both short/long and int
239 - allow the type metavariable in the SmPL code "unsigned T" to match a T
240 that is a type consisting of more than one word, eg long int.
241 - -ifdef_to_if option made to process nested ifdefs
242 (partial support)
243
244 ** Internals:
245 - improve and fix installation process (usable on BSD)
246 - improve and fix testing process
247 - apply patches from Eugeniy Meshcheryakov
248 - reorganize the way we parse C identifiers, especially concatenated cpp
249 identifiers as in a##b. This may lead to some regressions as we may
250 not parse as much code as before.
251 - removed popl/ and popl09/ and popl related stuff from official distrib.
252
253 * 0.1.6
254
255 ** Language:
256 - the ability to add comments
257
258 ** Features:
259 - grouping of generated rules with -hrule option
260 - handling of special coccinelle comments
261 /* {{coccinelle:skip_start}} */ and
262 /* {{coccinelle:skip_end}} */
263 allowing to give more hints to the C parser.
264 Thanks to Flavien@lebarbe.net for the idea.
265 - the ability to print the values of more (but not all) kinds of
266 metavariables from python
267 - new vim SmPL mode.
268 Thanks to Alexander Faroy.
269
270 ** Bugfix:
271 - consider the ident tokens also in the 2 lines before the error line for the
272 10-most-problematic-parsing-errors diagnostic.
273 - SmPL parser allows cast as the argument of a pointer
274 - SmPL type checker allows enum as an array index
275 - Better generation of fresh metavariables names in hrule
276 - no more warnings about things that should be metavariables when there is
277 a disjunction in a function position
278 - bugfix in parser, better error message.
279 Thanks to Ali-Erdem OZCAN <ali-erdem.ozcan@st.com> for the bug report.
280
281 ** Internals:
282
283 * 0.1.5
284
285 ** Language:
286 - added initialiser metavariable
287 - added sequences of designators in structures
288
289 ** Features:
290 - improved printing of the C code corresponding to metavariables
291 - improved printing when code (eg declarations) is removed at the beginning
292 of a block, and then is followed by a blank line
293 - slightly less verbose error reporting in parsing_hacks
294
295 ** Bugfix:
296 - fixed some problems with parsing SmPL code where a nest appears after a |
297 - better treatment of { }, form in macros wrt unparse_c
298 - less quiet for -parse_c
299 - improve parsing heuristics regarding macro statement
300
301 ** Internals:
302
303 * 0.1.4
304
305 ** Language:
306 - long long added to SmPL
307
308 ** Documentation:
309 - add grammar reference and spatch command line options reference
310
311 ** Features:
312 - can match patterns of the form unsigned T or signed T, where T is a
313 metavariable
314 - dropped the sizeof_parens isomorphism, which was made redundant by the
315 paren isomorphism
316 - simple rule generation
317
318 ** Bugfix:
319 - trailing , ; and ) no longer left on a line by themselves
320 - better treatment of error exit when the searched for code matches the
321 error exit condition.
322 - fix incorrect treatment of parentheses in test_exps that could allow +
323 code to be added twice
324 - don't ask whether iterator names and declarer names should be declared as
325 metavariables.
326 - slightly better support for expression list metavariables.
327 - short and long allowed for array index types in SmPL
328 - more restrictions on type inference for pointer arithmetic in SmPL
329 - allow isomorphisms to apply when + code is anywhere within all - terms
330 - changed order of printing const and volatile
331 - allow eg ... <... in plus code
332 - better formatting of generated if/while/etc. code
333 - better parse error reporting when the problem is at the end of the file
334
335 ** Internals:
336 - isomorphisms don't apply under signed/unsigned, to prevent the creation
337 of things like unsigned signed int. Need a better solution for this.
338
339
340 * 0.1.3
341
342 ** Features:
343 - help in building the configuration macro file. The -parse_c action
344 now returns the 10 most frequent parsing errors. This give useful
345 hints to extend standard.h.
346
347 ** Bugfix:
348 - positions no longer allowed on \(, \|, and \)
349 - improved propagation of negation for isos in the presence of parens
350 - convert Todos in flow graph construction to recoverable errors
351 - fixed bug in treatment of when != true and when != false, to allow more
352 than one of them per ...
353 - improve parsing of typedef of function pointer.
354 - improve typing.
355 - parsing and typing support for old style C function declaration.
356 - consider position variables as modifications when optimizing the
357 translation into CTL of function definitions
358
359 ** Internals:
360
361 * 0.1.2
362
363 ** Bugfix:
364 - better handling of ifdef on statements in control flow graph.
365 - transform files even if they do not end in .c (thanks to Vegard Nossum)
366
367 ** Internals:
368 - merge code of yacfe
369
370 * 0.1.1
371
372 ** Language:
373 - support for initializer at toplevel, cf -test substruct
374
375 * 0.1
376
377 ** first public release of the source code:
378
379 ** Language:
380 - embeded python scripting
381 - position
382
383 ** Features
384
385 * beta
386
387 ** first public release of the binary
388
389 * alpha
390
391 ** Features
392 - lots of features ... look at coccinelle research papers and tutorials.