「Rust每日新闻」调查问卷
还没有提交问卷的小伙伴,来填写一下问卷。
回头会把统计结果给大家分享,目前的统计结果很有意思,但是样本有点少,需要大家的配合。到时候把结果放出来,大家也可以对国内的Rust社区有一个了解。
「小工具」tinyrick:形式比较自由的Rust build工具
该工具实现了一些宏,包装了Rust的一些构建命令,让开发者可以自定义自己的构建工具
「工具」Reflow:统一代理规则
此程序可以自动充分利用所有代理,VPN和接口。
构建于网络层,可以自动让应用层选择每一个连接的代理。
「博文」四种语言中的代数数据类型
该文作者对Haskell、Scala、Rust和TypeScript四种语言提供的代数数据类型(ADT)进行了对比。
结论:
- 作者认为Haskell 的最简单
- Rust的次之,几乎和Haskell一样简单
- Scala 排第三
- TypeScript最后,虽然比较冗长,但还是朝着简洁类型系统迈出了一大步
Rust,Battlecode和Halite:初学者对AI编程竞赛的体验
该作者在学习Rust的第一个主要项目是Halite II 机器人,它是Two Sigma的AI编程竞赛的升级。广义上讲,它是一个游戏,在连续的二维地图上控制船队,寻路,并在舰与舰之间对战,资源管理等等,这些都有时间限制。
后来作者参加MIT的Battlecode 2018,对方的机器人引擎是Rust实现的,而作者的是用Python,所以作者的机器人总是不断的超时。后来作者也切换到了Rust解决了这个问题。
截止到今天,Halite III发布了,是一个资源管理游戏,支持Rust语言,大家可以去玩玩,用Rust打排名赛,截止到明年1月份。
「研究项目」「系列文章」Shifgrethor III: Rooting
本文是Shifgrethor GC的第三篇,withoutboats讲述了该GC标记算法中如何标记根对象。
前两篇内容索引:
精确跟踪GC一般有两种rooting策略:
- 栈映射。编译器生成栈的元数据,来记录栈帧中GC指针的位置。GC按此元数据通过遍历栈来标识所有活动对象的根。
- 运行时收集。运行时维护所有活动对象的root集合。遵循此模式的大多数Rust实现都使用了侵入式双向链表。
栈映射通常被认为是最一流的办法,但是Rust遇到了一些问题。首先,栈映射需要语言自身支持,用库无法实现。其次,栈映射只能映射到栈,而不是堆。
所以shifgrethor最初的实现是利用了Pin API实现了一个侵入式双向链表。因为root指针不能被移动。本文主要描述了该设计遇到Rust借用检查器,产生的一些问题,以及他如何解决。将来也许可能增加新的语法来支持这个。后面会写文章专门讨论这个想法。
下一篇文章将讲述如何通过root跟踪GC堆的对象。
「博文」Rust学习心得
该文作者是《Ruby原理剖析》原作者Pat写的。他现在也开始学习Rust,尝试用Rust改写之前的Ruby脚本,然后在这个过程中有一些心得,通过该文进行记录。
感兴趣的可以看看
每日新闻订阅地址:
欢迎通过GitHub issues投稿。
评论区
写评论还没有评论