You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+54Lines changed: 54 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,60 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
7
7
This project follows the [Behat release and version support policies]
8
8
(https://docs.behat.org/en/latest/releases.html).
9
9
10
+
# [4.15.0] - 2025-11-05
11
+
12
+
### Changed
13
+
14
+
* Added a new ParserInterface and deprecated extending the core Lexer, Parser and Node classes by @acoulton in [#354](https://github.com/Behat/Gherkin/pull/354)
15
+
* Deprecate the CucumberNDJsonAstLoader (which was only intended for internal use by our tests) by @stof in [#356](https://github.com/Behat/Gherkin/pull/356)
16
+
* By default, the parser ignores invalid language tags (e.g. `#language:no-such`) and falls back to the default language
17
+
(e.g. `en`). Previously, the resultant `FeatureNode::getLanguage()` would return the original invalid value from the
18
+
feature file - it will now return the language that was actually used for parsing. By @stof in [#350](https://github.com/Behat/Gherkin/pull/350)
19
+
20
+
### Added
21
+
22
+
* Introduce a DialectProviderInterface matching the modern cucumber API. This will replace the existing Keywords API in
23
+
a future major release. By @stof in [#350](https://github.com/Behat/Gherkin/pull/350)
24
+
* Introduce configurable `GherkinCompatibilityMode` to control how gherkin files are parsed. In the default `legacy` mode,
25
+
there is no change to parsing. In the new **experimental**`gherkin-32` mode, files will in future be parsed
26
+
consistently with the official cucumber/gherkin parsers. This mode is not yet complete - in this first release:
27
+
- Whitespace within description nodes will not be trimmed by @acoulton in [#349](https://github.com/Behat/Gherkin/pull/349)
28
+
- Invalid language tags will cause an exception by @stof in [#357](https://github.com/Behat/Gherkin/pull/357)
29
+
- Step keywords will not be trimmed by @stof in [#360](https://github.com/Behat/Gherkin/pull/360)
30
+
- Language tags can include whitespace by @acoulton in [#358](https://github.com/Behat/Gherkin/pull/358)
31
+
-`\n` literals in table cells will be parsed as newlines by @stof in [#359](https://github.com/Behat/Gherkin/pull/359)
32
+
and [#391](https://github.com/Behat/Gherkin/pull/391)
33
+
* Improved translations for `ru` (Russian) and `af` (Afrikaans) from cucumber/gherkin in [#381](https://github.com/Behat/Gherkin/pull/381)
34
+
and [#386](https://github.com/Behat/Gherkin/pull/386)
35
+
* Support PHP 8.5 by @acoulton in [#388](https://github.com/Behat/Gherkin/pull/388)
36
+
37
+
### Fixed
38
+
39
+
* Improve phpdoc / phpstan type-hinting of the lexer and parser by @uuf6429 in [#344](https://github.com/Behat/Gherkin/pull/344)
40
+
and @stof in [#363](https://github.com/Behat/Gherkin/pull/363)
41
+
* Handle race conditions when creating cache directory by @uuf6429 in [#373](https://github.com/Behat/Gherkin/pull/373)
42
+
* Throw if Loader->load() called with unsupported resource by @uuf6429 in [#372](https://github.com/Behat/Gherkin/pull/372)
43
+
* Use default file cache key if `behat/gherkin` version is unknown by @uuf6429 in [#370](https://github.com/Behat/Gherkin/pull/370)
44
+
45
+
### Internal
46
+
47
+
* Enable PHPStan level 10 and resolve remaining warnings by @uuf6429 in [#368](https://github.com/Behat/Gherkin/pull/368)
48
+
* Remove duplication and improve robustness in filesystem operations by @uuf6429 in [#365](https://github.com/Behat/Gherkin/pull/365)
49
+
and [#367](https://github.com/Behat/Gherkin/pull/367)
50
+
* Explicitly cover expected departures from cucumber gherkin parsing with tests by @acoulton in [#392](https://github.com/Behat/Gherkin/pull/392)
51
+
* Update cucumber/gherkin parity tests to v36.0.0 in [#355](https://github.com/Behat/Gherkin/pull/355), [#376](https://github.com/Behat/Gherkin/pull/376)
0 commit comments