< 返回版块

rust 日报 babpstep 发表于 2024-09-10 21:48

FerrumC - 另一个高性能的 Minecraft 服务器实现

FerrumC 是一个用 Rust 编写的 Minecraft 服务器实现,完全从头开始编写,包括数据包处理、NBT 编码/解码、自定义的 ECS 等功能。

服务器完全多线程,支持 16 个方向的区块加载,内存使用量仅为 10~14MB,远低于原版 Minecraft 服务器。

目前支持 1.20.1 版本,可以进入世界并自由漫游,但一些功能尚未完全实现,仍在积极开发中。最终目标是提供一个强大且可扩展的平台,提供一流的插件开发支持,方便开发者扩展功能

github地址

类似的项目还有:

rav1d - 高性能且内存安全的 AV1 解码器

为了开发一个高性能且内存安全的 AV1 解码器,团队将现有的 C 语言解码库 dav1d 移植到 Rust,创建了 rav1d,其主要动机是,复杂的数据解析是现代软件中最具安全风险的操作之一,通过将不安全的 C 代码转换为内存安全的 Rust 代码,rav1d 在保持高性能的同时,避免了解码过程中常见的内存安全漏洞。

移植过程中,使用 c2rust 工具将 C 代码转译为不安全的 Rust 代码,然后手动重构安全的 Rust 代码。这个过程虽然耗时,但确保了代码的兼容性和功能完整性。

这个过程中,主要的挑战包括线程安全、内存管理和指针处理,主要有如下经验:

  • 并发访问:创建了一个名为 DisjointMut 的缓冲区包装类型,允许对缓冲区进行不重叠的并发可变访问。在调试版本中,跟踪每个借用范围,以确保线程不会借用重叠的数据。
  • 指针重构:将缓冲区指针重构为整数索引,并移除了子结构到其容器的指针,通过传递额外的结构引用作为函数参数来解决这个问题。

原文链接 github地址

rusty awk - Awk 的全新实现

这是来自 posixutils-rs 的一个全新的 awk 实现,posixutils-rs 的目标是创建符合 POSIX 规范的 Rust 核心命令行工具

相似的项目还有 coreutils,但是其范围更窄,旨在兼容 GNU coreutils,而不是 posix 规范。

github地址

-- From 日报小组 RustPlumber

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页