明星项目
滚滚长江东逝水,浪花淘尽英雄,是非成败转头空 - 临江仙·滚滚长江东逝水
经过大浪淘沙留下来的才是真金白银,对于开源项目也是如此。对于明星项目,本文不仅仅以star
数的多少作为评判维度,还会结合项目规模、影响力、活跃度、社区活跃度等多个方面进行评定,希望大家能喜欢。
需要注意,本文列出的几乎都是平台级项目,因此并不是star多,就能名列其中,例如很多star
很多的工具、Rust库、书籍都没有列入,如果大家想要看更多的子类项目,请访问对应的文件进行查看。
deno
首先出场的自然是咖位最重的之一,可以说正是因为deno
和swc
的横空出世,才让一堆观望的大神对于Rust实现Javascript
基建有了更强的信心。
deno
是node
半逆转后的字序,从此可以看出deno
是Node.js
的替代,它的目标是为Typescript/Javascript
提供一个更现代化、更安全、更强大 的运行时,同时内置了很多强大的工具,可以用于打包、编译成可执行文件、文档、测试、lint等。
alacritty
alacritty是一个跨平台、基于OpenGL的终端,性能极高的同时还支持丰富的自定义和可扩展性,可以说是非常优秀的现代化终端。
目前已经是beta
阶段,可以作为日常工具来使用。
starship
starship是一个命令行提示,支持任何shell
,包括zsh
,简单易用、非常快且拥有极高的可配置性。
MeiliSearch
MeiliSearch是一个搜索平台,但是跟ElasticSearch
不同,MeiliSearch
并不是通用目的的,它的目标是为终端用户提供边输入边提示的即刻搜索功能,因此是一个轻量级搜索平台,不适用于数据量大时的搜索目的。
总之,如果你需要在网页端或者APP为用户提供一个搜索条,然后支持输入容错、前缀搜索时,就可以使用它。
swc 🌟19.5k
swc
是Typescript/Javascript
编译器,它可以用来编译、压缩和打包JS,同时支持使用插件进行扩展,例如做代码变换等。
swc
目前正在被一些知名项目所使用,包括Next.js
,Parcel
和Deno
,还有些著名的公司也在使用它,例如Vercel
、字节跳动、腾讯等。
它的性能非常非常高,官方号称,在单线程下比Babel
快20倍,在4核心下比Babel
快70倍!
几个使用案例:
tauri
tauri可以用来更小、更快、更安全的桌面应用,它想要替代的是electron.js
。
下面是援引自官网的性能对比图:
yew
yew
是一个正在活跃开发的Rust/Wasm
框架,用于构建Web
应用。
firecracker
firecracker
是一个安全、高性能的无服务计算虚拟机(FaaS),支持多租户、资源隔离等高级特性,由Amazon公司开发,为AWS部分云计算服务提供了强力有的支持。BTW,亚马逊Amazon公司对于Rust语言的喜爱是众所周知的,几乎已经成了Rust的形象大使之一了:)
nushell
nushell
是一个全新的shell
,使用Rust
实现。它的目标是创建一个现代化的shell
:虽然依然基于Unix
的哲学,但是更适合现在的时代。例如,你可以使用SQL
语法来选择你想要的内容!
tokio
tokio
的名声可以说是如雷贯耳,如果学过Rust但是没有听说过它,那我觉得可能要回炉重造下:)
tokio
是一个异步IO的运行时,提供了I/O
、网络、调度、定时器等等异步编程所必须的功能和工具,性能和功能都异常强大。
AppFlowy
AppFlowy是Notion
的开源实现,使用Rust
和Flutter
进行开发,用于用户文档和数据的管理,支持丰富的自定义特性。
Bevy
bevy是一个数据驱动的游戏引擎,支持2D和3D图形开发,优点是社区活跃、更新快、模块化设计优秀、性能高,缺点是还处于快速开发中,并不适合生产使用。
同时bevy
的文档齐全,官方示例很多,非常适合学习和使用。
actix-web
actix-web是全世界最快的web框架之一,甚至可以把之一去掉,因为排在它前面的看上去像是一个专为跑分而生的轻量级框架,而actix-web
可是功能相当多的!
下面给出actix
和Go语言Gin
框架的性能对比:
iced
iced
是一个跨平台GUI库,具有简单易用、模块化设计、响应式布局等优点。
cube.js
cube.js
是一个数据分析API平台,可以用于构建内部的BI或为现有的应用增加客户数据统计等功能,使用Rust
和Typescript
构建。
wasmer
wasmer是业界领先的WASM
运行时,支持WASI
和Emscripten
。
$ wasmer qjs.wasm
QuickJS - Type "\h" for help
qjs > const i = 1 + 2;
qjs > console.log("hello " + i);
hello 3
tikv
tikv
相信大家都已知道,tidb
的底层存储服务,国人之光项目,在数据之外,还做了大量的技术知识普及工作,值得敬佩!
tikv
是分布式KV
数据库,支持分布式事务。
ruffle
ruffle
是用Rust写的Flash Player
模拟器,同时支持桌面端和Web端,其中后者通过WASM提供支持。
rustdesk
rustdesk
是国内团队开发的一款远程桌面软件。
RustPython
[RustPython
]是使用Rust
实现的Python
解释器, 支持Python3
(CPython >= 3.9.0)。
大家可以通过官方提供的在线网址进行尝试。
vector
vector
是一个性能很高的数据采集agent,采集本地的日志、监控等数据,发送到远程的kafka、jaeger等数据下沉端,它最大的优点就是能从多种数据源(包括Opentelemetry)收集数据,然后推送到多个数据处理或者存储等下沉端。
mdbook
mdbbok
可以基于markdown
文件自动创建在线电子书,非常简单好用,目前的问题就是缺乏章节内部的目录跳转和中文搜索。
zola
zola
是一个静态网站生成器,类似hugo
。
gitui
gitui
是一个奇快无比的Git终端UI,无需浏览器即可使用。
solana
solana
是知名的区块链平台,快速、安全、去中心化,还自带应用市场。
ripgrep
ripgrep
是一个性能极高的现代化grep
实现,后者是Unix/Linux
下的内置文件搜索工具。该项目是Rust的明星项目,一个是因为性能极其的高,另一个就是源代码质量很高,值得学习, 同时Vscode
使用它作为内置的搜索引擎。
从功能来说,除了全面支持grep
的功能外,repgre
支持使用正则递归搜索指定的文件目录,默认使用.gitignore
对指定的文件进行忽略。
citybound
citybound
是一个多人在线模拟游戏,使用Rust + WASM + JS开发。
bottlerocket
bottlerocket
是一个基于Linux
的操作系统,它的目标是为容器提供宿主环境。
lemmy
lemmy
是一个reddit
克隆,可以通过连接聚合的方式来构建社区,支持桌面和移动端。
tantivy
tantivy
是Rust实现的本地搜索库,功能对标lucene
,如果你不需要分布式,那么引入tantivy作为自己本地Rust服务的一个搜索,是相当不错的选择,该库作者一直很活跃,而且最近还创立了搜索引擎公司,感觉大有作为. 该库的优点在于纯Rust实现,性能高(lucene的2-3倍),资源占用低(对比java自然不是一个数量级),社区活跃。
sled
sled
是本地嵌入式的数据库。
#![allow(unused)] fn main() { 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目前的开发进度不是很活跃,不知道发生了什么,未来若有新的发现会在这里进行更新 - Sunface
youki
youki
是一个容器运行时,实现了OCI
标准,性能非常好的同时具备非常高的安全性, 目前来说,它的性能跟crun
差不多,比runc
快50%以上。
slint
slint
是一个GUI工具集,原名sixtyfps, 同时适用于嵌入式系统、桌面系统、移动端、浏览器(WASM),支持使用多种语言进行开发,背后有商业公司的支持,未来前景看好。
slint已于2023年4月发布1.0版本,标志着结束开发模式并已准备好在生产环境中使用。
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
曾经也红极一时,可惜不再维护了,但是依然非常适合做一个编辑器内核。
rust-gpu
rust-gpu的目标是让Rust成为GPU编程的第一梯队语言,由大名鼎鼎的Embark
公司开发,后台较硬。
如果需要通用的GPU
编程,选它就对了。