NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3769 most downloaded on npm
Gherkin parser
Last release 2 months ago
05 Aug 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
72 releases · first in 2020
One column per quarter.
[Java] Added builder option to use non-deprecated IdGenerator.
IdGenerator.org.jspecify:jspecify(i18n) Added Persian translation of "Rule"
cucumber_gherkin (#640)[PHP] BREAKING CHANGE: Require PHP 8.4
[JavaScript] BREAKING CHANGE: Switch to ESM
[PHP] Fix PHP 8.4 deprecation warnings (#550).
#detach method (#561).ParserMessageStream to accept keyword arguments allowing the Gherkin class methods to be slightly more optimal (#560).(i18n) Added Korean translation of "Rule"
Parser.parse (#541).[Java] Set release version to 17 (#507).
[.NET] Support calling Methods in GherkinLine on default value (#503).
BREAKING CHANGE: Require messages v31 or greater
### Added - [Java] Add OSGi metadata
[.NET, Elixir, Go, JavaScript, Java, Perl, Php, Ruby] Update dependency messages to v30
org.assertj:assertj-core in test scope.(I18n) ru: Added word "Значения" as a synonym for examples (#479
[.NET, Elixir, Go, JavaScript, Java, Perl, Php, Ruby] Update dependency messages to v29
[Java] Deprecate GherkinDialectProvider in favour of GherkinDialects
GherkinDialectProvider in favour of GherkinDialects (#448)GherkinLine.substringTrimmed (#444).egg-info metadata distribution artifacts[Java] Optimize GherkinParser performance
[Elixir, Go, JavaScript, Java, Perl, Php, Ruby] Update dependency messages to v28
[Perl] Support for Gherkin in Markdown format (MDG)
[cpp] Actually use the VERSION file
[Java] Optimize GherkinLine performance
[Python] Fix a regression when a feature file only has a comment in the description
[JavaScript] BREAKING CHANGE: Update supported Node.js versions to 18, 20, 22 and 23
[All] Allow comment inside descriptions
[Python] File gherkin-languages.json was not included as package data
[Python] Release process (still) didn't release to pypi correctly
[Python] Release process (again) didn't release to pypi correctly
[Ruby] Fixed up some style autofix cops
[PHP, Java, Ruby, JavaScript] update dependency messages up to v26
gherkin script. It was used for internal acceptance tests only.Fix for get_comments prototype deprecation by @tmcgilchrist in https://github.com/cucumber/gherkin/pull/186
Manually made due to issue with polyglot-release
Full Changelog: https://github.com/cucumber/gherkin/compare/v26.0.1...v29.0.0
[Python] Added release workflow for releasing to Pypi
(i18n) Added Malayalam localization
Gherkin::Query#parent_locations for determining a scenario's parents' line numbers (#89)### Changed - Upgraded messages to v22
(i18n) Add Belarusian localization
[Javascript, PHP, Ruby] Allow messages v19.1.4 to v20.0.1 to be used
### Fixed - [Go] Fix module names (again)
### Fixed - [Go] Fix module names
[Java] Enabled reproducible builds
Cucumber::Messages dependency (#50)Fix half-glyph in Georgian translations
Fix release process for perl and elixir
Additional ja (Japanese) translations for and, but
ja (Japanese) translations for and, butamh (Amharic) translationФича and Шаблон примера as more convenient translations (#2078)ja (Japanese) Rule translation changed from Rule to ルールka (Georgian) locale[Java] Added support for reading directly from input (files, streams, paths, ect)
[Java], [JavaScript], [PHP], [Perl], [Python], [Go], [C], [DotNet], [Ruby] Support new messages keyword types fields an added with #1966
GherkinDialect constructor is no longer public (it's only used internally)gherkin.GherkinDialectsBuildin id renamed to gherkin.DialectsBuiltingherkin.GherkinDialect id renamed to gherkin.Dialectgherkin.GherkinDialectProvider id renamed to gherkin.DialectProviderne (Nepali) and translation changed from अनी to अनिuz (Uzbek) given translation changed from Агар to Belgilanganen-old (Old English) when translation changed from Tha / Þa / Ða to Bæþsealf / Bæþsealfa / Bæþsealfe / Ciricæw / Ciricæwe / Ciricæwa[PhP] Fix dependency of messages
[Java] Replaced Gherkin with a GherkinParser that uses a builder to construct.
messages to v18.0.0Gherkin with a GherkinParser that uses a builder to construct.stopAtFirstError property from ParserGherkin@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.io.cucumber.gherkin.Main class is no longer part of the jar.[Perl] Documentation for most of the modules (#1740 ehuelsmann)
Cucumber::Messages instead of hashesand increased minimum Perl version in accordance with Cucumber::Messages(to 5.14; from 5.12) (#1735ehuelsmann)[JavaScript] Expose Errors object.
Errors object.Rule translation for hi, sr-Cyrl, sr-Latn and tr (aslakhellesoy)Token#mathcedItems to Token#matchedItems (#1687 aslakhellesoy)IO::Scalar removed (#1665 ehuelsmann)### Changed - Update messages to v17.0.1
messages to v17.0.1Update rule polish translation (#1579 l310)
MDG files must use the .feature.md extension.
.feature.md extension.Upgrade to @cucumber/message-streams ^2.0.0
@cucumber/message-streams ^2.0.0[Perl] Updated to pass acceptance tests. (#1552 ehuelsmann)
[JavaScript] Experimental support for Markdown. See MARKDOWN_WITH_GHERKIN.md (#1209 aslakhellesoy)
[python] Run gherkin as a module. (#1480 #1475 [brasmusson] [aurelien-reeves])
Python implementation re-enabled, with support for Rule keyword. (#1449 brasmusson)
[Perl] New APIs to spawn message streams: Gherkin->from_paths and Gherkin->from_source (#1359 ehuelsmann)
Gherkin->from_paths and Gherkin->from_source (#1359 ehuelsmann)GherkinStreams export has moved from @cucumber/gherkin to @cucumber/gherkin-streamsgherkin-javascript executable has moved to the new @cucumber/gherkin-streams npm module[Perl] Release archive too large (8MB -> ) (#1350) ehuelsmann
Fix building of MacOS (darwin) executables. (#1347 #1348 aslakhellesoy)
[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
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)[Elixir] New implementation! (#1251 WannesFransen1994)
Query class has been removed from this library, and has been added to @cucumber/gherkin-utilsRevert removal of Gherkin keywords from 15.0.1
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
Your coding agent can read these notes before it upgrades. Set up the MCP server →