You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
lexgen A fully-featured lexer generator, implemented as a proc macro.
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.
boolector Safe high-level bindings for the Boolector SMT solver
boolector-sys Low-level bindings for the Boolector SMT solver
smt2utils Libraries and tools for the SMT-LIB-2 standard
smt2parser A generic parser for SMT2 commands, as specified by the SMT-LIB-2 standard
smt2proxy An experimental binary tool to intercept and pre-process SMT2 commands before they are send to an SMT solver
z3tracer An experimental parser for Z3 tracing logs obtained by passing trace=true proof=true to Z3
good_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.
Axiom Profiler A tool for visualising, analysing and understanding quantifier instantiations made via E-matching in a run of an SMT solver
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-tree A Tracing Layer which prints a tree of spans and events.
tracing-forest Preserving contextual coherence among trace data from concurrent tasks
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
polytype A Hindley-Milner polymorphic typing system
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
Garbage Collection
broom An ergonomic tracing garbage collector that supports mark 'n sweep garbage collection
gc A simple tracing (mark and sweep) garbage collector for Rust
comet A garbage collection library for implementing VMs in Rust
mmtk Memory Management ToolKit (MMTk) for portable & efficient memory management in language VMs
Guides & Resources
Making a language in Rust A series about making a programming language called Eldiro using the Rust programming language
Crafting Interpreters Implementing everything from parsing to garbage collection to bytecode VMs, highly reccomended as an introduction to language development (Homepage)
Turns are Better than Radians An interesting blog post about using turns instead of pi or tau for trigometric calculations, could be inspiration for some interesting code transformations