丰鹰 发表于 2023-10-26 06:39:30

Github上有哪些Rust写的知名项目?

Github上有哪些Rust写的知名项目?

村痞 发表于 2023-10-26 06:40:22

自吹一波 ast-grep。Rust写的高速通用结构化搜索工具。
ast-grep 基于tree-sitter的Rust API,加上ripgrep师出同门的文件遍历库ignore,再加上clap 提供 CLI的界面支持。是Rust生态的标配项目。
功能上支持命令行直接调结构化搜索代码和代码替换。

http://pic1.zhimg.com/v2-f06172ffcae2ef45c146072192339121_r.jpg?source=1940ef5c
还支持使用YAML配置检查规则当Eslint用(当然速度比Eslint快太多了)

http://pica.zhimg.com/v2-1fc63e6b3a6da8071221b3c53df523b7_r.jpg?source=1940ef5c
本身速度比Semgrep等前辈快很多,还能用napi.rs 写复杂逻辑。Vue Vine | Vue Vine 就用了ast-grep做脚本。
你可以拿它

[*]当Eslint/pylint使
[*]做代码迁移工具使: 迁移Bevy的例子
[*]当grep来使用(某些场景比grep还快)
[*]当Babel/ go ast/py ast操作的高速替代品
项目链接在下面,求一波点赞关注转发!
https://github.com/ast-grep/ast-grephttps://medium.com/@hchan_nvimblog地址在上面,希望能拿到最新消息的可以关注一波!

ebchina 发表于 2023-10-26 06:40:36

阅读 Rust 项目的源码,当然是 Rust 自己的编译器啦,因为 Rust 已经自举了。
注:本条回答未得到 Rust 基金会的认可。

shower 发表于 2023-10-26 06:41:17

GitHub - risingwavelabs/risingwave: RisingWave: the next-generation streaming database in the cloud.升浪,几乎支持 Windows 的流式数据库。我在贡献者里排 50 多名。
测试依赖算下来共 1k+ 个 crate,是 Rust 社区的集大成者。

qiuhill2000 发表于 2023-10-26 06:41:43

最近在看的一个项目,是用rust写的一个WebSocket库
rust-websocket这个项目的代码比较少,只有两千多行,但是结构并不简单。可以说这个项目让我知道代码原来还可以这么写(当然可能是我井底之蛙了)。
之所以这么说,是因为这个项目运用了大量的trait, 使得模块之间的耦合度非常之低,同时也使得项目的可扩展性非常高,不同模块之间进行耦合完全是基于trait而不是具体的struct, 所以如果你不满意它的某个类的实现方式,完全可以根据trait实现一个新的,同时保留之前的代码也完全可以用。
同时还同时实现了sync和async的特性(但是不是事件驱动),所以我觉得这个项目对于想要学习rust的面向对象方式的同学是很好的一个项目的。

Kimi 发表于 2023-10-26 06:42:02

经过大浪淘沙留下来的才是真金白银,对于开源项目也是如此。本文不仅仅以star数的多少作为明星项目的评判维度,还会结合项目规模、影响力、活跃度、社区活跃度等多个方面进行评定,希望大家能喜欢。
需要注意,本文列出的几乎都是平台级项目,因此并不是star多,就能名列其中,例如很多star很多的工具、Rust库、书籍都没有列入,如果大家想要看更多的子类项目,可以访问Fancy Rust。
滚滚长江东逝水,浪花淘尽英雄,是非成败转头空 - 临江仙·滚滚长江东逝水deno

首先出场的自然是咖位最重的之一,可以说正是因为deno和swc的横空出世,才让一堆观望的大神对于Rust实现Javascript基建有了更强的信心。
deno是node半逆转后的字序,从此可以看出deno是Node.js的替代,它的目标是为Typescript/Javascript提供一个更现代化、更安全、更强大 的运行时,同时内置了很多强大的工具,可以用于打包、编译成可执行文件、文档、测试、lint等。
alacritty

alacritty是一个跨平台、基于OpenGL的终端,性能极高的同时还支持丰富的自定义和可扩展性,可以说是非常优秀的现代化终端。
目前已经是beta阶段,可以作为日常工具来使用。

