Skip to content

Commit 7ce0711

Browse files
committed
26.1 release
1 parent 51f60b9 commit 7ce0711

File tree

1 file changed

+119
-0
lines changed

1 file changed

+119
-0
lines changed

RELNOTES.rst

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,125 @@
44

55
.. start included documentation
66
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+
7126
23.7
8127
====
9128

0 commit comments

Comments
 (0)