Graphite:将 Rust 转化为用于图形操作的函数式可视化脚本语言,请求帮助实现编译器双向类型推断
Graphite 是一个基于 Rust 的、全面的 2D 内容创作工具,适用于平面设计、数字艺术和交互式实时动态图形。
它还拥有令人耳目一新的高质量 UI 设计,现代、直观且用户友好。已进入 GitHub Rust 项目前 100 名。
观看 此处 的一分钟视频,它展示了如何使用它制作出炫酷、独特、视觉效果出色的作品。
它有类似 Blender 的愿景,采用节点式编辑环境和基于 Rust 的 Graphene 编程语言,能够利用 Rust 的数据类型和 rustc 将艺术家创作的文档转换为可移植的独立程序,从而程序化地生成参数化艺术作品。
目前 Graphene 编译器类型检查功能较基础,需实现类似 Hindley–Milner 的双向类型推导,因团队仅有一名有编译器背景的开发者。
现请求帮助,加入 Discord 或评论 GitHub Issue 即可参与。
仓库:https://github.com/GraphiteEditor/Graphite
Reddit:https://www.reddit.com/r/rust/comments/1lor3b4/graphite_now_a_top100_rust_project_turns_rust/
文章《rustc_codegen_cranelift 中的异常处理》
作者:Björn
文章介绍了在 Cranelift 代码生成器中为 Rust 添加异常处理支持的工作。
作者详细描述了 Rust 的栈展开机制,以及如何通过 Cranelift 的“landingpad”风格异常处理实现 Unix 系统上的 panic 展开。
文章通过调试会话展示了异常处理的运行时行为,包括设置断点、检查异常类、调用人格函数等。
作者还解释了 Itanium 和 SEH 两种主要的异常处理 ABI,以及 Rust 如何利用这些机制实现异常处理。
目前,该功能默认禁用,作者正在完善实现并解决性能问题。
阅读:https://tweedegolf.nl/en/blog/157/exception-handling-in-rustc-codegen-cranelift
Reddit:https://www.reddit.com/r/rust/comments/1lo3v9h/exception_handling_in_rustc_codegen_cranelift/
文章《针对单个 trait 实现 blanket impl 的另一种方式》
作者:Serhii Potapov
文章介绍了在 Rust 中为单一特质实现替代性全范围实现的方法。
Rust 严格禁止为同一特质提供多个可能重叠的全范围实现。作者在开发 Joydb 时遇到这一问题,需要为 Adapter
特质提供两种不同的实现方式(统一适配器和分区适配器),但不能直接使用全范围实现。
他通过使用标记结构体(如 Unified<T>
和 Partitioned<T>
)、辅助特质 BlanketAdapter
以及在 Adapter
特质中使用关联类型来解决这一问题,从而实现了在不违反 Rust 协调规则的情况下,为不同行为提供统一接口的目标。
阅读:https://www.greyblake.com/blog/alternative-blanket-implementations-for-single-rust-trait/
Reddit:https://www.reddit.com/r/rust/comments/1lovjej/alternative_blanket_implementations_for_a_single/
文章《反思 Haskell 和 Rust》
作者:Sibi Prabakaran
文章比较了 Haskell 和 Rust 在实际开发中的优缺点。
作者有在 Haskell 和 Rust 中开发生产代码的经验,主要集中在 Web 服务、API 和 HTTP 栈开发。
文章指出,Rust 在变量遮蔽、枚举系统、字段可见性控制等方面表现更好,而 Haskell 在纯函数和引用透明性方面有优势。
Rust 的错误处理更明确,测试代码与源代码放在一起更方便维护,格式化工具更统一,语言服务器支持更可靠,编译速度更快。
Haskell 的 REPL 更适合快速原型开发,列表操作更方便,但配置文件体验和操作体验不如 Rust。
作者认为,尽管 Haskell 有强大的理论基础,但 Rust 的工具和生态系统更完善,更适合构建可靠的软件。
阅读:https://academy.fpblock.com/blog/rust-haskell-reflections/
Reddit:https://www.reddit.com/r/rust/comments/1loqxty/reflections_on_haskell_and_rust/
给 Chromium V8 实现 Temporal Rust API
在过去的两个月里,Manishearth 一直在为 V8(Chromium 的 JavaScript 引擎)添加对 Temporal 日期时间 API 的支持,其核心实现是用 Rust 编写的。
Firefox 已经使用 ICU4X 实现了该 API,而 V8 使用的是 temporal_rs,它基于 ICU4X 但做了更多规范特定的工作。
这并非 Chromium 中首次使用 Rust,但这是一个相当大的代码块。
目前,虽然测试符合性方面还有很多工作要做,但至少可以说在 API 层面已经完全实现了。
ICU4X:https://github.com/unicode-org/ICU4X
temporal:https://github.com/boa-dev/temporal
Reddit:https://www.reddit.com/r/rust/comments/1logjzt/chromiumv8_implementing_temporal_api_via_rust/
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论还没有评论