【Rust日报】2024-05-27 将静态分析器从 Java 迁移到 Rust

💡 原文中文,约1000字,阅读约需3分钟。
📝

内容提要

Datadog将其静态分析器从Java迁移到Rust,将分析时间缩短了三倍,并消除了对JVM的依赖。大约20%的Rust crates使用“unsafe”关键字,通常用于调用非Rust代码或库。Rust Foundation开发了像Miri这样的工具来维护生态系统的安全性。文章还讨论了使用鸢尾花数据集将CSV数据集加载到NDArray中的示例。

🔎

延伸解读

迁移静态分析器:性能提升与架构简化

Datadog将静态分析器从Java迁移到Rust后,分析时间减少了三倍,并消除了对JVM的依赖。这意味着分析器可以更轻量地嵌入IDE,提供实时反馈。迁移中的主要挑战包括理解Copy和Clone trait、借用检查器以及并行处理,这些是Rust特有的概念,需要团队适应。这一案例表明,对于性能敏感的工具,Rust能带来显著的效率提升和部署简化。

unsafe代码在Rust生态中的实际使用

Rust基金会报告显示,约20%的crates使用了unsafe关键字,主要用于调用非Rust代码或库,如C/C++或Windows API。尽管unsafe代码需要特别小心,但并非天然存在漏洞。截至2024年5月,145,000个crates中,19.11%使用了unsafe,34.35%直接调用了使用unsafe的其他crates。这反映了Rust生态与外部代码交互的普遍性,也凸显了安全工具的重要性。

Rust安全工具与生态维护

为维护Rust的安全性,Rust项目开发了Miri等检查工具,用于检测unsafe代码中的未定义行为。Rust基金会通过安全计划推出了依赖关系图Painter、错别字检测工具TypoMania和恶意crates监控工具Sandpit,帮助识别和响应潜在的安全问题。这些工具共同构成了Rust生态的安全防线,使开发者能更放心地使用第三方库。

将CSV数据加载到NDArray的实践

文章以鸢尾花数据集为例,探讨如何将现实世界的CSV数据集加载到ndarray::Array中。过程涵盖高层次特征和样本分析,包括样本数量、特征数量、数据类型、缺失值等。这为使用Rust进行数据分析提供了实用指导,展示了ndarray库处理真实数据的能力。

❓

Q&A

Datadog为什么选择将静态分析器从Java迁移到Rust?

Datadog选择迁移到Rust是因为分析时间减少了三倍,并消除了对JVM的依赖。

迁移过程中遇到了哪些主要挑战?

主要挑战包括理解Copy和Clone trait、借用检查器以及并行处理。

Rust crates中使用unsafe关键字的比例是多少?

约20%的Rust crates使用unsafe关键字,具体为19.11%的145,000个Rust crates。

Rust基金会为维护生态系统安全开发了哪些工具?

Rust基金会开发了Miri、Painter、TypoMania和Sandpit等工具,以维护生态系统的安全性。

如何将CSV数据集加载到NDArray中?

文章探讨了使用鸢尾花数据集作为示例,逐步涵盖高层次特征和样本分析的方法。

使用unsafe关键字的Rust代码主要用于什么?

这些代码主要用于调用第三方非Rust语言的代码或库,如C或C++。

🏷️

标签

➡️

继续阅读