Commit | Line | Data |
---|---|---|
34e49164 C |
1 | -*- org -*- |
2 | ||
708f4980 C |
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 | ||
b1b2de81 C |
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 | ||
0708f913 | 118 | * 0.1.6 |
113803cf | 119 | |
b1b2de81 C |
120 | ** Language: |
121 | - the ability to add comments | |
122 | ||
113803cf | 123 | ** Features: |
0708f913 C |
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. | |
0708f913 C |
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: | |
113803cf C |
151 | - added initialiser metavariable |
152 | - added sequences of designators in structures | |
0708f913 C |
153 | |
154 | ** Features: | |
113803cf C |
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 | ||
faf9a90c C |
168 | * 0.1.4 |
169 | ||
0708f913 C |
170 | ** Language: |
171 | - long long added to SmPL | |
172 | ||
708f4980 C |
173 | ** Documentation: |
174 | - add grammar reference and spatch command line options reference | |
175 | ||
faf9a90c C |
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 | |
faf9a90c C |
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 | ||
708f4980 | 204 | |
91eba41f C |
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 | ||
485bce71 C |
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 | ||
1be43e12 C |
235 | * 0.1.1 |
236 | ||
0708f913 | 237 | ** Language: |
485bce71 | 238 | - support for initializer at toplevel, cf -test substruct |
1be43e12 | 239 | |
34e49164 C |
240 | * 0.1 |
241 | ||
242 | ** first public release of the source code: | |
243 | ||
0708f913 | 244 | ** Language: |
34e49164 C |
245 | - embeded python scripting |
246 | - position | |
247 | ||
0708f913 C |
248 | ** Features |
249 | ||
34e49164 C |
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. |