「研究项目」「系列文章」shifgrethor:Rust实现的垃圾收集库
Rust官方核心人员withoutboats开发了一个内存安全的垃圾收集库。它只是一个研究项目,并不能实际使用。
当然也可以用于学习目的,了解Rust的语言能力如何用于编码安全API中的复杂内存管理要求。
从长远来看,shifgrethor很可能会成为可用的高性能的垃圾回收器。当然,该项目不太可能成为Rust项目的常用功能。也就是说,请不要理解为「Rust要加GC了」。
shifgrethor的存在,只是为了要寻找一个实用的场景,用户可以使用GC来处理复杂的内存管理。比如涉及共享所有权的时候,可以使用动态的方式来管理内存。
shifgrethor是一个精准的跟踪GC
- 允许循环引用。不同于引用计数,这种GC不会导致内存泄漏。
- 精准的GC。它可以确切地知道哪些数据是活跃的,哪些不是。
Shifgrethor允许完全自由引用
- 可以解引用GC指针,可正常获得堆中的对象
- GC堆中的对象可以持有不在GC堆中对象的借用/引用,即使它们在栈上
- GC堆中的对象可以拥有栈中的对象。
- 可以讲GC指针从栈上移动到堆上。
GC是一种共享所有权,因此还需要内部可变性。
博文 Read
为Cargo释放更多空间
Rust虽好,但是Cargo太贪空间
作者推荐了两个技巧节省空间:
- 使用$HOME /.cargo
- 使用semver crate
reddit还有更多讨论: Read
「小工具」rr:用于重构/重命名的CLI工具
「新语言」Rust实现的高效编程语言Formality
可用于写智能合约
特性:
- 具有形式证明,可用于定理证明,Readme里还有一个证明
a + b == b + a
的示例 - 无GC
- 兼容EVM ,可以运行以太坊合约
- 兼容GPU,可以编译为OpenCL/CUDA
- 简单,2k行代码实现
看上去目前还未完善,还有很多工作要做
「视频」Bay Rust Meetup上排名前100的crate介绍
该视频介绍了Rust生态系统中前100个crate
文字总结:http://thume.ca/crates/
「实验项目」rails/rails_fast_attributes: 使用Rust提升Rails性能
刚在Ruby Summit China大会上讲完《Ruby的好朋友-Rust》,今天就看到了这个
是Diesel作者用Helix来帮助提升ActiveRecord的属性映射性能
Helix是Cargo作者带头实现的方便用Rust扩展Ruby的库
「社区」新包 pin-cell
官方核心开发人员withoutboats开发了新的crate,pin-cell,类似于RefCell,但PinCell是针对pinned可变引用的内部可变类型。
为什么PinCell很有用?
从一个object到此object内部包含object的操作叫做「projection」,比如从结构体到其包含的字段,从Vec到其中的元素。Rust中可以按值、按引用、按可变引用来进行projection。
讲pinned引用转换为某些类型的操作叫做「pin projection」,当前讲pinned引入到RefCell是不安全的,所以必须用PinCell来安全处理「projection」。
「社区」Rust SGX SDK v1.0.4发布
Rust SGX SDK由百度X-Lab维护,是为英特尔SGX enclaves开发安全可信计算应用程序的便捷框架。
在此版本中,添加了对最新英特尔SGX SDK 2.3.1的支持,并且(世界上首次)启用了基于SGX远程证明的内存安全Enclave-Enclave / Untrusted-to-Enclave TLS通信。
Rust与编程三定律
本文作者模仿阿西莫夫机器人三定律自创的叫信息学三定律(Three Laws of Informatics)
(感觉叫编程三定律好多了)
- 程序必须正确(Programs must be correct.)
- 程序必须可维护,但不能违反第一条定律(Programs must be maintainable, except where it would conflict with the First Law.)
- 程序必须高效,但不能违反前两条定律(Programs must be efficient, except where it would conflict with the First or Second Law.)
(好像有点道理)
本文很长,作者比较了众多语言,从编程语言发展历史,阐述了编程三定律背后的意义。从这个角度来看,Rust应该是目前唯一遵循此三定律的语言。
评论区
写评论三定律的解释原文很有趣~~老司机的经验之谈很值得我这种新上路的参考啊