1+ 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 15+ 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 21 - 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 23 are listed in the README file. 24 25+ Version 2.18 (2017.07.04) 26 27 - PR #161 & #184: Update bundled PLY version to 3.10 28 - PR #158: Add support for the __int128 type. 29 - PR #169: Handle more tricky TYPEID in declarators. 30 - PR #178: Add columns to the coord of each node 31 32+ Version 2.17 (2016.10.29) 33 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 37+ Version 2.16 (2016.10.18) 38 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 42+ Version 2.15 (2016.10.18) 43 44 - PR #121: Update bundled PLY version to 3.8 45 - 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). 49 - Testing with Python 3.5 instead of 3.3 now (3.4 and 3.5 are the 3.x versions 50 tested). 51 - PR #145: More complete support for offsetof() 52 - Issue #116: Fix line numbers recorded for empty and compound statements. 53 - Minor performance improvement to the invalid string literal regex. 54 55+ Version 2.14 (2015.06.09) 56 57 - 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. 62 63+ Version 2.13 (2015.05.12) 64 65 - 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). 71 72+ Version 2.12 (2015.04.21) 73 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 76 its many dependents (issue #76). Fixed by adding __weakref__ to __slots__. 77 78+ Version 2.11 (2015.04.21) 79 80 - 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). 83 - Issue #27: bug in handling of unified wstring literals. 84 - Issue #28: fix coord reporting for 'for' loops. 85 - Added ``examples/using_gcc_E_libc.py`` to demonstrate how ``gcc -E`` can 86 be used instead of ``cpp`` for preprocessing. 87 - Pull request #64: support keywords like const, volatile, restrict and static 88 in dimensions in array declarations. 89 - Reduce memory usage of AST nodes (issue #72). 90 - Parsing order of nested pointer declarations fixed (issue #68). 91 92+ Version 2.10 (2013.08.03) 93 94 - A number of improvements in the handling of typedef-name ambiguities, 95 contributed by Sye van der Veen in GitHub issue #1: 96 97 * Allow shadowing of types by identifiers in inner scopes. 98 * 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 102 - 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). 107 108+ Version 2.09.1 (2012.12.29) 109 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 114+ Version 2.09 (2012.12.27) 115 116 - 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. 120 - 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. 123 - Issue #79: fix generation of new switch/case AST nodes. 124 - Issue #83: fix parsing and C generation to distinguish between initializer 125 lists in declarations and initializing variables with parenthesized 126 comma-separated expressions. 127 - Issue #84: fix C generation for some statements. 128 - Issues #86 and #87: improve location reporting for parse errors. 129 - Issue #89: fix C generation for K&R-style function definitions. 130 131+ Version 2.08 (2012.08.10) 132 133 - Issue 73: initial support for #pragma directives. Consume them without 134 errors and ignore (no tokens are returned). Line numbers are preserved. 135 - Issue 68: more correct handling of source files without any actual content. 136 - Issue 69: running all tests will now set appropriate return code. 137 - Better error reporting in case where multiple type specifiers are provided. 138 Also fixes Issue 60. 139 - Issue 63: line endings cleanup for consistent LF ending. 140 - Issues 64 & 65: added some more headers and typedefs to fake includes. 141 - Refactoring the cpp invocation in parse_file into a separate function, which 142 can also be used as a utility. 143 - Issue 74: some Windows include paths were handled incorrectly. 144 145+ Version 2.07 (2012.06.16) 146 147 - 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 150 - Issue 57: support for C99 hexadecimal float constants 151 - Made running tests that call on 'cpp' a bit more robust. 152 153+ Version 2.06 (2012.02.04) 154 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 166+ Version 2.05 (2011.10.16) 167 168 - Added support for the C99 ``_Bool`` type and ``stdbool.h`` header file 169 - Expanded ``examples/explore_ast.py`` with more details on working with the 170 AST 171 - Relaxed the rules on parsing unnamed struct members (helps parse ``windows.h``) 172 - Bug fixes: 173 174 * Fixed spacing issue for some type declarations 175 * Issue 47: display empty statements (lone ';') correctly after parsing 176 177+ Version 2.04 (2011.05.21) 178 179 - License changed from LGPL to BSD 180 - Bug fixes: 181 182 * Issue 31: constraining the scope of typedef definitions 183 * Issues 33, 35: fixes for the c-to-c.py example 184 185 - Added C99 integer types to fake headers 186 - Added unit tests for the c-to-c.py example 187 188+ Version 2.03 (2011.03.06) 189 190 - Bug fixes: 191 192 * 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 196 197 - New example added (``examples/c-to-c.py``) for translating ASTs generated 198 by ``pycparser`` back into C code. 199 - ``pycparser`` is now on PyPI (Python Package Index) 200 - Created `FAQ <http://code.google.com/p/pycparser/wiki/FAQ>`_ on 201 the ``pycparser`` project page 202 - Removed support for Python 2.5. ``pycparser`` supports Python 2 203 from 2.6 and on, and Python 3. 204 205+ Version 2.02 (2010.12.10) 206 207 * 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. 209 * Documentation updates 210 211+ Version 2.01 (04.12.2010) 212 213 * Removed dependency on YAML. Parsing of the AST node configuration file 214 is done with a simple parser. 215 * Fixed issue 12: installation problems 216 217+ Version 2.00 (2010.10.31) 218 219 * Support for C99 (read 220 `this wiki page <http://code.google.com/p/pycparser/wiki/C99support>`_ 221 for more information). 222 223+ Version 1.08 (2010.10.09) 224 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 231+ Version 1.07 (2010.05.18) 232 233 * Python 3.1 compatibility: ``pycparser`` was modified to run 234 on Python 3.1 as well as 2.6 235 236+ Version 1.06 (2010.04.10) 237 238 * Bug fixes: 239 240 + coord not propagated to FuncCall nodes 241 + lexing of the ^= token (XOREQUALS) 242 + parsing failed on some abstract declarator rules 243 244 * Linux compatibility: fixed end-of-line and ``cpp`` path issues to allow 245 all tests and examples run on Linux 246 247+ Version 1.05 (2009.10.16) 248 249 * Fixed the ``parse_file`` auxiliary function to handle multiple arguments to 250 ``cpp`` correctly 251 252+ Version 1.04 (2009.05.22) 253 254 * 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. 257 * Tested with Python 2.6 and PLY 3.2 258 259+ Version 1.03 (2009.01.31) 260 261 * Accept enumeration lists with a comma after the last item (C99 feature). 262 263+ Version 1.02 (2009.01.16) 264 265 * Fixed problem of parsing struct/enum/union names that were named similarly 266 to previously defined ``typedef`` types. 267 268+ Version 1.01 (2009.01.09) 269 270 * Fixed subprocess invocation in the helper function parse_file - now 271 it's more portable 272 273+ Version 1.0 (2008.11.15) 274 275 * Initial release 276 * Support for ANSI C89 277