Skip to content

Commit 05a7459

Browse files
authored
docs: Add CHANGELOG for 4.15.0 (#390)
1 parent 78aa8df commit 05a7459

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

CHANGELOG.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,60 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
77
This project follows the [Behat release and version support policies]
88
(https://docs.behat.org/en/latest/releases.html).
99

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)
52+
[#378](https://github.com/Behat/Gherkin/pull/378), [#381](https://github.com/Behat/Gherkin/pull/381), [#385](https://github.com/Behat/Gherkin/pull/385)
53+
[#386](https://github.com/Behat/Gherkin/pull/386) and [#387](https://github.com/Behat/Gherkin/pull/387)
54+
* Fixes and improvements to the cucumber update CI job by @acoulton in [#374](https://github.com/Behat/Gherkin/pull/374),
55+
[#375](https://github.com/Behat/Gherkin/pull/375), [#379](https://github.com/Behat/Gherkin/pull/379)
56+
and [#380](https://github.com/Behat/Gherkin/pull/380)
57+
* Minor coding style fixes by @acoulton in [#377](https://github.com/Behat/Gherkin/pull/377) and [#383](https://github.com/Behat/Gherkin/pull/383)
58+
* Minor code improvements to Lexer/Parser implementation by @uuf6429 in [#352](https://github.com/Behat/Gherkin/pull/352)
59+
* Minor code improvements to TableNode by @uuf6429 in [#366](https://github.com/Behat/Gherkin/pull/366)
60+
* Add native typehints where this does not break BC by @stof in [#353](https://github.com/Behat/Gherkin/pull/353)
61+
* Fix typo of a PHPStan alias type by @uuf6429 in [#371](https://github.com/Behat/Gherkin/pull/371)
62+
* Fix github actions workflow job name by @uuf6429 in [#369](https://github.com/Behat/Gherkin/pull/369)
63+
1064
# [4.14.0] - 2025-05-23
1165

1266
### Changed

0 commit comments

Comments
 (0)