about summary refs log tree commit diff
path: root/src/doc/rustc-dev-guide
diff options
context:
space:
mode:
authorWho? Me?! <mark-i-m@users.noreply.github.com>2019-11-13 09:51:01 -0600
committerSantiago Pastorino <spastorino@gmail.com>2019-11-13 16:51:01 +0100
commit99ba3e67d6a00b5e0945cf7f7e5fee5504ace6ea (patch)
treefb3aeb97e3fde2fd7c826cdcaf9ac272dfecc331 /src/doc/rustc-dev-guide
parent391c77b14877458871d168330880b97da69f87bd (diff)
downloadrust-99ba3e67d6a00b5e0945cf7f7e5fee5504ace6ea.tar.gz
rust-99ba3e67d6a00b5e0945cf7f7e5fee5504ace6ea.zip
add compilers biblio (#512)
Diffstat (limited to 'src/doc/rustc-dev-guide')
-rw-r--r--src/doc/rustc-dev-guide/src/appendix/background.md35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/doc/rustc-dev-guide/src/appendix/background.md b/src/doc/rustc-dev-guide/src/appendix/background.md
index dbfe6a3dbe8..50a550dc8d0 100644
--- a/src/doc/rustc-dev-guide/src/appendix/background.md
+++ b/src/doc/rustc-dev-guide/src/appendix/background.md
@@ -126,3 +126,38 @@ So what does this have to do with regions? Well, we can apply the
 analogous concept to type and regions. For example, in the type `&'a
 u32`, `'a` appears free.  But in the type `for<'a> fn(&'a u32)`, it
 does not.
+
+# Further Reading About Compilers
+
+> Thanks to `mem`, `scottmcm`, and `Levi` on the official Discord for the
+> recommendations, and to `tinaun` for posting a link to a [twitter thread from
+> Graydon Hoare](https://twitter.com/graydon_pub/status/1039615569132118016)
+> which had some more recommendations!
+> 
+> Other sources: https://gcc.gnu.org/wiki/ListOfCompilerBooks
+>
+> If you have other suggestions, please feel free to open an issue or PR.
+
+## Books
+- [Types and Programming Languages](https://www.cis.upenn.edu/~bcpierce/tapl/)
+- [Programming Language Pragmatics](https://www.cs.rochester.edu/~scott/pragmatics/)
+- [Practical Foundations for Programming Languages](https://www.cs.cmu.edu/~rwh/pfpl/2nded.pdf)
+- [Compilers: Principles, Techniques, and Tools, 2nd Edition](https://www.amazon.com/dp/9332518661/ref=cm_sw_r_other_apa_1tUSBb5VHAVA1)
+- [Garbage Collection: Algorithms for Automatic Dynamic Memory Management](https://www.cs.kent.ac.uk/people/staff/rej/gcbook/)
+- [Linkers and Loaders](https://linker.iecc.com/)
+- [Advanced Compiler Design and Implementation](https://www.goodreads.com/book/show/887908.Advanced_Compiler_Design_and_Implementation)
+- [Building an Optimizing Compiler](https://www.goodreads.com/book/show/2063103.Building_an_Optimizing_Compiler)
+- [Crafting Interpreters](http://www.craftinginterpreters.com/)
+
+## Courses
+- [University of Oregon Programming Languages Summer School archive](https://www.cs.uoregon.edu/research/summerschool/archives.html)
+
+## Wikis
+- [Wikipedia](https://en.wikipedia.org/wiki/List_of_programming_languages_by_type)
+- [Esoteric Programming Languages](https://esolangs.org/wiki/Main_Page)
+- [Stanford Encyclopedia of Philosophy](https://plato.stanford.edu/index.html)
+- [nLab](https://ncatlab.org/nlab/show/HomePage)
+
+## Misc Papers and Blog Posts
+- [Programming in Martin-Löf's Type Theory](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.118.6683&rep=rep1&type=pdf)
+- [Polymorphism, Subtyping, and Type Inference in MLsub](https://www.cl.cam.ac.uk/~sd601/papers/mlsub-preprint.pdf)