This is *your* change to get up-to-date with Perl 6, specifically with Rakudo 
and NQP.

We have asked Jonathan Worthington to give an intensive 2-day workshop taking a 
deep dive into many areas of the Rakudo and NQP internals.  Mostly focusing on 
the backend-agnostic parts but with coverage of the JVM and future MoarVM 
backends too. While the overall focus will be on getting to know the Rakudo and 
NQP internals, we'll also build the odd small language and object system along 
the way to get a better handle on the primitives.

It will be held in Frankfurt am Main, Germany, on 14/15 September 2013, at:

  7P B2B Mobile & IT Services GmbH
  Solmsstr. 4
  60486 Frankfurt am Main
  http://goo.gl/maps/2T5j2

There are only 6 places left!

Frankfurt is easily reachable by plane, train and car.


Please contact me with questions, or show up on #perl6 (on irc.freenode.org) 
and let us know you're attending.



Elizabeth Mattijsen




Prerequisites
=============
A reasonable knowledge of the Perl 6 language and, preferably, a little 
experience working with NQP also.
 
Day 1
=====
The eagle's eye view: Compilers, and the NQP/Rakudo Architecture
- What compilers do
- What runtimes do
- Perl 6 challenges
- NQP as a language
- NQP as a compiler construction toolchain
- QAST
- The nqp:: op set
- Bootstrapping in a nutshell
- How Rakudo uses NQP
 
The NQP Language
- Design goals
- Literals, variables, control flow
- Subroutines, pointy blocks, closure semantics
- Classes, attributes, methods
- Regexes and grammars
- Roles
- Multiple dispatch
- Built-ins and nqp:: ops
- Exception handling
- Limitations and other differences from full Perl 6
- Shortcomings
 
The compilation pipeline
- The HLL::Compiler class
- Frontends, backends, and the QAST between them
- Parsing with grammars, AST building with actions
- Code generation
- Building a tiny language from scratch
 
QAST
- QAST::Node, the base of it all
- The overall structure of an AST
- Literals: QAST::IVal, QAST::NVal and QAST::SVal
- Operations: QAST::Op, basic examples
- Sequencing: QAST::Stmts, QAST::Stmt
- Variables: QAST::Var, QAST::VarWithFallback, scope, decl, value
- The block symbols table
- Invocation
- Parameters and arguments
- Contextualization: QAST::Want
- Block references: QAST::BVal
- Object references: QAST::WVal
- The backend escape hatch: QAST::VM
- At the top: QAST::CompUnit
 
Exploring nqp:: ops
- Arithmetic
- Relational
- Aggregate
- String
- Flow control
- Exception related
- Context introspection
- Big integer
 
Day 2
=====
6model
- Objects: behavior + state
- Types and kinds
- Meta-objects
- Representations
- STables
- knowhow, the root of it all
- Building a simple object system from scratch
- Adding objects to our little language, using a World
- Method caches
- Type checking
- Boolification
- Invocation
- Exploring NQP's meta-objects
- Exploring Rakudo's meta-objects
- Container handling
 
Bounded Serialization and Module Loading
- The compile-time/runtime boundary
- Serialization contexts
- QAST::WVal revisited
- What's "bounded" about it
- Repossession, conflicts and other such terror
- nqp:: ops related to serialization contexts
- The World, revisited
- How module loading works
 
The regex and grammar engine
- The QAST::Regex node and its subtypes
- Cursor and Match
- The bstack and the cstack
- NFAs and Longest Token Matching
 
The JVM backend
- An overview of the JVM
- The QAST to JAST translator
- The runtime support library
 
The MoarVM backend
- An overview of MoarVM
- The QAST to MAST translator

Reply via email to