NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #588 most downloaded on NuGet
Cross-platform parser for the Gherkin language, used by Cucumber, SpecFlow and other Cucumber-based tools to parse feature files.
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 55 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
15 years old
87 releases · first in 2011
[Java] Added builder option to use non-deprecated IdGenerator .
IdGenerator.org.jspecify:jspecify(i18n) Added Persian translation of "Rule"
cucumber_gherkin (#640)One column per quarter.
[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"
[Java] Set release version to 17 (#507).
[.NET] Support calling Methods in GherkinLine on default value (#503).
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] Avoid unnecessary unboxing to Character
[Java] Optimize GherkinLine performance
[Python] Fix a regression when a feature file only has a comment in the description
[.NET] Reduce NuGet size by only targeting .NET Standard 2.0
### Fixed - Update Java release process
Release v30.1.1 as a copy of v30.0.4 to cover v36.1.0 that was accidentally released as v30.1.0
[.NET] Support calling Methods in GherkinLine on default value
[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.(i18n) Added Gujarati translation for "Rule"
[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)[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)
[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)### 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.0Nothing published for this version
Nothing published for this version
(.NET) - Better .NET Core support
libgherkin.so library which allows Gherkin to be used as a library. (Cucumber.ml currently uses this.) (cucumber/gherkin-c#6 cyocum)Given and Then. (#369 cerebellum13)Ability to specify an initial language for the parser, so that the # language header isn't required (#288 by charlierudolph and aslakhellesoy)
# language header isn't required (#288 by charlierudolph and aslakhellesoy)Scenario Outline (Περίγραμμα Σεναρίου) (#185 by pmatsinopoulos)Given in Romanian (Dată fiind) (#202 by tsundberg)Nothing published for this version
(JavaScript) Expose dialects (#177 by charlierudolph)
GherkinDocument node, with a feature property pointing to a Feature node. Prior to this release the parser would return a Feature node. Second, the Feature node now has an array/list of children that are Background, Scenario or ScenarioOutline. Other noteworthy changes is several minor improvements to bring the grammar closer to Gherkin 2.gherkin.pickles package to the Python installation (#157, #156 by Zearin)(I18n) Mongolian translation of Gherkin (#140 by jargalan)
gherkin3 to gherkin. (Python package is called gherkin-official)DocString contentType property is not defined rather than an empty string when the Gherkin doc doesn't specify the type after three backticks. (by aslakhellesoy)io.StringIO in token_scanner.py (#121 by zbmott)(All) TokenMatcher now accepts a default language (previously, only JavaScript had this behavior) (#78 by brasmusson)
TokenMatcher now accepts a default language (previously, only JavaScript had this behavior) (#78 by brasmusson)Parser.parse now accepts a String, StringIO, IO or TokenScanner (#100 by maxmeyer)dist/gherkin.js and dist/gherkin.min.js (by aslakhellesoy)@properties in Dialect class (#86 by Zearin)Parser.parse now treats String as source (not a file path)(All) Add Bosnian (#48 by paigehf)
\n, '|', and '' in table cells (#40, #71, by koterpillar)Parser(builder) and Parser.parse(scanner, matcher) (by aslakhellesoy)Parser.parse()Parser.parse() (by aslakhellesoy)(.NET) Release Nuget package (#57, #58)
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →