【Rust日报】在开发无法实际访问的远程硬件系统时(如火星探测器或海洋航运器),应该采用何种编程语言和设计理念

科技   2024-11-15 15:20   加拿大  

在开发无法实际访问的远程硬件系统时(如火星探测器或海洋航运器),应该采用何种编程语言和设计理念

这篇文章讨论了在开发无法实际访问的远程硬件系统时(如火星探测器或海洋航运器),应该采用何种编程语言和设计理念。作者对比了两种观点:

  1. Rust语言的理念是在开发初期就确保程序的正确性,这样一旦部署就可以永久运行而无需修补。

  2. Elixir/BEAM VM语言的理念是允许出错,但提供了恢复错误的机制,即"让它崩溃"(Let it crash)。

一位评论者提到,虽然无法远程修补代码,但硬件本身也可能会发生老化等物理故障。他认为如果真的无法修补,Rust的理念会让人更加放心。但要注意除了类型安全外,还需要使运行时系统具备容错其他硬件降级错误的能力。

另一位评论者指出,即使是火星探测器这种极端情况,NASA也曾利用Lisp的REPL在1.5亿英里外成功远程调试过代码。因此即使无法修补,通过良好的设计也不是完全无法调试和恢复。

https://www.reddit.com/r/elixir/comments/1gp34om/language_philosophies_for_distant_hardware/

Alum - Rust实现的类OpenMesh的网格库

Alum使用半边数据结构(Halfedge)实现的多边形网格库。它的灵感来自于OpenMesh,因此API与OpenMesh非常相似。作者由于在Rust中找不到等效的库,因此编写了这个库。该库目前的功能是为了服务于作者的其他项目,与OpenMesh的Core模块功能相当,将来可能还会根据需要添加新功能。

该库可以通过crates.io作为依赖添加到Rust项目中。它默认使用glam提供几何类型(如点、法向量等),也可以通过实现适配器使用自定义几何类型。该库还包含了一个属性系统,类似于OpenMesh但做了一些改进,使用RefCell确保运行时借用检查。属性会随着网格元素的增删和垃圾回收而自动同步。文档中有更多关于使用属性系统的详细说明。

https://github.com/ranjeethmahankali/alum/

Flusso - 高性能的Kubernetes Ingress控制器

Flusso是一个用Rust语言编写的轻量级、高性能的Kubernetes Ingress控制器。它为现代云原生环境提供了安全性和灵活性。以下是Flusso的主要特点:

  1. 轻量级和高速:使用Rust编写,占用资源少。
  2. 高级负载均衡:支持自定义负载均衡算法。
  3. 安全设计:实现了现代TLS协议。
  4. 动态后端:自动根据Kubernetes服务变化更新路由。
  5. 灵活配置:可通过YAML文件或环境变量轻松配置。
  6. 最小依赖关系:避免不必要的依赖项。

您可以使用Docker或Helm在Kubernetes集群中部署Flusso。它通过监视Ingress资源自动将传入流量路由到服务。Flusso还提供Web GUI用于监控后端和路由。

https://github.com/DioCrafts/flusso

rust-portscanner - 多线程端口扫描器

这是一个用Rust编写的简单高效的多线程端口扫描器。它可以扫描指定主机上的开放和关闭的服务器端口。主要特点包括:

  1. 多线程扫描:利用所有可用的CPU内核,最大化扫描过程的性能和速度。

  2. 并发性:利用tokio运行时进行异步网络操作。

  3. 用户友好的命令行界面:使用clap进行命令行参数解析。

该项目需要Rust、tokio异步运行库、clap命令行参数解析库和可用CPU内核数。可以通过git克隆仓库,使用cargo构建和运行: cargo build --release ./target/release/port_scanner

总的来说,这是一款功能强大的Rust编写的端口扫描工具。

https://github.com/ash2228/rust-portscanner

--

From 日报小组 Mike

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss
  • 微信公众号:Rust语言中文社区


Rust语言中文社区
Rust官方及社区最新信息搜集、文章推送,教程学习,技巧分享,社区交流。信息来源是整个全球Rust社区。
 最新文章