< 返回版块

Mike Tang 发表于 2025-01-19 17:37

Fjall - 一个基于LSM树的嵌入式键值存储引擎

Fjall是一个基于LSM树的嵌入式键值存储引擎,旨在提供高性能、可靠性和易用性。

https://fjall-rs.github.io/post/fjall-2-5/

Rust不止是性能出众

Rust 编程语言的优点,除了它的性能之外,还有其它:

  1. 内存安全:Rust 的最大优势之一是它的内存安全性。通过编译时的所有权检查,Rust 可以防止内存泄漏和数据竞争,无需垃圾回收。这意味着开发者可以在没有额外开销的情况下获得高效的内存管理。

  2. 并发性:Rust 的所有权系统不仅确保内存安全,还提供了并发编程的强大支持。通过所有权和借用机制,Rust 能够避免许多并发编程中的常见错误,比如数据竞争。

  3. 错误处理:Rust 提供了清晰且可靠的错误处理机制。通过 ResultOption 类型,Rust 强制开发者在编写代码时考虑并处理潜在的错误,而不是忽略它们。这样可以避免运行时错误的发生。

  4. 开发者体验:Rust 提供了一些优秀的工具和功能,比如 cargo(Rust 的构建工具和包管理器)以及强大的文档生成工具。Rust 的文档和社区也非常活跃,开发者可以轻松找到帮助和支持。

  5. 跨平台支持:Rust 可以运行在多种平台上,包括嵌入式系统和 WebAssembly。这使得它非常适合多种应用场景,从底层系统开发到前端应用。

  6. 生态系统和库:Rust 的生态系统正在快速发展,许多高质量的库和工具已经可以满足开发者的各种需求。Rust 社区积极推动开源项目,并且许多流行的工具和库已经实现了对 Rust 的支持。

  7. 构建可靠的代码:Rust 强制开发者编写可靠且易于维护的代码。语言的设计理念鼓励开发者避免隐式行为,并且使得代码更加健壮。

  8. 小巧的二进制文件:Rust 编译出的二进制文件通常比其他语言(如 Java 或 Python)小,且不依赖运行时环境,因此它们适合在资源受限的环境中使用。

https://ntietz.com/blog/great-things-about-rust-beyond-perf/

Rust编译到.NET的编译器的2024进展

以下是关于 rustc_codegen_clr(Rust 编译器生成 .NET 代码的工具)在2024年的进展

1. 同步 Rust 夜间版本

作者成功地保持了项目与 Rust 每日构建版本的同步,尽管这需要不断修复新出现的 bug,并调整项目代码以适应不稳定的编译器 API。尽管有挑战,但项目没有出现重大回归。

2. 修复 bug 和增加测试通过率

  • 测试通过率:尽管核心功能的内建函数和测试逐步增加,测试通过率从大约 95% 提升至 96.6%。
  • 限制因素:由于一些测试超出了 .NET 的内存限制或设置了时间限制(例如某些测试需要超过 20 秒),测试结果略显保守。某些通过限制的测试仍有可能在没有这些限制的情况下通过。

3. 性能优化

  • 迭代器性能的优化:Rust 风格的迭代器对 .NET JIT(即时编译器)并不友好。通过优化,作者成功将性能提升了五倍。例如,迭代器基准测试在 .NET 上的表现从 1,541.62 ns/iter 降到 309.14 ns/iter,虽然仍然比原生 Rust 慢 2 倍,但已大有改善。
  • 字节码大小优化:通过对字节码进行优化,减少了大约一半的字节码大小,这不仅加速了运行时的表现,也提高了编译速度。

4. 优化 C 源文件

通过减少 C 源文件的大小,提高了 Rust 编译成 C 的速度,同时也为一些表现较差的 C 编译器(如某些嵌入式编译器)提供了优化空间。

5. 其他项目

  • Seabridge:这是一个 C++ 和 Rust 互操作性的尝试,旨在通过 Rust 代码生成 C 兼容的类型定义,并在 C++ 中进行调用。作者已经能成功地生成一些核心库的 C++ 绑定,并尝试将 Rust 的 ABI 转换为 C ABI,支持在 C++ 中调用 Rust 函数。
  • Rust 与 C++ 的互操作:通过模板和特化,作者尝试使 Rust 泛型类型在 C++ 中得以映射,并且实验成功地生成了一些匹配 Rust 类型的 C++ 类型定义。

6. 未来计划

  • 由于临近考试,项目的开发速度可能会放缓一段时间。
  • 在优化方面,作者计划继续优化性能,目标是使所有基准测试的性能都在原生 Rust 的 2 倍以内。
  • 将继续提升测试通过率,并探索支持更多 C 编译器(如 sdcc)。
  • Seabridge 项目也会继续发展,从概念验证转向技术演示,进一步提高与 Rust 和 C++ 之间的互操作性。

总的来说,作者对项目的进展表示谨慎乐观,虽然仍面临一些挑战,但已经在性能优化和跨语言互操作方面取得了显著进展。

https://www.reddit.com/r/rust/comments/1hwnv6k/rust_to_net_compiler_end_of_2024_update/

--

From 日报小组 Mike

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页