Perl family: 15 years of Perl 6 and Perl 5

55
PERL FAMILY 15 YEARS OF PERL 6 AND PERL 5 by generated Michal Jurosz (mj41) 23.6.2015

Transcript of Perl family: 15 years of Perl 6 and Perl 5

Page 1: Perl family: 15 years of Perl 6 and Perl 5

PERL FAMILY15 YEARS OF PERL 6 AND PERL 5

by generated

Michal Jurosz (mj41)23.6.2015

Page 2: Perl family: 15 years of Perl 6 and Perl 5

PERL 6 PROGRESSfollowing the day-to-day progressFree/OpenSource projecttaking a long time" != "not going to happen"

, rakudo.cz, 2011, >1500 changes

perl6.czPerl 6 and Parrot links

Page 3: Perl family: 15 years of Perl 6 and Perl 5

PERL 6 (OR P6), (Wikipedia)

, ... ( )

is anything that passes roast - repository of all spec tests

the break in compatibility was mandated fromthe start

perl6.org Perl 6learnXinYminutes.comRosetta Code >750

the official P6 test suite

Page 4: Perl family: 15 years of Perl 6 and Perl 5

PERL - EARLY VERSIONS1987 Perl 1: A general-purpose Unix scriptinglanguage to make report processing easier.1988 Perl 21989 Perl 31991 Perl 4 (Programming Perl/Camel Book)October 17, 1994 - Perl 5.000

Page 5: Perl family: 15 years of Perl 6 and Perl 5
Page 6: Perl family: 15 years of Perl 6 and Perl 5

PERL 6 - BEGINNINGOSCON 2000 (July 17-20)

Perl 6 started in a community sessionJon Orwant, Coffee Mugs

requests for comments

RFC1 (1 Aug 2000), RFC 361 (30 Sep 2000)361 RFCs

Page 7: Perl family: 15 years of Perl 6 and Perl 5

PERL 6, 2000And one of the very very high level

goals of Perl 6 is to keep Perl capableof evolving. Perl 5 was running into

some limits and we're going to figureout how to get around those limits.

-- Larry Wall, 10/2000

Page 8: Perl family: 15 years of Perl 6 and Perl 5

DYNAMIC LANGUAGES = PARROTApril 2001, Parrot = Py3K + Perl 610/9/2001 - release

a very, very early alpha - ,

virtual machine designed to run dynamiclanguages efficiently2004 - Pirate (Python on Parrot)The Parrot Foundation

prankParrot 0.0.1

test.pasmtest2.pasm

Page 9: Perl family: 15 years of Perl 6 and Perl 5

THE STATE OF THE ONION 6Let me put this bluntly. If we'd done

Perl 6 on a schedule, you'd have it bynow. And it would be crap. ... because

we don't have a schedule. We justhave a plan.

-- Larry Wall, 2002

Page 10: Perl family: 15 years of Perl 6 and Perl 5
Page 11: Perl family: 15 years of Perl 6 and Perl 5

SYNOPSES, 8/2004

Created: 10 Aug 2004Perl 6 - specification + test suite

(1140 files, spec 37600+79000)Perl 5 - interpreter + functional tests

The Synopsis documentsgithub.com/perl6/specs

roast

Page 12: Perl family: 15 years of Perl 6 and Perl 5

WHEN? TWO YEARSFinally, when ... Perl 6 beta will be available?

That's a tough question ... With thestate of Parrot and the design work

completed so far ... a good chance we'llsee one within the next two years.

-- Allison Randal, 5/2004

Page 13: Perl family: 15 years of Perl 6 and Perl 5

VOLUNTEERSJava has Sun. .NET has Microsoft.FreeSW has grants and volunteers

2005, 70k$ - NLNet grant2008, 200k$ - Ian Hague grant2015, 10k€ - Perl 6 Core Development Fund

volunteers will do what they want

Page 14: Perl family: 15 years of Perl 6 and Perl 5

PUNIE (PERL 1.000) ON PARROT20 years to the day Perl 1.000 was released2007 - Perl 5.10.0 is now out

(Perl 1) compiler on Parrot VMcapable of running almost the entire Perl 1 testsuite successfully

Punie

Page 15: Perl family: 15 years of Perl 6 and Perl 5
Page 16: Perl family: 15 years of Perl 6 and Perl 5

PUGS (AUDREY TANG), 2005>100 developers first month"-Ofun", commit bit policy, Synopses and >10k unit testsHaskell - many functional programminginfluencesHaskell/Perl 5/STD/JavaScript/Parrot/...Parrot - Python, TCL, Ruby, JavaScript, ...mod_parrot, mod_perl6, ...

IRC logs

Page 17: Perl family: 15 years of Perl 6 and Perl 5

WHY PERL 6 IS TAKING SO ... LONGWhen will Perl 6 be ready?

When it's done.

Seriously, when will it be done?

When the number of volunteersworking on it have completed the

amount of work remaining.

