diff --git a/garbage_collection/README.md b/garbage_collection/README.md index 2b513ba..f7a640d 100644 --- a/garbage_collection/README.md +++ b/garbage_collection/README.md @@ -6,3 +6,6 @@ * [Incremental Garbage Collection: The Train Algorithm](http://www.ssw.uni-linz.ac.at/General/Staff/TW/Wuerthinger05Train.pdf) * [:scroll:](the_lisp_ii_garbage_collector.pdf) [The Lisp II Garbage Collector](ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-019.pdf) * [The Treadmill: Real-Time Garbage Collection Without Motion Sickness](http://home.pipeline.com/~hbaker1/NoMotionGC.html) +* [Parallel Generational-Copying Garbage Collection with a Block-Structured + Heap](http://community.haskell.org/~simonmar/papers/parallel-gc.pdf) + diff --git a/garbage_collection/parallel_generational_copying_garbage_collection_with_a_block_structured_heap.pdf b/garbage_collection/parallel_generational_copying_garbage_collection_with_a_block_structured_heap.pdf new file mode 100644 index 0000000..e5c1e46 Binary files /dev/null and b/garbage_collection/parallel_generational_copying_garbage_collection_with_a_block_structured_heap.pdf differ diff --git a/haskell/README.md b/haskell/README.md index e2599b2..a5979b0 100644 --- a/haskell/README.md +++ b/haskell/README.md @@ -4,3 +4,4 @@ * :scroll: [Tackling the Awkward Squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell](tackling-the-awkward-squad-monadic-input-output-concurrency-exceptions-and-foreign-language-calls-in-haskell.pdf) by Simon Peyton Jones * :scroll: [Making a Fast Curry: Push/Enter vs. Eval/Apply for Higher-order Languages](making-a-fast-curry-push-enter-versus-eval-apply-for-higher-order-languages.pdf) by Simon Marlow and Simon Peyton Jones. A classic... describes well the execution model GHC uses for Haskell, and catches the brilliant authors in a design pivot from original intuition to new conclusions based on empirical data. * :scroll: [A Poor Man's Concurrency Monad](a-poor-mans-concurrency-monad.pdf) by Koen Claessen. Paper describes how without adding any primitives to the language, you could define a concurrency monad transformer in Haskell. +* :scroll: [Parallel Generational-Copying Garbage Collection with a Block-Structured Heap](../garbage_collection/parallel_generational_copying_garbage_collection_with_a_block_structured_heap.pdf). In Haskell, data immutability forces us to produce a lot of temporary data but also helps to collect this garbage rapidly. This paper explains how the Glasgow Haskell Compiler accomplishes this task in a simple, yet effective, manner with no programmer intervention.