< 返回版块

Mike Tang 发表于 2024-11-02 23:43

neohtop - 使用 Tauri、Rust 和 Svelte 构建的现代跨平台系统监视器

neohtop 是一个使用 Tauri、Rust 和 Svelte 构建的现代跨平台系统监视器。它具有以下主要功能:

  1. 实时监控进程
  2. 跟踪 CPU 和内存使用情况
  3. 美观的现代 UI,支持深色/浅色主题
  4. 进程搜索和过滤
  5. 固定重要进程
  6. 进程管理(杀死进程)
  7. 按任意列排序
  8. 自动刷新系统统计数据

技术栈包括前端使用 SvelteKit 和 TypeScript,后端使用 Rust 和 Tauri,样式使用 CSS 变量进行主题化,图标使用 FontAwesome。

开发环境需要 Node.js (v16 或更高版本)、Rust (最新稳定版)和 Xcode 命令行工具(仅适用于 macOS)。安装依赖、运行开发模式、构建生产版本和构建通用 macOS 二进制包的命令也在总结中给出。

https://github.com/Abdenasser/neohtop

async Rust io uring 库可能的漏洞

这篇文章讲述了一个名为Barbara的工程师在尝试将她的异步Rust Web服务从使用epoll驱动转换为io_uring驱动时遇到的问题。主要内容如下:

  1. Barbara最初编写了一个简单的TCP服务器示例,使用monoio这个支持epoll和io_uring的运行时库。代码看起来与使用Tokio时没什么区别。

  2. 为了增加处理超时的功能,Barbara使用了select!语句,允许服务器在一定时间无连接时执行其他任务。这在io_uring下也工作正常。

  3. 但是当Barbara真正将服务部署到生产环境后,发现有些客户端请求从未被处理。进一步调查发现,尽管客户端线程能正常连接,但服务器主线程一直在触发超时,无法正常接收新连接。

  4. 文章指出,这是因为使用io_uring驱动程序时,存在潜在的TCP连接泄漏问题,而在epoll下则没有这个问题。而且这是所有io_uring运行时库都存在的通病。

  5. 最后作者呼吁Rust社区重视这个问题,因为它违背了Rust"安全无数据竞争"的保证,可能会导致性能下降和连接受限等严重后果。

https://tonbo.io/blog/async-rust-is-not-safe-with-io-uring

升级Rust旧代码需要注意的一些事项

该博客文章总结了作者在将一个现有的 Rust 项目从较旧的 Rust 版本重写为最新版本时的一些经验教训。主要内容包括:

  1. 明确项目的目标和期望,对比重写和渐进式重构的利弊。

  2. 利用最新的 Rust 编译器版本及相关工具(如 miri)来检测代码中的未定义行为(Undefined Behavior)。

  3. 审视代码库中的技术债务,确定需要重构的部分。逐步重构关键部分,而非一次性全部重写。

  4. 注意处理好并行安全(data race)、锁顺序deadlock等多线程相关的问题。

  5. 合理使用异步编程模型,避免过度同步等反模式。

  6. 密切关注编译器升级的变化,及时采纳新的语言特性和最佳实践。

  7. 重写过程中注重测试覆盖率,并保持向后兼容性。

  8. 与社区保持沟通,促进经验交流和最佳实践的分享。

文章还分享了一个实际的未定义行为示例,体现了 miri 工具在发现这类潜在 bug 中的重要作用。

https://gaultier.github.io/blog/lessons_learned_from_a_successful_rust_rewrite.html

为什么涉及到的高质量工具几乎都是用Rust编写的?

该Reddit帖子提出了一个疑问:为什么涉及到的高质量工具几乎都是用Rust编写的?作者表示,在尝试各种计算机工具的过程中,每当发现一个体验良好、流畅、漂亮的工具时,几乎都是用Rust编写的,如Dufs文件服务器和GlazeWM窗口管理器。作者怀疑是否是Rust语言吸引了优秀的开发者,还是仅仅是一个幸运的巧合。该帖子反映了Rust在制作高质量工具方面的突出表现,引发了人们对Rust语言和社区的思考。

https://old.reddit.com/r/rust/comments/1gfs7zz/sincere_question_what_is_up_with_all_these_great/

--

From 日报小组 Mike

社区学习交流平台订阅:

评论区

写评论
asuper 2024-11-06 10:57

Over the years, I have noticed a trend. Every time I try something and say... "damn, this tool is good/smooth/nice"... almost always, it's written in rust.

开始看到标题我也是想: 差不多得了。。。

看了下面的讨论,感觉还是有点道理

g-mero 2024-11-05 09:24

《几乎》,逆天rust侠

Ryan-Git 2024-11-04 16:54

iouring 取消的问题应该都知道了吧。。。

1 共 3 条评论, 1 页