Page 18: Perl family: 15 years of Perl 6 and Perl 5
Page 19: Perl family: 15 years of Perl 6 and Perl 5

JNTHN'S OSCON BEERS2004 - Parrot

Java to Parrot bytecode2007 - Jonathan Worthington

JunctionsPerl 6 since that

Page 20: Perl family: 15 years of Perl 6 and Perl 5

JNTHNMy mission:

Eliminate the implementation issuesthat stand in the way of greatly

increased Perl 6 adoption.

-- Jonathan "jnthn" Worthington

Page 21: Perl family: 15 years of Perl 6 and Perl 5
Page 22: Perl family: 15 years of Perl 6 and Perl 5

PERL 6 - GLOSSARYlanguage: Perl 6 (or Perl 6.0.0)implementations: Rakudo (, Niecza, Pugs, ...)virtual machines: MoarVM, JVM (, Parrot, ...)

binary: perl6-m, perl6-j (, perl6-p)distribution: Rakudo Stargrammar: STD

Page 23: Perl family: 15 years of Perl 6 and Perl 5

PERL 6 - LANGUAGE/SPECspecified by its test suite

/specs - to test suite - repository of all spec tests

- standard grammarwhirlpool model

Synopsis linksroastSTD.pm6

Page 24: Perl family: 15 years of Perl 6 and Perl 5

IMPLEMENTATIONSRakudoNiecza...

Page 25: Perl family: 15 years of Perl 6 and Perl 5

VIRTUAL MACHINE (VM)execute instructions

interpreting, (JIT)memory managementbuild-in data structures

strings, arrays, objects, ...abstract OS

just-in-time

Page 26: Perl family: 15 years of Perl 6 and Perl 5

NQP - NOT QUITE PERL (6)[en-kjů-pí], Patrick R. Michaud, end of 2007a small, easier-to-optimize Perl 6 subsetideal for writing compilers, especially parse treeto AST mappingNQP compiler is implemented in NQP(bootstrapped)nearly all of Rakudo is NQP code (exceptCORE.setting)

Page 27: Perl family: 15 years of Perl 6 and Perl 5

PERL ?an easy thing easyor a hard thing possibleyou can get your work done efficiently... and have time to go for a beer

Page 28: Perl family: 15 years of Perl 6 and Perl 5

..., 4, 5, 6, ... ?backward compatibilityfinished/done?

Page 29: Perl family: 15 years of Perl 6 and Perl 5

PERL 4Perl 4 didn't have lexical (my) variables

and the package separator was ' (not ::)and really nobody used packages anywayand there was no object support whatsoever

Page 30: Perl family: 15 years of Perl 6 and Perl 5

PERL 5 + 6Perl 5

not a dead-end languagePerl 5 renaissance as development in parallel with Perl 6stealing featuresuse feature, use 5.xrelease cycle

Modern Perl

Page 31: Perl family: 15 years of Perl 6 and Perl 5

PERL 6 + 5"Perl 6 is Perl." -- Larry Wall

Rule 1: Whatever Larry says about Perl iscorrect.

sister languagesno intention to have Perl 6 replace Perl 5

Page 32: Perl family: 15 years of Perl 6 and Perl 5

PERL 6 KILLING PERL 5? NO.hugely expanded test suite (27k 2002, 93k 2009)refactored internal - fixes, speed, memory

8/2006 deadregex engine improvements, named capturessmart matching, given/when, state variables,defined-or, say, ...Moose, , CPAN modulesgit, rapid release cycle, cpants

Ponie

Pluggable keywords

Page 33: Perl family: 15 years of Perl 6 and Perl 5

THE STATE OF THE ONION, 2002 - DYINGBut two years ago Perl 5 had alreadystarted dying, because people were

starting to see it as a dead-endlanguage. ... when we announced

Perl 6, Perl 5 suddenly took on a newlife ...

-- Larry Wall, 2002

Page 34: Perl family: 15 years of Perl 6 and Perl 5

PERL 6 - FEATURES 1signatures

positional, named, slurpyis ro, is rw, is copy

- Buf, Uni, Strchained comparisonsmultiline comments, heredocsRat type, Complex, Big integers, Buf, native

references goneUnicode

Page 35: Perl family: 15 years of Perl 6 and Perl 5

PERL 6 - FEATURES 2scales better from script to applicationOO including roles and introspectionmultiple dispatchgradually typed - performancelazy evaluationconcurrency - Promises, Channels, Suppliesjunctions (autothreading)

Page 36: Perl family: 15 years of Perl 6 and Perl 5

PERL 6 - FEATURES 3, ...digest CPAN down into something morecoherentinstall more than one version of packagegrammars and regexesSTD.pm6 written in Perl 6 - overloadingmeta-operators, user-defined operatorsmacrossee features matrix

Page 37: Perl family: 15 years of Perl 6 and Perl 5
Page 38: Perl family: 15 years of Perl 6 and Perl 5

RAKUDO LEAVING THE PARROT NEST3/2009 1.0.0 "Haru Tatsu" released

