PackageTrack

npm · #3769

@cucumber/gherkin

42.0.1cucumber/gherkin

Gherkin parser

Release timeline

72 releases since 2020
2020202120222023202420252026

Releases

  1. 42.0.15 Aug 2026
    Release notes2 sources agree

    Added

    • [Java] Added builder option to use non-deprecated IdGenerator.

    Fixed

    • [Java] Use version range for org.jspecify:jspecify
    Open source →
  2. 42.0.019 Jul 2026
    Release notes2 sources agree

    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)
    Open source →
  3. 41.0.020 Jun 2026
    Release notes

    Changed

    • [PHP] BREAKING CHANGE: Require PHP 8.4

    Fixed

    • [JavaScript] Remove namespace imports from messages
    Open source →
    Release notes

    Changed

    • [PHP] Require PHP 8.4

    Fixed

    • [JavaScript] Remove namespace imports from messages
    Open source →
  4. 40.0.010 Jun 2026
    Release notes

    Changed

    • [.Net] Replaced FluentAssertions with AwesomeAssertions
    • [JavaScript] BREAKING CHANGE: Switch to ESM (#610)
    Open source →
    Release notes

    Changed

    • [.Net] Replaced FluentAssertions with AwesomeAssertions
    • [JavaScript] Switch to ESM (#610)
    Open source →
  5. 39.1.06 May 2026
    Release notes2 sources agree

    Added

    • (i18n) Expanded Turkish keywords (#567)

    Changed

    • [Ruby, Python, JavaScript, Perl, C++, .NET] Optimise parser class/speed by removing redundant null #detach method (#561).
    • [Ruby] Changed ParserMessageStream to accept keyword arguments allowing the Gherkin class 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.
    Open source →
  6. 39.0.01 Mar 2026
    Release notes

    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).
    Open source →
    Release notes

    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).
    Open source →
  7. 38.0.022 Jan 2026
    Release notes2 sources agree

    Changed

    • [Java] Set release version to 17 (#507).
    • [.NET, Elixir, Go, JavaScript, Java, Perl, Php, Ruby] Update dependency messages to v32
    Open source →
  8. 37.0.122 Dec 2025
    Release notes2 sources agree

    Fixed

    • [.NET] Support calling Methods in GherkinLine on default value (#503).
    Open source →
  9. 37.0.019 Nov 2025
    Release notes

    Added

    • Add location to Pickle (#433)

    Changed

    • BREAKING CHANGE: Require messages v31 or greater

    Fixed

    • [Java] Fixed AstNode conditions which never occur in GherkinDocumentBuilder (#497).
    Open source →
    Release notes

    Added

    • Add location to Pickle (#433)

    Changed

    • Require messages v31 or greater

    Fixed

    • [Java] Fixed AstNode conditions which never occur in GherkinDocumentBuilder (#497).
    Open source →
  10. 36.1.05 Nov 2025
    Release notes2 sources agree

    Added

    • [Java] Add OSGi metadata (#485)
    Open source →
  11. 36.0.09 Oct 2025
    Release notes2 sources agree

    Changed

    • [.NET, Elixir, Go, JavaScript, Java, Perl, Php, Ruby] Update dependency messages to v30

    Fixed

    • [Java] Only use org.assertj:assertj-core in test scope.
    Open source →
  12. 35.1.020 Sept 2025
    Release notes2 sources agree

    Added

    • (I18n) ru: Added word "Значения" as a synonym for examples (#479

    Fixed

    • [Java] Optimize StrinUtils.isWhitespace (#468)
    Open source →
  13. 35.0.011 Sept 2025
    Release notes2 sources agree

    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)
    Open source →
  14. 34.0.017 Aug 2025
    Release notes2 sources agree

    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 GherkinDialectProvider in favour of GherkinDialects (#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-info metadata distribution artifacts
    Open source →
  15. 33.1.027 Jul 2025
    Release notes2 sources agree

    Changed

    • [Java] Optimize GherkinParser performance (#436)

    Fixed

    • [Go] Trim trailing tab characters from title and step lines (#441)
    • [Java] Use a more consistent definition of whitespace (#442)
    Open source →
  16. 33.0.07 Jul 2025
    Release notes2 sources agree

    Changed

    • [Elixir, Go, JavaScript, Java, Perl, Php, Ruby] Update dependency messages to v28 (#420)
    Open source →
  17. 32.2.07 Jul 2025
    Release notes2 sources agree

    Added

    • [Perl] Support for Gherkin in Markdown format (MDG)

    Fixed

    • [C] Prefer the longest step keyword (#417)
    • [cpp] Actually allow comment inside descriptions (#414)
    • [cpp] Add missing translations for Rule (#415)
    • [cpp] Prefer the longest step keyword (#416)
    • [Python] Fix acceptance tests (#64)
    Open source →
  18. 32.1.225 May 2025
    Release notes2 sources agree

    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)
    Open source →
  19. 32.1.04 Apr 2025
    Release notes2 sources agree

    Changed

    • [Java] Optimize GherkinLine performance (#361)
    • [Java] Optimize number of array copies (#388)
    • [Java] Optimize Location performance (#385)
    • [Java] Optimize AstNode performance (#383)
    • [Java] Optimize EncodingParser performance (#382)
    • [Java] Optimize GherkinDialect performance (#380)
    Open source →
  20. 32.0.127 Mar 2025
    Release notes2 sources agree

    Fixed

    • [Python] Fix a regression when a feature file only has a comment in the description
    Open source →
  21. 32.0.017 Feb 2025
    Release notes

    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
    Open source →
    Release notes

    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
    Open source →
  22. 31.0.029 Jan 2025
    Release notes2 sources agree

    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
    Open source →
  23. 30.0.415 Nov 2024
    Release notes2 sources agree

    Fixed

    • [Python] File gherkin-languages.json was not included as package data
    Open source →
  24. 30.0.314 Nov 2024
    Release notes2 sources agree

    Fixed

    • [Python] Release process (still) didn't release to pypi correctly
    Open source →
  25. 30.0.214 Nov 2024
    Release notes2 sources agree

    Fixed

    • [Python] Release process (again) didn't release to pypi correctly
    • [Elixir] Restored test and release process
    Open source →
  26. 30.0.112 Nov 2024
    Release notes2 sources agree

    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 .razor files (#310)
    Open source →
  27. 30.0.024 Oct 2024
    Release notes

    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 gherkin script. It was used for internal acceptance tests only.
    Open source →
    Release notes

    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 gherkin script. It was used for internal acceptance tests only.
    Open source →
  28. 29.0.012 Aug 2024
    Release notes

    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

    Open source →
    Release notes

    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)
    Open source →
  29. 28.0.015 Feb 2024
    Release notes

    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

    • [Python] Reuse the action cucumber/action-publish-pypi in release (#220)
    • [Python] Removed duplicate code in markdown token matcher (#205)
    • [Java, JavaScript, PHP, Go, Ruby] Upgraded messages to v24
    • Upgraded messages to v22
    Open source →
    Release notes

    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

    • [Python] Reuse the action cucumber/action-publish-pypi in release (#220)
    • [Python] Removed duplicate code in markdown token matcher (#205)
    • [Java, JavaScript, PHP, Go, Ruby] Upgraded messages to v24
    Open source →
  30. 27.0.015 Sept 2023
    Release notes2 sources agree

    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_locations for 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
    Open source →
  31. 26.2.07 Apr 2023
    Release notes2 sources agree

    Changed

    • Upgraded messages to v22
    Open source →
  32. 26.1.023 Mar 2023
    Release notes2 sources agree

    Added

    • (i18n) Add Belarusian localization
    Open source →
  33. 26.0.33 Jan 2023
    Release notes2 sources agree

    Fixed

    • [Javascript, PHP, Ruby] Allow messages v19.1.4 to v20.0.1 to be used
    • [Java] Improve text trim performance (#84)
    Open source →
  34. 26.0.227 Dec 2022
    Release notes2 sources agree

    Fixed

    • [Go] Fix module names (again)
    Open source →
  35. 26.0.117 Dec 2022
    Release notes2 sources agree

    Fixed

    • [Go] Fix module names
    Open source →
  36. 26.0.017 Dec 2022
    Release notes2 sources agree

    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::Messages dependency (#50)
    Open source →
  37. 25.0.29 Nov 2022
    Release notes2 sources agree

    Fixed

    • Fix half-glyph in Georgian translations (#44)
    Open source →
  38. 25.0.19 Nov 2022
    Release notes2 sources agree

    Fixed

    • Fix release process for perl and elixir
    Open source →
  39. 25.0.09 Nov 2022
    Release notes2 sources agree

    Added

    • Additional ja (Japanese) translations for and, but
    • Added amh (Amharic) translation
    • Add Фича and Шаблон примера as more convenient translations (#2078)

    Changed

    • ja (Japanese) Rule translation changed from Rule to ルール

    Deprecated

    Fixed

    • Translations fixed for ka (Georgian) locale

    Removed

    Open source →
  40. 24.1.010 Oct 2022
    Release notes

    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

    • [Javascript] Include tags from rules in scenario outlines (#2091)
    • [Python] Fix gherkin-python for compiling example values with trailing backslash (#2048, #1954)
    • [PHP] Disallow installation of Messages 18.x (#2034)
    Open source →
  41. 24.0.031 May 2022
    Release notes

    Added

    • [Java], [JavaScript], [PHP], [Perl], [Python], [Go], [C], [DotNet], [Ruby] Support new messages keyword types fields an added with #1966 (#1741)

    Changed

    • [Java] the GherkinDialect constructor is no longer public (it's only used internally)
    • [Go] the gherkin.GherkinDialectsBuildin id renamed to gherkin.DialectsBuiltin
    • [Go] the gherkin.GherkinDialect id renamed to gherkin.Dialect
    • [Go] the gherkin.GherkinDialectProvider id renamed to gherkin.DialectProvider
    • The ne (Nepali) and translation changed from अनी to अनि
    • The uz (Uzbek) given translation changed from Агар to Belgilangan
    • The en-old (Old English) when translation changed from Tha / Þa / Ða to Bæþsealf / Bæþsealfa / Bæþsealfe / Ciricæw / Ciricæwe / Ciricæwa

    Fixed

    • [Java] remove shaded dependency on com.eclipsesource.minimal-json:minimal-json (#1957 #1959)
    Open source →
  42. 23.0.131 Mar 2022
    Release notes

    Fixed

    • [PhP] Fix dependency of messages (#1943)
    Open source →
  43. 23.0.031 Mar 2022
    Release notes

    Changed

    • Update messages to v18.0.0
    • [Java] Replaced Gherkin with a GherkinParser that uses a builder to construct.
    • [Java] Made all internal classes package private
    • [Java] Removed unused stopAtFirstError property from Parser
    • [PHP] Implemented Gherkin
    • [JavaScript] @cucumber/message-streams has been removed from the dependencies. If you are using @cucumber/gherkin-streams v5.0.0 or later, you have to add @cucumber/message-streams in your dependencies in addition to @cucumber/gherkin.

    Removed

    • [Java] the io.cucumber.gherkin.Main class is no longer part of the jar.
    Open source →
  44. 22.0.023 Sept 2021
    Release notes

    Added

    Changed

    • [Perl] Changed API to pass around Cucumber::Messages instead of hashesand increased minimum Perl version in accordance with Cucumber::Messages(to 5.14; from 5.12) (#1735ehuelsmann)

    Fixed

    • [Perl] Failure to include CHANGELOG.md in the release tarball (#1728 ehuelsmann)
    Open source →
  45. 21.0.01 Sept 2021
    Release notes

    Added

    • [JavaScript] Expose Errors object.

    Changed

    Fixed

    Removed

    Open source →
  46. 20.0.119 Jul 2021
    Release notes

    Changed

    • Update messages to v17.0.1
    Open source →
  47. 20.0.08 Jul 2021
    Release notes

    Changed

    • Update messages to v17.0.0
    • Update rule polish 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

    • [Ruby] Rules weren't inheriting the relevant tags during the Gherkin Query stage (Where it caches the NodeID) (#1593 luke-hill)
    • MDG parser correctly removes leading space from content in DocStrings
    Open source →
  48. 19.0.324 May 2021
    Release notes

    Fixed

    • MDG files must use the .feature.md extension.
    • Data Tables and Examples Tables in Markdown must be indented 2-5 spaces in order tobe recognised.
    Open source →
  49. 19.0.219 May 2021
    Release notes

    Fixed

    • Upgrade to @cucumber/message-streams ^2.0.0
    • Upgrade berp to 1.3.0 (parser behavior not changed) (#1542 gasparnagy)
    Open source →
  50. 19.0.117 May 2021
    Release notes

    Fixed

    Open source →
  51. 19.0.015 May 2021
    Release notes

    Added

    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

    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.
    Open source →
  52. 18.1.122 Apr 2021
    Release notes

    Fixed

    • [python] Run gherkin as a module. (#1480 #1475 [brasmusson] [aurelien-reeves])
    Open source →
  53. 18.1.06 Apr 2021
    Release notes

    Added

    • Python implementation re-enabled, with support for Rule keyword. (#1449 brasmusson)

    Fixed

    Open source →
  54. 18.0.024 Mar 2021
    Release notes

    Added

    • [Perl] New APIs to spawn message streams: Gherkin->from_paths and Gherkin->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 GherkinStreams export has moved from @cucumber/gherkin to @cucumber/gherkin-streams
    • [JavaScript] the gherkin-javascript executable has moved to the new @cucumber/gherkin-streams npm module
    Open source →
  55. 17.0.216 Feb 2021
    Release notes

    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
    Open source →
  56. 17.0.18 Feb 2021
    Release notes

    Fixed

    Open source →
  57. 17.0.07 Feb 2021
    Release notes

    Changed

    • [JavaScript] the GherkinStreams object is not longer loaded by default. This makes it possible to use the library in a browser without a polyfill. To upgrade, use import GherkinStreams from '@cucumber/gherkin/dist/src/stream/GherkinStreams' instead of import { 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] remove IGherkinOptions#createReadStream. This function was introduced in 9.1.0 in order to decouple this lib from the Node.js fs library. This decoupling was improved in #1333 which made it obsolete. (Fixes #1284
    Open source →
  58. 16.0.010 Dec 2020
    Release notes

    Added

    Changed

    • Telugu now uses the correct 639-1 code - te instead of tl. (#1238 #1221 nvmkpk)

    Removed

    • [JavaScript] The Query class has been removed from this library, and has been added to @cucumber/gherkin-utils
    Open source →
  59. 15.0.217 Aug 2020
    Release notes

    Fixed

    • Revert removal of Gherkin keywords from 15.0.1
    Open source →
  60. 15.0.112 Aug 2020
    Release notes

    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.
    Open source →