Chumsky, a parser combinator crate that makes writing error-tolerant parsers with recovery easy and fun!

This page summarizes the projects mentioned and recommended in the original post on /r/rust

InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
Stream - Scalable APIs for Chat, Feeds, Moderation, & Video.
Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.
getstream.io
featured
  1. chumsky

    Write expressive, high-performance parsers with ease.

    You might find the Nano Rust example in the repository interesting! It's a lexer, parser, and interpreter for a simple dynamically-typed Rust-inspired language. It's not intended as a fully-blown project template, but it's probably more than enough to get you started.

  2. InfluxDB

    InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.

    InfluxDB logo
  3. ariadne

    A fancy diagnostics & error reporting crate (by zesterer)

    Thanks! It's worth noting that the diagnostics are not generated by Chumsky itself, but by another crate of mine named Ariadne. However, they can be used together if desired.

  4. statix

    lints and suggestions for the nix programming language

    I use the author's pretty error rendering crate: ariadne, in statix, and it is a delight. Comfy API, loads of customization opts, and very pretty.

  5. combine

    A parser combinator library for Rust

    Nice to see support for error recovery with parser combinators! I never got to the point of adding it in combine as I swapped out my language parser(s) to use LALRPOP instead (implementing error recovery for it instead).

  6. lalrpop

    LR(1) parser generator for Rust

    Nice to see support for error recovery with parser combinators! I never got to the point of adding it in combine as I swapped out my language parser(s) to use LALRPOP instead (implementing error recovery for it instead).

  7. pom

    PEG parser combinators using operator overloading without macros.

    I saw the performance comparison against pom, pom is unfortunately quite slow compared to an handwritten parser as it boxes most (all?) parsers so you may want to compare against a handwritten parser, or at least something in the same ballpark (for reference, combine's json benchmark on the same data is about 6x faster with "good errors", when optimized to work on &str-like input it is about 12x faster, nom or a hand written parser may be another 10-20% faster than that, if I remember correctly.) From a brief skim of the code, I don't see anything that would hinder it from at least closing that gap however.

  8. nom

    Rust parser combinator framework

    I saw the performance comparison against pom, pom is unfortunately quite slow compared to an handwritten parser as it boxes most (all?) parsers so you may want to compare against a handwritten parser, or at least something in the same ballpark (for reference, combine's json benchmark on the same data is about 6x faster with "good errors", when optimized to work on &str-like input it is about 12x faster, nom or a hand written parser may be another 10-20% faster than that, if I remember correctly.) From a brief skim of the code, I don't see anything that would hinder it from at least closing that gap however.

  9. Stream

    Stream - Scalable APIs for Chat, Feeds, Moderation, & Video. Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.

    Stream logo
  10. redis-rs

    Redis library for rust

    I switched to LALRPOP for gluon but I still use combine in https://github.com/mitsuhiko/redis-rs and some other projects which need to parse "protocols" (less need for good error messages/error recovery and more need for speed).

  11. tao

    A statically-typed functional language with generics, typeclasses, sum types, pattern-matching, first-class functions, currying, algebraic effects, associated types, good diagnostics, etc. (by zesterer)

    Additionally, I just pushed some recent work on my own language, Tao, which uses Chumsky. Hopefully some nice proof that it's a viable API for parsing non-trivial syntax.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Question about lexer and parser generators in Rust

    8 projects | /r/rust | 11 Feb 2023
  • Analogues of nom crate.

    3 projects | /r/rust | 7 Feb 2022
  • Parsing JSON in 500 lines of Rust

    8 projects | news.ycombinator.com | 18 Feb 2025
  • Nom parser combinators now released in version 8, with a new architecture

    1 project | news.ycombinator.com | 31 Jan 2025
  • Nom released 8.0: A byte-oriented, zero-copy, parser combinators Rust library

    1 project | news.ycombinator.com | 27 Jan 2025

Did you know that Rust is
the 5th most popular programming language
based on number of references?