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」。

栈借用模型2还有很多已知的问题,比如其实并没有真正使用到「栈」,反而更像「树」。但这还不是最后的结论。本文比较长,去原文信息。

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目标进行模糊测试,该解释器计算单个指令的执行次数。

旁路攻击的一个案例:

举一个最简单的计时攻击的例子,某个函数负责比较用户输入的密码和存放在系统内密码是否相同,如果该函数是从第一位开始比较,发现不同就立即返回,那么通过计算返回的速度就知道了大概是哪一位开始不同的,这样就实现了电影中经常出现的按位破解密码的场景。密码破解复杂度成千上万倍甚至百万千万倍的下降。 来源: 知乎:如何通俗地解释时序攻击(timing attack)?

sidefuzz


制作落沙游戏

#game #falling_sand

该文作者制作过一款落沙游戏(falling sand game)Sandspiel,这种游戏允许玩家选择不同的材质(沙子、水、石头、冰块等)放到游戏中,自然下落,形成各种造型,比较艺术。

作者在这篇文章里,介绍了他为什么要做这款游戏,以及这款游戏的架构等技术资料。

架构:

  • 粒子模拟代码: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。
  9. Rust编译速度很慢。所以作者建议将大的项目拆分为独立的crate,可以有效缩减编译时间。(crate是编译的最小单元,Rustc现在支持并行编译)
  10. 后端服务的故事还在进行中。虽然tokio和actix都很好,但目前作者还不太敢在传统的后端项目上挑选Rust。期待成熟。

额外的惊喜: 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客户端了。

该文作者意见编写了好几个Rust的K8S工具,包括:k8s-openapi。并且他们也提交了新的工具:kube-rs,纯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

Sled 是一个 Rust 写的嵌入式数据库,质量相当不错。作者用了一段时间后,想了解里面的实现,就开始了这个学习和审阅过程。这是第三篇。

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

wlroots-rs项目的作者宣布放弃该项目。原因是因为它碰到的问题,无法用Safe Rust去处理。他认为Safe Rust才是Rust存在的意义,不太想用Unsafe Rust来处理问题,所以就选择回到了C语言。

Read More

在该话题的Reddit讨论区,rlua的作者深有同感,也写下了自己的感受:

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
  • 微信公众号:Rust语言学习交流

【Rust日报】 2019-05-01相关推荐

  1. VIC运行笔记2019.05.01

    可执行文件加入Linux默认路径的办法: 如果需要临时的成为系统默认路径可以这样: export PATH=/home/VIC/vic/drivers/classic:$PATH 此处假设要加入的路径 ...

  2. rust主播排行_「Rust日报」2019每周精选 • 第四期

    前言: 从2018年开始,我每天会花1个小时关注Rust社区动态,并且在Rust.CC论坛.tg channel.Steemit.GitHub.语雀订阅都开通了Rust日报,分享我每天的见闻,偶尔也夹 ...

  3. 【Rust日报】 2019-08-01:brpc-rs - X-lab 实验室新推出的一个rpc库

    paperclip - OpenAPI 规范的 Rust 实现 在完成后,它会实现: Rust 中的服务器端.客户端和命令行端的高效的.编译时检查的.类型安全的 HTTP API 的生成: 支持处理. ...

  4. 【每日早报】2019/05/29

    早报概要 每日早报 2019/05/29 国内要闻 文娱影游 科技通信 金融财经 每日早报 2019/05/29 国内要闻 阿里巴巴回应"香港二次上市":市场传言,不予置评 微信& ...

  5. D2 日报 2019年6月11日

    ? 开源项目 ➡️ sfyc23/EverydayWechat watch 34 star 1690 fork 317 每日自动给女朋友发微信暖心话. github.com ➡️ YMFE/yapi ...

  6. D2 日报 2019年1月2日

    官网阅读获得更好的体验,传送门<日报 2019年1月2日> 你有一个苹果,我有一个苹果,交换之后我们还是各自有一个苹果. 你有一份知识,我有一份知识,我们互相分享一下就都有了两份知识. 开 ...

  7. 没有终结点在侦听可以接受消息的_【大卫聊股】2019.05.05 周末重要消息分析及下周一走势预判...

    2019.05.05 重要消息: 1. [发改委:适当降低新增分布式光伏发电补贴标准] 显然是利空光伏股. 2. [电报|7只科创基金最终募资金额出炉 首募合计超1200亿]多家基金公司发布公告,科创 ...

  8. D2 日报 2019年4月17日

    ? 新闻 ➡️ Is React Translated Yet? ¡Sí! Sim! はい! react 文档翻译了多种语言 reactjs.org ? 开源项目 ➡️ formal/packages ...

  9. Python小白的数学建模课-05.0-1规划

    0-1 规划不仅是数模竞赛中的常见题型,也具有重要的现实意义. 双十一促销中网购平台要求二选一,就是互斥的决策问题,可以用 0-1规划建模. 小白学习 0-1 规划,首先要学会识别 0-1规划,学习将 ...

  10. D2 日报 2019年5月20日

    ? 新闻 ➡️ Faster smarter JavaScript debugging in Firefox DevTools - Mozilla Hacks - the Web developer ...

最新文章

  1. R语言ggplot2可视化绘制线图(line plot)、使用gghighlight包突出高亮满足条件的线图、并保留其它线图的色彩(而不是灰色)自定义非高亮线图的透明度
  2. python【力扣LeetCode算法题库】面试题 01.07- 旋转矩阵
  3. Jmater添加UDP插件
  4. ruby 变量类中范围_Ruby中的类
  5. php编程实现水仙花数,php实现水仙花数的4个示例分享
  6. learn python the hard way 习题6~10总结
  7. 解决linux中xorg占用gpu问题
  8. Xmind8 Pro 最新版 破解教程(序列号|破解文件)
  9. php mysql闪退_别批:mysql闪退问题如何解决??
  10. 罗马数字序号与word2013中如何插入
  11. 13.相机和图像——视场(Field of View),视场实战_4
  12. Redis持久化 - 邱乘屹的个人技术博客
  13. linux按行分割文件,按行切割大文件(linux split 命令简版)
  14. java中类成员,java中类成员的限定词
  15. 关于前辈RPC学习的经验分享:我的DedSec RPC
  16. web检查器要不要打开_简单粗暴,详细得不要不要的 JavaWeb快速入门
  17. 多元函数微分学小结(2):从反函数定理到隐函数存在定理
  18. AOSP中make clean与make clobber的区别
  19. 微信Android客户端的卡顿监控方案
  20. sqlite3数据库的使用及其对应的API函数接口的使用

热门文章

  1. 我爷爷来了都能两分钟完成关于VMware虚拟机联网方法(有/无网线两种情况通用)!!尤其适用于笔记本电脑!!
  2. 腾讯CDC谈扁平化设计
  3. 实验四:存储器扩展实验(Yanlz+Unity+XR+实验课+字位扩展+片选信号+RAM+ROM+磁盘阵列+RAID+立钻哥哥+==)
  4. iphone11右上角信号显示_苹果手机信号设置成数字 iphone11信号变成数字
  5. java自动编号_java实现自动编号系统(类似于word中自动编号)
  6. 5个程序员常用的接单平台推荐
  7. java开发走技术还是管理路线_java程序员的发展路线是怎样的
  8. 周志华教授关于深度学习的专访
  9. linux 安装SVN(http、https访问)
  10. 店铺人群标签不精准怎么办,哪些因素导致人群标签不精准的,如何纠正?