This page contains links to slides, books and papers that I’ve found interesting to read while working on Perl 6 related things.
Metamodels
- Uniform and safe metaclass composition – using roles to deal with meta-class compatibility issues. Note that Rakudo’s metaobjects are factored using roles.
- Avoiding Confusion in Meta-Circularity: The Meta-Helix – essentially proposes a delegatory model. Not something that’s possible for the Perl 6 meta-programmer just out of the box, but maybe a suggested “recipe”. Worth reading the paper for the overall discussion of meta-circularity.
- The Art of the Metaobject Protocol – must-read book for those new to the idea of metaobjects. Examples are in Common Lisp, but still very readable even if you’re not much of a Lisp hacker, and contains a wealth of information. Section on bootstrapping is a bit of a handwave, though…
Optimization
- A Simple, Fast Dominance Algorithm – the dominance tree and dominance frontier computation algorithm used in MoarVM. Also an interesting example of where good engineering can outstrip asymptotic complexity in the real world.
- Efficiently Computing Static Single Assignment Form and the Control Dependence Graph – the SSA transform described in this paper is also used in MoarVM.
- Dynamic Code Management: Improving Whole Program Code Locality in Managed Runtimes
Garbage Collection
- The Garbage Collection Handbook – the shiny new second edition. Basically, THE book on this topic.
- Finding Your Cronies: Static Analysis for Dynamic Object Colocation
- Detecting Memory Leaks in Managed Languages with Cork – an approach to spotting memory leaks in GC-managed object
- Immix: A Mark-Region Garbage Collector with Space Efficiency, Fast Collection, and Mutator Locality
Concurrency
Runtime/VM Design
- Understanding CPU Caches – what it says on the tin. Not a load of detail, but the points it makes are good ones. Worth a look through.
- Dynamic Compilation and Adaptive Optimization in Virtual Machines – excellent set of slides on JIT compilation. Long, but worthwhile if you’re seriously interested in this area.
- .NET Type Internals – From a Microsoft CLR Perspective – a decent overview of how the CLR handles a bunch of things. Nothing revolutionary, but a useful data point in VM design space.
- A talk about LuaJIT – dives into its tracing, etc.
Types
- What is Gradual Typing? – an introduction to gradual typing from one of its creators
- Gradual Typing for Objects – a meeting of OOP and gradual typing
- Uncertain<T>: A First-Order Type for Uncertain Data
OO
- Traits: Composable Units of Behaviour – the original paper on traits (which we know as roles in Perl 6)