Coccinelle release 1.0.0-rc1
[bpt/coccinelle.git] / changes.txt
CommitLineData
34e49164
C
1-*- org -*-
2
55d38388
C
3* upcoming/planned/todo
4** Language:
5- Semantic patch for other languages
6- Support metavariables, virtual rules and virtual identifiers
7 in initialize and finalize rules
ca417fcf 8- Support for matching #ifdef, etc.
190f1acf 9- function-typed metavariables
55d38388
C
10
11** Features:
12- New scripting languages
13
14** Bugfix:
15- Add more information in documentation, man pages and wiki
16
8f657093
C
17* 1.0.0
18** Language:
19- Addition of initializer list metavariables. Thanks to Michael Stefaniuc
20 for noticing the need for them.
21- Allow multiple position variables per token
22
23** Features:
24- Preserve spacing before // comments when not at the beginning of a line
25
26** Bugfix:
27- Corrected parsing of script strings delimited by a single quote. Thanks
28 to Eugeniy Meshcheryakov for reporting the problem.
29- Improved indentation of added ifdefs.
30- Allow added comments and #ifdefs to precede other added code. Thanks to
31 Jani Monoses for noticing the problem.
32
690d68d1
C
33* 0.2.5
34** Language:
3a314143
C
35- Make a very small attempt to parse C++ code, amounting to accepting
36 identifiers containing ::, tilde, and template invocations. Use the
37 option -c++. This is not likely to be very useful in practice.
b23ff9c7 38- Added metavariable metavariable type.
d3f655c6 39- Add disjunctions on identifiers in some contexts
f59c9fb7 40- Pretend that & indicates a pointer in -c++ mode
190f1acf
C
41- Support for new and delete
42- Allow arrays in smpl parameter declarations. Thanks to Jesper Louis
43 Andersen for pointing out the problem.
44- Field list metavariables
45- Add the ability to add __attributes__ (NB, no matching on attributes)
46- Slightly improved the error message for transformation on multiple
47 variable declaration. Thanks to Jonathan Nieder for pointing out the
48 problem.
690d68d1
C
49
50** Features:
51- support transformations on variables (only) in declarations that declare
52 multiple variables
3a314143
C
53- allow #endif XXX in C code
54- relax_include_path now applied to non local includes too, in which case
55 it tries to find a unique file with a suffix of the provided name.
56 this is useful for directories that are intended to be symbolic links.
57- support matching and removing #undef
58- support for iteration in ocaml, requires use of -no_show_diff
59- calls to likely and unlikely propagate test expression status to their
60 arguments
ca417fcf
C
61- reuse typedefs and macros from complete parsing when reparsing the
62 transformed code
190f1acf 63- better explanation when presenting glimpse tokens
d3f655c6 64- optimization for an if branch that is just { ... }
4dfbc1c2 65- spatch -control_flow_to_file file.c generates a file file.dot
190f1acf 66- include files with names ending in .cpp if -c++ option is given
6756e19d 67- removed use of the no longer supported sexplib function Conv.hashtbl_of_sexp
f537ebc4 68- add information about which Fedora packages are needed
690d68d1
C
69
70** Bugfix:
3a314143
C
71- improved parsing of expressions to allow ... to the right of operators in
72 more places
ca417fcf
C
73- Fix check_config for Python 2.7 on Fedora 14 (Reported-by: Michael Stefaniuc)
74- Check for ocamlfind in configure (Reported-by: Paul E. McKenney)
75- Postpone use of ocamlfind at runtime to report fewer errors
b23ff9c7 76- Add support for Python 2.4 binding with the provided pycaml library
190f1acf
C
77- Allow '@' in script code. Thanks to Laurent Reveillere for noticing the
78 problem.
79- Remove an optimization of x or true to true in asttoctl2 for the case
80 where x may make a modification, eg the case of -thing ?-thing
81- Allow adding comments before a function.
f537ebc4
C
82- Introduction of newlines in function arguments needs to take into account
83 that the code added by SmPL can include newlines. Thanks to Thomas
84 Gleixner for finding the problem.
690d68d1 85
413ffc02
C
86* 0.2.4
87** Language:
88- scripts now have names and can declare metavariables that are seen by
89 SmPL as identifier metavariables, see demos/{python,ocaml}tococci.cocci
90- declaration (match variable declarations) and field (match structure
91 field declarations) metavariables
c491d8ee 92- matching of array initializations and of enum declarations
413ffc02
C
93
94** Features:
95- compatability with Python 2.7. Thanks to Richard W.M. Jones for pointing
96 out the problem
97- python and ocaml string representations of parameter lists and expression
98 lists
99- try simpler patterns on glimpse failure
785a3008
C
100- graceful and immediate failure when a virtual rule is defined on the
101 command line, but not in the rule
c491d8ee
C
102- spatch returns -1 when a virtual rule is requested that is not supported
103- no transformation when using * with the option -no_show_diff
e6509c05
C
104- expanded +++ file name for match output
105- struct *^* and enum *^* metavariable types
5626f154
C
106- allow an assignment to match a variable initialization, even if multiple
107 variables are declared at the same time.
1eddfd50 108- add the option -recursive_includes
9bc82bae
C
109- added the option -use_idutils. The requires the previous use of the
110 script idutils_index.sh
413ffc02
C
111
112** Bugfix:
113- detect used after metavariables in simple statement metavariable match
785a3008
C
114- allow inheriting position variables over rules that make transformations
115 but depend on virtual rules that are not defined on the command line
116- treat top-level tokens in decl visitor. Thanks to Peter Tummeltshammer
117 for noticing a resulting problem.
c491d8ee 118- improve typing of the result of an assignment expression
e6509c05 119- eliminate some recursive calls in C code parsing to avoid stack overflows
c491d8ee
C
120- better pretty printing of #define when the whole line is removed
121- better pretty printing of asm code containing
122 "::[input]"r"(&coherence_data[i])"
123- allow pretty printing of C code with nameless bit fields
e6509c05
C
124- avoid adding an error message to standard output if ocamlfind is not
125 found
126- struct/union/enum-typed metavariables with a metavariable type name
5626f154
C
127- better management of whitespace between deleted lines. Thanks to
128 Andriy Gapon for noticing the problem.
129- improved parsing recovery for badly parsed struct/enum typedefs
130- drop expanded tokens in sgrep output. Thanks to Andriy Gapon for
131 noticing the problem.
132- constant strings have array type, not pointer type. Thanks to Vasiliy
133 Kulikov for noticing the problem.
1eddfd50
C
134- improve indentation when adding code after a function call with indented
135 arguments.
136- return type of sizeof converted to unsigned long. Thanks to Vasiliy
137 Kulikov for noticing the problem.
138- improve spacing when adding structure initializers. Thanks to Vasiliy
139 Kulikov for noticing the problem.
413ffc02 140
5636bb2c
C
141* 0.2.3
142** Language:
143- <= constraints relating an expression metavariable to one or more
144 inherited expression metavariables that it should be a subexpression of
145- the -inplace and -outplace options have been renamed -in_place and
146 -out_place. -in_place no longer makes a backup. A backup can be
147 requested using the option -backup_suffix, eg -backup_suffix .bk
148- identifiers can be constrained to be different from an inherited
149 identifier metavariable, or from a set containing both concrete
150 identifiers and inherited identifier metavariables.
174d1640 151- support for ocaml scripting
aba5c457 152- ast available in ocaml scripts
5636bb2c
C
153
154** Features:
155- drop inconsistent paths check when only one node was matched
156- allow #define id with no definition
157- attempt to add newlines in the generated code when function calls in the
158 smpl cause passing column 80
159- allow - in front of statement level nests, if everything inside the nest
160 is also -
90aeb998
C
161- 'configure' looks for some system libraries: menhirLib, sexplib, pycaml.
162 Not available libraries are replaced by a copy provided with the sources.
163- added static for a function goes just before what is specified in the
164 semantic patch, not before any comments etc.
165- Add a new option, -ignore_unknown_options, to ease the integration
166 of Coccinelle as a checker in a toolchain.
167- error in python code causes immediate abort of spatch
174d1640 168- use the same algorithm for collecting grep tokens as for collecting
90aeb998 169 glimpse tokens
174d1640
C
170- Add scripts/spatch.bash_completion for automatic completion of common
171 options under the bash shell.
aba5c457 172- Print rule name when a script rule crashes
88e71198
C
173- Allow the declaration of an expression list or parameter list
174 metavariable to specify the number of expressions or parameters,
175 respectively.
5636bb2c
C
176
177** Bugfix:
178- drop inconsistent paths check when only one node was matched
179- better take into account virtual rules when selecting glimpse tokens
180- print diff when only a comment is added
181- the type of the C code !x should be int regardless of the type of x
182- allow python code at the beginning of an included file
183- better adjustment of whitespace when deleting adjacent lines. Thanks to
184 Wolfram Sang for pointing out the problem.
185- allow metavariables to be inherited from included files
186- allow ? on goto
187- more graceful failure on finding a strange character in a macro parameter
188 list
189- support Parameter metavariables
190- add space after the last comma in an added portion of an argument list
90aeb998
C
191- SmPL nameless struct should only match a nameless struct, not a nameless
192 union. Thanks to Peter Tummeltshammer for pointing out the problem.
193- adjustments to storage don't modify inline as well
194- matching and transformation allowed on inline
195- allow removed field between two ... in structure initialization
196- allow removing an entire structure initialization
174d1640
C
197- manage labels within do while 0 macros
198- added space after : in printing a conditional expression. Thanks to Josh
199 Triplett for noticing the problem.
aba5c457
C
200- dropped trailing whitespace when code at the end of a line is deleted.
201 Thanks to Josh Triplett for noticing the problem.
88e71198
C
202- Fixed environment management when script rule uses cache. Thanks to
203 Bissyande for finding the problem.
204- when false matches if with no else
18b1275a
C
205- ensure { ... } with whencode checks to the end of the function. Thanks to
206 Rene Rydhof Hansen for finding the problem.
5636bb2c 207
c3e37e97
C
208* 0.2.2
209** Language:
210- Added ToTestExpression to iso language, see standard.iso for an
211 explanation
212- Added depends on to initialize and finalize script code
213
214** Features:
215- Update Emacs mode (cocci.el) to support 'virtual' rules and fix other
216 keywords sush as 'depends on', 'using', 'disable'
217- better treatment of != 0 in isos, communtativity for ==/!= for all
218 constants
aa721442 219- allow adding // comments and blank lines (even after cocci + code)
c3e37e97
C
220- Add support for multiple -I options
221
222** Bugfix:
223- correct interaction between virtual rules and included .cocci files
224- improvement in treatment of ! in isos, to avoid duplicating + code
aa721442 225- improvement in treatment of metavars as isos, to avoid duplicating + code
c3e37e97
C
226 between toplevel and variable instantiation
227- test expression of smpl conditional, etc no longer assumed to have type
228 int
229- correct + line numbers in the patch produced when using *
230- iso constant metavariable matches an identifier whose name is all capital
231 letters, eg NULL
232- allow / at the end of the name of a directory (-dir) or patch prefix
233 (-patch)
234- dropped space in + code after the binding of a type metavariable that is
235 a pointer type
236- better handling of . or .. in -dir name
237- allow keywords and metavariable names in identifier constraints (not sure
238 keywords is very useful, though)
aa721442
C
239- no lubtype on arguments of && and || in SmPL
240- allow unknown as type for array indices in SmPL
241- support matching of static annotation on functions that are both static
242 and inline
243- support ENOTDIR error in Common.lfile_exists, to allow for the case where
244 an include file is in a subdirectory that exists but is an ordinary file,
245 not a directory.
246- better management of unbound position variables that appear in
247 constraints
248- cause python parser to skip over // comments, hoping that // is not
249 meaningful inside python
250- require + on every line of a multiline comment
d6a55602
C
251- correct calculation of line numbers when there is script code
252- always annotate arguments of && || and ! as test expressions in C code.
c3e37e97 253
ae4735db
C
254* 0.2.1
255** Language:
256- Add virtual identifiers
257- Add coccilib.report and coccilib.trac Python modules
258- coccilib.org and coccilib.report are imported by default but not loaded
259 in the current scope.
260
261** Features:
262- Parse_error_msg now more helpful. New option -verbose_parsing for even
263 more information.
264- Improve Python import handling. They are imported once during script
265 initialization.
266
267** Bugfix:
268- correct treatment of depends on with || for virtual rules
269
7f004419
C
270* 0.2.0
271** Language:
272
273** Features:
274- Remove duplicated code in disjunctions
275- Better error message when grep finds nothing relevant. Thanks to Joe
276 Perches for the suggestion.
277- added -keep_comments option for the unparsing of the transformed code
278- Option "-version" now also gives information about built-in
279 Python binding support.
9f8e26f4
C
280- slightly faster environment manipulation in pathological cases
281- hack added to accept well-formed #define after function header
7f004419
C
282
283** Bugfix:
9f8e26f4 284- Proper consideration of #define macro arguments in checking for the use
7f004419 285 of metavariables and in computing the line numbers of complex terms
9f8e26f4
C
286- Better parsing of included .cocci files
287- Put included .cocci files in the right order
288- Bind position variables only once for #include
289- Fix bug in include_match that caused everything to halt when all matches
7f004419 290 were discarded
9f8e26f4
C
291- Merge unlikely/likely iso rules under a iso rule named unlikely
292- Some fixes to coccicheck rules, thanks to Andrew Lunn
293- Support groups in regular expression, thanks to Michael Stefaniuc
7f004419 294
951c7801
C
295* 0.1.11
296
297** Language:
298- Meta-identifier/function and constant could be filtered from SmPL by
299 regular expressions using the "~=" and "!~=" operators followed by
300 an OCaml regular expression (see man Str) in double quote.
7f004419
C
301- Virtual rules, which can be referenced in depends, and set and unset
302 using the command-line options -D
303- ++ for multiple additions
951c7801
C
304
305** Features:
951c7801
C
306- coccicheck: a framework to check a series of SmPL files on a project
307 see scripts/coccicheck for more information
308
309** Bugfix:
310- bind position variables to the correct starting position in the case of a
311 complex statement such as an if or while. Thanks to Derek Jones for
312 pointing out the problem.
313- checking for non mentioned case lines in switch should be unchecked.
314- space should be printed after sizeof when there are no parentheses around
315 the argument. Thanks to Daniel Walker for pointing out the problem.
316- avoid introducing sharing in propagating ! over () in treatment of isos
317- save_excursion has to handle and rethrow exceptions
318- eliminate unnecessary consideration of CVS strings. Thanks to David
319 Young for pointing out the problem.
320- completely new treatment of statement metavariables
951c7801
C
321- better type checking for macro definitions
322- drop regression testing in -parse_c
323
fc1ad971
C
324* 0.1.10
325
326** Language:
327- declarations allowed in switch, suggested by Derek M. Jones
328
329** Features:
330- use interval timer for timeouts. Thanks to Derek M. Jones for the
331 implementation.
332- more flexible env.sh, thanks to Derek Jones.
333- faster Python invocation
334- simplify unparsing in the sgrep case
335
336** Bugfix:
337- for glimpse there is no point to create a pattern containing a numeric
338 constant because glimpse doesn't index them
339- add spaces after commas in function calls and function headers
340- made python integration more like the ubuntu version
341 http://patches.ubuntu.com/by-release/extracted/debian/c/coccinelle/0.1.5dbs-2/01-system-pycaml
342 this fixes some memory management problems with None, True, and False
343- correct labels associated with a switch in the CFG so that a statement
344 metavariable can match a switch. Thanks to Derek Jones for pointing out
345 the problem.
346- keep switch pattern within switch body. Thanks to Derek Jones for
347 pointing out the problem.
348- Allow expanded tokens to be stored in metavariables, as long as they are
349 not removed. But this does currently allow them in + code, which will
350 produce the expansion. Thanks to Ali-Erdem Ozcan for pointing out the
351 problem.
352- improved adjustment of spacing when code removed at the beginning of a line
353
978fd7e5
C
354* 0.1.9
355
356** Language:
357- allow fresh identifiers to be declared using ## such that the value mixes
358 both strings and previously declared metavariables
359
360** Features:
361- better handling of expanded code containing ##. Now compute the
362 result.
363- more precise warning message for the "'\' outside define".
364 Thanks to Nicholas Mc Guire for pointing out the problem.
365- more precise warning message related to ifdefization.
366 Thanks to Derek Jones for pointing out the problem.
367- we don't create any more certain files in /tmp (they may be a cause
368 of security problems).
369 Thanks to Eugeniy Meshcheryakov for pointing out the problem.
370- More optimization for the case of just deleting a complete function.
371 Allows this to happen without tracing through all the control-flow
372 paths. Thanks to Francois Bissyande for pointing out the problem.
373- prevent code from being added to the beginning or end of a disjunction
374- more information about why a script is not applied when using -debug option
375- added -no_safe_expressions option
376- added -no_loops option. Ignores back edges derived from looping
377 constructs. This is unsafe, but perhaps useful for bug finding, as it can
378 be more efficient.
379- for semantic matches, allow "minus" on same code with multiple
380 environments
381- better error message for mismatch of parenthesis in column 0 with normal
382 parenthesis. Thanks to Derek Jones for pointing out the problem.
383- allow disjunctions on function return types. Thanks to Pierre Habouzit
384 for pointing this out.
385
386** Bugfix:
387- keep disjunction in the proper order for structure initialization fields
388- variables declared in different places should not seem to match each
389 other
390- drop complaints about label metavariables not being used
391- drop test information from the type of an expression when the expression
392 is bound to a metavariable
393- nests should not extend beyond the before and after code, even if the
394 before and after code matches the nest code
395- nests should extend into conditionals that end in error exit
396- take into account metavariables on "else". Thanks to Derek Jones for
397 pointing out the problem.
398- print single quotes on generated character constants
399- better typedef handling in the initialisation/affectation builtin
400 isomorphism, cf -test init_affect_typedef
401- support disjunction of types on variable declaration
002099fc
C
402- allow @ within strings in script code. ignore // comment lines in script
403 code.
404- don't drop + code placed after the transformed code
405- drop spaces produced by removing code before semicolons
406- adjusted spacing within generated code
407- less verbose -sp. Thanks to Derek Jones for pointing out the problem.
408- accept multiple type names in a SmPL typedef declaration.
978fd7e5 409
708f4980
C
410* 0.1.8
411
412** Language:
413
414** Features:
415- Metavariables now capture the cpp code contained within their definitions
416- When - fragments are separated by ... or nest boundaries in the semantic
417 patch, but end up matching adjacent source code, the comments, cpp code
418 and whitespace that are between them are not deleted.
419- better parsing of C: do expansion of macros only when needed when
420 have actually a parse error and also leverage the definition of macros
421 in the parsed file (or in a optional_standard.h file passed as a parameter).
422 This should reduce the need for many hardcoded definitions in standard.h
423- new semantics for the -macro_file option, by default now expand macros
424 only when necessary. To force use the -macro_file_builtins option instead.
425- a new -extract_macros command line action to help the parser. Works with
426 the -macro_file option. e.g.
427 $ ./spatch -extract_macros ~/linux > /tmp/alldefs.h
428 $ ./spatch -macro_file /tmp/alldefs.h -sp_file foo.cocci -dir ~/linux
429- removed -D macro_file option, not consistent with what -D usually means
430- reattempt to be more efficient for statement metavariables that are just
431 placeholders (ie, no modification, no reuse)
432- triples now returned from ctl in sorted order. The main key is the
433 state. On the other hand, the state order does not always agree with the
434 order of appearance in the code.
435- spatch is now less verbose on the things it does yet handle. Less confusing
436 for new users.
437- slightly better error report. Thanks to Derek Jones for the suggestion.
438- added the options -linux_spacing and -smpl_spacing. -linux_spacing
439 causes spatch to follow the spacing conventions of Linux, while
440 -smpl_spacing causes spatch to follow the spacing in the semantic patch.
441 -linux_spacing is the default.
442- more informative error reporting for the already tagged token case.
443 Thanks to Erik Hovland for the suggestion.
444
445** Bugfix:
446- better parsing of declare macro at toplevel and in structure.
447 cf -text xfield
448- allowing back typedef names for fieldname
449- better printing of else in generated code
450- slightly better type inference for binary operators.
451- clear out declarer names and iterator names between SmPL files (for
452 -testall)
453- better parsing and type checking of macro type aliases. Cf -test macro_int16.
454 Thanks to Li Yingtong for pointing out the problem.
455- make insert_virtual_positions tail rec, avoid stack overflow pb.
456 Thanks to Diego Liziero <diegoliz@gmail.com> for pointing out the
457 problem.
458- Better type inference for arithmetic binary operators
459 Thanks to Li Yingtong for pointing out the problem.
460- Better type inference for constants
461 Thanks to Li Yingtong for pointing out the problem.
462- move computing of adjacency information for semantic patches to after
463 application of isomorphisms, because isomorphisms can introduce "..."
464- compute adjacency information for negated ...
465- record with each transformation site the set of indices of the witness
466 trees that caused the transformation site to come about. Whitespace and
467 comments between remove tokens associated with disjoint witness trees is
468 not removed.
469- correct treatment of function pointer typed parameters in the SmPL ast0
470 visitor.
471- better parsing error message and error recovery when comments are not ended,
472 when some macros have a weird body, and when some switch have a weird
473 Body.
474 Thanks to Derek Jones for pointing out the problem.
475- better detection and passing of "dangerous" ifdefs, cf -test
476 double_switch.
477- dropped the separation of decls and body in Seq. This gives better
478 positioning of the bindings of metavariables shared between them.
479 Thanks to Erik Hovland for an example that shows the problem.
480
481** Internals:
482- supress warning in compiling ocamlsexp (warning caused by a new behavior
483 of cpp used internally in processing files in ocamlsexp/)
484
b1b2de81
C
485* 0.1.7
486
487** Language:
488- initialize and finalize script code, cf demos/initial_final.cocci
489
490** Features:
491- -iso_limit option to limit the depth of isomorphism application
492- with the dir option, the include path is implicitly set to the "include"
493 subdirectory of the specified directory, if the option -I is not used.
494- give a seed for the name of a fresh identifier
495- better handling of cpp "constructed" identifiers as in a##b, that in
496 the futur will make it easier to match over those idents.
497 cf tests/pb_parsing_macro.c. Thanks to Ali-Erdem Ozcan for pointing
498 out the problem. A new "parsing hack hint" is also available:
499 YACFE_IDENT_BUILDER, cf standard.h.
500
501** Bugfix:
502- drop excessive "optimization" in ctl generation for while and for loops
503- allow . as the name of the directory
504- for type inference for an assignment, take the type of the right-hand
505 side expression, not the type of the assigned variable
506- allow for with a declartion in the first header element, as in C++
507 (partial support)
508- allow for matching against variable declarations that include only
509 storage, eg static, but no type at all.
510- allow for matching against types that contain both short/long and int
511- allow the type metavariable in the SmPL code "unsigned T" to match a T
512 that is a type consisting of more than one word, eg long int.
513- -ifdef_to_if option made to process nested ifdefs
514 (partial support)
515
516** Internals:
517- improve and fix installation process (usable on BSD)
518- improve and fix testing process
519- apply patches from Eugeniy Meshcheryakov
520- reorganize the way we parse C identifiers, especially concatenated cpp
521 identifiers as in a##b. This may lead to some regressions as we may
522 not parse as much code as before.
523- removed popl/ and popl09/ and popl related stuff from official distrib.
524
0708f913 525* 0.1.6
113803cf 526
b1b2de81
C
527** Language:
528- the ability to add comments
529
113803cf 530** Features:
0708f913
C
531- grouping of generated rules with -hrule option
532- handling of special coccinelle comments
533 /* {{coccinelle:skip_start}} */ and
534 /* {{coccinelle:skip_end}} */
535 allowing to give more hints to the C parser.
536 Thanks to Flavien@lebarbe.net for the idea.
0708f913
C
537- the ability to print the values of more (but not all) kinds of
538 metavariables from python
539- new vim SmPL mode.
540 Thanks to Alexander Faroy.
541
542** Bugfix:
543- consider the ident tokens also in the 2 lines before the error line for the
544 10-most-problematic-parsing-errors diagnostic.
545- SmPL parser allows cast as the argument of a pointer
546- SmPL type checker allows enum as an array index
547- Better generation of fresh metavariables names in hrule
548- no more warnings about things that should be metavariables when there is
549 a disjunction in a function position
550- bugfix in parser, better error message.
551 Thanks to Ali-Erdem OZCAN <ali-erdem.ozcan@st.com> for the bug report.
552
553** Internals:
554
555* 0.1.5
556
557** Language:
113803cf
C
558- added initialiser metavariable
559- added sequences of designators in structures
0708f913
C
560
561** Features:
113803cf
C
562- improved printing of the C code corresponding to metavariables
563- improved printing when code (eg declarations) is removed at the beginning
564 of a block, and then is followed by a blank line
565- slightly less verbose error reporting in parsing_hacks
566
567** Bugfix:
568- fixed some problems with parsing SmPL code where a nest appears after a |
569- better treatment of { }, form in macros wrt unparse_c
570- less quiet for -parse_c
571- improve parsing heuristics regarding macro statement
572
573** Internals:
574
faf9a90c
C
575* 0.1.4
576
0708f913
C
577** Language:
578- long long added to SmPL
579
708f4980
C
580** Documentation:
581- add grammar reference and spatch command line options reference
582
faf9a90c
C
583** Features:
584- can match patterns of the form unsigned T or signed T, where T is a
585 metavariable
586- dropped the sizeof_parens isomorphism, which was made redundant by the
587 paren isomorphism
588- simple rule generation
faf9a90c
C
589
590** Bugfix:
591- trailing , ; and ) no longer left on a line by themselves
592- better treatment of error exit when the searched for code matches the
593 error exit condition.
594- fix incorrect treatment of parentheses in test_exps that could allow +
595 code to be added twice
596- don't ask whether iterator names and declarer names should be declared as
597 metavariables.
598- slightly better support for expression list metavariables.
599- short and long allowed for array index types in SmPL
600- more restrictions on type inference for pointer arithmetic in SmPL
601- allow isomorphisms to apply when + code is anywhere within all - terms
602- changed order of printing const and volatile
603- allow eg ... <... in plus code
604- better formatting of generated if/while/etc. code
605- better parse error reporting when the problem is at the end of the file
606
607** Internals:
608- isomorphisms don't apply under signed/unsigned, to prevent the creation
609 of things like unsigned signed int. Need a better solution for this.
610
91eba41f
C
611* 0.1.3
612
613** Features:
614- help in building the configuration macro file. The -parse_c action
615 now returns the 10 most frequent parsing errors. This give useful
616 hints to extend standard.h.
617
618** Bugfix:
619- positions no longer allowed on \(, \|, and \)
620- improved propagation of negation for isos in the presence of parens
621- convert Todos in flow graph construction to recoverable errors
622- fixed bug in treatment of when != true and when != false, to allow more
623 than one of them per ...
624- improve parsing of typedef of function pointer.
625- improve typing.
626- parsing and typing support for old style C function declaration.
627- consider position variables as modifications when optimizing the
628 translation into CTL of function definitions
629
630** Internals:
631
485bce71
C
632* 0.1.2
633
634** Bugfix:
635- better handling of ifdef on statements in control flow graph.
636- transform files even if they do not end in .c (thanks to Vegard Nossum)
637
638** Internals:
639- merge code of yacfe
640
1be43e12
C
641* 0.1.1
642
0708f913 643** Language:
485bce71 644 - support for initializer at toplevel, cf -test substruct
1be43e12 645
34e49164
C
646* 0.1
647
648** first public release of the source code:
649
0708f913 650** Language:
34e49164
C
651 - embeded python scripting
652 - position
653
0708f913
C
654** Features
655
34e49164
C
656* beta
657
658** first public release of the binary
659
660* alpha
661
662** Features
663 - lots of features ... look at coccinelle research papers and tutorials.