the first "stable" release to developers1/2010 2.0.0 Production useone bytecode to rule them allseparated repositoriesthe deprecation policy (6 months, 3 months)people

Page 39: Perl family: 15 years of Perl 6 and Perl 5

RAKUDO TODAY"Rakudo" - a Perl 6 language implementationreference (or "official") Perl 6 implementationprimary backend is JVM is also supportedParrot VM abonded - at least for 2015

focus on "The Christmas" ToDo list,

MoarVM

rakudo.org github.com/rakudo

Page 40: Perl family: 15 years of Perl 6 and Perl 5

RAKUDO ★Rakudo Star - since 29.7.2010distribution - including VM, modules, ...a useful and usable distribution of Perl 6aimed at "early adopters" of Perl 6"... pretty near does exist, ..." even if it "... still runsvery slowly ... and has lots of bugs ..." -- lwall,OSCON 2010

Page 41: Perl family: 15 years of Perl 6 and Perl 5

6GUTS BY JNTHNTorment the implementers for the sake of theusers" isn't a joke!In my first couple of years, I learned rather a lotabout how not to implement Perl 6.

, 6guts.wordpress.com slides on jnthn.net

Page 42: Perl family: 15 years of Perl 6 and Perl 5

NOM/6MODEL/QREGEX - 2010..“nom” Rakudo branch – short for “new objectmodel”6model - design and implement a metamodelcoreNQP re-built to use 6model rather than theParrot object modela parallel effort to port the NQP language to the.Net CLR and the JVM

Page 43: Perl family: 15 years of Perl 6 and Perl 5

NOM/6MODEL/QREGEX - ..20121/2011 chromatic - stopped working on Parrot(contributor since late 2001)9/2011 - Rakudo itself is now mostly written inNQP and Perl 6 (90-95%),1/2012 - so, we made it, in many sense this is arevolution5/2012 - QRegex, QAST is AST design andimplementation, written in NQP

Page 44: Perl family: 15 years of Perl 6 and Perl 5

RAKUDO ON THE JVM - 2013invokedynamic instructionawful startup timeperl6-j instead of perl6-mconcurrency only provided on JVM so far

Thread, Promise, Supply, Channel, ...7/2013 92%, 10/2013 99.9%

Page 45: Perl family: 15 years of Perl 6 and Perl 5

MOARVM - 2013/2014lightweight and metamodel-focused runtime forNQP and Rakudosupports 6model and various other needsnatively (efficiently)enable the near-term exploration of JITcompilation in 6modelquick and easy build1/2014 99%, 3/2015 "100%"moarvm.com

Page 46: Perl family: 15 years of Perl 6 and Perl 5

MOARVM VS. PARROT 1Parrot

started as a great VM to run Perl 5.6performance - a 10+ year old codebasevisions of multiple architectsexperimental code, rush to finishthe deprecation policy

Page 47: Perl family: 15 years of Perl 6 and Perl 5

MOARVM VS. PARROT 2MoarVM

lower startup times and lower memory usespesh and JIT - sophisticated dynamicoptimizationperformanceprecise, generational GC...

Page 48: Perl family: 15 years of Perl 6 and Perl 5
Page 49: Perl family: 15 years of Perl 6 and Perl 5

PERL 6 - CHRISTMAS TODOGreat List Refactor (GLR)the Native, Shaped Arrays (NSA)the Normalization Form Grapheme (NFG)

Page 50: Perl family: 15 years of Perl 6 and Perl 5

PERL 6.0Feb 2015, FOSDEM - a 6.0 language

WenZPerl Donate 10,000 EUR4/2015 - jnthn:

May 2008, 200k$ - 4/2015 - Bart Wiegmans:

Perl 6 Core Development Fund

NFG, native arrays, ...Ian Hague grant

Advancing theMoarVM JIT

Page 51: Perl family: 15 years of Perl 6 and Perl 5

SLOW RAKUDOPerl 6 - lazy lists8/2013 - about 3,600x slower than Perl 58/2014 - is 34x slower

Better. But still sucks.

Page 52: Perl family: 15 years of Perl 6 and Perl 5

FAST RAKUDO8/2014 - loop_empty_native test/micro-benchmark

355x faster than 8/2013so 14x faster than Perl 5

Page 53: Perl family: 15 years of Perl 6 and Perl 5

PERL 6 - PICK TWO"Good, fast, cheap: pick two." Well, bydefinition our community has to do it

cheap, so the saying reduces to "Good,Fast: pick one." And we quite

intentionally picked good rather thanfast.

— Larry Wall (Feb 11 2015, )infoworld.com

Page 54: Perl family: 15 years of Perl 6 and Perl 5

QUESTIONS?Michal "mj41" Jurosz

Perl 6 guy GoodData

Generated from sourceby inside .

Powered by .

github.com/mj41/perl6-history-mj41Presentation::Builder prbuilder Docker container

reveal.js

Page 55: Perl family: 15 years of Perl 6 and Perl 5