< 返回版块

ChaosBot 发表于 2018-10-15 13:02

Tags:rustnews

Amethyst游戏引擎的最新进展

开发团队:

  • 组建核心团队,负责整体管理和方向。
  • 引入新的贡献者团队,这些团队专注于引擎的特定领域,并授权写入权限。
  • 引入活跃策略。如果团队中有人在6个月内处于非活跃状态,将会被自动剔除团队。
  • 现在有四名活跃的成员。

引擎核心:

  • 基于UDP协议的net-dev正在取得进展,它会独立于引擎之外,但会被用于引擎中的高级API。这意外着你可以独立使用net-dev库。
  • 3D渲染器正在完全重写,为了支持现代的渲染技术(Vulkan/Metal/DirectX12后端、VR等),正在招募相关经验的贡献者
  • 正在设计和原型化支持高级部署体系结构的新的资源管道,有助于集成专业级的工作流到引擎中。(使用构建时和部署时配置来节省运行时的计算负担),并减少开发人员和艺术家的资源管理负担。希望通过引擎实现高度可扩展的开发流程,即使在大型商业游戏上也是如此。
  • 实验性的Amethyst editor 发布,用于创建游戏原型
  • 下一步将推出0.9版本,该版本将助力于2D游戏开发人员

原文


const fn编译时SUBLEQ解释器

作者通过实现一个SUBLEQ解释器来测试const fn最近稳定的最小化子集mini-const-fn的可能性。

SUBLEQ是一种单指令集计算机,由其唯一指令SUbtract和Branch(如果小于或等于0的分支)组成。

指令 subleq a, b, c 将会执行 mem[b] = mem[b] - mem[a]; if mem[b] <= 0 { goto c; },也就是,减并且小于等于0跳转,并且该指令是图灵完备的。其中a、b、c都是地址,mem[b] = mem[b] - mem[a];求减法,后面的分支进行控制挑战,可以实现通用的计算。

wiki: https://en.wikipedia.org/wiki/One_instruction_set_computer

当前Rust稳定的const-fn最小子集,包含的内容比较少,比如,包括算术运算符,结构/元组/数组创建和访问。 不允许任何种类的控制流构造,如if,match,while,for或loop。

在实现过程中得到如下事实:

  • const fn中仅仅允许使用生命周期和Sized作为泛型限定,比如还不能指定T: Copy
  • 函数指针在const fn中是 unstable状态
  • const fn目前还不支持let绑定和重新分配可变变量
  • 循环可以通过递归调用const fn来实现

const fn count(i: i32) -> i32 { count(i+1) } 比如实现无限的计数循环,但不能指定分支条件。最终的解决方案是,手动展开循环。

结论:

const fn的最小子集是否图灵完备?

答案是:

  • 是的。因为可以用它实现图灵完备的SUBLEQ
  • 不是。 只能执行有限数量的迭代。
  • 也许。找到一种方式可以从循环或递归中提前中止(即使找到了中止的方法,仍然只有96次迭代的最大值,因为const fn求值器不允许超过96个栈帧)

一个有趣的事实

subleq函数可以看做一个不动点迭代器(Fixed Point iterator)。

原文


免费书籍推荐:CODE ARTISTRY BOOK

副标题:A Practical Guide To Rust 卷1

官网

PDF


继续讨论Rust中的2D图形

这是「我想要一个2D图形Crate 」文章相关的后续讨论贴,该文作者总结了此次讨论中的几个具体的主题。

原文


K8s的Rust客户端

kubernetes-rust


Welle: ApacheBench的Rust实现

welle


评论区

写评论

还没有评论

1 共 0 条评论, 1 页