|
4 | 4 |
|
5 | 5 | .. start included documentation |
6 | 6 |
|
| 7 | +26.1 |
| 8 | +==== |
| 9 | + |
| 10 | +Summary of changes: |
| 11 | + |
| 12 | +* Grammar feature support: |
| 13 | + |
| 14 | + * Improved handling of inline literals in parser rules by ensuring a |
| 15 | + corresponding lexer rule always exists. |
| 16 | + * Fixed and extended support for arguments, locals, and returns, including |
| 17 | + complex parameter lists and uninitialized values. |
| 18 | + * Added support for typed rule attributes (args, locals, returns), supporting |
| 19 | + both prefix and postfix type notation. |
| 20 | + * Added support for unicode properties and "not set" constructs in lexer and |
| 21 | + "not set" constructs in parser rules. |
| 22 | + * Improved handling of the dot (``.``) wildcard in parser rules to generate |
| 23 | + random tokens instead of single characters. |
| 24 | + * Added support for rule-level named actions. |
| 25 | + * Enabled rule labels with recurring names and removed incorrect naming |
| 26 | + restrictions. |
| 27 | + * Added support for per-rule options. |
| 28 | + * Ignored the artificial EOF rule during generation and parsing. |
| 29 | + |
| 30 | +* Generated fuzzer, runtime API: |
| 31 | + |
| 32 | + * Introduced token-based size control in addition to depth-based limits. |
| 33 | + * Improved backtracking logic in quantified expression matching during |
| 34 | + ``grammariantor-parse`` |
| 35 | + * Unified the presentation of static size data of various language constructs |
| 36 | + in the generated generator. |
| 37 | + * Added detailed decision nodes (alternatives, quantifiers) to generated |
| 38 | + trees to preserve generation semantics. |
| 39 | + * Improved tree node APIs, including formatting (``str``, ``repr``, |
| 40 | + ``debug``), equality comparison, and token sequence access. |
| 41 | + * Added memoization of generated test cases to improve uniqueness. |
| 42 | + * Improved handling and marking of immutable lexer and parser rules. |
| 43 | + * Refined listener notifications to correctly reflect sub-rule execution. |
| 44 | + * Removed deprecated concepts (e.g., cooldown factor). |
| 45 | + * Introduced grammar-violating mutation support (optional, |
| 46 | + runtime-controlled). |
| 47 | + |
| 48 | +* Population, mutation, and recombination: |
| 49 | + |
| 50 | + * Introduced new mutation operators (swap, insert, replicate quantified, |
| 51 | + unrestricted delete/hoist). |
| 52 | + * Generalized existing mutators to work on quantified nodes as well. |
| 53 | + * Improved determinism and reproducibility of mutation and recombination. |
| 54 | + * Refactored population handling by introducing Individual abstractions. |
| 55 | + * Renamed DefaultPopulation / DefaultIndividual to FilePopulation / |
| 56 | + FileIndividual. |
| 57 | + * Enabled different selection strategies for donor and recipient individuals. |
| 58 | + * Added support for parsing and using seed inputs with syntax errors, with an |
| 59 | + optional strict mode to discard them. |
| 60 | + |
| 61 | +* Tools and CLI: |
| 62 | + |
| 63 | + * Extended ``grammarinator-parse`` to accept directories and file patterns. |
| 64 | + * Added dry-run mode and infinite generation (``-n inf``) support to |
| 65 | + ``grammarinator-generate``. |
| 66 | + * Added progress bars for bulk processing tools. |
| 67 | + * Added the ``grammarinator-decode`` CLI utility to convert population trees |
| 68 | + back into test sources. |
| 69 | + * Unified CLI argument conventions across tools. |
| 70 | + * Improved diagnostic messages and error handling throughout the toolchain. |
| 71 | + * Added support for reproducible generation and encoding-error handling in |
| 72 | + memoized workflows. |
| 73 | + |
| 74 | +* Tree codecs and serialization: |
| 75 | + |
| 76 | + * Introduced a tree codec framework supporting JSON, pickle, and FlatBuffers. |
| 77 | + * Added ``Annotation``-aware codecs and unified infinite quantifier |
| 78 | + representation. |
| 79 | + * Improved serializers and tree printing. |
| 80 | + * Enabled equality comparison of trees. |
| 81 | + |
| 82 | +* C++ backend and native integrations: |
| 83 | + |
| 84 | + * Added full C++ code generation support with a header-only runtime library. |
| 85 | + * Added C-based helper library (libgrlf) for libFuzzer integration. |
| 86 | + * Introduced AFL++ integration with subtree-based populations and trimming. |
| 87 | + * Added memoization support to LibFuzzer and AFL++ integrations and native |
| 88 | + generators. |
| 89 | + * Improved and modularized the C++ build system (CMake, build helper). |
| 90 | + * Added extensive C++ grammar test coverage and CI integration. |
| 91 | + |
| 92 | +* Documentation: |
| 93 | + |
| 94 | + * Significantly expanded and unified documentation for Python and C++ usage. |
| 95 | + * Added detailed API documentation, user guides, and backend-specific |
| 96 | + examples. |
| 97 | + * Updated README with end-to-end workflows and minimal working examples. |
| 98 | + * Improved docstring quality, consistency, and formatting. |
| 99 | + |
| 100 | +* Packaging, installation, dependencies: |
| 101 | + |
| 102 | + * Dropped support for Python 3.7, 3.8, and 3.9; added support up to |
| 103 | + Python 3.14. |
| 104 | + * Updated and pinned key dependencies (ANTLR, FlatBuffers, xxHash, PyPy). |
| 105 | + * Improved ReadTheDocs configuration and build reproducibility. |
| 106 | + * Updated GitHub Actions workflows and toolchain versions. |
| 107 | + * Adopted SPDX license identifiers. |
| 108 | + |
| 109 | +* Testing and CI: |
| 110 | + |
| 111 | + * Greatly expanded test coverage, including C++ grammar tests. |
| 112 | + * Improved determinism and stability of multiprocessing tests. |
| 113 | + * Added mypy-based static type checking. |
| 114 | + * Improved CI resilience (non-fail-fast, expanded matrices). |
| 115 | + * Regenerated example fuzzers and ensured consistency across backends. |
| 116 | + |
| 117 | +* Under-the-hood: |
| 118 | + |
| 119 | + * Extensive internal refactoring, cleanup, and API consistency improvements. |
| 120 | + * Improved grammar graph construction and node identification. |
| 121 | + * Optimized static data access and reduced runtime overhead. |
| 122 | + * Introduced interning for static grammar structures. |
| 123 | + * Numerous bug fixes, typo fixes, lint cleanups, and internal |
| 124 | + simplifications. |
| 125 | + |
7 | 126 | 23.7 |
8 | 127 | ==== |
9 | 128 |
|
|
0 commit comments