PackageTrack
Sign in Get early access

grok

A Rust implementation of the popular Java & Ruby grok library which allows easy text and log file processing with composable patterns.

2.4.1 8.8M downloads/mo #3351 most downloaded on crates.io mmastrac/grok

What this package is like to depend on

Last release 5 months ago

19 Mar 2026

Release timing varies

gaps range from 8 days to 3.0 years

Nearly every release is documented

notes for 18 of 19 stable releases

Nothing withdrawn

no release was ever pulled

9 years old

19 releases · first in 2017

1 release in the last 12 months

see the full history below

Release timeline

19 releases · Sep 2017 to Mar 2026
2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 19
  1. 2.4.1 19 Mar 2026
    Release notes
    • Update EMAILLOCALPART (https://github.com/mmastrac/grok/issues/31, thanks @bruberg)
    Open source →
  2. 2.4.0 31 Jul 2025
    Release notes
    • Fix a bug where pattern definition ranges were off-by-one.
    • (breaking) Fix bug in UNIXPATH pattern where . was included rather than \., causing the pattern to match any character.
    Open source →
  3. 2.3.3 31 Jul 2025
    Release notes
    • Add Clone to Grok.
    Open source →
  4. 2.3.2 31 Jul 2025

    Nothing published for this version

  5. 2.3.1 06 Jul 2025
    Release notes
    • Remove display() call in build.rs that would require MSRV 1.88.
    • Bump MSRV to 1.77 (it was previously 1.56 but was not tested).
    Open source →
  6. 2.3.0 06 Jul 2025
    Release notes
    • Add support for extract in pattern definitions, allowing the extract in %{name:alias:extract} to be retrieved from the pattern.
    • Add Pattern::pattern() to Matches to get the pattern that was used to match this Matches instance.
    • Reduced the scope of inline pattern definitions to the current pattern only (before 2.2.0 they were added globally, in 2.2.0 they were available to all nested patterns, and in 2.3.0 they are only available to the current pattern).
    • Grok::compile() is now &self instead of &mut self.
    • Grok::with_default_patterns() now uses Cow for the built-in patterns and allocates significantly less per Grok instance (as well as being much faster).
    • Built-in patterns are available individually for reference in the new patterns module.
    Open source →
  7. 2.2.0 05 Jul 2025
    Release notes
    • Rewrote the pattern parsing to avoid using regular expressions, making all regular expression engine features optional (though at least one is still required).
    • Ensure correctness in capture names, even when using duplicate names generated from pattern names. These were previously unspecified:
      • (breaking) Duplicate pattern names result in matches with incrementing names in the format: NAME, NAME[1], NAME[2], etc.
      • (breaking) Duplicate pattern names from aliases are now guaranteed to be "last one wins".
    • (breaking) Matches::len() was removed as it was previously reporting the pattern name count. Use Matches::iter().count() instead.
    • (breaking) Matches::is_empty() was removed. Use Matches::iter().count() == 0 instead.
    • (breaking) Inline pattern definitions are no longer added to the global pattern list.
    Open source →
  8. 2.1.0 29 May 2025
    Release notes
    • Add support for pcre2 feature which is significantly faster than onig.
    • Add support for regex and fancy_regex features which allow for pure Rust operation.
    • Some default patterns were updated from upstream sources for better compatibility across engines.
    Open source →
  9. 2.0.0 07 Jun 2022
    Release notes
    • Minimum Rust version is 1.56, Rust Edition switched to 2021.
    • (breaking) Renamed Grok::with_patterns() to Grok::with_default_patterns().
    • (breaking) Renamed Grok::insert_definition to Grok::add_pattern to stop mixing "definition" with "pattern".
    • (breaking) Matches::iter() is now only returning the matches and not also the other patters with an empty string as the value.
    • Added IntoIter for &Matches for more convenient match iteration (i.e. for loop).
    • Added Pattern::capture_names which returns the names the compiled pattern captures.
    • Updated onig to 6.3.
    • master branch is now called main.
    Open source →
  10. 1.2.0 12 Mar 2021
    Release notes
    • Updated onig to 6.1.
    • Allow to inspect the default built patterns. Thanks @magodo!
    • Use the non_exhaustive attribute on Error as suggested by clippy.
    Open source →
  11. 1.1.0 30 Oct 2019
    Release notes
    • Updated onig to 5.0.
    • Use Regex::foreach_names instead of Regex::capture_names to work on 32 bit platforms. Thanks @a-rodin!
    Open source →
  12. 1.0.1 31 Oct 2019
    Release notes
    • Use Regex::foreach_names instead of Regex::capture_names to work on 32 bit platforms. Thanks @a-rodin!
    Open source →
  13. 1.0.0 28 Mar 2019
    Release notes
    • Updated onig to 4.3.
    Open source →
  14. 0.5.0 19 Feb 2018
    Release notes

    ==========

    This is the sixth release of grok, with the following changes:

    • Update onig to 3.1, which itself brings enhancements and
      more flexibilit in how to compile and use it.
    Open source →
    Release notes
    • Updated onig to 3.1.
    Open source →
  15. 0.4.1 15 Nov 2017
    Release notes

    ==========

    This is the fifth release of grok, which brings a bugfix:

    • Fixed a bug where the named pattern on compilation is also
      accessible from the iterator.
    Open source →
    Release notes
    • Fixed a bug where the named pattern on compilation is also accessible from the iterator.
    Open source →
  16. 0.4.0 15 Nov 2017
    Release notes

    ==========

    This is the fourth release of grok, which brings an enhancement and
    makes sure we run on appveyor.

    • Allow to specify named patterns when compiling, without inserting
      the definition beforehand.
    Open source →
    Release notes
    • Allow to specify named patterns when compiling, without inserting the definition beforehand.
    Open source →
  17. 0.3.0 13 Sep 2017
    Release notes

    ==========

    This is the third release of grok, which brings enhancement
    and compatibility improvements.

    • Slight performance improvements.
    • regex has been switched to onig so we have full compatibility with all the other grok patterns.
    • Added Grok::with_patterns() which loads all the default patterns. Grok::defalt() also uses that now.
    • iter() is available on Matches which yields a (&str, &str) kv pair of match/result.
    Open source →
    Release notes
    • regex has been switched to onig so we have full compatibility with all the other grok patterns.
    • Added Grok::with_patterns() which loads all the default patterns. Grok::defalt() also uses that now.
    • iter() is available on Matches which yields a (&str, &str) kv pair of match/result.
    Open source →
  18. 0.2.0 06 Sep 2017
    Release notes

    ==========

    This is the second release of grok, mainly adding
    more methods to the match API as well as removing
    all unwraps, expects and panics from the code.

    • Instead of panicing, all methods that could return a Result<T, grok::Error>.
    • Grok::new() has been renamed to Grok::empty() (or Grok::default())
    • is_empty() is available in the Matches API to check if there are matches at all.
    • len() is available in the Matches API to get the total number of matches.
    Open source →
    Release notes
    • Instead of panicing, all methods that could return a Result<T, grok::Error>.
    • Grok::new() has been renamed to Grok::empty() (or Grok::default())
    • is_empty() is available in the Matches API to check if there are matches at all.
    • len() is available in the Matches API to get the total number of matches.
    Open source →
  19. 0.1.0 05 Sep 2017
    Release notes

    ==========

    This is the initial release of the grok rust library. It features
    basic support for custom pattern definitions, compiling into a pattern
    and then matching on the pattern accordingly.

    This is a very early release, and while the API surface isn't huge
    expect some breaking changes!

    Open source →
    Release notes
    • Initial Release
    Open source →

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