blob: d94cf57c13f690e537ab65bb591395b155628260 [file] [log] [blame]
Eli Benderskydd0cf112020-03-04 06:07:58 -08001+ Version 2.20 (2020.03.04)
2
3 - #61: Fix slow backtracking when parsing strings.
4 - #99: Parser for FuncDecl incorrectly sets declname attribute on return type.
5 - #310: Fix crash when file starts with a semicolon.
6 - #313: Fix array type generation.
7 - #314: Fix failed parsing of unnamed function parameters with array dim
8 qualifiers.
9 - #315: Fix pointer type generation.
10 - #324: Fixes for u/l constant integer suffix.
11 - #346: Fix error transforming an empty switch.
12 - #350: Recognize integer multicharacter constants like 'ABCD'.
13 - #363: Fix incorrect AST when parsing offsetof.
14
Eli Benderskycaa4c112018-09-19 05:21:20 -070015+ Version 2.19 (2018.09.19)
16
17 - PR #277: Fix parsing of floating point literals
18 - PR #254: Add support for parsing empty structs
19 - PR #240: Fix enum formatting in generated C code (also #216)
20 - PR #222: Add support for #pragma in struct declarations
Eli Bendersky760b6ae2018-09-20 05:11:49 -070021 - There are reports that this release doesn't work with Python 2.6 (#281).
22 Please note that the minimal supported version is 2.7; the required versions
Eli Benderskye4288ca2020-03-03 06:47:35 -080023 are listed in the README file.
Eli Benderskycaa4c112018-09-19 05:21:20 -070024
Eli Benderskybcb5f9f2018-09-19 05:15:46 -070025+ Version 2.18 (2017.07.04)
Eli Benderskydfeac9e2017-01-28 07:08:43 -080026
Eli Bendersky0cf73e42017-04-03 06:45:17 -070027 - PR #161 & #184: Update bundled PLY version to 3.10
Eli Benderskydfeac9e2017-01-28 07:08:43 -080028 - PR #158: Add support for the __int128 type.
Eli Bendersky516af942017-03-10 06:07:29 -080029 - PR #169: Handle more tricky TYPEID in declarators.
30 - PR #178: Add columns to the coord of each node
Eli Benderskydfeac9e2017-01-28 07:08:43 -080031
Eli Benderskybcb5f9f2018-09-19 05:15:46 -070032+ Version 2.17 (2016.10.29)
Eli Benderskyf29f92a2016-10-27 20:15:49 -070033
34 - Again functionality identical to 2.15 and 2.16; the difference is that the
35 tarball now contains Python files with properly set permissions.
36
Eli Benderskybcb5f9f2018-09-19 05:15:46 -070037+ Version 2.16 (2016.10.18)
Eli Benderskyf2275a62016-10-18 08:14:27 -070038
39 - Functionally identical to 2.15, but fixes a packaging problem that caused
40 failed installation (_build_tables wasn't rerun in the pycparser/ dir).
41
Eli Benderskybcb5f9f2018-09-19 05:15:46 -070042+ Version 2.15 (2016.10.18)
Eli Bendersky84336292016-03-19 05:48:10 -070043
Eli Benderskya3af25f2016-04-19 05:18:51 -070044 - PR #121: Update bundled PLY version to 3.8
Eli Bendersky84336292016-03-19 05:48:10 -070045 - Issue #117: Fix parsing of extra semi-colons inside structure declarations.
46 - PR #109: Update c_generator to add {} around nested named initializers.
47 - PR #101: Added support for parsing pragmas into the AST.
48 - Additional fake headers and typedefs, manifest fixes (#97, #106, #111).
Eli Benderskyb912a582016-04-19 05:20:25 -070049 - Testing with Python 3.5 instead of 3.3 now (3.4 and 3.5 are the 3.x versions
50 tested).
Eli Bendersky99143602016-09-10 08:29:22 -070051 - PR #145: More complete support for offsetof()
Eli Bendersky6ba95442016-10-11 20:59:50 -070052 - Issue #116: Fix line numbers recorded for empty and compound statements.
Eli Bendersky9e9855b2016-10-18 06:14:24 -070053 - Minor performance improvement to the invalid string literal regex.
Eli Bendersky84336292016-03-19 05:48:10 -070054
Eli Benderskybcb5f9f2018-09-19 05:15:46 -070055+ Version 2.14 (2015.06.09)
Eli Benderskya1334e52015-05-18 06:24:05 -070056
Eli Bendersky7f6b3402015-06-09 20:00:55 -070057 - Added CParser parameter to specify output directory for generated parsing
58 tables (#84).
59 - Removed lcc's cpp and its license from the distribution. Using lcc's cpp
60 is no longer recommended, now that Clang has binary builds available for
61 Windows.
Eli Benderskya1334e52015-05-18 06:24:05 -070062
Eli Benderskybcb5f9f2018-09-19 05:15:46 -070063+ Version 2.13 (2015.05.12)
Eli Benderskyb85d5612015-05-10 06:31:39 -070064
Eli Benderskyc830da82015-05-10 07:56:41 -070065 - Added support for offsetof() the way gcc implements it (special builtin
66 that takes a type as an argument).
67 - Added faked va_* macros (these are expected to come from stdarg.h)
68 - Added a bunch more fake headers and typedefs to support parsing C projects
69 like Git and SQLite without modifications to pycparser.
70 - Added support for empty initializer lists (#79).
Eli Benderskyb85d5612015-05-10 06:31:39 -070071
Eli Benderskybcb5f9f2018-09-19 05:15:46 -070072+ Version 2.12 (2015.04.21)
Eli Benderskyf1b2db22015-04-21 17:37:54 -070073
74 - This is a fix release for 2.11; the memory optimization with __slots__ on
75 Coord and AST nodes didn't take weakrefs into account, which broke cffi and
Eli Bendersky05c27822016-10-27 20:13:29 -070076 its many dependents (issue #76). Fixed by adding __weakref__ to __slots__.
Eli Benderskyf1b2db22015-04-21 17:37:54 -070077
Eli Benderskybcb5f9f2018-09-19 05:15:46 -070078+ Version 2.11 (2015.04.21)
Eli Benderskye7c55cf2014-01-25 06:15:43 -080079
Eli Bendersky8aad3182014-01-25 06:30:53 -080080 - Add support for C99 6.5.3.7 p7 - qualifiers within array dimensions in
81 function declarations. Started with issue #21 (reported with initial patch
82 by Robin Martinjak).
Eli Benderskyc9f1a382014-03-15 14:12:00 -070083 - Issue #27: bug in handling of unified wstring literals.
Eli Bendersky8e5d3a92014-03-15 14:06:00 -070084 - Issue #28: fix coord reporting for 'for' loops.
Eli Bendersky645855c2014-04-23 17:01:07 -070085 - Added ``examples/using_gcc_E_libc.py`` to demonstrate how ``gcc -E`` can
86 be used instead of ``cpp`` for preprocessing.
Eli Benderskyba1b7a02015-01-17 06:35:55 -080087 - Pull request #64: support keywords like const, volatile, restrict and static
88 in dimensions in array declarations.
Eli Bendersky08744122015-04-18 07:03:40 -070089 - Reduce memory usage of AST nodes (issue #72).
Eli Benderskyb17da152015-04-21 14:35:18 -070090 - Parsing order of nested pointer declarations fixed (issue #68).
Eli Benderskye7c55cf2014-01-25 06:15:43 -080091
Eli Benderskybcb5f9f2018-09-19 05:15:46 -070092+ Version 2.10 (2013.08.03)
Eli Bendersky6e658942013-06-08 07:04:38 -070093
Eli Bendersky3877c4c2013-07-13 06:54:04 -070094 - A number of improvements in the handling of typedef-name ambiguities,
95 contributed by Sye van der Veen in GitHub issue #1:
96
Eli Benderskyfebd20b2013-07-30 06:45:08 -070097 * Allow shadowing of types by identifiers in inner scopes.
Eli Bendersky3877c4c2013-07-13 06:54:04 -070098 * Allow struct field names to reside in a separate namespace and have
99 the same names as types.
100 * Allow duplicate typedefs in some cases to mimic real compiler behavior.
101
Eli Bendersky39219c12013-06-12 06:18:37 -0700102 - c_generator error for ExprList in expression context.
103 - Assume default int type for functions whose argument or return types were
104 not specified.
105 - Relax the lexer a bit w.r.t. some integer suffixes and $ in identifier names
106 (which is supported by some other compilers).
Eli Bendersky6e658942013-06-08 07:04:38 -0700107
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700108+ Version 2.09.1 (2012.12.29)
Eli Benderskyb74f1fa2012-12-29 05:22:23 -0800109
110 - No actual functionality changes.
111 - The source distribution was re-packaged to contain the pre-generated Lex and
112 Yacc tables of PLY.
113
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700114+ Version 2.09 (2012.12.27)
Eli Bendersky93352512012-12-24 20:18:33 -0800115
Eli Bendersky645e2602012-12-25 06:21:08 -0800116 - The pycparser project has moved to Bitbucket. For this version, issue
117 numbers still refer to the old Googlecode project, unless stated otherwise.
118 Starting with the next version all issue numbers will refer to the new
119 Bitbucket project.
Eli Bendersky93352512012-12-24 20:18:33 -0800120 - pycparser now carries its PLY dependency along. The pycparser/ply directory
121 contains the source of PLY for the currently supported version. This makes
122 distribution and testing easier.
Eli Bendersky00edfc12012-12-25 15:18:02 -0800123 - Issue #79: fix generation of new switch/case AST nodes.
Eli Bendersky293ea912012-12-25 14:52:48 -0800124 - Issue #83: fix parsing and C generation to distinguish between initializer
125 lists in declarations and initializing variables with parenthesized
126 comma-separated expressions.
Eli Bendersky4476d092012-12-25 14:07:57 -0800127 - Issue #84: fix C generation for some statements.
Eli Bendersky4961d1b2012-12-25 06:50:59 -0800128 - Issues #86 and #87: improve location reporting for parse errors.
Eli Bendersky4476d092012-12-25 14:07:57 -0800129 - Issue #89: fix C generation for K&R-style function definitions.
Eli Bendersky93352512012-12-24 20:18:33 -0800130
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700131+ Version 2.08 (2012.08.10)
Eli Bendersky19400fd2012-06-22 09:38:23 +0300132
Eli Bendersky09fc2002012-08-10 07:41:42 +0300133 - Issue 73: initial support for #pragma directives. Consume them without
134 errors and ignore (no tokens are returned). Line numbers are preserved.
Eli Bendersky5a0abdf2012-07-07 06:52:23 +0300135 - Issue 68: more correct handling of source files without any actual content.
136 - Issue 69: running all tests will now set appropriate return code.
Eli Bendersky0a3ef0b2012-07-06 15:54:29 +0300137 - Better error reporting in case where multiple type specifiers are provided.
138 Also fixes Issue 60.
Eli Bendersky5a0abdf2012-07-07 06:52:23 +0300139 - Issue 63: line endings cleanup for consistent LF ending.
140 - Issues 64 & 65: added some more headers and typedefs to fake includes.
Eli Bendersky949ad822012-08-10 07:04:20 +0300141 - Refactoring the cpp invocation in parse_file into a separate function, which
142 can also be used as a utility.
Eli Benderskyd9649812012-08-10 08:27:12 +0300143 - Issue 74: some Windows include paths were handled incorrectly.
Eli Bendersky19400fd2012-06-22 09:38:23 +0300144
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700145+ Version 2.07 (2012.06.16)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300146
Eli Bendersky203b9672012-06-15 10:11:24 +0300147 - Issue 54: added an optional parser argument to parse_file
148 - Issue 59: added some more fake headers for C99
149 - Issue 62: correct coord for Ellipsis nodes
Eli Bendersky3b1b08d2012-06-15 12:37:54 +0300150 - Issue 57: support for C99 hexadecimal float constants
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300151 - Made running tests that call on 'cpp' a bit more robust.
152
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700153+ Version 2.06 (2012.02.04)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300154
155 - Issue 48: gracefully handle parsing of empty files
156 - Issues 49 & 50: handle more escaped chars in paths to #line - "..\..\test.h".
157 - Support for C99 _Complex type.
158 - CGenerator moves from examples/ to pycparser/ as a first-class citizen, and
159 added some fixes to it. examples/c-to-c.py still stays as a convenience
160 wrapper.
161 - Fix problem with parsing a file in which the first statement is just a
162 semicolon.
163 - Improved the AST created for switch statements, making it closer to the
164 semantic meaning than to the grammar.
165
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700166+ Version 2.05 (2011.10.16)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300167
168 - Added support for the C99 ``_Bool`` type and ``stdbool.h`` header file
Eli Benderskye4288ca2020-03-03 06:47:35 -0800169 - Expanded ``examples/explore_ast.py`` with more details on working with the
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300170 AST
171 - Relaxed the rules on parsing unnamed struct members (helps parse ``windows.h``)
172 - Bug fixes:
Eli Benderskye4288ca2020-03-03 06:47:35 -0800173
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300174 * Fixed spacing issue for some type declarations
175 * Issue 47: display empty statements (lone ';') correctly after parsing
176
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700177+ Version 2.04 (2011.05.21)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300178
179 - License changed from LGPL to BSD
180 - Bug fixes:
Eli Benderskye4288ca2020-03-03 06:47:35 -0800181
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300182 * Issue 31: constraining the scope of typedef definitions
183 * Issues 33, 35: fixes for the c-to-c.py example
Eli Benderskye4288ca2020-03-03 06:47:35 -0800184
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300185 - Added C99 integer types to fake headers
186 - Added unit tests for the c-to-c.py example
187
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700188+ Version 2.03 (2011.03.06)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300189
190 - Bug fixes:
Eli Benderskye4288ca2020-03-03 06:47:35 -0800191
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300192 * Issue 17: empty file-level declarations
193 * Issue 18: empty statements and declarations in functions
194 * Issue 19: anonymous structs & union fields
195 * Issue 23: fix coordinates of Cast nodes
Eli Benderskye4288ca2020-03-03 06:47:35 -0800196
Eli Benderskyc5463bd2015-05-12 06:06:21 -0700197 - New example added (``examples/c-to-c.py``) for translating ASTs generated
198 by ``pycparser`` back into C code.
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300199 - ``pycparser`` is now on PyPI (Python Package Index)
Eli Benderskyc5463bd2015-05-12 06:06:21 -0700200 - Created `FAQ <http://code.google.com/p/pycparser/wiki/FAQ>`_ on
Eli Benderskye4288ca2020-03-03 06:47:35 -0800201 the ``pycparser`` project page
Eli Benderskyc5463bd2015-05-12 06:06:21 -0700202 - Removed support for Python 2.5. ``pycparser`` supports Python 2
203 from 2.6 and on, and Python 3.
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300204
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700205+ Version 2.02 (2010.12.10)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300206
Eli Benderskye4288ca2020-03-03 06:47:35 -0800207 * The name of a ``NamedInitializer`` node was turned into a sequence of nodes
208 instead of an attribute, to make it discoverable by the AST node visitor.
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300209 * Documentation updates
210
211+ Version 2.01 (04.12.2010)
212
Eli Benderskyc5463bd2015-05-12 06:06:21 -0700213 * Removed dependency on YAML. Parsing of the AST node configuration file
214 is done with a simple parser.
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300215 * Fixed issue 12: installation problems
216
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700217+ Version 2.00 (2010.10.31)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300218
Eli Benderskyc5463bd2015-05-12 06:06:21 -0700219 * Support for C99 (read
220 `this wiki page <http://code.google.com/p/pycparser/wiki/C99support>`_
221 for more information).
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300222
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700223+ Version 1.08 (2010.10.09)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300224
225 * Bug fixes:
226
227 + Correct handling of ``do{} ... while`` statements in some cases
228 + Issues 6 & 7: Concatenation of string literals
229 + Issue 9: Support for unnamed bitfields in structs
230
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700231+ Version 1.07 (2010.05.18)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300232
Eli Benderskyc5463bd2015-05-12 06:06:21 -0700233 * Python 3.1 compatibility: ``pycparser`` was modified to run
234 on Python 3.1 as well as 2.6
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300235
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700236+ Version 1.06 (2010.04.10)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300237
Eli Benderskye4288ca2020-03-03 06:47:35 -0800238 * Bug fixes:
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300239
240 + coord not propagated to FuncCall nodes
241 + lexing of the ^= token (XOREQUALS)
242 + parsing failed on some abstract declarator rules
243
Eli Benderskyc5463bd2015-05-12 06:06:21 -0700244 * Linux compatibility: fixed end-of-line and ``cpp`` path issues to allow
245 all tests and examples run on Linux
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300246
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700247+ Version 1.05 (2009.10.16)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300248
Eli Benderskyc5463bd2015-05-12 06:06:21 -0700249 * Fixed the ``parse_file`` auxiliary function to handle multiple arguments to
250 ``cpp`` correctly
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300251
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700252+ Version 1.04 (2009.05.22)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300253
Eli Benderskyc5463bd2015-05-12 06:06:21 -0700254 * Added the ``fake_libc_include`` directory to allow parsing of C code that
255 uses standard C library include files without dependency on a real C
256 library.
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300257 * Tested with Python 2.6 and PLY 3.2
258
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700259+ Version 1.03 (2009.01.31)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300260
261 * Accept enumeration lists with a comma after the last item (C99 feature).
262
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700263+ Version 1.02 (2009.01.16)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300264
Eli Benderskyc5463bd2015-05-12 06:06:21 -0700265 * Fixed problem of parsing struct/enum/union names that were named similarly
Eli Benderskye4288ca2020-03-03 06:47:35 -0800266 to previously defined ``typedef`` types.
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300267
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700268+ Version 1.01 (2009.01.09)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300269
Eli Benderskyc5463bd2015-05-12 06:06:21 -0700270 * Fixed subprocess invocation in the helper function parse_file - now
271 it's more portable
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300272
Eli Benderskybcb5f9f2018-09-19 05:15:46 -0700273+ Version 1.0 (2008.11.15)
Eli Bendersky13d0a6f2012-06-15 09:30:04 +0300274
275 * Initial release
276 * Support for ANSI C89