Gherkin parser
Last release 21 days ago
05 Aug 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 72 of 72 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
72 releases · first in 2020
Release timeline
72 releases since 20202020202120222023202420252026
Releases
- 42.0.15 Aug 2026
Release notes2 sources agree
Open source →Added
- [Java] Added builder option to use non-deprecated
IdGenerator.
Fixed
- [Java] Use version range for
org.jspecify:jspecify
- [Java] Added builder option to use non-deprecated
- 42.0.019 Jul 2026
Release notes2 sources agree
Open source →Added
- (i18n) Added Persian translation of "Rule" (#642)
- (i18n) Added new synonyms for existing Persian keywords (#642)
- [Dart] Revived Dart implementation as
cucumber_gherkin(#640)
Changed
- Allow steps to have both a DocString and a Datatable argument (#599, #643)
- Update dependency messages to at-least v34 (#652, #643)
- [cpp] Removed cmate and all related files. (#617)
- [Ruby] Require Ruby 3.3
Fixed
- [testdata] removed stray \r\n line endings, replaced with \n. (#617)
- 41.0.020 Jun 2026
Release notes
Open source →Changed
- [PHP] BREAKING CHANGE: Require PHP 8.4
Fixed
- [JavaScript] Remove namespace imports from messages
Release notes
Open source →Changed
- [PHP] Require PHP 8.4
Fixed
- [JavaScript] Remove namespace imports from messages
- 40.0.010 Jun 2026
Release notes
Open source →Changed
- [.Net] Replaced FluentAssertions with AwesomeAssertions
- [JavaScript] BREAKING CHANGE: Switch to ESM (#610)
Release notes
Open source →Changed
- [.Net] Replaced FluentAssertions with AwesomeAssertions
- [JavaScript] Switch to ESM (#610)
- 39.1.06 May 2026
Release notes2 sources agree
Open source →Added
- (i18n) Expanded Turkish keywords (#567)
Changed
- [Ruby, Python, JavaScript, Perl, C++, .NET] Optimise parser class/speed by removing redundant null
#detachmethod (#561). - [Ruby] Changed
ParserMessageStreamto accept keyword arguments allowing theGherkinclass methods to be slightly more optimal (#560).
Fixed
- [c] Fixed memory leak with respect to the pickle ast ids.
- [c] Fixed potential read past null terminator. Fixed allocation of more memory than necessary (#559).
- [PHP] Fix PHP 8.4 deprecation warnings (#550).
- [cpp] Added missing include guard in parser.hpp (#554)
- [cpp] Removed unreachable code in parser.hpp (#554)
Removed
- [Python] Drop support for python 3.9.
- 39.0.01 Mar 2026
Release notes
Open source →Added
- (i18n) Added Korean translation of "Rule" (#544)
Changed
- [PHP] Require PHP 8.2+ in CI and in composer.json.
Security
- [Python] Fixed hidden file reading behavior in
Parser.parse(#541).
Release notes
Open source →Added
- (i18n) Added Korean translation of "Rule" (#544)
Changed
- [PHP] Require PHP 8.2+ in CI and in composer.json.
Fixed
- [cpp] Removed unused vector_type definition (#549).
Security
- [Python] Fixed hidden file reading behavior in
Parser.parse(#541).
- 38.0.022 Jan 2026
Release notes2 sources agree
Open source →Changed
- [Java] Set release version to 17 (#507).
- [.NET, Elixir, Go, JavaScript, Java, Perl, Php, Ruby] Update dependency messages to v32
- 37.0.122 Dec 2025
Release notes2 sources agree
Open source →Fixed
- [.NET] Support calling Methods in GherkinLine on default value (#503).
- 37.0.019 Nov 2025
Release notes
Open source →Added
- Add
locationtoPickle(#433)
Changed
- BREAKING CHANGE: Require messages v31 or greater
Fixed
- [Java] Fixed
AstNodeconditions which never occur inGherkinDocumentBuilder(#497).
Release notes
Open source →Added
- Add
locationtoPickle(#433)
Changed
- Require messages v31 or greater
Fixed
- [Java] Fixed
AstNodeconditions which never occur inGherkinDocumentBuilder(#497).
- Add
- 36.1.05 Nov 2025
- 36.0.09 Oct 2025
Release notes2 sources agree
Open source →Changed
- [.NET, Elixir, Go, JavaScript, Java, Perl, Php, Ruby] Update dependency messages to v30
Fixed
- [Java] Only use
org.assertj:assertj-coreintestscope.
- 35.1.020 Sept 2025
Release notes2 sources agree
Open source →Added
- (I18n) ru: Added word "Значения" as a synonym for examples (#479
Fixed
- [Java] Optimize
StrinUtils.isWhitespace(#468)
- 35.0.011 Sept 2025
Release notes2 sources agree
Open source →Changed
- [.NET, Elixir, Go, JavaScript, Java, Perl, Php, Ruby] Update dependency messages to v29
Fixed
- [.NET] Don't trim whitespaces before escape character (#467)
Removed
- [Python] Dropped legacy input-output processor (#459)
- 34.0.017 Aug 2025
Release notes2 sources agree
Open source →Changed
- Fixed Afrikaans translation for "rule" (#428)
- [.NET] Migrated to the use of Cucumber/Messages. Eliminated the built-in Gherkin.CucumberMessages.Types (#426)
Deprecated
- [Java] Deprecate
GherkinDialectProviderin favour ofGherkinDialects(#448)
Fixed
- [.Net] Handle all ambiguous keywords properly (#435)
- [Java] Optimize
GherkinLine.substringTrimmed(#444) - [Java] Improve performance with a generated keyword matcher (#445)
Removed
- [Python] Dropped legacy
.egg-infometadata distribution artifacts
- 33.1.027 Jul 2025
Release notes2 sources agree
Open source → - 33.0.07 Jul 2025
Release notes2 sources agree
Open source →Changed
- [Elixir, Go, JavaScript, Java, Perl, Php, Ruby] Update dependency messages to v28 (#420)
- 32.2.07 Jul 2025
Release notes2 sources agree
Open source →Added
- [Perl] Support for Gherkin in Markdown format (MDG)
Fixed
- 32.1.225 May 2025
Release notes2 sources agree
Open source →Fixed
- [cpp] Actually use the VERSION file (#376)
- [Java] Prefer the longest step keyword (#401)
- [.NET] Prefer the longest step keyword (#405)
- [PHP] Prefer the longest step keyword (#403)
- [Go] Prefer the longest step keyword (#403)
- [JavaScript] Prefer the longest step keyword (#407)
- [Perl] Prefer the longest step keyword (#408)
- [Ruby] Prefer the longest step keyword (#409)
- [Python] Prefer the longest step keyword (#410)
- 32.1.04 Apr 2025
- 32.0.127 Mar 2025
Release notes2 sources agree
Open source →Fixed
- [Python] Fix a regression when a feature file only has a comment in the description
- 32.0.017 Feb 2025
Release notes
Open source →Changed
- [.NET] Reduce NuGet size by only targeting .NET Standard 2.0
- [.NET] Changed some types from class to struct, removed IGherkinLine interface and changes some functions from Array to Enumerable
- [Ruby] Update minimum ruby requirement from 3.0 to 3.2
- [Ruby] Introduce rubocop subgems to facilitate optimisations
- [JavaScript] BREAKING CHANGE: Update supported Node.js versions to 18, 20, 22 and 23 (#365)
Fixed
- [.NET] Fix NuGet package generation
- [c] Optimise error handling for empty datatable rows
- [Perl] Optimise error handling for unclosed DocStrings
Release notes
Open source →Changed
- [.NET] Reduce NuGet size by only targeting .NET Standard 2.0
- [.NET] Changed some types from class to struct, removed IGherkinLine interface and changes some functions from Array to Enumerable
- [Ruby] Update minimum ruby requirement from 3.0 to 3.2
- [Ruby] Introduce rubocop subgems to facilitate optimisations
- [JavaScript] Update supported Node.js versions to 18, 20, 22 and 23 (#365)
Fixed
- [.NET] Fix NuGet package generation
- [c] Optimise error handling for empty datatable rows
- [Perl] Optimise error handling for unclosed DocStrings
- 31.0.029 Jan 2025
Release notes2 sources agree
Open source →Added
- [All] Allow comment inside descriptions (#334)
- [.NET] Enabled overriding of parser's error-handling
- [Python] Expose Python public API as package imports (#352)
- [Python] Added support for Python 3.13
Changed
- [cpp] add generic support for ABI versioning with VERSION (#328)
- [cpp] namespace was changed to 'cucumber::gherkin' to better reflect project structure and prevent clashing
- [.NET] Removed dependency on System.Text.Json and related logic in GherkinDialectProvider
- [Elixir] Updates dependencies, bumps messages to 27.0.2
Fixed
- [c] slight update to existing CMakeFiles.txt to propagate VERSION. Close #320 (#328)
- [.NET] Improved parsing time
- [.NET] Use string-ordinal comparison consistently and remove old Mono workaround
- [.NET] Improved startup time
Removed
- [Python] Dropped support for Python 3.8
- 30.0.415 Nov 2024
Release notes2 sources agree
Open source →Fixed
- [Python] File gherkin-languages.json was not included as package data
- 30.0.314 Nov 2024
Release notes2 sources agree
Open source →Fixed
- [Python] Release process (still) didn't release to pypi correctly
- 30.0.214 Nov 2024
Release notes2 sources agree
Open source →Fixed
- [Python] Release process (again) didn't release to pypi correctly
- [Elixir] Restored test and release process
- 30.0.112 Nov 2024
Release notes2 sources agree
Open source →Changed
- [Ruby] Fixed up some style autofix cops (#311)
- [Ruby] Internal rewrites to razor template variables and
TokenFormatterBuilder) (#311)
Fixed
- [Python] Release process didn't release to pypi correctly
- [Python, JavaScript] Remove executable permissions from
.razorfiles (#310)
- 30.0.024 Oct 2024
Release notes
Open source →Added
- [PHP, Java, Ruby, JavaScript] update dependency messages up to v26
- [Python] Added type annotations (#283)
- [Python] Switch to pyproject.toml (#290)
Changed
- [.NET] Drop unsupported frameworks. Now supported target frameworks are .NET 8, .NET Standard 2.0 (#265)
- [.NET] Adopt File Scoped Namespaces c# feature (#271)
- [.NET] Adopt c# 12 primary constructors (#272)
- [.NET] Adopt c# 10 ImplicitUsings
- [.NET] Replace TinyJson to System.Text.Json
- [.NET] Enable warnings as errors
- [Ruby] Initial rubocop autofixes (Mainly to style) (#266)
- [.NET] Update System.Text.Json to 6.0.10
Removed
- [Python] Drop compatibility for python 2 and python 3.8. Supported python versions: 3.9, 3.10, 3.11, 3.12, 3.13
- [Python] Removed installation of
gherkinscript. It was used for internal acceptance tests only.
Release notes
Open source →Added
- [PHP, Java, Ruby, JavaScript] update dependency messages up to v26
- [Python] Added type annotations (#283)
- [Python] Switch to pyproject.toml (#290)
- [.NET] Added .NET 9 to test matrix
Changed
- [.NET] Drop unsupported frameworks. Now supported target frameworks are .NET 8, .NET Standard 2.0 (#265)
- [.NET] Adopt File Scoped Namespaces c# feature (#271)
- [.NET] Adopt c# 12 primary constructors (#272)
- [.NET] Adopt c# 10 ImplicitUsings
- [.NET] Replace TinyJson to System.Text.Json
- [.NET] Enable warnings as errors
- [Ruby] Initial rubocop autofixes (Mainly to style) (#266)
- [.NET] Update System.Text.Json to 6.0.10
Removed
- [Python] Drop compatibility for python 2 and python 3.8. Supported python versions: 3.9, 3.10, 3.11, 3.12, 3.13
- [Python] Removed installation of
gherkinscript. It was used for internal acceptance tests only.
- 29.0.012 Aug 2024
Release notes
Open source →Manually made due to issue with polyglot-release
What's Changed
- build(deps): update cucumber-messages requirement from ~> 19.1, >= 19.1.4 to >= 19.1.4, < 22.0 in /ruby by @dependabot in https://github.com/cucumber/gherkin/pull/78
- fix(go): change module name to match repo by @otrava7 in https://github.com/cucumber/gherkin/pull/77
- Allow messages v19.1.4 to v20.0.1 to be used by @mpkorstanje in https://github.com/cucumber/gherkin/pull/83
- java: Improve text trimming performance by @jkronegg in https://github.com/cucumber/gherkin/pull/85
- Update StringUtils Javadoc by @jkronegg in https://github.com/cucumber/gherkin/pull/87
- fix(deps): update dependency com.fasterxml.jackson:jackson-bom to v2.14.2 by @renovate in https://github.com/cucumber/gherkin/pull/91
- break circular dependency on gherkin-streams by @davidjgoss in https://github.com/cucumber/gherkin/pull/92
- chore(deps): update actions/setup-go action to v4 by @renovate in https://github.com/cucumber/gherkin/pull/96
- chore(deps): update dependency typescript to v5 by @renovate in https://github.com/cucumber/gherkin/pull/97
- i18n: Add Belarusian (be) localization by @EDbarvinsky in https://github.com/cucumber/gherkin/pull/98
- Fixed: Renovate/phpunit phpunit 10.x by @ciaranmcnulty in https://github.com/cucumber/gherkin/pull/99
- chore(deps): update dependency @types/node to v18.15.11 by @renovate in https://github.com/cucumber/gherkin/pull/101
- fix(deps): update module github.com/cucumber/messages/go/v21 to v22 by @renovate in https://github.com/cucumber/gherkin/pull/104
- fix(deps): update dependency io.cucumber:messages to v22 by @renovate in https://github.com/cucumber/gherkin/pull/103
- fix(deps): update dependency @cucumber/messages to v22 by @renovate in https://github.com/cucumber/gherkin/pull/102
- fix(deps): update dependency com.fasterxml.jackson:jackson-bom to v2.15.0 by @renovate in https://github.com/cucumber/gherkin/pull/108
- fix(deps): update dependency com.fasterxml.jackson:jackson-bom to v2.15.1 by @renovate in https://github.com/cucumber/gherkin/pull/113
- fix(deps): update dependency com.fasterxml.jackson:jackson-bom to v2.15.2 by @renovate in https://github.com/cucumber/gherkin/pull/116
- go: use standard header in generated file by @dolmen in https://github.com/cucumber/gherkin/pull/134
- python: Remove Python 2.x from CI by @mpkorstanje in https://github.com/cucumber/gherkin/pull/135
- chore(deps): update dependency commander to v11 by @renovate in https://github.com/cucumber/gherkin/pull/121
- chore(deps): update dependency microsoft.net.test.sdk to v17.6.3 by @renovate in https://github.com/cucumber/gherkin/pull/127
- chore(deps): update dependency typescript to v5.1.6 by @renovate in https://github.com/cucumber/gherkin/pull/128
- chore(deps): update dependency pytest to <7.5 by @renovate in https://github.com/cucumber/gherkin/pull/124
- chore(deps): update dependency core-js to v3.31.1 by @renovate in https://github.com/cucumber/gherkin/pull/130
- chore(deps): update dependency @types/node to v18.16.19 by @renovate in https://github.com/cucumber/gherkin/pull/129
- chore(deps): update dependency xunit to v2.5.0 by @renovate in https://github.com/cucumber/gherkin/pull/132
- chore(deps): update dependency perl to v5.39.0 by @renovate in https://github.com/cucumber/gherkin/pull/114
- Revert "chore(deps): update dependency perl to v5.39.0 (#114)" by @mpkorstanje in https://github.com/cucumber/gherkin/pull/139
- chore(deps): update dependency ex_doc to ~> 0.30 by @renovate in https://github.com/cucumber/gherkin/pull/137
- chore(deps): update dependency xunit.runner.visualstudio to v2.5.0 by @renovate in https://github.com/cucumber/gherkin/pull/138
- Adding support for Malayalam Language by @pradeepind in https://github.com/cucumber/gherkin/pull/142
- go: upgrade messages to v22 by @dolmen in https://github.com/cucumber/gherkin/pull/133
- fix(deps): update module github.com/stretchr/testify to v1.8.4 by @renovate in https://github.com/cucumber/gherkin/pull/115
- go: Performance: Don't compile regex on matcher create by @tigh-latte in https://github.com/cucumber/gherkin/pull/107
- Test on oldest supported Perl too by @ehuelsmann in https://github.com/cucumber/gherkin/pull/145
- Fix PHP formatting to address source formatting failure by @ehuelsmann in https://github.com/cucumber/gherkin/pull/147
- Perl add administrativia by @ehuelsmann in https://github.com/cucumber/gherkin/pull/146
- Perl harmonized errors by @ehuelsmann in https://github.com/cucumber/gherkin/pull/149
- Perl cleanup by @ehuelsmann in https://github.com/cucumber/gherkin/pull/150
- Errors once by @ehuelsmann in https://github.com/cucumber/gherkin/pull/152
- chore(deps): update actions/checkout action to v4 by @renovate in https://github.com/cucumber/gherkin/pull/164
- chore(deps): update dependency @types/node to v18.17.14 by @renovate in https://github.com/cucumber/gherkin/pull/155
- fix(deps): update dependency uuid to v4 by @renovate in https://github.com/cucumber/gherkin/pull/163
- chore(deps): update dependency microsoft.net.test.sdk to v17.7.2 by @renovate in https://github.com/cucumber/gherkin/pull/161
- chore(deps): update dependency typescript to v5.2.2 by @renovate in https://github.com/cucumber/gherkin/pull/159
- chore(deps): update dependency fluentassertions to v6.12.0 by @renovate in https://github.com/cucumber/gherkin/pull/157
- i18n: Add 'ed' to Italian by @Coedice in https://github.com/cucumber/gherkin/pull/160
- Skip tests for implementations without change by @mpkorstanje in https://github.com/cucumber/gherkin/pull/167
- i18n: Add Danish translation of "Rule" by @mpkorstanje in https://github.com/cucumber/gherkin/pull/166
- chore(deps): update dependency dart to v3 by @renovate in https://github.com/cucumber/gherkin/pull/156
- Added .net 8 to test platforms by @Romfos in https://github.com/cucumber/gherkin/pull/158
- chore(deps): update dependency vimeo/psalm to v5.15.0 by @renovate in https://github.com/cucumber/gherkin/pull/168
- i18n: Add 'regel' for 'rule' in Dutch by @Coedice in https://github.com/cucumber/gherkin/pull/170
- i18n: Add 'regulo' for 'rule' in Esperanto by @Coedice in https://github.com/cucumber/gherkin/pull/171
- [Ruby]: Ruby / Messages bump by @luke-hill in https://github.com/cucumber/gherkin/pull/165
- ruby: introduce Gherkin::Query#parent_locations. by @botandrose in https://github.com/cucumber/gherkin/pull/89
- Doc update by @luke-hill in https://github.com/cucumber/gherkin/pull/172
- Added C++ implementation by @chybz in https://github.com/cucumber/gherkin/pull/173
- chore(deps): update actions/checkout action to v4 by @renovate in https://github.com/cucumber/gherkin/pull/174
- Revert "chore(deps): update actions/checkout action to v4" by @mpkorstanje in https://github.com/cucumber/gherkin/pull/177
- chore(deps): update actions/checkout action to v4 by @renovate in https://github.com/cucumber/gherkin/pull/178
- Use version 4 of checkout step in workflow by @luke-hill in https://github.com/cucumber/gherkin/pull/180
- fix(deps): update dependency com.fasterxml.jackson:jackson-bom to v2.15.3 by @renovate in https://github.com/cucumber/gherkin/pull/182
- chore(deps): update actions/setup-node action to v4 by @renovate in https://github.com/cucumber/gherkin/pull/184
- chore(deps): update dependency getopt::long to v2.57 by @renovate in https://github.com/cucumber/gherkin/pull/190
- fix(deps): update dependency com.fasterxml.jackson:jackson-bom to v2.16.0 by @renovate in https://github.com/cucumber/gherkin/pull/193
- fix(deps): update dependency io.cucumber:messages to v24 by @renovate in https://github.com/cucumber/gherkin/pull/195
- fix(deps): update dependency @cucumber/messages to v24 by @renovate in https://github.com/cucumber/gherkin/pull/194
- chore(deps): update actions/setup-java action to v4 by @renovate in https://github.com/cucumber/gherkin/pull/197
- chore(deps): update actions/setup-dotnet action to v4 by @renovate in https://github.com/cucumber/gherkin/pull/198
- chore(deps): update actions/setup-python action to v5 by @renovate in https://github.com/cucumber/gherkin/pull/199
- chore(deps): update actions/setup-go action to v5 by @renovate in https://github.com/cucumber/gherkin/pull/200
- Fix for get_comments prototype deprecation by @tmcgilchrist in https://github.com/cucumber/gherkin/pull/186
- chore(deps): update dependency @types/node to v20 by @renovate in https://github.com/cucumber/gherkin/pull/185
- fix(deps): update dependency com.fasterxml.jackson:jackson-bom to v2.16.1 by @renovate in https://github.com/cucumber/gherkin/pull/201
- Update Python example to latest API by @kieran-ryan in https://github.com/cucumber/gherkin/pull/203
- Fix cpp build by @mpkorstanje in https://github.com/cucumber/gherkin/pull/206
- i18n: Add Vietnamese translation of "Rule" by @binhtran432k in https://github.com/cucumber/gherkin/pull/204
- Remove duplicate token matcher Python code by @kieran-ryan in https://github.com/cucumber/gherkin/pull/205
- fix(deps): update module github.com/cucumber/messages/go/v22 to v24 by @renovate in https://github.com/cucumber/gherkin/pull/196
- fix(deps): update dependency cucumber-messages to v24 by @mpkorstanje in https://github.com/cucumber/gherkin/pull/208
- fix(deps): update module github.com/cucumber/messages/go/v22 to v24 by @renovate in https://github.com/cucumber/gherkin/pull/207
- fix(deps): update dependency io.cucumber:cucumber-parent to v4.2.0 by @renovate in https://github.com/cucumber/gherkin/pull/209
- Cpp windows ci by @chybz in https://github.com/cucumber/gherkin/pull/211
- [Python] Add workflow for releasing to Pypi by @brasmusson in https://github.com/cucumber/gherkin/pull/213
- chore: add multiplatform CI by @chybz in https://github.com/cucumber/gherkin/pull/214
- chore(deps): update actions/cache action to v4 by @renovate in https://github.com/cucumber/gherkin/pull/218
- [Python] Reuse the action-publish-pypi in release-pypi.yaml by @brasmusson in https://github.com/cucumber/gherkin/pull/220
- Irish translation for Rule by @kieran-ryan in https://github.com/cucumber/gherkin/pull/216
- update go example in readme by @jbsmith7741 in https://github.com/cucumber/gherkin/pull/181
- chore(deps): update xunit-dotnet monorepo by @renovate in https://github.com/cucumber/gherkin/pull/227
- CI: Update latest PHP version to last non-EOL version by @olleolleolle in https://github.com/cucumber/gherkin/pull/228
- fix(deps): update dependency com.fasterxml.jackson:jackson-bom to v2.16.2 by @renovate in https://github.com/cucumber/gherkin/pull/231
- [php] Bump required version of the php-cs-fixer by @olleolleolle in https://github.com/cucumber/gherkin/pull/232
- [php] disable php-cs progress bar output in CI by @olleolleolle in https://github.com/cucumber/gherkin/pull/233
- fix(deps): update dependency com.fasterxml.jackson:jackson-bom to v2.17.0 by @renovate in https://github.com/cucumber/gherkin/pull/236
- Update README.md, python example by @jeanlauliac in https://github.com/cucumber/gherkin/pull/235
- chore(deps): update dependency commander to v12 by @renovate in https://github.com/cucumber/gherkin/pull/225
- chore(deps): update dependency pytest to v8 by @renovate in https://github.com/cucumber/gherkin/pull/222
- Build every language on changes to the GitHub workflows by @mpkorstanje in https://github.com/cucumber/gherkin/pull/237
- README: update ast diagram to v6 using Mermaid class diagram by @binhtran432k in https://github.com/cucumber/gherkin/pull/215
- [php] Configure Psalm 6 default settings findUnusedBaselineEntry, findUnusedCode by @olleolleolle in https://github.com/cucumber/gherkin/pull/234
- php: Remove transitive php-parser dependency by @mpkorstanje in https://github.com/cucumber/gherkin/pull/239
- chore(deps): update dependency vimeo/psalm to v5.23.1 by @renovate in https://github.com/cucumber/gherkin/pull/219
- [php] Try to follow Psalm tips by @olleolleolle in https://github.com/cucumber/gherkin/pull/238
- Refresh README elements including broken links by @kieran-ryan in https://github.com/cucumber/gherkin/pull/240
- Provide trailing space in Irish keywords by @kieran-ryan in https://github.com/cucumber/gherkin/pull/243
- python: provide informative exception for trailing escapes in tables by @kieran-ryan in https://github.com/cucumber/gherkin/pull/241
- chore(deps): update dependency phpunit/phpunit to v11 by @renovate in https://github.com/cucumber/gherkin/pull/224
- fix(cpp): handle download failures and don't use GitHub api to get latest releases by @chybz in https://github.com/cucumber/gherkin/pull/247
- Korean dialect missing space after step keywords by @kieran-ryan in https://github.com/cucumber/gherkin/pull/254
- Bump braces from 3.0.2 to 3.0.3 in /javascript by @dependabot in https://github.com/cucumber/gherkin/pull/255
- fix(deps): update dependency @cucumber/messages to v25 by @renovate in https://github.com/cucumber/gherkin/pull/252
- ruby: provide informative exception for trailing escapes in tables by @mpkorstanje in https://github.com/cucumber/gherkin/pull/244
- Perl, .Net: provide informative exception for trailing escapes in tables by @mpkorstanje in https://github.com/cucumber/gherkin/pull/245
- Gujarati translation for Rule by @hardikthanth in https://github.com/cucumber/gherkin/pull/249
- Restore License file for each language by @mpkorstanje in https://github.com/cucumber/gherkin/pull/257
- [Ruby] - Messages update / skeleton for refactoring by @luke-hill in https://github.com/cucumber/gherkin/pull/259
- go: generate formatted parser by @mpkorstanje in https://github.com/cucumber/gherkin/pull/260
- Add docker container to generate parsers and languages by @ehuelsmann in https://github.com/cucumber/gherkin/pull/154
- Remove duplicate scenario keyword from sr-Cyrl by @mpkorstanje in https://github.com/cucumber/gherkin/pull/264
New Contributors
- @dependabot made their first contribution in https://github.com/cucumber/gherkin/pull/78
- @otrava7 made their first contribution in https://github.com/cucumber/gherkin/pull/77
- @jkronegg made their first contribution in https://github.com/cucumber/gherkin/pull/85
- @davidjgoss made their first contribution in https://github.com/cucumber/gherkin/pull/92
- @EDbarvinsky made their first contribution in https://github.com/cucumber/gherkin/pull/98
- @dolmen made their first contribution in https://github.com/cucumber/gherkin/pull/134
- @pradeepind made their first contribution in https://github.com/cucumber/gherkin/pull/142
- @tigh-latte made their first contribution in https://github.com/cucumber/gherkin/pull/107
- @ehuelsmann made their first contribution in https://github.com/cucumber/gherkin/pull/145
- @Coedice made their first contribution in https://github.com/cucumber/gherkin/pull/160
- @luke-hill made their first contribution in https://github.com/cucumber/gherkin/pull/165
- @botandrose made their first contribution in https://github.com/cucumber/gherkin/pull/89
- @chybz made their first contribution in https://github.com/cucumber/gherkin/pull/173
- @tmcgilchrist made their first contribution in https://github.com/cucumber/gherkin/pull/186
- @kieran-ryan made their first contribution in https://github.com/cucumber/gherkin/pull/203
- @binhtran432k made their first contribution in https://github.com/cucumber/gherkin/pull/204
- @brasmusson made their first contribution in https://github.com/cucumber/gherkin/pull/213
- @jbsmith7741 made their first contribution in https://github.com/cucumber/gherkin/pull/181
- @olleolleolle made their first contribution in https://github.com/cucumber/gherkin/pull/228
- @jeanlauliac made their first contribution in https://github.com/cucumber/gherkin/pull/235
- @hardikthanth made their first contribution in https://github.com/cucumber/gherkin/pull/249
Full Changelog: https://github.com/cucumber/gherkin/compare/v26.0.1...v29.0.0
Release notes
Open source →Added
- (i18n) Added Gujarati translation for "Rule" (#249)
- [Ruby] Skeleton to begin technical refactor of internals (#259)
Changed
- [Java, JavaScript, PHP, Go, Ruby] Upgraded messages to v25
- [Ruby] Update minimum ruby requirement from 2.5 to 3.0 (#259)
Fixed
- [.NET] Provide informative exception for trailing escapes in tables (#245)
- [Perl] Provide informative exception for trailing escapes in tables (#245)
- [Ruby] Provide informative exception for trailing escapes in tables (#244)
- [Python] Provide informative exception for trailing escapes in tables (#241)
- (i18n) Provide trailing space in Irish step keywords (#243)
- (i18n) Provide trailing space in Korean step keywords (#254)
- (i18n) Tamil "And" and "But" translations should have single trailing space (#243)
- (i18n) Remove duplicate scenario keyword from "sr-Cyrl" (#264)
- Intermittent failure of cpp test jobs in CI (#217)
- 28.0.015 Feb 2024
Release notes
Open source →Added
- [Python] Added release workflow for releasing to Pypi (#213)
- (i18n) Added Vietnamese translation of "Rule" (#204)
- (i18n) Added Irish translation of "Rule" (#216)
Changed
Release notes
Open source →Added
- [Python] Added release workflow for releasing to Pypi (#213)
- (i18n) Added Vietnamese translation of "Rule" (#204)
- (i18n) Added Irish translation of "Rule" (#216)
Changed
- 27.0.015 Sept 2023
Release notes2 sources agree
Open source →Added
- (i18n) Added Malayalam localization
- (i18n) Added 'ed' to Italian (#31)
- (i18n) Added Danish translation of "Rule"
- (i18n) Added Dutch translation of "Rule"
- (i18n) Added Esperanto translation of "Rule"
- [Ruby] Added
Gherkin::Query#parent_locationsfor determining a scenario's parents' line numbers (#89) - C++ implementation #117
Changed
- [.NET] Bump sdk to .net 8. Added .net 8 to test platforms
- [Go, Perl, Ruby] Upgraded messages to v22
- [Go] Improve performance - don't compile regex on matcher create
- [Perl] Fix release packaging
- [Perl] Include CHANGELOG.md in tarball
- [Perl] Harmonized error reporting with mainstream implementations - errors are now converted to messages and reported in the message stream (#31)
- [Ruby] Update minimum ruby requirement from 2.3 to 2.5
- 26.2.07 Apr 2023
- 26.1.023 Mar 2023
- 26.0.33 Jan 2023
Release notes2 sources agree
Open source →Fixed
- [Javascript, PHP, Ruby] Allow messages v19.1.4 to v20.0.1 to be used
- [Java] Improve text trim performance (#84)
- 26.0.227 Dec 2022
- 26.0.117 Dec 2022
- 26.0.017 Dec 2022
Release notes2 sources agree
Open source →Added
- [Java] Enabled reproducible builds
Changed
- Upgraded messages to v21
- [.NET] Update target frameworks fo .NET 6, .NET Framework 4.6.2, .NET Standard 2.0
Fixed
- Link to the correct repository in various package meta-data.
- [Perl] Specify version range for
Cucumber::Messagesdependency (#50)
- 25.0.29 Nov 2022
- 25.0.19 Nov 2022
- 25.0.09 Nov 2022
Release notes2 sources agree
Open source →Added
- Additional
ja(Japanese) translations forand,but - Added
amh(Amharic) translation - Add
ФичаandШаблон примераas more convenient translations (#2078)
Changed
ja(Japanese)Ruletranslation changed fromRuletoルール
Deprecated
Fixed
- Translations fixed for
ka(Georgian) locale
Removed
- Additional
- 24.1.010 Oct 2022
Release notes
Open source →Added
- [Java] Added support for reading directly from input (files, streams, paths, ect)
- [C] The C implementation re-enabled and made up to date. (#1989)
Fixed
- 24.0.031 May 2022
Release notes
Open source →Added
- [Java], [JavaScript], [PHP], [Perl], [Python], [Go], [C], [DotNet], [Ruby] Support new messages keyword types fields an added with #1966 (#1741)
Changed
- [Java] the
GherkinDialectconstructor is no longer public (it's only used internally) - [Go] the
gherkin.GherkinDialectsBuildinid renamed togherkin.DialectsBuiltin - [Go] the
gherkin.GherkinDialectid renamed togherkin.Dialect - [Go] the
gherkin.GherkinDialectProviderid renamed togherkin.DialectProvider - The
ne(Nepali)andtranslation changed fromअनीtoअनि - The
uz(Uzbek)giventranslation changed fromАгарtoBelgilangan - The
en-old(Old English)whentranslation changed fromTha/Þa/ÐatoBæþsealf/Bæþsealfa/Bæþsealfe/Ciricæw/Ciricæwe/Ciricæwa
Fixed
- 23.0.131 Mar 2022
- 23.0.031 Mar 2022
Release notes
Open source →Changed
- Update
messagesto v18.0.0 - [Java] Replaced
Gherkinwith aGherkinParserthat uses a builder to construct. - [Java] Made all internal classes package private
- [Java] Removed unused
stopAtFirstErrorproperty fromParser - [PHP] Implemented
Gherkin - [JavaScript]
@cucumber/message-streamshas been removed from the dependencies. If you are using@cucumber/gherkin-streamsv5.0.0 or later, you have to add@cucumber/message-streamsin your dependencies in addition to@cucumber/gherkin.
Removed
- [Java] the
io.cucumber.gherkin.Mainclass is no longer part of the jar.
- Update
- 22.0.023 Sept 2021
Release notes
Open source →Added
- [Perl] Documentation for most of the modules (#1740 ehuelsmann)
Changed
- [Perl] Changed API to pass around
Cucumber::Messagesinstead of hashesand increased minimum Perl version in accordance withCucumber::Messages(to 5.14; from 5.12) (#1735ehuelsmann)
Fixed
- [Perl] Failure to include CHANGELOG.md in the release tarball (#1728 ehuelsmann)
- 21.0.01 Sept 2021
Release notes
Open source →Added
- [JavaScript] Expose
Errorsobject.
Changed
- Fixed
Ruletranslation forhi,sr-Cyrl,sr-Latnandtr(aslakhellesoy) - [Java] Renamed
Token#mathcedItemstoToken#matchedItems(#1687 aslakhellesoy) - [Perl] Minimum Perl version upgraded to 5.12 (from 5.10.1) (#1665 ehuelsmann)
Fixed
Removed
- [Perl] Dependency on
IO::Scalarremoved (#1665 ehuelsmann)
- [JavaScript] Expose
- 20.0.119 Jul 2021
- 20.0.08 Jul 2021
Release notes
Open source →Changed
- Update messages to v17.0.0
- Update
rulepolish translation (#1579 l310) - Add US Texan translations. (#1625 willmac321)
- [Go] Move module paths to point to monorepo (#1550)
- [Ruby] Usage of Message DTOs instead of plain ruby hashes (#1603)
Fixed
- 19.0.324 May 2021
Release notes
Open source →Fixed
- MDG files must use the
.feature.mdextension. - Data Tables and Examples Tables in Markdown must be indented 2-5 spaces in order tobe recognised.
- MDG files must use the
- 19.0.219 May 2021
Release notes
Open source →Fixed
- Upgrade to
@cucumber/message-streams^2.0.0 - Upgrade berp to 1.3.0 (parser behavior not changed) (#1542 gasparnagy)
- Upgrade to
- 19.0.117 May 2021
- 19.0.015 May 2021
Release notes
Open source →Added
- [JavaScript] Experimental support for Markdown. See MARKDOWN_WITH_GHERKIN.md (#1209 aslakhellesoy)
Changed
- [DotNet] Replaced Utf8Json with source-embedded TinyJson. (#511 gasparnagy)
- Update Dutch translation of the "Rule" keyword. (#1513 OrhanTozan)
- Update Russian translation of the "Scenario Outline" keyword. (#1499 hkosova)
- Update Hungarian translation of the "Rule" keyword. (#1518 gasparnagy)
- [Go, Java, JavaScript, Ruby] Upgrade to messages 16.0.0: this may have a big impact on APIs.Please see messages/CHANGELOG.md for more details.
Fixed
- [Perl] Reinstate Perl 5.10.1 compatibility. (#1495 #1494 ehuelsmann)
- [DotNet] Fixed .NET Gherkin compatibility with other Gherkin implementations. (#511 gasparnagy)
Removed
- [Elixir] The package was not released - it needs to be updated to pass acceptance tests.
- [Perl] The package was not released - it needs to be updated to pass acceptance tests.
- 18.1.122 Apr 2021
Release notes
Open source → - 18.1.06 Apr 2021
Release notes
Open source → - 18.0.024 Mar 2021
Release notes
Open source →Added
- [Perl] New APIs to spawn message streams:
Gherkin->from_pathsandGherkin->from_source(#1359 ehuelsmann) - [All] Rules can be tagged. Scenarios that belong to the rule "inherit" the rule tags. (#1356 [sebrose], gasparnagy, brasmusson, WannesFransen1994)
- [Perl] DOS line endings support on all platforms (not just DOS/Windows) (ehuelsmann)
Changed
- [Perl] Release engineering changes to make it non-interactive, update CHANGELOG.md correctly (#1350) ehuelsmann
Removed
- [JavaScript] the
GherkinStreamsexport has moved from@cucumber/gherkinto@cucumber/gherkin-streams - [JavaScript] the
gherkin-javascriptexecutable has moved to the new@cucumber/gherkin-streamsnpm module
- [Perl] New APIs to spawn message streams:
- 17.0.216 Feb 2021
Release notes
Open source →Fixed
- [Perl] Release archive too large (8MB -> ) (#1350) ehuelsmann
- [Perl] Minimum Perl version (5.10.1) incorrectly declared, leading to CPANTESTERS failures (#1350) ehuelsmann
- [Perl] Kwalitee (Perl release quality checker) complaints/errors (#1350) ehuelsmann
- 17.0.18 Feb 2021
Release notes
Open source →Fixed
- Fix building of MacOS (darwin) executables. (#1347 #1348 aslakhellesoy)
- 17.0.07 Feb 2021
Release notes
Open source →Changed
- [JavaScript] the
GherkinStreamsobject is not longer loaded by default. This makes it possible to use the library in a browser without a polyfill. To upgrade, useimport GherkinStreams from '@cucumber/gherkin/dist/src/stream/GherkinStreams'instead ofimport { GherkinStreams } from 'gherkin'. (#1333) - [Perl] Fully overhauled implementation, moving it up from 4.0.0 (#711, #1286) ehuelsmann
Fixed
- Use Spanish translation for the "Rule" keyword and for the "Feature" synonym keywords (#1360 sergioforerogomez)
- Use Italian translation for the "Rule" keyword and for the "Feature" synonym keywords (#1318 mgiustiniani)
- Use Swedish translation for the "Rule" keyword (#1297 johnknoop)
- Elixir implementation - make sure the gherkin_languages.json is added with the release package. (#1293 WannesFransen1994)
- [JavaScript] removed circular dependencies. (#1292 davidjgoss)
Removed
- [JavaScript] the
- 16.0.010 Dec 2020
Release notes
Open source →Added
- [Elixir] New implementation! (#1251 WannesFransen1994)
Changed
Removed
- [JavaScript] The
Queryclass has been removed from this library, and has been added to@cucumber/gherkin-utils
- 15.0.217 Aug 2020
- 15.0.112 Aug 2020
Release notes
Open source →Changed
- Do not use this release. The removal of Gherkin keywords breaks backwards compatibility for Creole and French, and this should have been released as a major release. The keywords are restored in 15.0.2, and we'll remove them again in a future major release.
Removed
- Remove keyword aliases that only differ by letter case (French, Creole). The reason for this is that Cucumber-JVM generates annotation classes for each step keyword, and some file systems are case insensitive. This led to inconsistencies in the classes that were generated during the build. Removing these keywords fixes this problem. Theoretically this should trigger a new major release, but because the change is so minor and will affect very few users we've made this a patch release.