使用沙盒化、确定性、可重现、高效的 WASM 编译过程宏
该页面是关于 Rust 语言内部讨论的一个预RFC(请求评论)提议,主题是“使用沙盒化、确定性、可重现、高效的 WASM 编译过程宏”。
当前的过程宏(proc-macro)在 Rust 中是通过动态链接库(DLL)实现的,这种方法存在一些问题,如安全性、跨平台兼容性等。
因此,作者 dtolnay 提议使用 WebAssembly(WASM)来编译和执行过程宏,可以带来以下几点优势:
- 安全性:使用 WASM 可以避免不安全的代码执行。
- 跨平台:WASM 是跨平台的,因此可以确保过程宏在不同的平台上都能正常工作。
- 高效性:WASM 可以提供更快的编译速度。
作者详细描述了如何实现这个提议,包括如何编译 WASM、如何与 Rust 的其他部分集成等,该 Pre-RFC 下还有很多社区成员对该提议的反馈和讨论,感兴趣的可以进一步阅读。
那年我15岁,用 Rust 编写了人生第一个项目——QR码生成器
作者 Timur Borisov 分享了他从零开始学习 Rust 的经历。在 Pionir Free School 的一位导师的指导下,他选择创建一个 QR 码编码器作为他的第一个项目。这所学校强调解决社区和社会问题的项目。Timur 选择 Rust 的动机是这门语言广阔的前景和实用的特性,同时,他想探索比 Python 更复杂的东西。文章深入探讨了创建 QR 码生成器的技术方面,包括生成 QR 码的步骤、生成器的架构以及 Reed-Solomon 纠错算法。通过这个项目,Timur 对编程和 Rust 有了更深入的了解。
通过 Timur 的分享,你将对下面几点疑问有更好的认识:
- 选择 Rust: 对于初学者来说,学习 Rust 相对于更受欢迎的语言如 Python 有什么潜在的优势?
- QR 码的实用性: QR 码的纠错能力,如 Reed-Solomon 算法,如何增强其在各种应用中的可靠性和多功能性?
Inkjet - 一个内置了众多功能的语法高亮库
作者 分享了一个名为 Inkjet 的新的语法高亮库。原因是他发现syntect 并不适合他的项目,因此他开始寻找替代品。他找到了 tree-sitter-highlight,这是一个有前景的库,但作者希望支持尽可能多的语言,而不依赖于每种语言的单独crate。因此,Inkjet应运而生。
主要特点:
- 内置了大约60种语言的语法,总计约1100万行C代码,并链接到可执行文件中,无需在运行时加载任何内容。
- 可插拔的格式化程序,包括一个基本的 HTML 格式化程序。
- 可以从一个像 rs 这样的标记中查找语言。
- 可以高亮到一个 String 或 std::io::Writer。
- 仍然是一个正在进行的工作(WIP),作者希望至少添加更多的语言,并看看是否可以加快构建时间,但在他的原始项目中它工作得很好。
-- From 日报小组 RustPlumber
社区学习交流平台订阅:
评论区
写评论还没有评论