http://pic1.zhimg.com/v2-769378c4b8fd33e768eb5259fc20bfd2_r.jpg?source=1940ef5c
starship

starship是一个命令行提示,支持任何shell,包括zsh,简单易用、非常快且拥有极高的可配置性, 同时支持智能提示。

http://picx.zhimg.com/v2-e778e3acb2a62499e5c43b0f2a14c7c1_r.jpg?source=1940ef5c

MeiliSearch

MeiliSearch是一个搜索平台,但是跟ElasticSearch不同,MeiliSearch并不是通用目的的,它的目标是为终端用户提供边输入边提示的即刻搜索功能,因此是一个轻量级搜索平台,不适用于数据量大时的搜索目的。
总之,如果你需要在网页端或者APP为用户提供一个搜索条,然后支持输入容错、前缀搜索时,就可以使用它。

http://pic1.zhimg.com/v2-08b55439e86c6031ca33ecb40f776195_r.jpg?source=1940ef5c
swc

swc是Typescript/Javascript编译器,它可以用来编译、压缩和打包JS,同时支持使用插件进行扩展,例如做代码变换等。
swc目前正在被一些知名项目所使用,包括Next.js,Parcel和Deno,还有些著名的公司也在使用它,例如Vercel、字节跳动、腾讯等。
它的性能非常非常高,官方号称,在单线程下比Babel快20倍,在4核心下比Babel快70倍!
几个使用案例:

[*]nextjs 12, 通过使用swc获得了更好的扩展性、性能以及wasm的支持,其中性能方面提升了3倍刷新速度、5倍打包速度
[*]Parcel,通过使用swc改善了10倍的性能

http://pic1.zhimg.com/v2-76db689708c0cc0ced88b4887d8e39ee_r.jpg?source=1940ef5c
tauri

tauri可以用来更小、更快、更安全的桌面应用,它想要替代的是electro.js。
下面是援引自官网的性能对比图:


http://picx.zhimg.com/v2-170c55dc7386588a5be54ce5ed004998_r.jpg?source=1940ef5c

http://pic1.zhimg.com/v2-a10d2e795d620a490043c65e210261b1_r.jpg?source=1940ef5c
yew

yew是一个正在活跃开发的Rust/Wasm框架,用于构建Web应用。


http://picx.zhimg.com/v2-51084730adbc845a16b6e69c2f98be95_r.jpg?source=1940ef5c
firecracker

firecracker是一个安全、高性能的无服务计算虚拟机(FaaS),支持多租户、资源隔离等高级特性,由Amazon公司开发,为AWS部分云计算服务提供了强力有的支持。BTW,亚马逊Amazon公司对于Rust语言的喜爱是众所周知的,几乎已经成了Rust的形象大使之一了:)
nushell

nushell是一个全新的shell,使用Rust实现。它的目标是创建一个现代化的shell:虽然依然基于Unix的哲学,但是更适合现在的时代。例如,你可以使用SQL语法来选择你想要的内容!

http://pica.zhimg.com/v2-37217101c1c46fe66a361021d4dac628_r.jpg?source=1940ef5c

tokio

tokio的名声可以说是如雷贯耳,如果学过Rust但是没有听说过它,那我觉得可能要回炉重造下:)
tokio是一个异步IO的运行时,提供了I/O、网络、调度、定时器等等异步编程所必须的功能和工具,性能和功能都异常强大。
AppFlowy

AppFlowy是Notion的开源实现,使用Rust和Flutter进行开发,用于用户文档和数据的管理,支持丰富的自定义特性。


http://pica.zhimg.com/v2-5fa5541d6239efdf538ff649289df90e_r.jpg?source=1940ef5c
Bevy

bevy是一个数据驱动的游戏引擎,支持2D和3D图形开发,优点是社区活跃、更新快、模块化设计优秀、性能高,缺点是还处于快速开发中,并不适合生产使用。
同时bevy的文档齐全,官方示例很多,非常适合学习和使用。


