logos Logos has two goals: To make it easy to create a Lexer, so you can focus on more complex problems and to make the generated Lexer faster than anything you'd write by hand
lrlex A replacement for lex/flex that generates Rust code
Parsers
parze Parze is a clean, efficient parser combinator written in Rust
tree-sitter A parser generator for building fast editor-friendly parsers with features like streaming, incremental, resumable (re)parsing, with timeouts and cancellations, and advanced syntax node queries.
argh A derive-based argument parser optimized for code size
Configuration
etcetera A library that aims to allow you to determine the locations of configuration, cache and data files for your application. Existing Rust libraries generally do not give you a choice in terms of which standards/conventions (Etcetera calls these ‘strategies’) they follow. Etcetera, on the other hand, gives you the choice
toml A TOML decoder and encoder for Rust (optionally uses serde)
envy Deserialize environment variables into typesafe structs (uses serde)
Repl
rustyline Rustyline, a readline implementation based on Antirez's Linenoise
repl-rs Library to generate a REPL for your application
smol_str Small-string optimized string type with O(1) clone
smallstring 'Small string' optimization: store small strings on the stack using smallvec
heck Heck is a case conversion library that exists to provide case conversion between common cases like CamelCase and snake_case. It is intended to be unicode aware, internally consistent, and reasonably well performing
ropey Ropey is a utf8 text rope for Rust, designed to be the backing text-buffer for applications such as text editors. Ropey is fast, robust, and can handle huge texts and memory-incoherent edits with ease.
tracing-timing Inter-event timing metrics on top of tracing
tracing-coz Rust-tracing support for the coz Causal Profiler
tracing-flame A tracing Layer for generating a folded stack trace for generating flamegraphs and flamecharts with inferno
test-env-log A crate that takes care of automatically initializing logging and/or tracing for Rust tests.
tracing-unwrap This crate provides .unwrap_or_log() and .expect_or_log() methods on Result and Option types that log failed unwraps to a tracing::Subscriber
log A Rust library providing a lightweight logging facade
slog An ecosystem of reusable components for structured, extensible, composable and contextual logging for Rust
Storage
slotmap Containers with persistent unique keys to access stored values: Insertion, deletion and access all take O(1) time with low overhead.
indexmap A hash table with consistent order and fast iteration
differential-dataflow A data-parallel programming framework designed to efficiently process large volumes of data and to quickly respond to arbitrary changes in input collections, an implementation of differential dataflow over timely dataflow on Rust.
dogsdogsdogs Worst-case optimal joins and delta queries in differential dataflow
dataflow-join A streaming implementation of Ngo et al's GenericJoin in timely dataflow
timely-sort An cache-aware implementation of radix sort in Rust
honggfuzz-rs Honggfuzz is a security oriented fuzzer with powerful analysis options that supports evolutionary, feedback-driven fuzzing based on code coverage
differential-dataflow A data-parallel programming framework designed to efficiently process large volumes of data and to quickly respond to arbitrary changes in input collections, an implementation of differential dataflow over timely dataflow on Rust.
Type Checking
rusttyc An interface that allows for an intuitive translation of inference rules based on a Hindney-Milner-like bounded type meet-semilattice into rust code
Peephole Optimization
egg Egg is a flexible, high-performance e-graph library
peepmatic A DSL for peephole optimizations and compiler for generating peephole optimizers from them
Guides & Resources
Making a language in Rust A series about making a programming language called Eldiro using the Rust programming language