-
Notifications
You must be signed in to change notification settings - Fork 612
/
CHANGES
288 lines (214 loc) · 10.9 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
+ Starting with version 2.22, please use the GitHub UI
at https://github.com/eliben/pycparser/tags
to compare tags in order to find out what changed.
+ Version 2.21 (2021.11.06)
- Much improved support for C11 (multiple PRs)
- Support for parehthesized compount statements (#423)
- Support for modern Python versions (3.9 and 3.10)
- Fix support for structs with nested enums (#387)
- Multiple small bug fixes
+ Version 2.20 (2020.03.04)
- #61: Fix slow backtracking when parsing strings.
- #99: Parser for FuncDecl incorrectly sets declname attribute on return type.
- #310: Fix crash when file starts with a semicolon.
- #313: Fix array type generation.
- #314: Fix failed parsing of unnamed function parameters with array dim
qualifiers.
- #315: Fix pointer type generation.
- #324: Fixes for u/l constant integer suffix.
- #346: Fix error transforming an empty switch.
- #350: Recognize integer multicharacter constants like 'ABCD'.
- #363: Fix incorrect AST when parsing offsetof.
+ Version 2.19 (2018.09.19)
- PR #277: Fix parsing of floating point literals
- PR #254: Add support for parsing empty structs
- PR #240: Fix enum formatting in generated C code (also #216)
- PR #222: Add support for #pragma in struct declarations
- There are reports that this release doesn't work with Python 2.6 (#281).
Please note that the minimal supported version is 2.7; the required versions
are listed in the README file.
+ Version 2.18 (2017.07.04)
- PR #161 & #184: Update bundled PLY version to 3.10
- PR #158: Add support for the __int128 type.
- PR #169: Handle more tricky TYPEID in declarators.
- PR #178: Add columns to the coord of each node
+ Version 2.17 (2016.10.29)
- Again functionality identical to 2.15 and 2.16; the difference is that the
tarball now contains Python files with properly set permissions.
+ Version 2.16 (2016.10.18)
- Functionally identical to 2.15, but fixes a packaging problem that caused
failed installation (_build_tables wasn't rerun in the pycparser/ dir).
+ Version 2.15 (2016.10.18)
- PR #121: Update bundled PLY version to 3.8
- Issue #117: Fix parsing of extra semi-colons inside structure declarations.
- PR #109: Update c_generator to add {} around nested named initializers.
- PR #101: Added support for parsing pragmas into the AST.
- Additional fake headers and typedefs, manifest fixes (#97, #106, #111).
- Testing with Python 3.5 instead of 3.3 now (3.4 and 3.5 are the 3.x versions
tested).
- PR #145: More complete support for offsetof()
- Issue #116: Fix line numbers recorded for empty and compound statements.
- Minor performance improvement to the invalid string literal regex.
+ Version 2.14 (2015.06.09)
- Added CParser parameter to specify output directory for generated parsing
tables (#84).
- Removed lcc's cpp and its license from the distribution. Using lcc's cpp
is no longer recommended, now that Clang has binary builds available for
Windows.
+ Version 2.13 (2015.05.12)
- Added support for offsetof() the way gcc implements it (special builtin
that takes a type as an argument).
- Added faked va_* macros (these are expected to come from stdarg.h)
- Added a bunch more fake headers and typedefs to support parsing C projects
like Git and SQLite without modifications to pycparser.
- Added support for empty initializer lists (#79).
+ Version 2.12 (2015.04.21)
- This is a fix release for 2.11; the memory optimization with __slots__ on
Coord and AST nodes didn't take weakrefs into account, which broke cffi and
its many dependents (issue #76). Fixed by adding __weakref__ to __slots__.
+ Version 2.11 (2015.04.21)
- Add support for C99 6.5.3.7 p7 - qualifiers within array dimensions in
function declarations. Started with issue #21 (reported with initial patch
by Robin Martinjak).
- Issue #27: bug in handling of unified wstring literals.
- Issue #28: fix coord reporting for 'for' loops.
- Added ``examples/using_gcc_E_libc.py`` to demonstrate how ``gcc -E`` can
be used instead of ``cpp`` for preprocessing.
- Pull request #64: support keywords like const, volatile, restrict and static
in dimensions in array declarations.
- Reduce memory usage of AST nodes (issue #72).
- Parsing order of nested pointer declarations fixed (issue #68).
+ Version 2.10 (2013.08.03)
- A number of improvements in the handling of typedef-name ambiguities,
contributed by Sye van der Veen in GitHub issue #1:
* Allow shadowing of types by identifiers in inner scopes.
* Allow struct field names to reside in a separate namespace and have
the same names as types.
* Allow duplicate typedefs in some cases to mimic real compiler behavior.
- c_generator error for ExprList in expression context.
- Assume default int type for functions whose argument or return types were
not specified.
- Relax the lexer a bit w.r.t. some integer suffixes and $ in identifier names
(which is supported by some other compilers).
+ Version 2.09.1 (2012.12.29)
- No actual functionality changes.
- The source distribution was re-packaged to contain the pre-generated Lex and
Yacc tables of PLY.
+ Version 2.09 (2012.12.27)
- The pycparser project has moved to Bitbucket. For this version, issue
numbers still refer to the old Googlecode project, unless stated otherwise.
Starting with the next version all issue numbers will refer to the new
Bitbucket project.
- pycparser now carries its PLY dependency along. The pycparser/ply directory
contains the source of PLY for the currently supported version. This makes
distribution and testing easier.
- Issue #79: fix generation of new switch/case AST nodes.
- Issue #83: fix parsing and C generation to distinguish between initializer
lists in declarations and initializing variables with parenthesized
comma-separated expressions.
- Issue #84: fix C generation for some statements.
- Issues #86 and #87: improve location reporting for parse errors.
- Issue #89: fix C generation for K&R-style function definitions.
+ Version 2.08 (2012.08.10)
- Issue 73: initial support for #pragma directives. Consume them without
errors and ignore (no tokens are returned). Line numbers are preserved.
- Issue 68: more correct handling of source files without any actual content.
- Issue 69: running all tests will now set appropriate return code.
- Better error reporting in case where multiple type specifiers are provided.
Also fixes Issue 60.
- Issue 63: line endings cleanup for consistent LF ending.
- Issues 64 & 65: added some more headers and typedefs to fake includes.
- Refactoring the cpp invocation in parse_file into a separate function, which
can also be used as a utility.
- Issue 74: some Windows include paths were handled incorrectly.
+ Version 2.07 (2012.06.16)
- Issue 54: added an optional parser argument to parse_file
- Issue 59: added some more fake headers for C99
- Issue 62: correct coord for Ellipsis nodes
- Issue 57: support for C99 hexadecimal float constants
- Made running tests that call on 'cpp' a bit more robust.
+ Version 2.06 (2012.02.04)
- Issue 48: gracefully handle parsing of empty files
- Issues 49 & 50: handle more escaped chars in paths to #line - "..\..\test.h".
- Support for C99 _Complex type.
- CGenerator moves from examples/ to pycparser/ as a first-class citizen, and
added some fixes to it. examples/c-to-c.py still stays as a convenience
wrapper.
- Fix problem with parsing a file in which the first statement is just a
semicolon.
- Improved the AST created for switch statements, making it closer to the
semantic meaning than to the grammar.
+ Version 2.05 (2011.10.16)
- Added support for the C99 ``_Bool`` type and ``stdbool.h`` header file
- Expanded ``examples/explore_ast.py`` with more details on working with the
AST
- Relaxed the rules on parsing unnamed struct members (helps parse ``windows.h``)
- Bug fixes:
* Fixed spacing issue for some type declarations
* Issue 47: display empty statements (lone ';') correctly after parsing
+ Version 2.04 (2011.05.21)
- License changed from LGPL to BSD
- Bug fixes:
* Issue 31: constraining the scope of typedef definitions
* Issues 33, 35: fixes for the c-to-c.py example
- Added C99 integer types to fake headers
- Added unit tests for the c-to-c.py example
+ Version 2.03 (2011.03.06)
- Bug fixes:
* Issue 17: empty file-level declarations
* Issue 18: empty statements and declarations in functions
* Issue 19: anonymous structs & union fields
* Issue 23: fix coordinates of Cast nodes
- New example added (``examples/c-to-c.py``) for translating ASTs generated
by ``pycparser`` back into C code.
- ``pycparser`` is now on PyPI (Python Package Index)
- Created `FAQ <http://code.google.com/p/pycparser/wiki/FAQ>`_ on
the ``pycparser`` project page
- Removed support for Python 2.5. ``pycparser`` supports Python 2
from 2.6 and on, and Python 3.
+ Version 2.02 (2010.12.10)
* The name of a ``NamedInitializer`` node was turned into a sequence of nodes
instead of an attribute, to make it discoverable by the AST node visitor.
* Documentation updates
+ Version 2.01 (04.12.2010)
* Removed dependency on YAML. Parsing of the AST node configuration file
is done with a simple parser.
* Fixed issue 12: installation problems
+ Version 2.00 (2010.10.31)
* Support for C99 (read
`this wiki page <http://code.google.com/p/pycparser/wiki/C99support>`_
for more information).
+ Version 1.08 (2010.10.09)
* Bug fixes:
+ Correct handling of ``do{} ... while`` statements in some cases
+ Issues 6 & 7: Concatenation of string literals
+ Issue 9: Support for unnamed bitfields in structs
+ Version 1.07 (2010.05.18)
* Python 3.1 compatibility: ``pycparser`` was modified to run
on Python 3.1 as well as 2.6
+ Version 1.06 (2010.04.10)
* Bug fixes:
+ coord not propagated to FuncCall nodes
+ lexing of the ^= token (XOREQUALS)
+ parsing failed on some abstract declarator rules
* Linux compatibility: fixed end-of-line and ``cpp`` path issues to allow
all tests and examples run on Linux
+ Version 1.05 (2009.10.16)
* Fixed the ``parse_file`` auxiliary function to handle multiple arguments to
``cpp`` correctly
+ Version 1.04 (2009.05.22)
* Added the ``fake_libc_include`` directory to allow parsing of C code that
uses standard C library include files without dependency on a real C
library.
* Tested with Python 2.6 and PLY 3.2
+ Version 1.03 (2009.01.31)
* Accept enumeration lists with a comma after the last item (C99 feature).
+ Version 1.02 (2009.01.16)
* Fixed problem of parsing struct/enum/union names that were named similarly
to previously defined ``typedef`` types.
+ Version 1.01 (2009.01.09)
* Fixed subprocess invocation in the helper function parse_file - now
it's more portable
+ Version 1.0 (2008.11.15)
* Initial release
* Support for ANSI C89