【Rust日 】 2019-05-01

Rust和Windows不得不说的事儿

#windows

感谢 区 @Matrix 的分享

Read More


「官方」Unsafe Rust安全检查:栈借用模型 2

#miri #unsafe_ub_check #stack_borrow

ralfj比较高产,他负责Unsafe下内存模型相关的工作,目的是用miri来检测unsafe中的UB行为。

他在去年引入了栈借用模型1用于定义在unsafe内存模型中允许哪种别名。建立合理的别名规则,才能基于miri来检查unsafe下的UB行为。

该模型的核心思想是: 对于一个内存位置,逐步建立可跟踪的引用,形成一个栈结构。比如有一个&mut i32,可以对其重新借用获得一个新引用。这个新引用是必须用于此位置的引用,建立在旧引用之上。当新引用过期的时候,旧引用会被激活,就好像是栈结构push和pop。

在Safe Rust中,通常有借用检查来保护内存。但是在编写Unsafe代码的时候,借用检查就无法提供帮助了。所以,Rust核心团队就必须要定义一组规则,即使对于Unsafe代码来说也是非常有意义的。

在今天这篇文章中,ralfj又带来了栈借用模型的升级,栈借用2。

在栈借用1模型中,有一个概念叫做「frozen」,处于frozen位置的指针,只能读取,不能写入。它允许可变借用也能读取(检查粒度比较粗,把可变指针和共享指针同一化处理)。但是现在该模型被发现一个问题:当使用可变借用的时候,在该模型下可能会把某些未定义行为判断为合法。为了改进这个问题,栈借用模型2将精确跟踪允许访问的原生指针(更细粒度的检查,区分了共享指针和可变指针),而不是「frozen」。

Read More


rendy-pbr: 用rendy编写的小型实时基于物理的渲染器

#pbr

PBR全称(Physicallly-BasedRendering)。笼统的说,就字面含义可以看出,这是一种基于物理规律模拟的一种渲染技术。它构建在gfx-hal上。该项目是rendy和Amethyst的试验场; 这里实现的大部分或全部内容最终将以某种形式添加到Amethyst渲染器中。

rendy-pbr


非官方的Rust Async/Await调查

#async #await

声明: 这不是正式的Rust调查,它不会被Rust核心团队以任何方式认可,仅仅是一种民意调查,可能存在偏见。

感兴趣的可以来填写一下。

Read More


SideFuzz:寻找时序旁路攻击漏洞的模糊测试库

#fuzz #timing_side_channel_attack

它的工作原理是将模糊测试目标编译到WebAssembly,然后在修改后的wasmi解释器中对wasm目标进行模糊测试,该解释器计算单个指令的执行次数。

旁路攻击的一个案例:

sidefuzz


制作落沙游戏

#game #falling_sand

架构:

  • 粒子模拟代码:Rust/WASM

  • 流体模拟:JS和GLSL

  • React和JS编写界面

  • TypeScript和Postgresql编写CRUD后端

  • 在线试玩

  • Read More

  • sandspiel源码


markup.rs 又一个Rust的模板引擎

#template_engine

markup.rs


###「远程工作 at 欧洲」Chorus One寻找加密软件工程师

要求懂得Go或Rust。该团队成立15个月,有6名团队成员,工作主要是区块链相关。公司在美国西海岸,可全职远程。 薪资:£70 – £85k

Read More


从3W行Rust代码中总结出来的十个Rust关键学习点

#Learning

  1. 你必须做好准备。请准备好投入大量时间进行思考和设计,以管理内存和类型等。
  2. Survive the beginning。伟大的程序员卡马克在推上说:Rust code feels very wholesome。你需要深入理解Rust安全相关的概念,比如所有权等。
  3. 使用Rust构建工具的体验非常棒。
  4. 非常适合和已有的基础设施互操或替换。
  5. Rust是一致性和稳定性很高的语言。
  6. 使用features功能可以将你的软件「切片」或「切块」分发。使用features可以让用户选择性地使用某些模块,有时候可以缩减版本。还可以通过features方便地发行商业版和免费版。
  7. 惊人的性能。
  8. 在某些生态系统不完善的场景,建议去使用Go。

额外的惊喜: Rust的文档非常棒!

Read More


「呼吁」保持所有人都可访问的自由软件

#libre

最近,一些备受瞩目的自由软件项目已经考虑或采用专有聊天系统作为他们与 区沟通的主要方式。这应该引起所有对自由(libre)软件运动感兴趣的人的警觉。

使用Discord作为官方通信方法的项目包括Fedora,Gentoo和openSuSE等发行版; Gitea和Yarn等基础设施项目;和自由编程语言,包括Elixir和Rust。软件不应该依赖专有通信工具的原因有很多:

  • 没有透明度。比如注册Discord会包含很多条款。
  • 不能选择客户端。挑选客户端只能受制于Discord的要求。
  • 缺乏基础设施控制。如果给Discord提供服务的服务商出现了问题,那么 区也就停止服务了。

其实除了irc之外,还有很多备选方案:

  • Mattermost
  • Matrix
  • Rocket.Chat
  • Zulip

对于自由软件,也是时候迁移到自由的通信工具上了。

(在Reddit讨论下,Zulip好评不断)

  • Read More
  • Reddit 讨论贴

用Rust和K8S交互

#k8s

虽然通常使用Go和kubernetes交互,这豪无争议。但是现在随着客户端的进化,再加上Rust的泛型和过程宏,现在完全有可能使用Rust来编写一个成熟的k8s客户端了。

更多内容请阅读原文。

  • k8s-openapi
  • kube-rs
  • operator-rs: kube-rs使用示例项目

Read More


emacs-module-rs: 允许你用Rust编写emacs模块

#emacs

  • emacs-module-rs
  • 指南

Sled代码评审 Part III

#sled

Read More


watchrs: 使用Rust监控AWS批量Jobs

#aws #job

  • Read More
  • watchrs

使用Sonr构建pub/sub服务器 Part II

#sonr #pub_sub #mio

sonr建立在mio之上的 络库,相比于Tokio来说,更加轻量。

Read More


放弃wlroots-rs项目

#wlroot

Read More

rlua 让他身心疲惫,也经历了类似的失败。但是,他又说了:如果有Rust无法表达的模式,那么我想我们应该努力使Rust更好,或者找到新的模式认为Rust的最大优势是可以把全局不安全的东西变成局部不安全的东西。我知道这对于所有任务来说都不是100%可能,但我正在努力找出剩余问题的答案。

同样也有人指出:

当你认为Rust的全部意义仅仅是安全的时候,那么你就错失了Rust的好处。这并不是Rust的全部观点。Rust是让你在不安全的基础上抽象安全。如果那个C库本来就不安全了,那么Rust允许你公开那个接口,而不是非得把它包装为安全的。

很多人也产生了共鸣。

C和Rust之间的映射,确实比较困难。可能需要总结一些最佳的模式。

Reddit 讨论区


From 日 小组 @Chaos

独立日 订阅地址:

  • Telgram Channel
  • 阿里云语雀订阅
  • Steemit
  • GitHub

区学习交流平台订阅:

  • Rust.cc论坛: 支持rss
  • Rust Force: 支持rss

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年5月22日
下一篇 2019年5月22日

相关推荐