【Rust日报】2024-04-23 C++ 中的问题在 Rust 中仍然存在吗

2024-04-25 14:44:41 浏览数 (2)

C 中的问题在 Rust 中仍然存在吗

这是 Reddit 上的一个讨论帖,主要讨论集中在 C 中存在的一些问题是否仍然存在于 Rust 中,以及这些问题如何影响开发者使用 Rust。具体问题包括:

  • 泛型和模板的单态化:C 的模板和 Rust 的泛型都需要通过单态化处理,这会导致编译时间长和生成的二进制文件大。避免这一问题需要以完全不同的方式重写代码。
  • 对 libc 的依赖:两种语言的标准库都依赖于平台的 libc,这不仅导致了典型的二进制文件体积大,还带来了各种开发难题。
  • RAII 机制和资源处理错误:C 和 Rust 都使用 RAII 机制管理资源,但在资源释放时不能很好地处理错误,尤其是在文件关闭可能报错的情况下。
  • 编译和测试时间相似:尽管Rust在许多方面提供了改进,但在编译和测试时间上与 C 相似,仍然较长。

看来在大家眼里,从 C 到 Rust 虽有许多改进,但某些核心问题仍未得到解决

原帖链接 https://www.reddit.com/r/rust/comments/1cajncc/what_are_problems_with_c_that_persist_in_rust/

gitoxide 的性能优化

gitoxide 项目中引入了 status() 迭代器,它使得在处理 git 仓库状态时更加高效。此外,项目还实现了无需使用 git2 库的 onefetch 功能,显著提升了性能。

新的 gix-status 库允许并行处理且支持重命名跟踪,而 gix-dir 库则用于遍历目录并找到未跟踪的文件。这些改进使gitoxide能更高效地处理文件状态和目录遍历。

通过增加并行处理和优化 API 的设计,gitoxide 在多个知名的代码仓库中展示了比 git2 更好的性能表现(gitoxide的新功能已被应用到 Cargo 项目中,并提高了API的可用性)

github discussion 链接 https://github.com/Byron/gitoxide/discussions/1351

Rust Analyzer 更新日志

Rust Analyzer 的最新改进,包括新功能、修复和内部改进,新功能主要有:

  • 增加了一个辅助功能来包装或解包 #[cfg_attr] 属性。
  • 新增一个辅助功能,可以将 From trait 转换为 TryFrom trait。
  • 增加了对 minimal cargo-script 的支持。
  • 允许 .rs 文件被用作 linkedProjects

此外还包含了一些 bugfix,详情请见原文

changelog 链接 https://rust-analyzer.github.io/thisweek/2024/04/22/changelog-230.html

0 人点赞