【Rust日报】2024-05-27 将静态分析器从 Java 迁移到 Rust
内容提要
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++。