http://picx.zhimg.com/v2-a5974f33bdd35ec3dbbe1a638548ebd7_r.jpg?source=1940ef5c
actix-web

actix-web是全世界最快的web框架之一,甚至可以把之一去掉,因为排在它前面的看上去像是一个专为跑分而生的轻量级框架,而actix-web可是功能相当多的!
下面给出actix和Go语言Gin框架的性能对比:


http://picx.zhimg.com/v2-3cebd732fb56f43713f106fdcfa44a3c_r.jpg?source=1940ef5c
iced

iced是一个跨平台GUI库,具有简单易用、模块化设计、响应式布局等优点。


http://picx.zhimg.com/v2-5c78a44328f59238f9fd4b18cfd20b1f_r.jpg?source=1940ef5c
cube.js

cube.js是一个数据分析API平台,可以用于构建内部的BI或为现有的应用增加客户数据统计等功能,使用Rust和Typescript构建。


http://pica.zhimg.com/v2-118708928d0ec6990b440c410a64a049_r.jpg?source=1940ef5c
wasmer

wasmer是业界领先的WASM运行时,支持WASI和Emscripten。
$ wasmer qjs.wasm
QuickJS - Type "\h" for help
qjs > const i = 1 + 2;
qjs > console.log("hello " + i);
hello 3tikv

tikv相信大家都已知道,tidb的底层存储服务,国人之光项目,在数据之外,还做了大量的技术知识普及工作,值得敬佩!
tikv是分布式KV数据库,支持分布式事务。


http://picx.zhimg.com/v2-29e95461c7b4e28864bc05c67903ab56_r.jpg?source=1940ef5c
ruffle

ruffle是用Rust写的Flash Player模拟器,同时支持桌面端和Web端,其中后者通过WASM提供支持。
rustdesk

rustdesk是国内团队开发的一款远程桌面软件。


http://picx.zhimg.com/v2-f95cee2b9c1f7b4259a68658c2a9e0b5_r.jpg?source=1940ef5c
RustPython

是使用Rust实现的Python解释器, 支持Python3(CPython >= 3.9.0)。
大家可以通过官方提供的在线网址进行尝试。


http://picx.zhimg.com/v2-7795ba8ecc119fb8b34e52b1a38fb9d2_r.jpg?source=1940ef5c
vector

vector是一个性能很高的数据采集agent,采集本地的日志、监控等数据,发送到远程的kafka、jaeger等数据下沉端,它最大的优点就是能从多种数据源(包括Opentelemetry)收集数据,然后推送到多个数据处理或者存储等下沉端。

http://picx.zhimg.com/v2-2e57c0243ae8140f9b21b24b7880c2d7_r.jpg?source=1940ef5c
mdbook

mdbook可以基于markdown文件自动创建在线电子书,非常简单好用,目前的问题就是缺乏章节内部的目录跳转和中文搜索。

http://pica.zhimg.com/v2-a05a73e4970a2af38d4529fc0e5ef1b1_r.jpg?source=1940ef5c

zola

zola是一个静态网站生成器,类似hugo。


http://picx.zhimg.com/v2-a3e6c30863b657c463bd2010ebd9a197_r.jpg?source=1940ef5c
gitui

gitui是一个奇快无比的Git终端UI,无需浏览器即可使用。


http://pica.zhimg.com/v2-507c80f1923859b8008e79ce30ba0f03_r.jpg?source=1940ef5c
solana

solana是知名的区块链平台,快速、安全、去中心化,还自带应用市场。
ripgrep

ripgrep是一个性能极高的现代化grep实现,后者是Unix/Linux下的内置文件搜索工具。该项目是Rust的明星项目,一个是因为性能极其的高,另一个就是源代码质量很高,值得学习, 同时Vscode使用它作为内置的搜索引擎。
从功能来说,除了全面支持grep的功能外,repgre支持使用正则递归搜索指定的文件目录,默认使用.gitignore对指定的文件进行忽略。


http://picx.zhimg.com/v2-8d7d4cddf0063745bff7fd9bc8be3fb3_r.jpg?source=1940ef5c
citybound

