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