PackageTrack
Sign in Get early access

pest

The Elegant Parser

2.9.0 308M downloads/mo #354 most downloaded on crates.io pest-parser/pest

What this package is like to depend on

Last release 10 days ago

13 Aug 2026

Ships fairly regularly

a new release about every 2 months

Rarely documented

notes for 10 of 68 stable releases

6 versions withdrawn

withdrawn after publishing

10 years old

93 releases · first in 2016

8 releases in the last 12 months

see the full history below

Release timeline

93 releases · Apr 2016 to Aug 2026
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 93
  1. 2.9.0 13 Aug 2026
    Release notes

    What's Changed

    • fix: restore stack state after a failed sequence by @Baltsat in #1184
    • fix: silence compiler and clippy warnings in tests and generator by @NiltonVolpato in #1186
    • fix(debugger): upgrade rustyline to 13 for loongarch64 support by @tangaac in #1187
    • fix(fuzz): set edition 2021 and add sql fuzz target by @estr3llas in #1189
    • Add support for a fully-functional const PrattParser with optional macro for increased ergonomics by @NiltonVolpato in #1185
    • Add fuzzing dictionaries and document them in FUZZING.md by @estr3llas in #1191
    • Reject unescaped control characters in the JSON grammar by @hdimer in #1190

    New Contributors

    Full Changelog: v2.8.8...v2.9.0

    Warning: Semantic Versioning

    Note that the node tag feature in 2.6.0 was a technically semver-breaking change even though it is a backwards-compatible / non-breaking change in the meta-grammar. There may be similar non-breaking changes to the meta-grammar between minor versions in the future. These non-breaking changes, however, may translate into semver-breaking changes due to the additional variants propagated from the generated Rule enum.

    This new feature caused issues in some Cargo version resolution situations where Cargo mixed different versions of pest dependencies. For this reason, these "grammar non-breaking but semver-breaking" changes are now available only under the "grammar-extras" feature flag. If you would like to use node tags (or other future grammar features), you can do so by enabling this flag on the pest_derive crate in your Cargo.toml:

    ...
    pest_derive = { version = "2.9", features = ["grammar-extras"] }
    
    Open source →
  2. 2.8.8 22 Jul 2026
    Release notes

    What's Changed

    • Fix tag_node incorrectly modifying tokens during lookahead by @tomtau in #1180

    Full Changelog: v2.8.7...v2.8.8

    Warning: Semantic Versioning

    Note that the node tag feature in 2.6.0 was a technically semver-breaking change even though it is a backwards-compatible / non-breaking change in the meta-grammar. There may be similar non-breaking changes to the meta-grammar between minor versions in the future. These non-breaking changes, however, may translate into semver-breaking changes due to the additional variants propagated from the generated Rule enum.

    This new feature caused issues in some Cargo version resolution situations where Cargo mixed different versions of pest dependencies. For this reason, these "grammar non-breaking but semver-breaking" changes are now available only under the "grammar-extras" feature flag. If you would like to use node tags (or other future grammar features), you can do so by enabling this flag on the pest_derive crate in your Cargo.toml:

    ...
    pest_derive = { version = "2.8", features = ["grammar-extras"] }
    
    Open source →
  3. 2.8.7 04 Jul 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v2.8.6...v2.8.7

    Warning: Semantic Versioning

    Note that the node tag feature in 2.6.0 was a technically semver-breaking change even though it is a backwards-compatible / non-breaking change in the meta-grammar. There may be similar non-breaking changes to the meta-grammar between minor versions in the future. These non-breaking changes, however, may translate into semver-breaking changes due to the additional variants propagated from the generated Rule enum.

    This new feature caused issues in some Cargo version resolution situations where Cargo mixed different versions of pest dependencies. For this reason, these "grammar non-breaking but semver-breaking" changes are now available only under the "grammar-extras" feature flag. If you would like to use node tags (or other future grammar features), you can do so by enabling this flag on the pest_derive crate in your Cargo.toml:

    ...
    pest_derive = { version = "2.8", features = ["grammar-extras"] }
    
    Open source →
  4. 2.8.6 05 Feb 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v2.8.5...v2.8.6

    Warning: Semantic Versioning

    Note that the node tag feature in 2.6.0 was a technically semver-breaking change even though it is a backwards-compatible / non-breaking change in the meta-grammar. There may be similar non-breaking changes to the meta-grammar between minor versions in the future. These non-breaking changes, however, may translate into semver-breaking changes due to the additional variants propagated from the generated Rule enum.

    This new feature caused issues in some Cargo version resolution situations where Cargo mixed different versions of pest dependencies. For this reason, these "grammar non-breaking but semver-breaking" changes are now available only under the "grammar-extras" feature flag. If you would like to use node tags (or other future grammar features), you can do so by enabling this flag on the pest_derive crate in your Cargo.toml:

    ...
    pest_derive = { version = "2.8", features = ["grammar-extras"] }
    
    Open source →
  5. 2.8.5 03 Jan 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v2.8.4...v2.8.5

    Warning: Semantic Versioning

    Note that the node tag feature in 2.6.0 was a technically semver-breaking change even though it is a backwards-compatible / non-breaking change in the meta-grammar. There may be similar non-breaking changes to the meta-grammar between minor versions in the future. These non-breaking changes, however, may translate into semver-breaking changes due to the additional variants propagated from the generated Rule enum.

    This new feature caused issues in some Cargo version resolution situations where Cargo mixed different versions of pest dependencies. For this reason, these "grammar non-breaking but semver-breaking" changes are now available only under the "grammar-extras" feature flag. If you would like to use node tags (or other future grammar features), you can do so by enabling this flag on the pest_derive crate in your Cargo.toml:

    ...
    pest_derive = { version = "2.8", features = ["grammar-extras"] }
    
    Open source →
  6. 2.8.4 21 Nov 2025
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v2.8.3...v2.8.4

    Warning: Semantic Versioning

    Note that the node tag feature in 2.6.0 was a technically semver-breaking change even though it is a backwards-compatible / non-breaking change in the meta-grammar. There may be similar non-breaking changes to the meta-grammar between minor versions in the future. These non-breaking changes, however, may translate into semver-breaking changes due to the additional variants propagated from the generated Rule enum.

    This new feature caused issues in some Cargo version resolution situations where Cargo mixed different versions of pest dependencies. For this reason, these "grammar non-breaking but semver-breaking" changes are now available only under the "grammar-extras" feature flag. If you would like to use node tags (or other future grammar features), you can do so by enabling this flag on the pest_derive crate in your Cargo.toml:

    ...
    pest_derive = { version = "2.8", features = ["grammar-extras"] }
    
    Open source →
  7. 2.8.3 03 Oct 2025
    Release notes

    What's Changed

    Full Changelog: v2.8.2...v2.8.3

    Warning: Semantic Versioning

    Note that the node tag feature in 2.6.0 was a technically semver-breaking change even though it is a backwards-compatible / non-breaking change in the meta-grammar. There may be similar non-breaking changes to the meta-grammar between minor versions in the future. These non-breaking changes, however, may translate into semver-breaking changes due to the additional variants propagated from the generated Rule enum.

    This new feature caused issues in some Cargo version resolution situations where Cargo mixed different versions of pest dependencies. For this reason, these "grammar non-breaking but semver-breaking" changes are now available only under the "grammar-extras" feature flag. If you would like to use node tags (or other future grammar features), you can do so by enabling this flag on the pest_derive crate in your Cargo.toml:

    ...
    pest_derive = { version = "2.8", features = ["grammar-extras"] }
    
    Open source →
  8. 2.8.2 12 Sep 2025
    Release notes

    What's Changed

    New Contributors

    Full Changelog: v2.8.1...v2.8.2

    Warning: Semantic Versioning

    Note that the node tag feature in 2.6.0 was a technically semver-breaking change even though it is a backwards-compatible / non-breaking change in the meta-grammar. There may be similar non-breaking changes to the meta-grammar between minor versions in the future. These non-breaking changes, however, may translate into semver-breaking changes due to the additional variants propagated from the generated Rule enum.

    This new feature caused issues in some Cargo version resolution situations where Cargo mixed different versions of pest dependencies. For this reason, these "grammar non-breaking but semver-breaking" changes are now available only under the "grammar-extras" feature flag. If you would like to use node tags (or other future grammar features), you can do so by enabling this flag on the pest_derive crate in your Cargo.toml:

    ...
    pest_derive = { version = "2.8", features = ["grammar-extras"] }
    
    Open source →
  9. 2.8.1 15 Jun 2025
    Release notes

    What's Changed

    The Minimum Supported Rust Version (MSRV) for default features is 1.80.0 now.

    New Contributors

    Full Changelog: v2.8.0...v2.8.1

    Warning: Semantic Versioning

    Note that the node tag feature in 2.6.0 was a technically semver-breaking change even though it is a backwards-compatible / non-breaking change in the meta-grammar. There may be similar non-breaking changes to the meta-grammar between minor versions in the future. These non-breaking changes, however, may translate into semver-breaking changes due to the additional variants propagated from the generated Rule enum.

    This new feature caused issues in some Cargo version resolution situations where Cargo mixed different versions of pest dependencies. For this reason, these "grammar non-breaking but semver-breaking" changes are now available only under the "grammar-extras" feature flag. If you would like to use node tags (or other future grammar features), you can do so by enabling this flag on the pest_derive crate in your Cargo.toml:

    ...
    pest_derive = { version = "2.8", features = ["grammar-extras"] }
    
    Open source →
  10. 2.8.0 25 Mar 2025
    Release notes

    What's Changed

    A new rule PUSH_LITERAL(...).

    PUSH_LITERAL("a"): This rule always matches and never consumes any input, and it pushes "a" to the stack. The argument must be a literal.

    Note

    You need to enable the "grammar-extras" feature as mentioned in the semantic versioning notes below in order to use this feature.

    This new rule accomplishes the goals of #880 (in a slightly different way). Instead of PUSH_OTHER("-", " "), this is just PUSH_LITERAL(" "). If you wanted to match A and then push B, you just combine them via a sequence: "-" ~ PUSH_LITERAL(" ").

    This can be used to generalize quoted strings to a pair of matching but non-equal delimiters. For example, many programming languages let you express strings using either double or single quotes, and don't require escaping of the other:

    string = ${ PUSH( "\"" | "'") ~ quoted_char* ~ POP }
    quoted_char = @{!PEEK ~ ANY } // simple version without escape sequences
    
    // will parse "a'b" or 'a"b'
    

    This happens to work because the starting and ending char are the same, but that's not always desirable. For example, we may want to allow strings to be delimited by either ( ... ) or < ... >, with similar rules as above, such that (a>) and <a)> are both valid.

    With PUSH_LITERAL, this becomes:

    string = ${ quote_open ~ quoted_char* ~ POP }
    quote_open = @{
      ( "(" ~ PUSH_LITERAL(")") )
    | ( "<" ~ PUSH_LITERAL(">") )
    }
    quoted_char = @{!PEEK ~ ANY } // simple version without escape sequences
    

    New Contributors

    Full Changelog: v2.7.15...v2.8.0

    Warning: Semantic Versioning

    Note that the node tag feature in 2.6.0 was a technically semver-breaking change even though it is a backwards-compatible / non-breaking change in the meta-grammar. There may be similar non-breaking changes to the meta-grammar between minor versions in the future. These non-breaking changes, however, may translate into semver-breaking changes due to the additional variants propagated from the generated Rule enum.

    This new feature caused issues in some Cargo version resolution situations where Cargo mixed different versions of pest dependencies. For this reason, these "grammar non-breaking but semver-breaking" changes are now available only under the "grammar-extras" feature flag. If you would like to use node tags (or other future grammar features), you can do so by enabling this flag on the pest_derive crate in your Cargo.toml:

    ...
    pest_derive = { version = "2.8", features = ["grammar-extras"] }
    
    Open source →
  11. 2.7.15 07 Dec 2024

    Nothing published for this version

  12. 2.7.14 14 Oct 2024

    Nothing published for this version

  13. 2.7.13 19 Sep 2024

    Nothing published for this version

  14. 2.7.12 06 Sep 2024

    Nothing published for this version

  15. 2.7.11 02 Jul 2024

    Nothing published for this version

  16. 2.7.10 01 May 2024

    Nothing published for this version

  17. 2.7.9 02 Apr 2024 withdrawn

    Nothing published for this version

  18. 2.7.8 02 Mar 2024

    Nothing published for this version

  19. 2.7.7 05 Feb 2024

    Nothing published for this version

  20. 2.7.6 04 Jan 2024

    Nothing published for this version

  21. 2.7.5 24 Oct 2023

    Nothing published for this version

  22. 2.7.4 26 Sep 2023

    Nothing published for this version

  23. 2.7.3 30 Aug 2023

    Nothing published for this version

  24. 2.7.2 01 Aug 2023

    Nothing published for this version

  25. 2.7.1 17 Jul 2023

    Nothing published for this version

  26. 2.7.0 22 Jun 2023

    Nothing published for this version

  27. 2.6.1 17 Jun 2023 withdrawn

    Nothing published for this version

  28. 2.6.0 26 Apr 2023 withdrawn

    Nothing published for this version

  29. 2.5.7 31 Mar 2023

    Nothing published for this version

  30. 2.5.6 05 Mar 2023

    Nothing published for this version

  31. 2.5.5 08 Feb 2023

    Nothing published for this version

  32. 2.5.4 24 Jan 2023

    Nothing published for this version

  33. 2.5.3 11 Jan 2023

    Nothing published for this version

  34. 2.5.2 23 Dec 2022

    Nothing published for this version

  35. 2.5.1 02 Dec 2022

    Nothing published for this version

  36. 2.5.0 24 Nov 2022

    Nothing published for this version

  37. 2.4.1 04 Nov 2022

    Nothing published for this version

  38. 2.4.0 01 Oct 2022

    Nothing published for this version

  39. 2.3.1 12 Sep 2022

    Nothing published for this version

  40. 2.3.0 21 Aug 2022

    Nothing published for this version

  41. 2.2.1 29 Jul 2022 withdrawn

    Nothing published for this version

  42. 2.2.0 29 Jul 2022 withdrawn

    Nothing published for this version

  43. 2.1.3 22 Feb 2020

    Nothing published for this version

  44. 2.1.2 02 Sep 2019

    Nothing published for this version

  45. 2.1.1 15 Apr 2019

    Nothing published for this version

  46. 2.1.0 21 Dec 2018

    Nothing published for this version

  47. 2.0.2 21 Oct 2018

    Nothing published for this version

  48. 2.0.1 02 Oct 2018

    Nothing published for this version

  49. 2.0.0 30 Sep 2018

    Nothing published for this version

  50. 1.0.6 21 Feb 2018

    Nothing published for this version

  51. 1.0.5 19 Feb 2018 withdrawn

    Nothing published for this version

  52. 1.0.4 18 Feb 2018

    Nothing published for this version

  53. 1.0.3 26 Jan 2018

    Nothing published for this version

  54. 1.0.2 22 Jan 2018

    Nothing published for this version

  55. 1.0.1 20 Jan 2018

    Nothing published for this version

  56. 1.0.0 20 Jan 2018

    Nothing published for this version

  57. 1.0.0-rc.1 18 Jan 2018 pre-release

    Nothing published for this version

  58. 1.0.0-rc.0 18 Jan 2018 pre-release

    Nothing published for this version

  59. 1.0.0-beta.17 19 Dec 2017 pre-release

    Nothing published for this version

  60. 1.0.0-beta.16 21 Oct 2017 pre-release

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive