BitCraft 开源
BitCraft Online 是一款由社区驱动的沙盒 MMORPG,其后台使用 Rust 开发。在开发 7 年且即将开启抢先体验之际,开发团队决定开源代码。这一决定基于三个原因:降低 MMO 开发门槛、通过开源协作让游戏受益、回馈开源社区。虽然开源游戏代码面临诸多困难,但团队认为值得一试。目前游戏资产暂未开源,代码将采用 OSI 批准的开源许可证。在 Steam 抢先体验顺利完成后,团队会开启开源进程,开源代码将为不同人群提供帮助,如为独立开发者提供起点,为模组制作者提供工具包等。
原文:https://bitcraftonline.com/blog/open-sourcing-bitcraft-online
Zerocopy 0.8.25 发布
zerocopy 0.8.25,是一个用于安全的底层内存操作和类型转换工具包。此次新版本将 slice::split_at
进行了泛化,使其成为一种可以分割任何动态大小切片(DST)的抽象。
转换 trait
Zerocopy 提供了四个可派生的零成本转换 trait:
TryFromBytes
表明一个类型可以安全地从特定字节序列转换(取决于运行时检查)。FromZeros
表明零字节序列代表一个类型的有效实例。FromBytes
表明一个类型可以安全地从任意字节序列转换。IntoBytes
表明一个类型可以安全地转换为字节序列。
这些 trait 支持固定大小的类型、切片和动态大小切片(DST)。
标记 trait
Zerocopy 提供了三个可派生的标记 trait,它们本身不提供任何功能,但调用转换 trait 提供的某些方法时需要这些特性:
KnownLayout
表明 zerocopy 可以推断出一个类型的某些布局特性。Immutable
表明一个类型除了通过所有权或独占(&mut
)借用之外,不存在内部可变性。Unaligned
表明一个类型的对齐要求为 1。
通常情况下,只要有可能,你都应该派生这些标记特性。
转换宏
Zerocopy 提供了六个用于类型间安全类型转换的宏:
(try_[try_transmute])transmute
(有条件地)将一种类型的值转换为相同大小的另一种类型的值。(try_[try_transmute_mut])transmute_mut
(有条件地)将一种类型的可变引用转换为相同大小的另一种类型的可变引用。(try_[try_transmute_ref])transmute_ref
(有条件地)将一种类型的可变或不可变引用转换为相同大小的另一种类型的不可变引用。
这些宏在编译时进行大小和对齐检查,这意味着无条件转换在运行时的成本为零。有条件转换在运行时不需要验证大小或对齐,但需要验证内容。这些宏不能在泛型上下文中使用。对于泛型转换,请使用转换特性定义的方法。
Github 仓库:https://github.com/google/zerocopy
csgrs 0.17.0 发布
csgrs 是一个用 Rust 编写的快速、支持可选多线程的构造实体几何(CSG)库,围绕使用二叉空间分割(BSP)树对多边形集合进行布尔运算(并集、差集、交集、异或)构建。csgrs 提供了用于以类似 OpenSCAD 的语法构建 2D 和 3D 几何图形的数据结构和方法。csgrs 旨在通过与 Dimforge 生态系统(例如 nalgebra、Parry 和 Rapier)以及用于稳健处理简单要素的 geo 集成,实现轻量级且功能齐全。csgrs 有许多对生成 CNC 刀具路径有用的函数。该库可以针对 32 位或 64 位浮点数进行构建,也可以构建为 WebAssembly(WASM)。其依赖项 100% 是 Rust 编写的,并且几乎都是可选的。
此次版本更新的主要内容有:
- 高效检测
- 模块化与清理
- 几何及经度提升
- 功能标识增强
- 输入/输出支持
- 性能及内存优化
- 更好的开发者工具
- 新增几何图形
Github 仓库:https://github.com/timschmidt/csgrs
--
From 日报小组 Yuan YQ
社区学习交流平台订阅:
评论区
写评论还没有评论