`cucumber-codegen` changelog
============================

All user visible changes to `cucumber-codegen` crate will be documented in this file. This project uses [Semantic Versioning 2.0.0].




## [0.23.0] · 2026-04-23
[0.23.0]: https://github.com/cucumber-rs/cucumber/tree/v0.23.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/30)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.23.0/CHANGELOG.md).




## [0.22.1] · 2025-12-23
[0.22.1]: https://github.com/cucumber-rs/cucumber/tree/v0.22.1/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/31)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.22.1/CHANGELOG.md).




## [0.22.0] · 2025-12-12
[0.22.0]: https://github.com/cucumber-rs/cucumber/tree/v0.22.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/28)

### BC Breaks

- Bumped up [MSRV] to 1.88 to get rid of `once_cell` crate, for `#[expect]` attribute usage, and because of migration to 2024 edition. ([4010c1ad], [f1307038], [b46930c3], [9705253b], [0c7dfc3c], [a4cbd3d2])

### Fixed

- `clippy::trivial_regex` lint triggering on `#[given]`/`#[when]`/`#[then]` steps without regular expression. ([81acba84], [#384])

[#384]: https://github.com/cucumber-rs/cucumber/pull/384
[0c7dfc3c]: https://github.com/cucumber-rs/cucumber/commit/0c7dfc3c80f0f58ce9a52f252485d1d14e6eb0ed
[4010c1ad]: https://github.com/cucumber-rs/cucumber/commit/4010c1ad6a53d6b7f0b28cefea73c8c13e880e9f
[81acba84]: https://github.com/cucumber-rs/cucumber/commit/81acba84697a5b04c45e2c5d5446f1ffbe289632
[9705253b]: https://github.com/cucumber-rs/cucumber/commit/9705253bda5caadfe3eea91f50420222158dd944
[a4cbd3d2]: https://github.com/cucumber-rs/cucumber/commit/a4cbd3d282fe8e01f05609eabea6410c0e2b46a3
[b46930c3]: https://github.com/cucumber-rs/cucumber/commit/b46930c32ef5ae490df8063905144a45de27eda1
[f1307038]: https://github.com/cucumber-rs/cucumber/commit/f1307038cb6b1e38c1cc259a0e09fb583033d0cf




## [0.21.1] · 2024-06-16
[0.21.1]: https://github.com/cucumber-rs/cucumber/tree/v0.21.1/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/29)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.21.1/CHANGELOG.md).




## [0.21.0] · 2024-04-22
[0.21.0]: https://github.com/cucumber-rs/cucumber/tree/v0.21.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/26)

### BC Breaks

- Bumped up [MSRV] to 1.75 for using `async fn` in traits. ([#324])

[#324]: https://github.com/cucumber-rs/cucumber/pull/324




## [0.20.2] · 2023-12-04
[0.20.2]: https://github.com/cucumber-rs/cucumber/tree/v0.20.2/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/27)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.20.2/CHANGELOG.md).




## [0.20.1] · 2023-10-16
[0.20.1]: https://github.com/cucumber-rs/cucumber/tree/v0.20.1/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/25)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.20.1/CHANGELOG.md).




## [0.20.0] · 2023-07-10
[0.20.0]: https://github.com/cucumber-rs/cucumber/tree/v0.20.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/24)

### BC Breaks

- Bumped up [MSRV] to 1.70 for using the `IsTerminal` trait from `std`. ([#288])

### Changed

- Switched to 2.0 version of [`syn`]. ([#266])

[#266]: https://github.com/cucumber-rs/cucumber/pull/266
[#288]: https://github.com/cucumber-rs/cucumber/pull/288




## [0.19.1] · 2022-12-29
[0.19.1]: https://github.com/cucumber-rs/cucumber/tree/v0.19.1/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/23)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.19.1/CHANGELOG.md).




## [0.19.0] · 2022-12-07
[0.19.0]: https://github.com/cucumber-rs/cucumber/tree/v0.19.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/22)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.19.0/CHANGELOG.md).




## [0.18.0] · 2022-12-07
[0.18.0]: https://github.com/cucumber-rs/cucumber/tree/v0.18.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/21)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.18.0/CHANGELOG.md).




## [0.17.0] · 2022-11-23
[0.17.0]: https://github.com/cucumber-rs/cucumber/tree/v0.17.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/20)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.17.0/CHANGELOG.md).




## [0.16.0] · 2022-11-09
[0.16.0]: https://github.com/cucumber-rs/cucumber/tree/v0.16.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/19)

### BC Breaks

- Bumped up [MSRV] to 1.65 for using `let`-`else` statements. ([7f52d4a5])

[7f52d4a5]: https://github.com/cucumber-rs/cucumber/commit/7f52d4a5faa3b69bec6c7fb765b50455cf7802aa




## [0.15.3] · 2022-11-01
[0.15.3]: https://github.com/cucumber-rs/cucumber/tree/v0.15.3/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/18)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.15.3/CHANGELOG.md).




## [0.15.2] · 2022-10-25
[0.15.2]: https://github.com/cucumber-rs/cucumber/tree/v0.15.2/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/17)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.15.2/CHANGELOG.md).




## [0.15.1] · 2022-10-12
[0.15.1]: https://github.com/cucumber-rs/cucumber/tree/v0.15.1/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/16)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.15.1/CHANGELOG.md).




## [0.15.0] · 2022-10-05
[0.15.0]: https://github.com/cucumber-rs/cucumber/tree/v0.15.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/15)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.15.0/CHANGELOG.md).




## [0.14.2] · 2022-09-19
[0.14.2]: https://github.com/cucumber-rs/cucumber/tree/v0.14.2/codegen

### Fixed

- `#[derive(World)]` macro being unhygienic regarding custom `Result` types. ([186af8b1])

[186af8b1]: https://github.com/cucumber-rs/cucumber/commit/186af8b1de37275b308897e2e30d6982830b0278




## [0.14.1] · 2022-09-12
[0.14.1]: https://github.com/cucumber-rs/cucumber/tree/v0.14.1/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/14)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.14.1/CHANGELOG.md).




## [0.14.0] · 2022-09-08
[0.14.0]: https://github.com/cucumber-rs/cucumber/tree/v0.14.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/13)

### BC Breaks

- Bumped up [MSRV] to 1.62 for more clever support of [Cargo feature]s and simplified codegen. ([fbd08ec2], [cf055ac0], [8ad5cc86])
- Replaced `#[derive(WorldInit)]` with `#[derive(World)]` to remove the need of manual `World` trait implementation. ([#219], [#217])

[#217]: https://github.com/cucumber-rs/cucumber/issues/217
[#219]: https://github.com/cucumber-rs/cucumber/pull/219
[8ad5cc86]: https://github.com/cucumber-rs/cucumber/commit/8ad5cc866bb9d6b49470790e3b0dd40690f63a09
[cf055ac0]: https://github.com/cucumber-rs/cucumber/commit/cf055ac06c7b72f572882ce15d6a60da92ad60a0
[fbd08ec2]: https://github.com/cucumber-rs/cucumber/commit/fbd08ec24dbd036c89f5f0af4d936b616790a166




## [0.13.0] · 2022-03-29
[0.13.0]: https://github.com/cucumber-rs/cucumber/tree/v0.13.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/12)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.13.0/CHANGELOG.md).




## [0.12.2] · 2022-03-28
[0.12.2]: https://github.com/cucumber-rs/cucumber/tree/v0.12.2/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/10)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.12.2/CHANGELOG.md).




## [0.12.1] · 2022-03-09
[0.12.1]: https://github.com/cucumber-rs/cucumber/tree/v0.12.1/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/11)

### Security updated

- `regex` crate to 1.5.5 version to fix [CVE-2022-24713].

[CVE-2022-24713]: https://blog.rust-lang.org/2022/03/08/cve-2022-24713.html




## [0.12.0] · 2022-02-10
[0.12.0]: https://github.com/cucumber-rs/cucumber/tree/v0.12.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/9)

### Added

- Support for multiple capturing groups in `Parameter` regex (previously was forbidden). ([#204])

[#204]: https://github.com/cucumber-rs/cucumber/pull/204




## [0.11.3] · 2022-01-31
[0.11.3]: https://github.com/cucumber-rs/cucumber/tree/v0.11.3/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/8)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.11.3/CHANGELOG.md).




## [0.11.2] · 2022-01-19
[0.11.2]: https://github.com/cucumber-rs/cucumber/tree/v0.11.2/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/7)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.11.2/CHANGELOG.md).




## [0.11.1] · 2022-01-07
[0.11.1]: https://github.com/cucumber-rs/cucumber/tree/v0.11.1/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/6)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.11.1/CHANGELOG.md).




## [0.11.0] · 2022-01-03
[0.11.0]: https://github.com/cucumber-rs/cucumber/tree/v0.11.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/3)

### BC Breaks

- Bump up [MSRV] to 1.57 for better error reporting in `const` assertions. ([cef3d480])

### Added

- Unwrapping `Result`s returned by step functions. ([#151])
- `expr = ...` argument to `#[given(...)]`, `#[when(...)]` and `#[then(...)]` attributes allowing [Cucumber Expressions]. ([#157])
- `#[derive(Parameter)]` attribute macro for implementing custom parameters of [Cucumber Expressions]. ([#168])

[#151]: https://github.com/cucumber-rs/cucumber/pull/151
[#157]: https://github.com/cucumber-rs/cucumber/pull/157
[#168]: https://github.com/cucumber-rs/cucumber/pull/168
[cef3d480]: https://github.com/cucumber-rs/cucumber/commit/cef3d480579190425461ddb04a1248675248351e




## [0.10.2] · 2021-11-03
[0.10.2]: https://github.com/cucumber-rs/cucumber/tree/v0.10.2/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/5)

### Added

- World's type name to the generated `WorldInit` machinery to omit conflicts for different types in the same module. ([#150])

[#150]: https://github.com/cucumber-rs/cucumber/pull/150




## [0.10.1] · 2021-10-29
[0.10.1]: https://github.com/cucumber-rs/cucumber/tree/v0.10.1/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/4)

### Version bump only

See `cucumber` crate [changelog](https://github.com/cucumber-rs/cucumber/blob/v0.10.1/CHANGELOG.md).




## [0.10.0] · 2021-10-26
[0.10.0]: https://github.com/cucumber-rs/cucumber/tree/v0.10.0/codegen

[Milestone](https://github.com/cucumber-rs/cucumber/milestone/2)

### BC Breaks

- Renamed crate to `cucumber-codegen`.
- Replaced `#[given(step)]`, `#[when(step)]` and `#[then(step)]` function argument attributes with a single `#[step]`. ([#128])

[#128]: https://github.com/cucumber-rs/cucumber/pull/128




## [0.1.0] · 2021-01-18
[0.1.0]: https://github.com/cucumber-rs/cucumber/tree/v0.8.0/codegen

### Added

- Attribute macros: ([#81])
    - [`given`](https://docs.rs/cucumber_rust_codegen/0.1.0/cucumber_rust_codegen/attr.given.html);
    - [`when`](https://docs.rs/cucumber_rust_codegen/0.1.0/cucumber_rust_codegen/attr.when.html);
    - [`then`](https://docs.rs/cucumber_rust_codegen/0.1.0/cucumber_rust_codegen/attr.then.html).

[#81]: https://github.com/cucumber-rs/cucumber/pull/81




[`syn`]: https://docs.rs/syn
[Cargo feature]: https://doc.rust-lang.org/cargo/reference/features.html
[Cucumber Expressions]: https://cucumber.github.io/cucumber-expressions
[MSRV]: https://doc.rust-lang.org/cargo/reference/manifest.html#the-rust-version-field
[Semantic Versioning 2.0.0]: https://semver.org
