【Rust日报】2021-11-02 —— 使用Rust进行嵌入式编程

2021-11-12 11:03:08 浏览数 (1)

使用Rust进行嵌入式编程

Use Rust for embedded development

篇首语

Rust的高性能、可靠性和生产力使其适合于嵌入式系统。

在过去的几年里,Rust在程序员中获得了热情的追随。技术趋势来来往往,因此很难区分新事物带来的兴奋与技术优势带来的兴奋,但RT-Thread社区开发人员Liu Kang认为Rust是一种真正设计良好的语言。Kang说,Rust旨在帮助开发人员构建可靠、高效的软件,它从一开始就是为了这个目的而设计的。在本文中,Kang演示了Rust的许多关键特性,这些特性正是Rust适合嵌入式系统的原因。

Rust & 嵌入式

Rust有如下特性使其特别适合嵌入式开发:

  • 高性能:快速和高度优化的内存模型;
  • 可靠性:内存错误可在编译期间被发现和排除;
  • 生产力:优秀的文档、带有有用错误提示的友好编译器和一流的工具。有一个集成的包管理器和构建工具,支持自动补全和类型检查的智能多编辑器,一个自动格式化程序,等等。
为什么使用Rust进行嵌入式编程

Rust被设计成保证内存安全和高性能,而嵌入式程序常常遇到的是内存问题,使用Rust可以保证编写的程序只要通过编译器检查即是内存安全的,以下是使用Rust进行嵌入式设备开发能获得的好处:

  • 强大的静态代码分析;
  • 灵活的内存模型;
  • 无畏并发;
  • 互操作性;
  • 可移植性;
  • 社区驱动;
如何在C代码中调用Rust

在这里,作者以如何在RT-Thread项目中调用Rust静态链接库的代码为例:

第一步,使用Rust工具创建和编写静态链接库类型的项目;

第二步,交叉编译,生成静态链接库;

第三步,生成C代码的头文件(使用cbindgen);

第四步,调用Rust生成的库文件(使用SCons编译工具来集成代码)。

如何在Rust中调用C代码

这里指的是如何在Rust中调用C代码,然后Rust代码再被C代码调用,由于最终还是C代码调用Rust代码,因此关注点还是把Rust代码编译为静态链接库,然后供C代码调用。

最后

在嵌入式开发中使用Rust可以享受Rust的所有特性带来的优势,而无需牺牲灵活性或稳定性。有关嵌入式Rust编程(以及RT-Thread本身)的更多信息,请查看RT-Thread项目的YouTube频道。

记住,嵌入式也可以是开放的。

关于RT-Thread项目

一种新的面向嵌入式系统的开源操作系统

项目地址:https://www.rt-thread.org/


Horcrux:在Rust中实现Shamir密钥共享(第1部分)

Horcrux: Implementing Shamir's Secret Sharing in Rust (part 1)

就像我在之前一篇博客中提到过的那样,归因于内存安全、强类型、简单易用的单元测试和高性能等特性,我认为Rust是一门极好的用来实现加密算法的编程语言。

Horcruxs是一个用来展示如何用Rust来实现Shamir共享密钥算法的程序例子,目前它还不能被用于生产中。

从这篇博客开始,作者将从基本的数学原理开始讲起,并带领读者学习如何用Rust来实现Shamir共享密钥算法(关于Rust实现部分的讲解需要等到下一篇博客,有兴趣的读者可以关注作者的动态)。

项目地址:https://github.com/gendx/horcrux


【Reddit讨论帖】你觉得Rust目前还缺乏哪些成熟的开源库?

What sort of mature, open-source libraries do you feel Rust should have but currently lacks?

总结一下帖子下提到的呼声比较高的库:

  1. 类似Cuda的GPU/GPGPU库;
  2. 图片处理相关的库,支持WebP、XBM、XPM等格式;支持类似python中Pillow库功能的图片处理库;
  3. 图像处理库;
  4. 纯Rust实现的解压缩算法库,支持LZMA、BZip2等格式及其衍生格式;
  5. 文档处理库,支持PDF、ODF、OOXML、EPUB、MOBI等格式的解析和提取操作;
  6. 检验和相关的库;
  7. Qt相关的生成和绑定库;
  8. 完全支持XML格式文档的读写操作的库;
  9. LLVM高级绑定的库;
  10. 机器学习相关的库;

更多想法和细节欢迎围观该讨论帖。


From 日报小组 odd-cat

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss
  • 微信公众号: Rust 语言中文社区

0 人点赞