这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » Rust编程语言推出独特“借阅检查器”功能

共4条 1/1 1 跳转至

Rust编程语言推出独特“借阅检查器”功能

工程师
2021-06-15 17:47:33     打赏

近年来,消费、医疗、农业、工业以及其他领域对物联网(IoT)连接的需求不断增长,产品开发咨询公司42 Technology表示,制造商希望为最终用户带来与众不同的产品,因此想利用物联网连接来添加功能,或为基于服务的产品生成新的数据流。

IoT连接中的硬件包括电池供电的便携式小型设备,其中很多都采用Arm Cortex-M系列嵌入式处理器,例如Nordic Semiconductor的nRF9160 SiP核心采用了M33处理器。

到目前为止,开发人员仅能够使用C++或C++语言对这类Cortex-M器件进行编程。现在42 Technology提出了第三种选择,即Rust编程语言,为开发人员带来许多有用的新功能。

充分利用资源

Rust编程语言必须在高性能和能有效使用资源的平台和环境下使用,它还引入了一些功能来帮助开发人员提高效率并生成更安全的代码。例如,Rust提供了称为Cargo的软件包管理器,就像Python的pip或Node的npm一样,可以让开发人员从中央存储库中提取开源软件包,在其项目中轻松使用。

Rust的另一项独特功能是“借阅检查器”,它是编译器的一部分。在编译期间,该工具能够检查代码,以确保两段代码不会同时访问同一数据(这是未定义的行为)。换句话说,如果一个函数被调用了,开发人员需要指定这次调用是临时(专有的或作为共享借入)“借入”该数值,或取得该数值的所有权。

这款语言具有安全性、高速度和高生产力。根据42 Technology报道,微软、Dropbox、Facebook、谷歌、Cloudflare等公司都已成功将Rust语言应用于新项目,包括用于云基础架构,谷歌还将其用于下一代移动操作系统Fuchsia中。

在Rust嵌入式工作组的大力推动下,Rust已经发展到“1.0”版本,可支持许多嵌入式平台,越来越多的企业也利用同样的技术优势来支持小尺寸低功耗系统,例如Nordic的nRF52和nRF53系列短距无线SoC,以及nRF9160低功耗蜂窝物联网SiP。

Rust的套接字

nRF9160开发人员可以直接或通过Zephyr使用Nordic Socket API,这个API严格遵循标准Berkeley套接字API(有如在Linux和Windows中使用)。但它也有一些缺点,例如套接字和套接字家族都使用“int”类型,如果开发人员将它们混淆,编译器将不能工作。另外,开发人员必须记住在套接字中调用“nrf_close”,因为如果变量超出范围,套接字将出现泄漏,从而在运行时难以调试。

为了使Rust开发人员能够很好地利用这一功能强大且经过良好测试的程序库,同时帮助他们避免意想不到的错误,42 Technology针对Nordic套接字库开发了Rust包装器。Rust包装器使用高级别并且分类严谨的对象,例如“TcpSocket”和“AtSocket”,它们在超出范围时会自动关闭,并允许开发人员发送格式化数据(图1)。

Rust编程语言推出独特“借阅检查器”功能

图1:针对Nordic套接字库建立的Rust包装器使用分类严谨的对象,例如“TcpSocket”和“AtSocket”,当它们超出范围时会自动关闭,并允许开发人员发送格式化数据。

这种方法非常有效,42 Technology表示可以使用Cloudflare的新Rust语言QUIC库进行开发,直接在nRF9160上运行世界上首个QUIC(即将发布的HTTP/3标准的一部分)示例。

Rust + Zephyr

Rust的另一个优点是可以与Zephyr RTOS混合使用。Rust库可以编译为标准的C静态库,从而与所有开发人员现有的C和C++项目关联。某些项目甚至只需一次替换一个函数,就可以从C语言转换为Rust语言。例如,使用SVG库,其中的库具有相同的API但在内部运行得更快、更安全。

Rust编程语言旨在提高性能、安全性和开发人员生产力,适合不同规模的项目——从超大规模云基础设施到最小的Cortex-M微控制器。此外,由于它可以编译为标准目标码文件,因此开发人员可以充分利用其所有优点,同时仍然将其集成到现有的C和C++项目中。




关键词: Rust     C++    

高工
2021-06-17 23:43:21     打赏
2楼

rust真的好用


工程师
2021-06-19 13:42:07     打赏
3楼

功能设计的还是蛮不错的


工程师
2021-06-20 16:18:43     打赏
4楼

感谢楼主分享


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]