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
在相同输入下的运行情况进行分析,发现了一些性能瓶颈并进行了优化。具体优化措施包括:
- 在一个热点的 Arm 特定代码路径中避免了昂贵的零初始化操作,通过将
Align16
中的tmp_buf
从[0u16; TMP_LEN]
改为[MaybeUninit::<u16>::uninit(); TMP_LEN]
,并将lr_bak
提升到顶层以避免重复初始化,使得运行时间减少了 1.2 秒(约 1.6%)。 - 将一些小的数值结构体的默认
PartialEq
实现替换为将它们重新解释为字节的优化版本,通过使用zerocopy
crate 静态验证结构体表示为&[u8]
的安全性要求,从而避免了unsafe
块,运行时间进一步减少了 0.5 秒(约 0.7%)。
这些优化总共使 rav1d
的性能提升了约 2.3%,尽管与 dav1d
仍有约 6% 的差距,但作者认为通过比较 dav1d
和 rav1d
的分析快照,仍有更多优化空间。
阅读: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 包括 CloneToForeign
、IntoForeign
、FromForeign
等,用于处理内存分配和性能特性。
该库支持 Rust 到 C 的数据复制、所有权转移、消费和临时借用,以及从 C 到 Rust 的数据复制和释放。
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 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论