| + 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 |