citybound是一个多人在线模拟游戏,使用Rust + WASM + JS开发。


http://pica.zhimg.com/v2-4fa1a56c82de8f0ab69d84ee6581795f_r.jpg?source=1940ef5c
bottlerocket

bottlerocket是一个基于Linux的操作系统,它的目标是为容器提供宿主环境。
lemmy

lemmy是一个reddit克隆,可以通过连接聚合的方式来构建社区,支持桌面和移动端。


http://picx.zhimg.com/v2-25aa9254c31fd79e3016c322b5df35da_r.jpg?source=1940ef5c
tantivy

tantivy是Rust实现的本地搜索库,功能对标lucene,如果你不需要分布式,那么引入tantivy作为自己本地Rust服务的一个搜索,是相当不错的选择,该库作者一直很活跃,而且最近还创立了搜索引擎公司,感觉大有作为. 该库的优点在于纯Rust实现,性能高(lucene的2-3倍),资源占用低(对比java自然不是一个数量级),社区活跃。
sled

sled是本地嵌入式的数据库。
let tree = sled::open("/tmp/welcome-to-sled")?;

// insert and get, similar to std's BTreeMap
let old_value = tree.insert("key", "value")?;

assert_eq!(
tree.get(&"key")?,
Some(sled::IVec::from("value")),
);

// range queries
for kv_result in tree.range("key_1".."key_9") {}

// deletion
let old_value = tree.remove(&"key")?;

// atomic compare and swap
tree.compare_and_swap(
"key",
Some("current_value"),
Some("new_value"),
)?;

// block until all operations are stable on disk
// (flush_async also available to get a Future)
tree.flush()?;redox

Redox是一个Unix风格的微内核操作系统,使用Rust实现。redox的目标是安全、快速、免费、可用,它在内核设计上借鉴了很多优秀的内核,例如:SeL4, MINIX, Plan 9和BSD。
但redox不仅仅是一个内核,它还是一个功能齐全的操作系统,提供了操作系统该有的功能,例如:内存分配器、文件系统、显示管理、核心工具等等。你可以大概认为它是一个GNU或BSD生态,但是是通过一门现代化、内存安全的语言实现的。
不过据我仔细观察,redox目前的开发进度不是很活跃,不知道发生了什么,未来若有新的发现会在这里进行更新 - Sunfaceyouki

youki是一个容器运行时,实现了`OCI`标准,性能非常好的同时具备非常高的安全性, 目前来说,它的性能跟`crun`差不多,比`runc`快50%以上。

http://picx.zhimg.com/v2-941a69971b5316e46f9711055431a529_r.jpg?source=1940ef5c
sixtyfps


sixtyfps是一个GUI工具集,同时适用于嵌入式系统、桌面系统、移动端、浏览器(WASM),支持使用多种语言进行开发,背后有商业公司的支持,未来前景看好。


http://picx.zhimg.com/v2-470816dc6979d8f3f14f98fd2e257c99_r.jpg?source=1940ef5c

wasmtime


wasmtime是一个为`WASM`设计的`JIT`风格的独立运行时,支持`WASI`。


fn main() {
println!("Hello, world!");
}



$ rustup target add wasm32-wasi
$ rustc hello.rs --target wasm32-wasi
$ wasmtime hello.wasm
Hello, w
polkadot

polkadot是知名的区块链平台,它是从Substrate抽离出来,后者是下一代区块链开发框架。
lapce

lapce是一款性能极高、功能强大、基于wgpu渲染的代码编辑器,基于Xi-Editor开发,后者Xi-Editor曾经也红极一时,可惜不再维护了,但是依然非常适合做一个编辑器内核。


http://picx.zhimg.com/v2-f14724ca49de1ab4acd901d413dde8b8_r.jpg?source=1940ef5c

rust-gpu

rust-gpu的目标是让Rust成为GPU编程的第一梯队语言,由大名鼎鼎的`Embark`公司开发,后台较硬。

如果需要通用的`GPU`编程,选它就对了。
页: [1]
查看完整版本: Github上有哪些Rust写的知名项目?