|
| 1 | +# Rust Bibliography |
| 2 | + |
| 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. |
| 6 | + |
| 7 | +## Type system |
| 8 | + |
| 9 | +* [Region based memory management in Cyclone](https://www.cs.umd.edu/projects/cyclone/papers/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. |
| 15 | +* [External uniqueness is unique enough](http://www.cs.uu.nl/research/techreps/UU-CS-2002-048.html) |
| 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 |
| 29 | +* [Scheduling techniques for concurrent systems](http://www.stanford.edu/~ouster/cgi-bin/papers/coscheduling.pdf) |
| 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) |
| 32 | +* [Three layer cake for shared-memory programming](http://dl.acm.org/citation.cfm?id=1953616&dl=ACM&coll=DL&CFID=524387192&CFTOKEN=44362705) |
| 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://aturon.github.io/academic/reagents.pdf) |
| 35 | +* [Algorithms for scalable synchronization of shared-memory multiprocessors](https://www.cs.rochester.edu/u/scott/papers/1991_TOCS_synch.pdf) |
| 36 | +* [Epoch-based reclamation](https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-579.pdf). |
| 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 | + |
| 46 | +* [GPU Programming in Rust: Implementing High Level Abstractions in a Systems |
| 47 | + Level |
| 48 | + Language](https://www.cs.indiana.edu/~achauhan/Publications/Pubs/2013-hips-holk-rust.pdf). |
| 49 | + Early GPU work by Eric Holk. |
| 50 | +* [Parallel closures: a new twist on an old |
| 51 | + idea](https://www.usenix.org/conference/hotpar12/parallel-closures-new-twist-old-idea) |
| 52 | + - not exactly about Rust, but by nmatsakis |
| 53 | +* [Patina: A Formalization of the Rust Programming |
| 54 | + Language](http://dada.cs.washington.edu/research/tr/2015/03/UW-CSE-15-03-02.pdf). |
| 55 | + Early formalization of a subset of the type system, by Eric Reed. |
| 56 | +* [Experience Report: Developing the Servo Web Browser Engine using |
| 57 | + Rust](http://arxiv.org/abs/1505.07383). By Lars Bergstrom. |
| 58 | +* [Implementing a Generic Radix Trie in |
| 59 | + Rust](https://michaelsproul.github.io/rust_radix_paper/rust-radix-sproul.pdf). Undergrad |
| 60 | + paper by Michael Sproul. |
| 61 | +* [Reenix: Implementing a Unix-Like Operating System in |
| 62 | + Rust](http://scialex.github.io/reenix.pdf). Undergrad paper by Alex |
| 63 | + Light. |
| 64 | +* [Evaluation of performance and productivity metrics of potential programming languages in the HPC environment](http://octarineparrot.com/assets/mrfloya-thesis-ba.pdf). |
| 65 | + Bachelor's thesis by Florian Wilkens. Compares C, Go and Rust. |
| 66 | +* [Nom, a byte oriented, streaming, zero copy, parser combinators library |
| 67 | + in Rust](http://spw15.langsec.org/papers/couprie-nom.pdf). By |
| 68 | + Geoffroy Couprie, research for VLC. |
| 69 | +* [Graph-Based Higher-Order Intermediate |
| 70 | + Representation](http://compilers.cs.uni-saarland.de/papers/lkh15_cgo.pdf). An |
| 71 | + experimental IR implemented in Impala, a Rust-like language. |
| 72 | +* [Code Refinement of Stencil |
| 73 | + Codes](http://compilers.cs.uni-saarland.de/papers/ppl14_web.pdf). Another |
| 74 | + paper using Impala. |
| 75 | +* [Parallelization in Rust with fork-join and |
| 76 | + friends](http://publications.lib.chalmers.se/records/fulltext/219016/219016.pdf). Linus |
| 77 | + Farnstrand's master's thesis. |
| 78 | +* [Session Types for |
| 79 | + Rust](http://munksgaard.me/papers/laumann-munksgaard-larsen.pdf). Philip |
| 80 | + Munksgaard's master's thesis. Research for Servo. |
| 81 | +* [Ownership is Theft: Experiences Building an Embedded OS in Rust - Amit Levy, et. al.](http://amitlevy.com/papers/tock-plos2015.pdf) |
| 82 | +* [You can't spell trust without Rust](https://raw.githubusercontent.com/Gankro/thesis/master/thesis.pdf). Alexis Beingessner's master's thesis. |
| 83 | +* [Rust-Bio: a fast and safe bioinformatics library](http://bioinformatics.oxfordjournals.org/content/early/2015/10/06/bioinformatics.btv573). Johannes Köster |
| 84 | +* [Safe, Correct, and Fast Low-Level Networking](https://octarineparrot.com/assets/msci_paper.pdf). Robert Clipsham's master's thesis. |
| 85 | +* [Formalizing Rust traits](http://hdl.handle.net/2429/55609). Jonatan Milewski's master's thesis. |
| 86 | +* [Rust as a Language for High Performance GC Implementation](http://users.cecs.anu.edu.au/~steveb/downloads/pdf/rust-ismm-2016.pdf) |
| 87 | +* [Simple Verification of Rust Programs via Functional Purification](https://github.com/Kha/electrolysis). Sebastian Ullrich's master's thesis. |
| 88 | +* [Writing parsers like it is 2017](http://spw17.langsec.org/papers/chifflier-parsing-in-2017.pdf) Pierre Chifflier and Geoffroy Couprie for the Langsec Workshop |
| 89 | +* [The Case for Writing a Kernel in Rust](https://www.tockos.org/assets/papers/rust-kernel-apsys2017.pdf) |
| 90 | +* [RustBelt: Securing the Foundations of the Rust Programming Language](https://plv.mpi-sws.org/rustbelt/popl18/) |
0 commit comments