< 返回版块

苦瓜小仔 发表于 2025-05-23 07:52

Tags:日报

Bevy Jam #6 - 社区创作游戏竞赛

Bevy Jam #6 是一场为期9天的游戏开发活动,旨在使用Bevy游戏引擎(基于Rust)创作游戏。活动鼓励新手参与,提供学习资源和社区支持。

参与者可以通过Bevy Discord交流、组队。活动提供模板和实验性工具(如bevy_cli和bevy_simple_subsecond_system)帮助开发者快速上手。

主题由社区投票决定,最终从得票最高的5个主题中随机选择。参赛作品需遵循规则,包括使用Bevy引擎、原创性、合法使用资产等。作品将根据游戏设计、执行、图形和音频等方面评分,获胜者可从Bevy商品店中选择奖品。

网站:https://itch.io/jam/bevy-jam-6

Reddit:https://www.reddit.com/r/rust/comments/1kt03fc/bevy_jam_6/

文章《Making the rav1d Video Decoder 1% Faster》

作者:ohadravid

这篇文章讲述了作者尝试优化 Rust 版本的 AV1 视频解码器 rav1d 的过程。

作者通过使用 samply 采样分析器对 rav1d 和其 C 语言版本 dav1d 在相同输入下的运行情况进行分析,发现了一些性能瓶颈并进行了优化。具体优化措施包括:

  1. 在一个热点的 Arm 特定代码路径中避免了昂贵的零初始化操作,通过将 Align16 中的 tmp_buf[0u16; TMP_LEN] 改为 [MaybeUninit::<u16>::uninit(); TMP_LEN],并将 lr_bak 提升到顶层以避免重复初始化,使得运行时间减少了 1.2 秒(约 1.6%)。
  2. 将一些小的数值结构体的默认 PartialEq 实现替换为将它们重新解释为字节的优化版本,通过使用 zerocopy crate 静态验证结构体表示为 &[u8] 的安全性要求,从而避免了 unsafe 块,运行时间进一步减少了 0.5 秒(约 0.7%)。

这些优化总共使 rav1d 的性能提升了约 2.3%,尽管与 dav1d 仍有约 6% 的差距,但作者认为通过比较 dav1drav1d 的分析快照,仍有更多优化空间。

阅读:https://ohadravid.github.io/posts/2025-05-rav1d-faster/

Reddit:https://www.reddit.com/r/rust/comments/1ksnljw/making_the_rav1d_video_decoder_1_faster/

文章《Gitoxide in May》

作者:Byron

GitoxideLabs 在 2025 年 5 月的讨论记录涵盖了多个方面的进展和活动。

团队成员参与了 RustConf,讨论了可持续开源开发等话题,并与 Trifecta 基金会探讨了 Sovereign Tech Fund 申请,以加速 gitoxide 的开发。

在技术方面,gix clean 功能现在默认关闭对珍贵文件的解析,以避免潜在问题,用户可以通过配置变量或环境变量启用。此外,gix blame 的准确性得到了改进,接近 Git 的水平,且正在优化以提高性能。gix 还被集成到 Cargo 中,修复了长期存在的性能和正确性问题。团队正在努力实现 git reset,以进一步提升 Git 依赖的性能。

阅读:https://github.com/GitoxideLabs/gitoxide/discussions/2021#discussion-8357816

Reddit:https://www.reddit.com/r/rust/comments/1ksiouy/gitoxide_in_may/

文章《What if C++ had decades to learn?》

作者:Gustavo Noronha

文章对比了C++和Rust在代码易用性和防止误用方面的差异。

通过一个管理着色器编译的类的例子,展示了C++中即使使用了C++11的移动语义,仍难以防止对象被误用,而Rust凭借其所有权和借用模型,能明确地表达值的所有权和访问类型,从而有效防止误用。

阅读:https://www.collabora.com/news-and-blog/blog/2025/05/21/what-if-c-plus-plus-had-decades-to-learn/

Reddit:https://www.reddit.com/r/rust/comments/1ksjhq4/what_if_c_had_decades_to_learn/

文章《Fork Union: Beyond OpenMP in C++ and Rust?》

作者:Ash Vardanian

文章介绍了 Fork Union,这是一个轻量级的 C++ 和 Rust 线程池库,旨在接近 OpenMP 的性能。

作者指出,大多数现有的线程池库在同步开销上表现不佳,通常比 OpenMP 慢 10 倍。Fork Union 通过避免锁、动态内存分配、CAS 操作和缓存行错误共享等性能杀手,实现了接近 OpenMP 的性能。它仅使用标准库,无额外依赖,适用于需要高性能并行计算的场景。

阅读:https://ashvardanian.com/posts/beyond-openmp-in-cpp-rust/

仓库:https://github.com/ashvardanian/fork_union

Reddit:https://www.reddit.com/r/rust/comments/1kt0ttz/fork_union_beyond_openmp_in_c_and_rust/

foreign - 安全 FFI 抽象库

foreign 是一个 Rust 库,提供了安全的 FFI(Foreign Function Interface)操作抽象。

它通过一系列 traits 和包装类型,帮助开发者在 Rust 和 C 之间安全地转换数据类型。

这些 traits 包括 CloneToForeignIntoForeignFromForeign 等,用于处理内存分配和性能特性。

该库支持 Rust 到 C 的数据复制、所有权转移、消费和临时借用,以及从 C 到 Rust 的数据复制和释放。

文档:https://docs.rs/foreign

Reddit:https://www.reddit.com/r/rust/comments/1ksw53r/foreign_a_library_of_traits_to_convert_rust_types/

gdt-cpus - 为游戏开发者设计的 CPU 管理工具库

gdt-cpus 是一个为游戏开发者设计的 CPU 管理工具库,旨在帮助开发者充分利用现代 CPU 架构,包括混合架构(P 核和 E 核)和多线程技术。

它提供了跨平台的 API,支持 Windows、Linux 和 macOS,能够检测 CPU 拓扑结构(包括核心数、线程数和缓存层次)、设置线程亲和性(将线程固定到特定核心)和线程优先级。

该工具箱特别关注游戏开发需求,提供低延迟和高性能的解决方案。

它还支持 C 语言的 FFI 接口,方便与 C++ 项目集成。

通过 gdt-cpus,开发者可以显著降低音频延迟、帧抖动等问题,提升应用性能。

仓库:https://github.com/WildPixelGames/gdt-cpus

Reddit:https://www.reddit.com/r/rust/comments/1ksm0cb/rust_cpu_affinity_full_control_over_threads/

--

From 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页