T1532

Ladda ner som PDF

Rakudo Perl 6 and NQP Internals

Denna intensiva tvådagars workshop gör en djupdykning ned i många delar av Rakudo Perl 6 och NQP, med huvudsakligt fokus på de backend-oberoende delarna men även med visst fokus på JVM:en och den kommande MoarVM.

Under kursen får deltagarna bygga sin egen lilla kompilator, komplett med ett enkelt klassbaserat objektsystem, för att hjälpa dem att förstå hur verktygskedjan fungerar.

Kursutvecklare/Lärare Jonathan Worthington från Edument har aktivt deltagit i utvecklingen av Rakudo Perl 6 Compiler från start och jobbat med språk sen start. Vare sig det handlar om mjukvaruarkitektur, design, kodning, undervisning eller mentorskap, så känner Jonathan sig som hemma

Målgrupp

Programmerare som är nyfikna på Perl 6 internals och hur dess kompilator fungerar. Kursen är även intressant för dem som vill lära sig kompilatorkunstruktion generellt.

Förkunskaper

Rimlig kunskap om språket Perl 6, och helst lite erfarenhet av att jobba med NQP också.

Dag 1

Översikt: Kompilatorer, och NQP/Rakudo-arkitekturen

  • Vad kompilatorer gör
  • Vad körsystem gör
  • Perl 6-utmaningar
  • NQP som språk
  • NQP som toolbox för att bygga kompilatorer
  • QAST
  • Operationerna i nqp::
  • Bootstrapping i ett nötskal
  • Hur Rakudo använder NQP

Språket NQP

  • Designmål
  • Literaler, variabler, kontrollflöde
  • Subrutiner, spetsiga block, closure-semantik
  • Klasser, attribut, metoder
  • Regexar och grammatiker
  • Roller
  • Multipel dispatch
  • Inbyggda kommandon och nqp::-operationer
  • Undantagshantering
  • Begränsningar och andra skillnader från fullfjädrad Perl 6
  • Brister

Kompileringsprocessen

  • Klassen HLL::Compiler
  • Frontends, backends, och QAST däremellan
  • Parsning med grammatiker, AST-byggande med handlingar
  • Kodgenerering
  • Att bygga ett pyttelitet språk från grunden

QAST

  • QAST::Node, alltings bas
  • Den övergripande strukturen hos ett AST
  • Literaler: QAST::IVal, QAST::NVal och QAST::SVal
  • Operationer: QAST::Op, grundläggande exempel
  • Sekvensering: QAST::Stmts, QAST::Stmt
  • Variabler: QAST::Var, QAST::VarWithFallback, scope, decl, value
  • Block-symboltabellen
  • Anrop
  • Parametrar och argument
  • Kontextualisering: QAST::Want
  • Blockreferenser: QAST::BVal
  • Objektreferenser: QAST::WVal
  • Backend escape hatch: QAST::VM
  • På toppen: QAST::CompUnit

En närmare... Läs mer

Dag 1

Översikt: Kompilatorer, och NQP/Rakudo-arkitekturen

  • Vad kompilatorer gör
  • Vad körsystem gör
  • Perl 6-utmaningar
  • NQP som språk
  • NQP som toolbox för att bygga kompilatorer
  • QAST
  • Operationerna i nqp::
  • Bootstrapping i ett nötskal
  • Hur Rakudo använder NQP

Språket NQP

  • Designmål
  • Literaler, variabler, kontrollflöde
  • Subrutiner, spetsiga block, closure-semantik
  • Klasser, attribut, metoder
  • Regexar och grammatiker
  • Roller
  • Multipel dispatch
  • Inbyggda kommandon och nqp::-operationer
  • Undantagshantering
  • Begränsningar och andra skillnader från fullfjädrad Perl 6
  • Brister

Kompileringsprocessen

  • Klassen HLL::Compiler
  • Frontends, backends, och QAST däremellan
  • Parsning med grammatiker, AST-byggande med handlingar
  • Kodgenerering
  • Att bygga ett pyttelitet språk från grunden

QAST

  • QAST::Node, alltings bas
  • Den övergripande strukturen hos ett AST
  • Literaler: QAST::IVal, QAST::NVal och QAST::SVal
  • Operationer: QAST::Op, grundläggande exempel
  • Sekvensering: QAST::Stmts, QAST::Stmt
  • Variabler: QAST::Var, QAST::VarWithFallback, scope, decl, value
  • Block-symboltabellen
  • Anrop
  • Parametrar och argument
  • Kontextualisering: QAST::Want
  • Blockreferenser: QAST::BVal
  • Objektreferenser: QAST::WVal
  • Backend escape hatch: QAST::VM
  • På toppen: QAST::CompUnit

En närmare titt på nqp::-operationerna

  • Aritmetik
  • Jämförelser
  • Behållare
  • Strängar
  • Flödeskontroll
  • Undantagsrelaterade
  • Kontext-introspektion
  • Stora heltal

Dag 2

6model

  • Objekt: beteende + tillstånd
  • Typer och sorter
  • Metaobjekt
  • Representationer
  • STables
  • knowhow, roten till allting
  • Att bygga ett enkelt objektsystem från scratch
  • Att lägga till objekt till vårt lilla språk, med en World
  • Metod-cacher
  • Typcheckning
  • Boolifiering
  • Anrop
  • Utforska NQPs metaobjekt
  • Utforska Rakudos metaobjekt
  • Hantering av behållare

Begränsad serialisering och modulladdning

  • Gränsen mellan kompileringsfas och körfas
  • Serialiseringskontexter
  • QAST::WVal i repris
  • Vad som är "begränsat" i det
  • Återtagning, konflikter och andra förskräckligheter
  • nqp::-operationer i relation till serialiseringskontexter
  • World i repris
  • Hur modulladdning fungerar

Regex- och grammatikmotorn

  • QAST::Regex-noden och dess subtyper
  • Cursor och Match
  • Två stackar: bstack och cstack
  • NFA:er och Längsta Token-Matchning.

JVM backend

  • En beskrivning av JVM:en
  • QAST-till-JAST-översättaren
  • Biblioteket som erbjuder körsupport

MoarVM backend

  • En beskrivning av MoarVM
  • QAST-till-MAST-översättaren
Kurs-ID: T1532
Längd: 2 dagar
Pris exkl moms: 20 450 kr
Kan betalas med:
TRAINING CARD

Lämna dina kontaktuppgifter om du önskar en företagsintern utbildning.

Tipsa