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 handlrlex A replacement for lex/flex that generates Rust codelexgen A fully-featured lexer generator, implemented as a proc macro.lalrpop A convenient LR(1) parser generatornom A byte-oriented, zero-copy, parser combinators librarycombine Fast parser combinators on arbitrary streams with zero-copy support.pom PEG parser combinators using operator overloading without macros.peg A simple Parsing Expression Grammar (PEG) parser generator.glue Glue is a parser combinator framework for parsing text based formats, it is easy to use and relatively fast toopratt A general purpose pratt parser for Rustpest A general purpose parser written in Rust with a focus on accessibility, correctness, and performance using parsing expression grammars (PEG)lrpar A Yacc-compatible parser.
nimbleparse_lsp An LSP server for quickly developing lrpar parsers, which parses input buffers on grammar change bypassing code generation.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.rowan Generic lossless syntax trees
ungrammar A DSL for specifying concrete syntax trees, see this introductory postcstree A fork of rowan with threadsafe syntax trees and built-in source string interningchomp Chomp is a fast monadic-style parser combinator library designed to work on stable Rustoak A typed parser generator embedded in Rust code for Parsing Expression Grammarschumsky A friendly parser combinator crate that makes writing LL(k) parsers with error recovery easyrust-sitter A package for defining tree-sitter grammars alongside Rust logicregex An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear time matching on all inputs.regress A regular expression engine targeting EcmaScript syntax.onig Rust-Onig is a set of Rust bindings for the Oniguruma regular expression library.cranelift Cranelift is a low-level retargetable code generatorllvm-sys Bindings to LLVM's C APIiced-x86 A blazing fast and correct x86/x64 disassembler, assembler and instruction decoderllama Friendly LLVM bindingsinkwell Inkwell aims to help you pen your own programming languages by safely wrapping llvm-sysllvm-ir LLVM IR in natural Rust data structuresllvmenv Manage multiple LLVM/Clang buildswalrus A library for performing WebAssembly transformationscilk Toy Compiler Infrastructure influenced by LLVM written in Rust.lasso A multithreaded and single threaded string interner with a minimal memory footprint and arena allocationstring-interner A data structure to cache strings efficientlysimple-interner A simple append-only internerstring_cache A string interning library for Rust, developed as part of the Servo projecticed-x86 A blazing fast and correct x86/x64 disassembler, assembler and instruction decodermasm-rs A JSC/SpiderMonkey like macro assemblerb3 Rust port of B3, LLVM-like backendjit (LibJIT) Just-In-Time Compilation in Rust using LibJIT bindingslightning-sys GNU lightning bindings for rustgccjit Higher-level Rust bindings for libgccjitcranelift Cranelift is a low-level retargetable code generator
cranelift-jit-demo A JIT compiler and runtime for a toy language, using Craneliftdynasm A Dynamic assembler written in Rust for Rustxrcf The eXtensible and Reusable Compiler Framework (xrcf) is a library for building compilerscodespan-reporting Beautiful diagnostic reporting for text-based programming languagescodespan Data structures for tracking locations in source codetext-size A library that provides newtype wrappers for u32 and (u32, u32) for use as text offsetsariadne A fancy diagnostics & reporting cratemiette Fancy diagnostic reporting library and protocol for us mere mortals who aren't compiler hackerslsp-types Types for interaction with a language server, using VSCode's Language Server Protocoltower-lsp Language Server Protocol implementation based on Towercodespan-lsp Conversions between codespan types and Language Server Protocol typeslsp-server A generic LSP server scaffoldgoldentests A golden file testing library where tests can be configured within the same test filelang_tester Concise language testing framework for compilers and VMs (Linux only)libtest-mimic Dynamically construct a test-harness that looks and behaves like Rust's built-in test harnesscompiletest_rs The compiletest utility from the Rust compiler as a standalone testing harnessinsta A snapshot testing library for Rustk9 Snapshot testing and better assertionsbulk_examples_generator A tool created in Rust for create dozens/hundreds/thousands/millions of random examples based on a pest grammar (PEG)unicode-xid Determine if a char is a valid identifier for a parser and/or lexer according to Unicode Standard Annex #31 rules.unicode-normalisation Unicode character composition and decomposition utilities as described in Unicode Standard Annex #15unicode-segmentation Iterators which split strings on Grapheme Cluster or Word boundaries, according to the Unicode Standard Annex #29 rulesunicode-width Determine displayed width of char and str types according to Unicode Standard Annex #11 ruleslexical-sort Lexicographical sorting of unicode stringssalsa A generic framework for on-demand, incrementalized computationverde A refreshingly simple incremental computation librarylexical Lexical, to- and from-string conversion routines (Fast lexical conversion routines for both std and no_std environments)lexical-core Lexical, to- and from-string conversion routines (Low-level, lexical conversion routines for use in a no_std context)lexical_bool A bool-like type that can be parsed from a stringryu A Rust implementation of the PLDI'18 paper Ryū: fast float-to-string conversion by Ulf Adamsryu-js Ryū-js is a fork of the ryu crate adjusted to comply to the ECMAScript number-to-string algorithmhexponent C11 compliant hex float parsingordered-float Total ordering on floatshalf A half-precision floating point f16 type for Rust implementing the IEEE 754-2008 standardf128 Bindings to the gcc quadmath libraryapprox Approximate floating point equality comparisons and assertionsgoblin An impish, cross-platform, ELF, Mach-o, and PE binary parsing and loading crategimli A library for reading and writing the DWARF debugging format.faerie ELF and Mach-o native binary object file emitterobject A unified interface for reading and writing object file formats.elf A pure-rust library for parsing ELF fileselfkit An elf parser and manipulation library in pure rusthaybale Symbolic execution of LLVM IRrsmt2 Wrapper for SMT-LIB 2 compliant SMT solvers.z3 A high-level rust bindings for the Z3 SMT solver from Microsoft Researchz3-sys Low-level bindings for the Z3 SMT solver from Microsoft Researchz3_ref A high level interface to the Z3 SMT solverz3d Z3 DSL interface for Rustboolector Safe high-level bindings for the Boolector SMT solverboolector-sys Low-level bindings for the Boolector SMT solversmt2utils Libraries and tools for the SMT-LIB-2 standard
smt2parser A generic parser for SMT2 commands, as specified by the SMT-LIB-2 standardsmt2proxy An experimental binary tool to intercept and pre-process SMT2 commands before they are send to an SMT solverz3tracer An experimental parser for Z3 tracing logs obtained by passing trace=true proof=true to Z3good_lp Mixed Integer Linear Programming for Rust, with an user-friendly API. This crate allows modeling LP problems, and lets you solve them with various solvers.structopt Parse command line arguments by defining a structclap A simple to use, efficient, and full-featured Command Line Argument Parserpico-args An ultra simple CLI arguments parserargh A derive-based argument parser optimized for code sizeetcetera 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 choicetoml A TOML decoder and encoder for Rust (optionally uses serde)envy Deserialize environment variables into typesafe structs (uses serde)rustyline Rustyline, a readline implementation based on Antirez's Linenoiserepl-rs Library to generate a REPL for your applicationtermwiz Terminal Wizardry for Unix and Windowsbeef Faster, more compact implementation of Cow.smol_str Small-string optimized string type with O(1) clonesmallstring 'Small string' optimization: store small strings on the stack using smallvecheck 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 performingropey 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.rowan Generic lossless syntax treescstree A fork of rowan with threadsafe syntax trees and built-in source string interningpretty Wadler-style pretty-printing combinators in Rustmoniker An automagical variable binding library for tracking variables in scopescached Caching structures and simplified function memoizationwain WebAssembly interpreter written in Safe Rust with zero dependencieswasmer The high-level public API of the Wasmer WebAssembly runtimewasmtime High-level API to expose the Wasmtime runtimewasmtime-jit JIT-style execution for WebAsssembly code in Craneliftwasmlite-parser This crate parses WebAssembly modules and can generate LLVM IR based the data extracted from a moduleparity-wasm-cp WebAssembly binary format serialization/deserialization/interpretersubstrate-wasm-builder A utility for building WASM binarieswalrus A library for performing WebAssembly transformationstracing Application-level tracing for Rust
tracing-tree A Tracing Layer which prints a tree of spans and events.tracing-forest Preserving contextual coherence among trace data from concurrent taskstracing-timing Inter-event timing metrics on top of tracingtracing-coz Rust-tracing support for the coz Causal Profilertracing-flame A tracing Layer for generating a folded stack trace for generating flamegraphs and flamecharts with infernotest-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::Subscriberlog A Rust library providing a lightweight logging facadeslog An ecosystem of reusable components for structured, extensible, composable and contextual logging for Rustslotmap 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 iterationvecmap Vec-based Map and Set data structuresunion-find Struct and methods for union-find operationena An implementation of union-find in Rust; extracted from (and used by) rustctimely A low-latency cyclic dataflow computational model, introduced in the paper Naiad: a timely dataflow system
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 dataflowdataflow-join A streaming implementation of Ngo et al's GenericJoin in timely dataflowtimely-sort An cache-aware implementation of radix sort in Rustdiagnostics Diagnostic tools for timely-datafflow and differential-dataflow computationsdifferential-datalog A programming language for incremental computation based on timely-dataflow and differential-dataflow, similar to IncA or Soufflehonggfuzz-rs Honggfuzz is a security oriented fuzzer with powerful analysis options that supports evolutionary, feedback-driven fuzzing based on code coveragecargo-fuzz A cargo subcommand for using libFuzzerlibfuzzer-sys Barebones wrapper around LLVM's libFuzzer runtime librarywasm-smith A WebAssembly test case generatorfuzzcheck A structure-aware coverage-guided fuzzerlibafltest-fuzzegg Egg is a flexible, high-performance e-graph library
petgraph A graph data structure library. Provides graph types and graph algorithmstimely A low-latency cyclic dataflow computational model, introduced in the paper Naiad: a timely dataflow systemdifferential-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.rusttyc An interface that allows for an intuitive translation of inference rules based on a Hindney-Milner-like bounded type meet-semilattice into rust codepolytype A Hindley-Milner polymorphic typing systemegg Egg is a flexible, high-performance e-graph librarypeepmatic A DSL for peephole optimizations and compiler for generating peephole optimizers from thembroom An ergonomic tracing garbage collector that supports mark 'n sweep garbage collectiongc A simple tracing (mark and sweep) garbage collector for Rustshredder Garbage collection as a library for Rustcomet A garbage collection library for implementing VMs in Rustmmtk Memory Management ToolKit (MMTk) for portable & efficient memory management in language VMslogos 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 handlrlex A replacement for lex/flex that generates Rust codelexgen A fully-featured lexer generator, implemented as a proc macro.lalrpop A convenient LR(1) parser generatornom A byte-oriented, zero-copy, parser combinators librarycombine Fast parser combinators on arbitrary streams with zero-copy support.pom PEG parser combinators using operator overloading without macros.peg A simple Parsing Expression Grammar (PEG) parser generator.glue Glue is a parser combinator framework for parsing text based formats, it is easy to use and relatively fast toopratt A general purpose pratt parser for Rustpest A general purpose parser written in Rust with a focus on accessibility, correctness, and performance using parsing expression grammars (PEG)lrpar A Yacc-compatible parser.
nimbleparse_lsp An LSP server for quickly developing lrpar parsers, which parses input buffers on grammar change bypassing code generation.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.rowan Generic lossless syntax trees
ungrammar A DSL for specifying concrete syntax trees, see this introductory postcstree A fork of rowan with threadsafe syntax trees and built-in source string interningchomp Chomp is a fast monadic-style parser combinator library designed to work on stable Rustoak A typed parser generator embedded in Rust code for Parsing Expression Grammarschumsky A friendly parser combinator crate that makes writing LL(k) parsers with error recovery easyrust-sitter A package for defining tree-sitter grammars alongside Rust logicregex An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear time matching on all inputs.regress A regular expression engine targeting EcmaScript syntax.onig Rust-Onig is a set of Rust bindings for the Oniguruma regular expression library.cranelift Cranelift is a low-level retargetable code generatorllvm-sys Bindings to LLVM's C APIiced-x86 A blazing fast and correct x86/x64 disassembler, assembler and instruction decoderllama Friendly LLVM bindingsinkwell Inkwell aims to help you pen your own programming languages by safely wrapping llvm-sysllvm-ir LLVM IR in natural Rust data structuresllvmenv Manage multiple LLVM/Clang buildswalrus A library for performing WebAssembly transformationscilk Toy Compiler Infrastructure influenced by LLVM written in Rust.lasso A multithreaded and single threaded string interner with a minimal memory footprint and arena allocationstring-interner A data structure to cache strings efficientlysimple-interner A simple append-only internerstring_cache A string interning library for Rust, developed as part of the Servo projecticed-x86 A blazing fast and correct x86/x64 disassembler, assembler and instruction decodermasm-rs A JSC/SpiderMonkey like macro assemblerb3 Rust port of B3, LLVM-like backendjit (LibJIT) Just-In-Time Compilation in Rust using LibJIT bindingslightning-sys GNU lightning bindings for rustgccjit Higher-level Rust bindings for libgccjitcranelift Cranelift is a low-level retargetable code generator
cranelift-jit-demo A JIT compiler and runtime for a toy language, using Craneliftdynasm A Dynamic assembler written in Rust for Rustxrcf The eXtensible and Reusable Compiler Framework (xrcf) is a library for building compilerscodespan-reporting Beautiful diagnostic reporting for text-based programming languagescodespan Data structures for tracking locations in source codetext-size A library that provides newtype wrappers for u32 and (u32, u32) for use as text offsetsariadne A fancy diagnostics & reporting cratemiette Fancy diagnostic reporting library and protocol for us mere mortals who aren't compiler hackerslsp-types Types for interaction with a language server, using VSCode's Language Server Protocoltower-lsp Language Server Protocol implementation based on Towercodespan-lsp Conversions between codespan types and Language Server Protocol typeslsp-server A generic LSP server scaffoldgoldentests A golden file testing library where tests can be configured within the same test filelang_tester Concise language testing framework for compilers and VMs (Linux only)libtest-mimic Dynamically construct a test-harness that looks and behaves like Rust's built-in test harnesscompiletest_rs The compiletest utility from the Rust compiler as a standalone testing harnessinsta A snapshot testing library for Rustk9 Snapshot testing and better assertionsbulk_examples_generator A tool created in Rust for create dozens/hundreds/thousands/millions of random examples based on a pest grammar (PEG)unicode-xid Determine if a char is a valid identifier for a parser and/or lexer according to Unicode Standard Annex #31 rules.unicode-normalisation Unicode character composition and decomposition utilities as described in Unicode Standard Annex #15unicode-segmentation Iterators which split strings on Grapheme Cluster or Word boundaries, according to the Unicode Standard Annex #29 rulesunicode-width Determine displayed width of char and str types according to Unicode Standard Annex #11 ruleslexical-sort Lexicographical sorting of unicode stringssalsa A generic framework for on-demand, incrementalized computationverde A refreshingly simple incremental computation librarylexical Lexical, to- and from-string conversion routines (Fast lexical conversion routines for both std and no_std environments)lexical-core Lexical, to- and from-string conversion routines (Low-level, lexical conversion routines for use in a no_std context)lexical_bool A bool-like type that can be parsed from a stringryu A Rust implementation of the PLDI'18 paper Ryū: fast float-to-string conversion by Ulf Adamsryu-js Ryū-js is a fork of the ryu crate adjusted to comply to the ECMAScript number-to-string algorithmhexponent C11 compliant hex float parsingordered-float Total ordering on floatshalf A half-precision floating point f16 type for Rust implementing the IEEE 754-2008 standardf128 Bindings to the gcc quadmath libraryapprox Approximate floating point equality comparisons and assertionsgoblin An impish, cross-platform, ELF, Mach-o, and PE binary parsing and loading crategimli A library for reading and writing the DWARF debugging format.faerie ELF and Mach-o native binary object file emitterobject A unified interface for reading and writing object file formats.elf A pure-rust library for parsing ELF fileselfkit An elf parser and manipulation library in pure rusthaybale Symbolic execution of LLVM IRrsmt2 Wrapper for SMT-LIB 2 compliant SMT solvers.z3 A high-level rust bindings for the Z3 SMT solver from Microsoft Researchz3-sys Low-level bindings for the Z3 SMT solver from Microsoft Researchz3_ref A high level interface to the Z3 SMT solverz3d Z3 DSL interface for Rustboolector Safe high-level bindings for the Boolector SMT solverboolector-sys Low-level bindings for the Boolector SMT solversmt2utils Libraries and tools for the SMT-LIB-2 standard
smt2parser A generic parser for SMT2 commands, as specified by the SMT-LIB-2 standardsmt2proxy An experimental binary tool to intercept and pre-process SMT2 commands before they are send to an SMT solverz3tracer An experimental parser for Z3 tracing logs obtained by passing trace=true proof=true to Z3good_lp Mixed Integer Linear Programming for Rust, with an user-friendly API. This crate allows modeling LP problems, and lets you solve them with various solvers.structopt Parse command line arguments by defining a structclap A simple to use, efficient, and full-featured Command Line Argument Parserpico-args An ultra simple CLI arguments parserargh A derive-based argument parser optimized for code sizeetcetera 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 choicetoml A TOML decoder and encoder for Rust (optionally uses serde)envy Deserialize environment variables into typesafe structs (uses serde)rustyline Rustyline, a readline implementation based on Antirez's Linenoiserepl-rs Library to generate a REPL for your applicationtermwiz Terminal Wizardry for Unix and Windowsbeef Faster, more compact implementation of Cow.smol_str Small-string optimized string type with O(1) clonesmallstring 'Small string' optimization: store small strings on the stack using smallvecheck 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 performingropey 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.rowan Generic lossless syntax treescstree A fork of rowan with threadsafe syntax trees and built-in source string interningpretty Wadler-style pretty-printing combinators in Rustmoniker An automagical variable binding library for tracking variables in scopescached Caching structures and simplified function memoizationwain WebAssembly interpreter written in Safe Rust with zero dependencieswasmer The high-level public API of the Wasmer WebAssembly runtimewasmtime High-level API to expose the Wasmtime runtimewasmtime-jit JIT-style execution for WebAsssembly code in Craneliftwasmlite-parser This crate parses WebAssembly modules and can generate LLVM IR based the data extracted from a moduleparity-wasm-cp WebAssembly binary format serialization/deserialization/interpretersubstrate-wasm-builder A utility for building WASM binarieswalrus A library for performing WebAssembly transformationstracing Application-level tracing for Rust
tracing-tree A Tracing Layer which prints a tree of spans and events.tracing-forest Preserving contextual coherence among trace data from concurrent taskstracing-timing Inter-event timing metrics on top of tracingtracing-coz Rust-tracing support for the coz Causal Profilertracing-flame A tracing Layer for generating a folded stack trace for generating flamegraphs and flamecharts with infernotest-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::Subscriberlog A Rust library providing a lightweight logging facadeslog An ecosystem of reusable components for structured, extensible, composable and contextual logging for Rustslotmap 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 iterationvecmap Vec-based Map and Set data structuresunion-find Struct and methods for union-find operationena An implementation of union-find in Rust; extracted from (and used by) rustctimely A low-latency cyclic dataflow computational model, introduced in the paper Naiad: a timely dataflow system
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 dataflowdataflow-join A streaming implementation of Ngo et al's GenericJoin in timely dataflowtimely-sort An cache-aware implementation of radix sort in Rustdiagnostics Diagnostic tools for timely-datafflow and differential-dataflow computationsdifferential-datalog A programming language for incremental computation based on timely-dataflow and differential-dataflow, similar to IncA or Soufflehonggfuzz-rs Honggfuzz is a security oriented fuzzer with powerful analysis options that supports evolutionary, feedback-driven fuzzing based on code coveragecargo-fuzz A cargo subcommand for using libFuzzerlibfuzzer-sys Barebones wrapper around LLVM's libFuzzer runtime librarywasm-smith A WebAssembly test case generatorfuzzcheck A structure-aware coverage-guided fuzzerlibafltest-fuzzegg Egg is a flexible, high-performance e-graph library
petgraph A graph data structure library. Provides graph types and graph algorithmstimely A low-latency cyclic dataflow computational model, introduced in the paper Naiad: a timely dataflow systemdifferential-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.rusttyc An interface that allows for an intuitive translation of inference rules based on a Hindney-Milner-like bounded type meet-semilattice into rust codepolytype A Hindley-Milner polymorphic typing systemegg Egg is a flexible, high-performance e-graph librarypeepmatic A DSL for peephole optimizations and compiler for generating peephole optimizers from thembroom An ergonomic tracing garbage collector that supports mark 'n sweep garbage collectiongc A simple tracing (mark and sweep) garbage collector for Rustshredder Garbage collection as a library for Rustcomet A garbage collection library for implementing VMs in Rustmmtk Memory Management ToolKit (MMTk) for portable & efficient memory management in language VMs