本文是其中的一部分Techxchange.在生锈的编程。
虽然C和C ++仍然是嵌入式编程的骨干,但有备选方案通常会在提供低级控制和资源管理的同时提供生产力,安全性和可靠性等领域的改进。其中一个更新的替代方案是锈, 一个新兴编程语言旨在成为“安全,并发的实用语言”。它旨在提供安全的内存利用率,而无需对与Java一起使用的透明垃圾收集器需要透明的垃圾收集器。
RUDR包括模式匹配,基于特质的泛型和零成本抽象等功能,但其围绕其保证的内存安全和没有数据种族的线程的名称中心。内存和多任务趋势往往是由于其限制性编译器较少而导致C和C ++应用程序引起问题的区域。
铁锈开始了Mozilla.,为您带来Firefox Web浏览器的组织。Rust现在有自己的开源社区。您可以在Rust网站下载编译器,文档和工具。社区非常活跃,但商业编译器支持是生锈与C ++这样的生锈和既定语言之间存在巨大的海湾。
Rust通过语言语义获得内存安全支持。例如,变量由默认值与C和C ++(以及最令人必需的编程语言)不可变,默认情况下变量是可变的。变量可以明确地定义为可变变量。
哈斯克尔等功能编程语言也具有不变的变量,尽管它们包括通过稍后可以获得值的变量的能力。具有不可变变量的一个原因是它使程序的方面更容易。它还提高了代码的可读性,这在代码审查以及维护中可能很重要。不变性也在缓存和平行处理中具有影响。
此外,在指向指针时,Rust在C程序员的BANE时具有更严格的语义。Rust有指针的所有者和借款人的概念。借用的指针可以作为参数传递,但它们没有C指针的任意可易换性,因为Rust强制执行寿命。Rust跟踪引用的数据的生命周期,不会允许使用所引用的项目的生命周期的借用指针。例如,不允许返回指向函数的局部变量的指针。这些错误在C应用程序中是常见的,假设程序员知道他们正在做的事情。
Rust编译器由于Rust的语义而比C或C ++进行了更多的支票,但它没有正式证明检查安全性关键应用程序是否经常进行。这种类型的检查是Spark,ADA的子集,并且有验证工具和方法在安全性和安全性的关键环境中使用C和C ++,但这些通常是增强手动认证。
这鲁布尔项目旨在提供正式的证明检查生锈的子集。“鲁道茨:保护锈编程语言的基础,”RALF Jun,Jacques-Henri Jourdan,Robbert Krebbers和Derek Dreyer的一篇论文概述了Rust,以及可以应用哪些正式证明以及这是如何完成的。证明检查已应用于许多生锈库,并且还有更多的工作要做。它是一种很好的第一步,当生锈在安全关键应用中使用时需要。
我之前提到了Spark,但这里有值得重复,因为Spark已经融入了商业基础的编译器中的正式证明检查,以及开源实现。Spark是A.ADA 2012的子集。两者都包含ADA合同。Rust有一个与C和C ++更相似的语法,但是Spark和Ada倾向于与C和C ++更具更多的语义。
Rust有一个积极和强大的社区。它正在许多项目中使用,并且在自动驾驶汽车等地区的研究也在利用它。我不知道这一点上使用生锈的任何商业嵌入式应用程序。
正在寻求可比支持的C和C ++开发人员应检查可用的众多静态分析产品。这不会提供生锈或火花的相同级别的支持,但它们提供比内置于任何C或C ++编译器的高度支持。他们是迁移到新的编程语言的替代方案。
阅读更多文章Techxchange.在生锈的编程。