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