作者:互联网 时间: 2026-09-12 14:50:01
面对实际交付,我看rust-langdev的重点不在星标,而在这项能力:Rust 的语言开发库。这类软件开发工具真正难在依赖、接口和异常处理往往比主路径更影响采用,仓库说明只能作为第一层证据。与其反复读介绍,不如在隔离分支完成一个可回滚的小任务,再依据安装步骤、接口契约、测试结果和错误信息做取舍。对需要可检查开发流程而非单次演示的工程师来说,这个仓库值得继续验证;只求即装即用的人则要先看维护成本。
Rust 的 Langdev 库
词法分析器
logos Logos 有两个目标:让创建 Lexer 变得容易,这样您就可以专注于更复杂的问题,并使生成的 Lexer 比您手写的任何东西都快lrlex 生成 Rust 代码的 lex/flex 的替代品lexgen 一个功能齐全的词法分析器生成器,作为 proc 宏实现。解析器
lalrpop 方便的 LR(1) 解析器生成器nom 面向字节、零拷贝、解析器组合器库combine 具有零拷贝支持的任意流上的快速解析器组合器。pom PEG 使用运算符重载而不使用宏的解析器组合器。peg 一个简单的解析表达式语法 (PEG) 解析器生成器。glue Glue 是一个解析器组合器框架,用于解析基于文本的格式,它易于使用且相对较快pratt Rust 的通用 pratt 解析器pest 用 Rust 编写的通用解析器,重点关注使用解析表达式语法的可访问性、正确性和性能(PEG)lrpar 与 Yacc 兼容的解析器。
nimbleparse_lsp 用于快速开发 lrpar 解析器的 LSP 服务器,它绕过代码生成来解析语法更改时的输入缓冲区。tree-sitter 一个解析器生成器,用于构建快速的编辑器友好解析器,具有流、增量、可恢复(重新)解析、超时和取消以及高级语法节点查询等功能。rowan 通用无损语法树
ungrammar A DSL 用于指定具体语法树,请参阅 这篇介绍性文章cstree rowan 的一个分支,具有线程安全语法树和内置 源字符串驻留chomp Chomp 是一个快速的单子式解析器组合器库,设计用于稳定的 Rustoak 嵌入 Rust 代码中的类型化解析器生成器,用于解析表达式语法chumsky 一个友好的解析器组合器箱,可以轻松编写具有错误恢复功能的 LL(k) 解析器rust-sitter 用于定义 Tree-sitter 语法和 Rust 逻辑的包正则表达式
regex Rust 正则表达式的实现。该实现使用有限自动机并保证所有输入的线性时间匹配。regress 面向 EcmaScript 语法的正则表达式引擎。onig Rust-Onig 是 Oniguruma 正则表达式库的一组 Rust 绑定。代码生成器
cranelift Cranelift 是一个低级可重定向代码生成器llvm-sys 绑定到 LLVM 的 C APIiced-x86 快速且正确的 x86/x64 反汇编器、汇编器和指令解码器llama 友好的 LLVM 绑定inkwell Inkwell 旨在通过安全包装 llvm-sys 来帮助您编写自己的编程语言llvm-ir LLVM IRllvmenv 管理多个 LLVM/Clang 构建walrus 用于执行 WebAssembly 转换的库cilk 受 Rust 编写的 LLVM 影响的玩具编译器基础结构。字符串实习
lasso 具有最小内存占用和竞技场分配的多线程和单线程字符串内部string-interner 高效缓存字符串的数据结构simple-interner 一个简单的仅附加内部string_cache Rust 的字符串驻留库,作为 Servo 项目的一部分开发即时编译
iced-x86 快速且正确的 x86/x64 反汇编器、汇编器和指令解码器masm-rs A JSC/SpiderMonkey 类似宏汇编器b3 B3、LLVM-like 后端的 Rust 端口jit (LibJIT) 使用 LibJIT 绑定在 Rust 中进行即时编译lightning-sys GNU 防锈闪电绑定gccjit libgccjit 的高级 Rust 绑定cranelift Cranelift 是一个低级可重定向代码生成器
cranelift-jit-demo 玩具语言的 JIT 编译器和运行时,使用 Craneliftdynasm 用 Rust 编写的用于 Rust 的动态汇编器编译框架
xrcf eXtensible 和可重用编译器框架 (xrcf) 是用于构建编译器的库错误报告
codespan-reporting 基于文本的编程语言的漂亮诊断报告codespan 用于跟踪源代码中位置的数据结构text-size 为 u32 和 (u32, u32) 提供新类型包装器以用作文本偏移量的库ariadne 一个精美的诊断和报告箱miette 花哨的诊断报告库和协议,适合我们这些不是编译器黑客的凡人语言服务器协议
lsp-types 使用 VSCode 的语言服务器协议与语言服务器交互的类型tower-lsp 基于Tower的语言服务器协议实现codespan-lsp 代码跨度类型和语言服务器协议类型之间的转换lsp-server 通用 LSP 服务器脚手架测试
goldentests 文件测试库,可以在同一测试文件中配置测试lang_tester 编译器和 VMs 的简明语言测试框架(仅限 Linux)libtest-mimic 动态构建一个外观和行为类似于 Rust 内置测试工具的测试工具compiletest_rs Rust 编译器的编译测试实用程序作为独立的测试工具insta Rust 的快照测试库k9 快照测试和更好的断言bulk_examples_generator 在 Rust 中创建的工具,用于创建基于 pest 语法的随机示例 dozens/hundreds/thousands/millions (PEG)统一码
unicode-xid 根据 Unicode 标准附件 #31 规则确定 char 是否是解析器和/或词法分析器的有效标识符。unicode-normalisation Unicode 字符组合和分解实用程序,如 Unicode 标准附件 #15 中所述unicode-segmentation 根据 Unicode 标准附件 #29 规则,在字素簇或字边界上分割字符串的迭代器unicode-width 根据 Unicode 标准附件 #11 规则确定 char 和 str 类型的显示宽度lexical-sort unicode 字符串的字典顺序排序增量编译
salsa 按需增量计算的通用框架verde 一个清爽简单的增量计算库Floats/Ints/Bools
lexical 词法、字符串转换例程(适用于 std 和 no_std 环境的快速词法转换例程)lexical-core 词法、字符串转换例程(用于 no_std 上下文的低级词法转换例程)lexical_bool 可以从字符串解析的类似 bool 类型ryu PLDI'18 论文 Ryū 的 Rust 实现:Ulf Adams 的快速浮点到字符串转换ryu-js Ryū-js 是 ryu crate 的一个分支,经过调整以符合 ECMAScript 数字到字符串算法hexponent C11 兼容的十六进制浮点解析ordered-float 浮点数总排序half 用于 Rust 的半精度浮点 f16 类型,实现 IEEE 754-2008 标准f128 绑定到 gccquadmath 库approx 近似浮点相等比较和断言二进制和目标文件解析、生成和处理
goblin 一个顽皮的跨平台 ELF、Mach-o 和 PE 二进制解析和加载包gimli 用于读写 DWARF 调试格式的库。faerie ELF 和 Mach-o 本机二进制目标文件发射器object 读写目标文件格式的统一接口。elf 用于解析 ELF 文件的纯 Rust 库elfkit 纯 Rust 的 elf 解析器和操作库符号执行
haybale LLVM IR 的符号执行求解器
rsmt2 SMT-LIB 2 兼容 SMT 解算器的包装。z3 来自 Microsoft Research 的 Z3 SMT 解算器的高级 Rust 绑定z3-sys 来自 Microsoft Research 的 Z3 SMT 解算器的低级绑定z3_ref Z3 SMT 解算器的高级接口z3d Z3 DSL Rust 接口boolector Boolector SMT 解算器的安全高级绑定boolector-sys Boolector SMT 解算器的低级绑定smt2utils SMT-LIB-2 标准的库和工具
smt2parser SMT2 命令的通用解析器,由 SMT-LIB-2 标准指定smt2proxy 一种实验性二进制工具,用于在将 SMT2 命令发送到 SMT 求解器之前拦截和预处理这些命令z3tracer 通过将 trace=true proof=true 传递给 Z3 获得的 Z3 跟踪日志的实验解析器good_lp Rust 混合整数线性规划,具有用户友好的 API。该包允许对 LP 问题进行建模,并允许您使用各种求解器来解决它们。CLI
structopt 通过定义结构体解析命令行参数clap 一个简单易用、高效、功能齐全的命令行参数解析器pico-args 一个超简单的 CLI 参数解析器argh 针对代码大小优化的基于派生的参数解析器配置
etcetera 一个库,旨在允许您确定应用程序的配置、缓存和数据文件的位置。现有的 Rust 库通常不会让您选择它们遵循哪种 standards/conventions(Etcetera 称之为“策略”)。另一方面,等等,给你选择toml 用于 Rust 的 TOML 解码器和编码器(可选使用 serde)envy 将环境变量反序列化为类型安全结构(使用 serde)重复
rustyline Rustyline,基于 Antirez 的 Linenoise 的 readline 实现repl-rs 库,为您的应用程序生成 REPLtermwiz 适用于 Unix 和 Windows 的终端向导字符串处理
beef 更快、更紧凑地实现 Cow。smol_str 小字符串优化字符串类型,具有 O(1) 克隆smallstring '小字符串'优化:使用smallvec在堆栈上存储小字符串heck Heck 是一个大小写转换库,用于提供 CamelCase 和 Snake_case 等常见大小写之间的大小写转换。它旨在支持 unicode、内部一致且性能相当良好ropey Ropey 是 Rust 的 utf8 文本绳,设计为文本编辑器等应用程序的后备文本缓冲区。 Ropey 速度快、功能强大,可以轻松处理大量文本和内存不连贯的编辑。语法树
rowan 通用无损语法树cstree rowan 的一个分支,具有线程安全语法树和内置 源字符串驻留漂亮的印刷
pretty Rust 中的 Wadler 风格的漂亮打印组合器变量绑定
moniker 用于跟踪作用域中变量的自动变量绑定库缓存
cached 缓存结构和简化的函数记忆WASM
wain WebAssembly 用 Safe Rust 编写的解释器,零依赖wasmer Wasmer WebAssembly 运行时的高级公共 APIwasmtime 高级 API 用于公开 Wasmtime 运行时wasmtime-jit JIT- Cranelift 中 WebAsssembly 代码的样式执行wasmlite-parser 该包解析 WebAssembly 模块,并可以根据从模块中提取的数据生成 LLVM IRparity-wasm-cp WebAssembly 二进制格式 serialization/deserialization/interpretersubstrate-wasm-builder 用于构建 WASM 二进制文件的实用程序walrus 用于执行 WebAssembly 转换的库记录
tracing Rust 应用程序级跟踪
tracing-tree 打印跨度和事件树的跟踪层。tracing-forest 保持并发任务的跟踪数据之间的上下文一致性tracing-timing 基于 tracing 的事件间时序指标tracing-coz 对 的 Rust 跟踪支持 coz 因果分析器tracing-flame 用于生成折叠堆栈跟踪的跟踪 Layer,用于使用 inferno 生成火焰图和火焰图test-env-log 一个负责自动初始化日志和/或Rust 测试跟踪的包。tracing-unwrap 该包在 Result 和 Option 类型上提供 .unwrap_or_log() 和 .expect_or_log() 方法,将失败的解包记录到tracing::Subscriberlog 提供轻量级日志记录外观的 Rust 库slog 一个由可重用组件组成的生态系统,用于 Rust 的结构化、可扩展、可组合和上下文日志记录存储
map 具有持久唯一键来访问存储值的容器:插入、删除和访问都需要 O(1) 时间,开销较低。indexmap 顺序一致、迭代速度快的哈希表vecmap 基于Vec的Map和Set数据结构不相交集
union-find 并查找操作的结构体和方法ena Rust 中并查找的实现;从 rustc 中提取(并由其使用)增量分析
timely 论文中介绍的低延迟循环数据流计算模型 Naiad:及时数据流系统
differential-dataflow 一种数据并行编程框架,旨在高效处理大量数据并快速响应输入集合中的任意变化,是 差分数据流 在 及时数据流上的实现 关于 Rust。dogsdogsdogs 差异数据流中最坏情况的最佳连接和增量查询dataflow-join Ngo 等人的 GenericJoin 在及时数据流中的流式实现timely-sort Rust 中基数排序的缓存感知实现diagnostics timely-datafflow 和 differential-dataflow 的诊断工具 计算differential-datalog 基于 timely-dataflow 和 differential-dataflow 的增量计算编程语言,类似于 IncA 或 Souffle及时的数据流资源
模糊测试
honggfuzz-rs Honggfuzz 是一款面向安全的模糊测试工具,具有强大的分析选项,支持基于代码覆盖率的进化式、反馈驱动的模糊测试cargo-fuzz 使用libFuzzer的cargo子命令libfuzzer-sys LLVM 的 libFuzzer 运行时库的 Barebones 包装器wasm-smith A WebAssembly 测试用例生成器fuzzcheck 结构感知覆盖引导模糊器libafltest-fuzz模糊测试资源
图表
egg Egg 是一个灵活、高性能的电子图库
egg 来提高浮点计算的精度(语言、规则、 分析()egg 来简化 CAD 程序(语言、规则、施加器)egg 来优化张量程序(语言、规则、 分析()petgraph 图形数据结构库。提供图类型和图算法timely 论文中介绍的低延迟循环数据流计算模型 Naiad:及时数据流系统differential-dataflow 一种数据并行编程框架,旨在高效处理大量数据并快速响应输入集合中的任意变化,是 差分数据流 在 及时数据流上的实现 关于 Rust。类型检查
rusttyc 一个接口,允许将基于类似 Hindney-Milner 的有界类型 meet-semilattice 的推理规则直观地转换为 Rust 代码polytype Hindley-Milner 多态类型系统窥孔优化
egg Egg 是一个灵活、高性能的电子图库peepmatic 用于窥孔优化的 DSL 以及用于从中生成窥孔优化器的编译器垃圾收集
broom 符合人体工程学的跟踪垃圾收集器,支持标记和扫描垃圾收集gc Rust 的简单跟踪(标记和清除)垃圾收集器shredder 垃圾收集作为 Rust 的库comet 用于在 Rust 中实现 VMs 的垃圾收集库mmtk 内存管理 ToolKit (MMTk) 用于使用 VMs 语言进行可移植且高效的内存管理指南和资源
类型检查
内联
RVSDG
等饱和度
未分类