前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Rust日报】2021-11-02 —— 使用Rust进行嵌入式编程

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

作者头像
MikeLoveRust
发布2021-11-12 11:03:08
7940
发布2021-11-12 11:03:08
举报

使用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 语言中文社区
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用Rust进行嵌入式编程
    • Rust & 嵌入式
      • 为什么使用Rust进行嵌入式编程
        • 如何在C代码中调用Rust
          • 如何在Rust中调用C代码
            • 最后
            • Horcrux:在Rust中实现Shamir密钥共享(第1部分)
            • 【Reddit讨论帖】你觉得Rust目前还缺乏哪些成熟的开源库?
            相关产品与服务
            图片处理
            图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档