]>
Commit | Line | Data |
---|---|---|
e9174d1e | 1 | % Bibliography |
9346a6ac | 2 | |
e9174d1e SL |
3 | This is a reading list of material relevant to Rust. It includes prior |
4 | research that has - at one time or another - influenced the design of | |
5 | Rust, as well as publications about Rust. | |
9346a6ac AL |
6 | |
7 | ### Type system | |
8 | ||
9 | * [Region based memory management in Cyclone](http://209.68.42.137/ucsd-pages/Courses/cse227.w03/handouts/cyclone-regions.pdf) | |
10 | * [Safe manual memory management in Cyclone](http://www.cs.umd.edu/projects/PL/cyclone/scp.pdf) | |
11 | * [Typeclasses: making ad-hoc polymorphism less ad hoc](http://www.ps.uni-sb.de/courses/typen-ws99/class.ps.gz) | |
12 | * [Macros that work together](https://www.cs.utah.edu/plt/publications/jfp12-draft-fcdf.pdf) | |
13 | * [Traits: composable units of behavior](http://scg.unibe.ch/archive/papers/Scha03aTraits.pdf) | |
14 | * [Alias burying](http://www.cs.uwm.edu/faculty/boyland/papers/unique-preprint.ps) - We tried something similar and abandoned it. | |
c1a9b12d | 15 | * [External uniqueness is unique enough](http://www.cs.uu.nl/research/techreps/UU-CS-2002-048.html) |
9346a6ac AL |
16 | * [Uniqueness and Reference Immutability for Safe Parallelism](https://research.microsoft.com/pubs/170528/msr-tr-2012-79.pdf) |
17 | * [Region Based Memory Management](http://www.cs.ucla.edu/~palsberg/tba/papers/tofte-talpin-iandc97.pdf) | |
18 | ||
19 | ### Concurrency | |
20 | ||
21 | * [Singularity: rethinking the software stack](https://research.microsoft.com/pubs/69431/osr2007_rethinkingsoftwarestack.pdf) | |
22 | * [Language support for fast and reliable message passing in singularity OS](https://research.microsoft.com/pubs/67482/singsharp.pdf) | |
23 | * [Scheduling multithreaded computations by work stealing](http://supertech.csail.mit.edu/papers/steal.pdf) | |
24 | * [Thread scheduling for multiprogramming multiprocessors](http://www.eecis.udel.edu/%7Ecavazos/cisc879-spring2008/papers/arora98thread.pdf) | |
25 | * [The data locality of work stealing](http://www.aladdin.cs.cmu.edu/papers/pdfs/y2000/locality_spaa00.pdf) | |
26 | * [Dynamic circular work stealing deque](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.170.1097&rep=rep1&type=pdf) - The Chase/Lev deque | |
27 | * [Work-first and help-first scheduling policies for async-finish task parallelism](http://www.cs.rice.edu/%7Eyguo/pubs/PID824943.pdf) - More general than fully-strict work stealing | |
28 | * [A Java fork/join calamity](http://www.coopsoft.com/ar/CalamityArticle.html) - critique of Java's fork/join library, particularly its application of work stealing to non-strict computation | |
c1a9b12d | 29 | * [Scheduling techniques for concurrent systems](http://www.stanford.edu/~ouster/cgi-bin/papers/coscheduling.pdf) |
9346a6ac AL |
30 | * [Contention aware scheduling](http://www.blagodurov.net/files/a8-blagodurov.pdf) |
31 | * [Balanced work stealing for time-sharing multicores](http://www.cse.ohio-state.edu/hpcs/WWW/HTML/publications/papers/TR-12-1.pdf) | |
c1a9b12d | 32 | * [Three layer cake for shared-memory programming](http://dl.acm.org/citation.cfm?id=1953616&dl=ACM&coll=DL&CFID=524387192&CFTOKEN=44362705) |
9346a6ac AL |
33 | * [Non-blocking steal-half work queues](http://www.cs.bgu.ac.il/%7Ehendlerd/papers/p280-hendler.pdf) |
34 | * [Reagents: expressing and composing fine-grained concurrency](http://www.mpi-sws.org/~turon/reagents.pdf) | |
35 | * [Algorithms for scalable synchronization of shared-memory multiprocessors](https://www.cs.rochester.edu/u/scott/papers/1991_TOCS_synch.pdf) | |
e9174d1e | 36 | * [Epoc-based reclamation](https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-579.pdf). |
9346a6ac AL |
37 | |
38 | ### Others | |
39 | ||
40 | * [Crash-only software](https://www.usenix.org/legacy/events/hotos03/tech/full_papers/candea/candea.pdf) | |
41 | * [Composing High-Performance Memory Allocators](http://people.cs.umass.edu/~emery/pubs/berger-pldi2001.pdf) | |
42 | * [Reconsidering Custom Memory Allocation](http://people.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf) | |
43 | ||
44 | ### Papers *about* Rust | |
45 | ||
c1a9b12d SL |
46 | * [GPU Programming in Rust: Implementing High Level Abstractions in a |
47 | Systems Level | |
48 | Language](http://www.cs.indiana.edu/~eholk/papers/hips2013.pdf). Early GPU work by Eric Holk. | |
49 | * [Parallel closures: a new twist on an old | |
50 | idea](https://www.usenix.org/conference/hotpar12/parallel-closures-new-twist-old-idea) | |
b039eaaf | 51 | - not exactly about Rust, but by nmatsakis |
c1a9b12d SL |
52 | * [Patina: A Formalization of the Rust Programming |
53 | Language](ftp://ftp.cs.washington.edu/tr/2015/03/UW-CSE-15-03-02.pdf). Early | |
54 | formalization of a subset of the type system, by Eric Reed. | |
55 | * [Experience Report: Developing the Servo Web Browser Engine using | |
56 | Rust](http://arxiv.org/abs/1505.07383). By Lars Bergstrom. | |
57 | * [Implementing a Generic Radix Trie in | |
58 | Rust](https://michaelsproul.github.io/rust_radix_paper/rust-radix-sproul.pdf). Undergrad | |
59 | paper by Michael Sproul. | |
60 | * [Reenix: Implementing a Unix-Like Operating System in | |
61 | Rust](http://scialex.github.io/reenix.pdf). Undergrad paper by Alex | |
62 | Light. | |
63 | * [Evaluation of performance and productivity metrics of potential | |
b039eaaf SL |
64 | programming languages in the HPC environment] |
65 | (http://octarineparrot.com/assets/mrfloya-thesis-ba.pdf). | |
66 | Bachelor's thesis by Florian Wilkens. Compares C, Go and Rust. | |
c1a9b12d SL |
67 | * [Nom, a byte oriented, streaming, zero copy, parser combinators library |
68 | in Rust](http://spw15.langsec.org/papers/couprie-nom.pdf). By | |
69 | Geoffroy Couprie, research for VLC. | |
70 | * [Graph-Based Higher-Order Intermediate | |
71 | Representation](http://compilers.cs.uni-saarland.de/papers/lkh15_cgo.pdf). An | |
72 | experimental IR implemented in Impala, a Rust-like language. | |
73 | * [Code Refinement of Stencil | |
74 | Codes](http://compilers.cs.uni-saarland.de/papers/ppl14_web.pdf). Another | |
75 | paper using Impala. | |
e9174d1e SL |
76 | * [Parallelization in Rust with fork-join and |
77 | friends](http://publications.lib.chalmers.se/records/fulltext/219016/219016.pdf). Linus | |
78 | Farnstrand's master's thesis. | |
79 | * [Session Types for | |
80 | Rust](http://munksgaard.me/papers/laumann-munksgaard-larsen.pdf). Philip | |
b039eaaf SL |
81 | Munksgaard's master's thesis. Research for Servo. |
82 | * [Ownership is Theft: Experiences Building an Embedded OS in Rust - Amit Levy, et. al.](http://amitlevy.com/papers/tock-plos2015.pdf) |