# CHANGE LOG
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org).
This document is formatted according to the principles of [Keep A CHANGELOG](http://keepachangelog.com).
----
## [Unreleased] - TBD
### Removed
### Added
### Changed
### Fixed
## [4.0.0] - 2016-04-10
This is a major release because of two backwards-incompatible changes.
First, the AST returned by the parser is a `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.
### Removed
* (JavaScript) Remove bower package
by [aslakhellesoy])
### Added
* (JavaScript) Expose dialects
([#177](https://github.com/cucumber/gherkin/pull/177)
by [charlierudolph])
* (Perl) new implementation!
([#161](https://github.com/cucumber/gherkin/pull/161)
by [pjlsergeant])
* (Objective-C) Added Objective-C example to the README
([#152](https://github.com/cucumber/gherkin/pull/152)
by [Ahmed-Ali])
* (I18n) ru: Add "Функциональность" as translation of Feature
([#165](https://github.com/cucumber/gherkin/pull/165)
by [nixel2007])
### Changed
* (All) Allow emtpy Feature files
([#189](https://github.com/cucumber/gherkin/pull/189)
by [aslakhellesoy], [brasmusson], [enkessler])
* (All) Rename Feature.scenarioDefinitions to Feature.children
(by [aslakhellesoy])
* (All) Background as part of Feature.children
([#174](https://github.com/cucumber/gherkin/pull/174)
by [aslakhellesoy])
* (All) Remove scenario keyword from pickles
([#176](https://github.com/cucumber/gherkin/pull/176)
by [charlierudolph])
* (All) Don't make pickles out of step-less scenarios
([#175](https://github.com/cucumber/gherkin/pull/175)
by [enkessler])
* (Ruby) More consistent AST node types
([#158](https://github.com/cucumber/gherkin/pull/158)
by [enkessler])
* (All) Allow incomplete scenario outlines
([#160](https://github.com/cucumber/gherkin/pull/160),
[#170](https://github.com/cucumber/gherkin/pull/170)
by [brasmusson])
### Fixed
* (Ruby) Use require instead of require_relative
([#173](https://github.com/cucumber/gherkin/pull/173)
by [maximeg])
* (JavaScript) Fixed undefined reference to stopOnFirstError on ES6
(by [aslakhellesoy])
* (Python) Add the `gherkin.pickles` package to the Python installation
([#157](https://github.com/cucumber/gherkin/pull/157),
[#156](https://github.com/cucumber/gherkin/issues/156)
by [Zearin])
* (Ruby, Java) Make parser work even when system encoding ($LANG) is not UTF-8.
([#151](https://github.com/cucumber/gherkin/issues/151)
by [aslakhellesoy])
## [3.2.0] - 2016-01-12
### Removed
### Added
* (I18n) Mongolian translation of Gherkin
([#140](https://github.com/cucumber/gherkin/pull/140)
by [jargalan])
* (I18n) Emoji translation of Gherkin
(by [aslakhellesoy])
* (Python) Implemented compiler
([#124](https://github.com/cucumber/gherkin/pull/124)
by [Zearin])
* (Objective C) New implementation
([#110](https://github.com/cucumber/gherkin/pull/110)
by [LiohAu])
### Changed
* (All) changed package/module/repo name from `gherkin3` to `gherkin`. (Python package is called `gherkin-official`)
* (I18n) Improved Malay translation of Gherkin
([#132](https://github.com/cucumber/gherkin/pull/132)
by [gabanz])
* (I18n) Improved Irish translation of Gherkin
([#135](https://github.com/cucumber/gherkin/pull/135)
by [merrua])
* (All) Escape only '|', 'n' and '\' in table cells
([#114](https://github.com/cucumber/gherkin/pull/114)
by [brasmusson])
* (I18n) Support stricter French grammar
([#134](https://github.com/cucumber/gherkin/pull/134)
by [moreau-nicolas])
* (All) the AST's `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])
### Fixed
* (Python) Fix i18n support when parsing features from strings.
(by [brasmusson])
* (All) Do not change escaped docstring separators in descriptions
([#115](https://github.com/cucumber/gherkin/pull/115)
by [brasmusson])
* (Travis CI) Build Objective-C on Travis. Fix Travis language settings.
([#122](https://github.com/cucumber/gherkin/pull/122),
[#118](https://github.com/cucumber/gherkin/issues/118),
by [brasmusson])
* (Python) Don't monkey-patch `io.StringIO` in `token_scanner.py`
([#121](https://github.com/cucumber/gherkin/pull/121)
by [zbmott])
* (JavaScript) Interpolate replaces globally
([#108](https://github.com/cucumber/gherkin/pull/108)
by [charlierudolph])
* (JavaScript) Make parser work on Node 0.10 and 4.1
(by [aslakhellesoy])
* (Go) Fix lookahead bug in the parser
(by [brasmusson])
## [3.1.2] - 2015-10-04
### Added
* (All) `TokenMatcher` now accepts a default language
(previously, only JavaScript had this behavior)
([#78](https://github.com/cucumber/gherkin/issues/78)
by [brasmusson])
* (Ruby) `Parser.parse` now accepts a `String`, `StringIO`, `IO` or `TokenScanner`
([#100](https://github.com/cucumber/gherkin/pull/100)
by [maxmeyer])
* (JavaScript) Add browserified `dist/gherkin.js` and `dist/gherkin.min.js`
(by [aslakhellesoy])
### Changed
* (Python) Use `@properties` in `Dialect` class
([#86](https://github.com/cucumber/gherkin/pull/86)
by [Zearin])
* (Ruby) `Parser.parse` now treats `String` as source (not a file path)
### Fixed
* (Ruby) Fix lookahead bug in the parser
([#104](https://github.com/cucumber/gherkin/issues/104)
by [brasmusson]
and [aslakhellesoy])
* (Python) Fix file parsing on Windows
([#93](https://github.com/cucumber/gherkin/issues/93)
by [brasmusson])
## [3.1.1] - 2015-09-03
### Added
* (All) Add Bosnian
([#48](https://github.com/cucumber/gherkin/pull/48)
by [paigehf])
* (All) Add support for `\n`, '\|', and '\\' in table cells
([#40](https://github.com/cucumber/gherkin/issues/40),
[#71](https://github.com/cucumber/gherkin/pull/71),
by [koterpillar])
* (JavaScript) Default arguments for `Parser(builder)` and `Parser.parse(scanner, matcher)`
(by [aslakhellesoy])
* (JavaScript) It's now possible to pass a string directly to `Parser.parse()`
* (Python) It's now possible to pass a string directly to `Parser.parse()`
(by [aslakhellesoy])
### Changed
* (Java) Improved build process
* (Python) Use new-style classes
([#72](https://github.com/cucumber/gherkin/pull/72)
by [Zearin])
### Fixed
* (Python) File descriptors are now explicitly closed
([#74](https://github.com/cucumber/gherkin/pull/74)
by [Zearin])
## [3.1.0] - 2015-08-16
### Removed
* (JavaScript) Remove `tea-error` dependency
### Added
* (.NET) Release Nuget package
([#57](https://github.com/cucumber/gherkin/issues/57),
[#58](https://github.com/cucumber/gherkin/issues/58))
### Changed
* (Java) Change Maven `groupId` artifact from `info.cukes` to `io.cucumber`
### Fixed
* (All) Multiple calls to `parse()` cannot use the same instance of `AstBuilder`
([#62](https://github.com/cucumber/gherkin/issues/62))
* (Python) `gherkin-languages.json` not packaged
([#63](https://github.com/cucumber/gherkin/issues/63))
## 3.0.0 - 2015-07-16
* First release
<!-- Releases -->
[Unreleased]: https://github.com/cucumber/gherkin/compare/v4.0.0...HEAD
[4.0.0]: https://github.com/cucumber/gherkin/compare/v3.2.0...v4.0.0
[3.2.0]: https://github.com/cucumber/gherkin/compare/v3.1.2...v3.2.0
[3.1.2]: https://github.com/cucumber/gherkin/compare/v3.1.1...v3.1.2
[3.1.1]: https://github.com/cucumber/gherkin/compare/v3.1.0...v3.1.1
[3.1.0]: https://github.com/cucumber/gherkin/compare/v3.0.0...v3.1.0
<!-- Contributors -->
[Ahmed-Ali]: https://github.com/Ahmed-Ali
[aslakhellesoy]: https://github.com/aslakhellesoy
[brasmusson]: https://github.com/brasmusson
[charlierudolph]: https://github.com/charlierudolph
[enkessler]: https://github.com/enkessler
[gabanz]: https://github.com/gabanz
[jargalan]: https://github.com/jargalan
[koterpillar]: https://github.com/koterpillar
[LiohAu]: https://github.com/LiohAu
[maximeg]: https://github.com/maximeg
[maxmeyer]: https://github.com/maxmeyer
[merrua]: https://github.com/merrua
[moreau-nicolas]: https://github.com/moreau-nicolas
[nixel2007]: https://github.com/nixel2007
[paigehf]: https://github.com/paigehf
[pjlsergeant]: https://github.com/pjlsergeant
[zbmott]: https://github.com/zbmott
[Zearin]: https://github.com/Zearin