「官方」如何检测Unsafe代码中的UB
#miri #unsafe_ub_check #stack_borrow
ralfj比较高产,他负责Unsafe下内存模型相关的工作,目的是用miri来检测unsafe中的UB行为。
该模型用于定义在unsafe内存模型中允许哪种别名。建立合理的别名规则,才能基于miri来检查unsafe下的UB行为。
该模型的核心思想是: 对于一个内存位置,逐步建立可跟踪的引用,形成一个栈结构。比如有一个&mut i32,可以对其重新借用获得一个新引用。这个新引用是必须用于此位置的引用,建立在旧引用之上。当新引用过期的时候,旧引用会被激活,就好像是栈结构push和pop。
在今天这篇文章中,ralfj写了实现上述模型的进展。
在Safe Rust中,通常有借用检查来保护内存。但是在编写Unsafe代码的时候,借用检查就无法提供帮助了。所以,Rust核心团队就必须要定义一组规则,即使对于Unsafe代码来说也是非常有意义的。在本篇文章中,ralfj会再次解释这些规则,但是和上次的有所不同,因为ralfj在这三个月对栈式借用实现的过程中,对这些规则理解更深了
「Podcast」关于Rust 1.29和1.30中过程宏等特性讨论
将Elm架构引入Rust和WebAssembly
Elm生态系统有一个架构,叫做TEA,The Elm Architecture。然后该文作者将TEA引入了Rust和WASM体系里。并且通过此实验,了解Rust和WASM在web开发方面能走多远。结论是:他想在日程工作中都能用Rust编写webapp。
代码实现: willow
其中还包含了两个demo。
开始使用rs-pbrt
rs_pbrt是对《Physically Based Rendering,PBRT(光线跟踪:基于物理的渲染) 》这本书中代码的Rust实现。
这篇文章是一个使用rs_pbrt的简单教程。
每日新闻订阅地址:
欢迎通过GitHub issues投稿。