Rust 程序设计语言 中文版
前言
1.介绍
2.准备
3.学习 Rust
3.1.猜猜看
3.2.哲学家就餐问题
3.3.其它语言中的 Rust
4.语法和语义
4.1.变量绑定
4.2.函数
4.3.原生类型
4.4.注释
4.5.If语句
4.6.循环
4.7.所有权
4.8.引用和借用
4.9.生命周期
4.10.可变性
4.11.结构体
4.12.枚举
4.13.匹配
4.14.模式
4.15.方法语法
4.16.Vectors
4.17.字符串
4.18.泛型
4.19.Traits
4.20.Drop
4.21.if let
4.22.trait 对象
4.23.闭包
4.24.通用函数调用语法
4.25.crate 和模块
4.26.`const`和`static`
4.27.属性
4.28.`type`别名
4.29.类型转换
4.30.关联类型
4.31.不定长类型
4.32.运算符和重载
4.33.`Deref`强制多态
4.34.宏
4.35.裸指针
4.36.不安全代码
5.高效 Rust
5.1.栈和堆
5.2.测试
5.3.条件编译
5.4.文档
5.5.迭代器
5.6.并发
5.7.错误处理
5.8.选择你的保证
5.9.外部函数接口
5.10.Borrow 和 AsRef
5.11.发布途径
5.12.不使用标准库
6.Rust 开发版
6.1.编译器插件
6.2.内联汇编
6.3.不使用标准库
6.4.固有功能
6.5.语言项
6.6.链接进阶
6.7.基准测试
6.8.装箱语法和模式
6.9.切片模式
6.10.关联常量
6.11.自定义内存分配器
7.词汇表
8.语法索引
9.参考文献
附录:名词中英文对照
主页
资讯
文章
代码
电子书
参考文献
这是一个与 Rust 相关的材料的阅读列表。这包含了曾经影响过 Rust 先验研究,以及关于 Rust 的出版物。
(注:以下翻译属个人理解,勿作为参考)
类型系统
Cyclone语言中基于区域的内存管理(Region based memory management in Cyclone)
Cyclone语言中的手动安全内存管理(Safe manual memory management in Cyclone)
类型类:使临时多态不再临时(Typeclasses: making ad-hoc polymorphism less ad hoc)
宏综述(Macros that work together)
特性:组合类型的行为(Traits: composable units of behavior)
消除别名(Alias burying)
- 我们尝试了一些相似的内容并放弃了它
外部唯一性是足够的(External uniqueness is unique enough)
用于安全并行的唯一性和引用不可变性(Uniqueness and Reference Immutability for Safe Parallelism)
基于区域的内存管理(Region Based Memory Management)
并发
Singularity:软件栈的重新思考(Singularity: rethinking the software stack)
Singularity操作系统中支持快速和可靠的消息传递的语言(Language support for fast and reliable message passing in singularity OS)
通过work stealing来安排多线程计算(Scheduling multithreaded computations by work stealing)
多道程序多处理器的线程调度(Thread scheduling for multiprogramming multiprocessors)
work stealing中的数据局部性(The data locality of work stealing)
动态环形work stealing双端队列(Dynamic circular work stealing deque)
- Chase/Lev双端队列
异步-完成并行的work优先和help优先的调度策略(Work-first and help-first scheduling policies for async-finish task parallelism)
- 比严格的work stealing更宽泛
一个Java的fork/join灾难(A Java fork/join calamity)
- 对Java fork/join库的批判,特别是其在非严格计算时的work stealing实现
并发系统的调度技巧(Scheduling techniques for concurrent systems)
竞争启发调度(Contention aware scheduling)
时间共享多核系统的平衡work stealing(Balanced work stealing for time-sharing multicores)
三层蛋糕?(Three layer cake)
非阻塞半work stealing队列(Non-blocking steal-half work queues)
Reagents:表现和编写细粒度的并发(Reagents: expressing and composing fine-grained concurrency)
用于共享内存多处理器的可扩展同步性的算法(Algorithms for scalable synchronization of shared-memory multiprocessors)
Epoch-based reclamation
.
其它
只能崩溃的软件(Crash-only software)
编写高性能内存分配器(Composing High-Performance Memory Allocators)
对手动内存分配的思考(Reconsidering Custom Memory Allocation)
关于
Rust 的论文
Rust中的GPU编程(GPU programming in Rust)
并行闭包:一个基于老观点的新做法(Parallel closures: a new twist on an old idea)
- 并不完全关于Rust,不过是Nicholas D. Matsakis写的
Patina: A Formalization of the Rust Programming Language
。一类型系统子集的早期形式,Eric Reed著。
Experience Report: Developing the Servo Web Browser Engine using Rust
。Lars Bergstrom著。
Implementing a Generic Radix Trie in Rust
。Michael Sproul的毕业论文。
Reenix: Implementing a Unix-Like Operating System in Rust
。Alex Light的毕业论文。
Evaluation of performance and productivity metrics of potential programming languages in the HPC environment
。Florian Wilkens的学士学位论文。比较C,Go和Rust。
Nom, a byte oriented, streaming, zero copy, parser combinators library in Rust
。Geoffroy Couprie著,关于VLC的研究。
Graph-Based Higher-Order Intermediate Representation
。一个用Impala(一个类似Rust的语言)实现的实验性的IR。
Code Refinement of Stencil Codes
。另一个使用Impala的论文。
Parallelization in Rust with fork-join and friends
. Linus Farnstrand's master's thesis.
Session Types for Rust
. Philip Munksgaard's master's thesis. Research for Servo.
Ownership is Theft: Experiences Building an Embedded OS in Rust - Amit Levy, et. al.