哪些软件应用值得用Rust重写?
Rust安全、高性能等优点吸引到很多优秀的开发者和公司将原有项目的部分或全部用它重写,下面是知乎上关于该问题的回答,如果你有重写的经验和想法,欢迎分享。
CPU+内存密集型的应用,比如数据压缩领域的gzip、bzip2、xz 等等。我已经把自己的数据压缩应用orz用rust重写了(https://github.com/richox/orz),整体上来看,当前的rust性能已经完全匹敌c/c++,而且开发过程释放了大量脑力,涉及到对内存精细操作的地方不再需要像c/c++那样心惊胆战,也不需要处理c++的长篇编译错误,编译通过基本上就不会再出异常了。这个项目可以做为rust性能的一个实战验证,目前压缩速度快于gzip、压缩率高于bzip2,在整个压缩领域已经处于pareto frontier 的位置了。
——知乎作者 鱼你太美
类似OpenSSL这样的基础软件,几乎已经成了事实上的标准,大家都在用都依赖,堆积了差不多20多年的C代码,据说里面各种古怪的旧代码,奇怪的东西。其实可以考虑重写了的。不过假如重写了之后,原来的攒了20年的OpenSSL的兼容性应该是会丢了,也就不是OpenSSL了。其实以Rust写的目标是替换或者兼容OpenSSL的项目是有的,而且在慢慢的发展。这种东西不是一天两天能完成替换或者取代的。
——知乎作者 杨小小小小小明
推荐阅读知乎上另一个讨论【如何看待Rust应用前景?】
starship 一个小而美的shell提示工具
starship 是一个非常小、极快shell的提示,可以定制,并且支持任何shell。
(html comment removed: )
wasm-astar rust+wasm实现的迷宫
日报曾经发过这个项目,后来发现作者开发过程中的一些疑问都得到了回答,推荐给正在用rust开发wasm项目的小伙伴看看。
- Large wasm file sizes, potential causes, and how to avoid them?
- Is there a better way to store global state?
- Is there a better or faster way to send text from Rust to js?
- How do you send text from js to Rust?
blurHash rust+wasm实现的blurhash算法
blurhash可以将编码后的图像数据通过canvasContext2D.putImageData绘制在canvas画布上。目前该项目还未完成,希望以后能加上benchmark。
import * as blurhash from "blurhash-wasm";
// Returned as Uint8Array | undefined
// You can use this to construct canvas-compatible resources
const pixels = blurhash.decode("LKO2?U%2Tw=w]~RBVZRi};RPxuwH", WIDTH, HEIGHT);
if (pixels) {
// Set the pixels to the canvas
const asClamped = new Uint8ClampedArray(pixels);
const imageData = new ImageData(asClamped, WIDTH, HEIGHT);
const ctx = canvasEl.getContext('2d');
ctx.putImageData(imageData, 0, 0);
}
wapm —— WebAssembly 包管理工具
wasm 是一个WebAssembly 包管理工具,可以安装、管理、发布WebAssembly项目。
From 日报小组 格朗
日报订阅地址:
独立日报订阅地址:
社区学习交流平台订阅: