SlideShare a Scribd company logo
1 of 55
Download to read offline
PERL FAMILY
15 YEARS OF PERL 6 AND PERL 5
by
generated
Michal Jurosz (mj41)
23.6.2015
PERL 6 PROGRESS
following the day-to-day progress
Free/OpenSource project
taking a long time" != "not going to happen"
, rakudo.cz
, 2011, >1500 changes
perl6.cz
Perl 6 and Parrot links
PERL 6 (OR P6)
, (Wikipedia)
, ...
( )
is anything that passes
roast - repository of all spec tests
the break in compatibility was mandated from
the start
perl6.org Perl 6
learnXinYminutes.com
Rosetta Code >750
the official P6 test suite
PERL - EARLY VERSIONS
1987 Perl 1: A general-purpose Unix scripting
language to make report processing easier.
1988 Perl 2
1989 Perl 3
1991 Perl 4 (Programming Perl/Camel Book)
October 17, 1994 - Perl 5.000
PERL 6 - BEGINNING
OSCON 2000 (July 17-20)
Perl 6 started in a community session
Jon Orwant, Coffee Mugs
requests for comments
RFC1 (1 Aug 2000), RFC 361 (30 Sep 2000)
361 RFCs
PERL 6, 2000
And one of the very very high level
goals of Perl 6 is to keep Perl capable
of evolving. Perl 5 was running into
some limits and we're going to figure
out how to get around those limits.
-- Larry Wall, 10/2000
DYNAMIC LANGUAGES = PARROT
April 2001, Parrot = Py3K + Perl 6
10/9/2001 - release
a very, very early alpha - ,
virtual machine designed to run dynamic
languages efficiently
2004 - Pirate (Python on Parrot)
The Parrot Foundation
prank
Parrot 0.0.1
test.pasm
test2.pasm
THE STATE OF THE ONION 6
Let me put this bluntly. If we'd done
Perl 6 on a schedule, you'd have it by
now. And it would be crap. ... because
we don't have a schedule. We just
have a plan.
-- Larry Wall, 2002
SYNOPSES, 8/2004
Created: 10 Aug 2004
Perl 6 - specification + test suite
(1140 files, spec 37600+79000)
Perl 5 - interpreter + functional tests
The Synopsis documents
github.com/perl6/specs
roast
WHEN? TWO YEARS
Finally, when ... Perl 6 beta will be available?
That's a tough question ... With the
state of Parrot and the design work
completed so far ... a good chance we'll
see one within the next two years.
-- Allison Randal, 5/2004
VOLUNTEERS
Java has Sun. .NET has Microsoft.
FreeSW has grants and volunteers
2005, 70k$ - NLNet grant
2008, 200k$ - Ian Hague grant
2015, 10k€ - Perl 6 Core Development Fund
volunteers will do what they want
PUNIE (PERL 1.000) ON PARROT
20 years to the day Perl 1.000 was released
2007 - Perl 5.10.0 is now out
(Perl 1) compiler on Parrot VM
capable of running almost the entire Perl 1 test
suite successfully
Punie
PUGS (AUDREY TANG), 2005
>100 developers first month
"-Ofun", commit bit policy,
Synopses and >10k unit tests
Haskell - many functional programming
influences
Haskell/Perl 5/STD/JavaScript/Parrot/...
Parrot - Python, TCL, Ruby, JavaScript, ...
mod_parrot, mod_perl6, ...
IRC logs
WHY PERL 6 IS TAKING SO ... LONG
When will Perl 6 be ready?
When it's done.
Seriously, when will it be done?
When the number of volunteers
working on it have completed the
amount of work remaining.
JNTHN'S OSCON BEERS
2004 - Parrot
Java to Parrot bytecode
2007 - Jonathan Worthington
Junctions
Perl 6 since that
JNTHN
My mission:
Eliminate the implementation issues
that stand in the way of greatly
increased Perl 6 adoption.
-- Jonathan "jnthn" Worthington
PERL 6 - GLOSSARY
language: 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 Star
grammar: STD
PERL 6 - LANGUAGE/SPEC
specified by its test suite
/specs - to test suite
- repository of all spec tests
- standard grammar
whirlpool model
Synopsis links
roast
STD.pm6
IMPLEMENTATIONS
Rakudo
Niecza
...
VIRTUAL MACHINE (VM)
execute instructions
interpreting, (JIT)
memory management
build-in data structures
strings, arrays, objects, ...
abstract OS
just-in-time
NQP - NOT QUITE PERL (6)
[en-kjů-pí], Patrick R. Michaud, end of 2007
a small, easier-to-optimize Perl 6 subset
ideal for writing compilers, especially parse tree
to AST mapping
NQP compiler is implemented in NQP
(bootstrapped)
nearly all of Rakudo is NQP code (except
CORE.setting)
PERL ?
an easy thing easy
or a hard thing possible
you can get your work done efficiently
... and have time to go for a beer
..., 4, 5, 6, ... ?
backward compatibility
finished/done?
PERL 4
Perl 4 didn't have lexical (my) variables
and the package separator was ' (not ::)
and really nobody used packages anyway
and there was no object support whatsoever
PERL 5 + 6
Perl 5
not a dead-end language
Perl 5 renaissance as
development in parallel with Perl 6
stealing features
use feature, use 5.x
release cycle
Modern Perl
PERL 6 + 5
"Perl 6 is Perl." -- Larry Wall
Rule 1: Whatever Larry says about Perl is
correct.
sister languages
no intention to have Perl 6 replace Perl 5
PERL 6 KILLING PERL 5? NO.
hugely expanded test suite (27k 2002, 93k 2009)
refactored internal - fixes, speed, memory
8/2006 dead
regex engine improvements, named captures
smart matching, given/when, state variables,
defined-or, say, ...
Moose, , CPAN modules
git, rapid release cycle, cpants
Ponie
Pluggable keywords
THE STATE OF THE ONION, 2002 - DYING
But two years ago Perl 5 had already
started dying, because people were
starting to see it as a dead-end
language. ... when we announced
Perl 6, Perl 5 suddenly took on a new
life ...
-- Larry Wall, 2002
PERL 6 - FEATURES 1
signatures
positional, named, slurpy
is ro, is rw, is copy
- Buf, Uni, Str
chained comparisons
multiline comments, heredocs
Rat type, Complex, Big integers, Buf, native
references gone
Unicode
PERL 6 - FEATURES 2
scales better from script to application
OO including roles and introspection
multiple dispatch
gradually typed - performance
lazy evaluation
concurrency - Promises, Channels, Supplies
junctions (autothreading)
PERL 6 - FEATURES 3, ...
digest CPAN down into something more
coherent
install more than one version of package
grammars and regexes
STD.pm6 written in Perl 6 - overloading
meta-operators, user-defined operators
macros
see features matrix
RAKUDO LEAVING THE PARROT NEST
3/2009 1.0.0 "Haru Tatsu" released
the first "stable" release to developers
1/2010 2.0.0 Production use
one bytecode to rule them all
separated repositories
the deprecation policy (6 months, 3 months)
people
RAKUDO TODAY
"Rakudo" - a Perl 6 language implementation
reference (or "official") Perl 6 implementation
primary backend is
JVM is also supported
Parrot VM abonded - at least for 2015
focus on "The Christmas" ToDo list
,
MoarVM
rakudo.org github.com/rakudo
RAKUDO ★
Rakudo Star - since 29.7.2010
distribution - including VM, modules, ...
a useful and usable distribution of Perl 6
aimed at "early adopters" of Perl 6
"... pretty near does exist, ..." even if it "... still runs
very slowly ... and has lots of bugs ..." -- lwall,
OSCON 2010
6GUTS BY JNTHN
Torment the implementers for the sake of the
users" isn't a joke!
In my first couple of years, I learned rather a lot
about how not to implement Perl 6.
,6guts.wordpress.com slides on jnthn.net
NOM/6MODEL/QREGEX - 2010..
“nom” Rakudo branch – short for “new object
model”
6model - design and implement a metamodel
core
NQP re-built to use 6model rather than the
Parrot object model
a parallel effort to port the NQP language to the
.Net CLR and the JVM
NOM/6MODEL/QREGEX - ..2012
1/2011 chromatic - stopped working on Parrot
(contributor since late 2001)
9/2011 - Rakudo itself is now mostly written in
NQP and Perl 6 (90-95%),
1/2012 - so, we made it, in many sense this is a
revolution
5/2012 - QRegex, QAST is AST design and
implementation, written in NQP
RAKUDO ON THE JVM - 2013
invokedynamic instruction
awful startup time
perl6-j instead of perl6-m
concurrency only provided on JVM so far
Thread, Promise, Supply, Channel, ...
7/2013 92%, 10/2013 99.9%
MOARVM - 2013/2014
lightweight and metamodel-focused runtime for
NQP and Rakudo
supports 6model and various other needs
natively (efficiently)
enable the near-term exploration of JIT
compilation in 6model
quick and easy build
1/2014 99%, 3/2015 "100%"
moarvm.com
MOARVM VS. PARROT 1
Parrot
started as a great VM to run Perl 5.6
performance - a 10+ year old codebase
visions of multiple architects
experimental code, rush to finish
the deprecation policy
MOARVM VS. PARROT 2
MoarVM
lower startup times and lower memory use
spesh and JIT - sophisticated dynamic
optimization
performance
precise, generational GC
...
PERL 6 - CHRISTMAS TODO
Great List Refactor (GLR)
the Native, Shaped Arrays (NSA)
the Normalization Form Grapheme (NFG)
PERL 6.0
Feb 2015, FOSDEM - a 6.0 language
WenZPerl Donate 10,000 EUR
4/2015 - jnthn:
May 2008, 200k$ -
4/2015 - Bart Wiegmans:
Perl 6 Core Development Fund
NFG, native arrays, ...
Ian Hague grant
Advancing the
MoarVM JIT
SLOW RAKUDO
Perl 6 - lazy lists
8/2013 - about 3,600x slower than Perl 5
8/2014 - is 34x slower
Better. But still sucks.
FAST RAKUDO
8/2014 - loop_empty_native test/micro-
benchmark
355x faster than 8/2013
so 14x faster than Perl 5
PERL 6 - PICK TWO
"Good, fast, cheap: pick two." Well, by
definition our community has to do it
cheap, so the saying reduces to "Good,
Fast: pick one." And we quite
intentionally picked good rather than
fast.
— Larry Wall (Feb 11 2015, )infoworld.com
QUESTIONS?
Michal "mj41" Jurosz
Perl 6 guyGoodData
Generated from source
by inside .
Powered by .
github.com/mj41/perl6-history-mj41
Presentation::Builder prbuilder Docker container
reveal.js
Perl family: 15 years of Perl 6 and Perl 5

More Related Content

What's hot

What's hot (20)

HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
HKG18-411 - Introduction to OpenAMP which is an open source solution for hete...
 
Tox as project descriptor.
Tox as project descriptor.Tox as project descriptor.
Tox as project descriptor.
 
Is Ldap Dead ?
Is Ldap Dead ?Is Ldap Dead ?
Is Ldap Dead ?
 
p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4
 
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP IntegrationBKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
 
Dragon board 410c workshop - slideshow
Dragon board 410c workshop - slideshowDragon board 410c workshop - slideshow
Dragon board 410c workshop - slideshow
 
BKK16-400B ODPI - Standardizing Hadoop
BKK16-400B ODPI - Standardizing HadoopBKK16-400B ODPI - Standardizing Hadoop
BKK16-400B ODPI - Standardizing Hadoop
 
rtpengine - Media Relaying and Beyond
rtpengine - Media Relaying and Beyondrtpengine - Media Relaying and Beyond
rtpengine - Media Relaying and Beyond
 
BKK16-309A Open Platform support in UEFI
BKK16-309A Open Platform support in UEFIBKK16-309A Open Platform support in UEFI
BKK16-309A Open Platform support in UEFI
 
Tarantool: теперь и с SQL
Tarantool: теперь и с SQLTarantool: теперь и с SQL
Tarantool: теперь и с SQL
 
PySide
PySidePySide
PySide
 
Managing and Visualizing your Replication Topologies with Orchestrator
Managing and Visualizing your Replication Topologies with OrchestratorManaging and Visualizing your Replication Topologies with Orchestrator
Managing and Visualizing your Replication Topologies with Orchestrator
 
An Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating SystemAn Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating System
 
What's new in MySQL 5.6
What's new in MySQL 5.6What's new in MySQL 5.6
What's new in MySQL 5.6
 
rtpengine and kamailio - or how to simulate calls at scale
rtpengine and kamailio - or how to simulate calls at scalertpengine and kamailio - or how to simulate calls at scale
rtpengine and kamailio - or how to simulate calls at scale
 
2009-01-20 RHEL 5.3 for System z
2009-01-20 RHEL 5.3 for System z2009-01-20 RHEL 5.3 for System z
2009-01-20 RHEL 5.3 for System z
 
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
 
JDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUGJDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUG
 
LAS16-200: SCMI - System Management and Control Interface
LAS16-200:  SCMI - System Management and Control InterfaceLAS16-200:  SCMI - System Management and Control Interface
LAS16-200: SCMI - System Management and Control Interface
 
The Ring programming language version 1.5.2 book - Part 180 of 181
The Ring programming language version 1.5.2 book - Part 180 of 181The Ring programming language version 1.5.2 book - Part 180 of 181
The Ring programming language version 1.5.2 book - Part 180 of 181
 

Viewers also liked

Viewers also liked (12)

Cool Things in Perl 6
Cool Things in Perl 6Cool Things in Perl 6
Cool Things in Perl 6
 
Learning Perl 6
Learning Perl 6 Learning Perl 6
Learning Perl 6
 
So You Want To Write About Perl
So You Want To Write About PerlSo You Want To Write About Perl
So You Want To Write About Perl
 
Perl 6 talk
Perl 6 talkPerl 6 talk
Perl 6 talk
 
Moose Design Patterns
Moose Design PatternsMoose Design Patterns
Moose Design Patterns
 
The Perl6 Type System
The Perl6 Type SystemThe Perl6 Type System
The Perl6 Type System
 
Why a new CPAN client cpm is fast
Why a new CPAN client cpm is fastWhy a new CPAN client cpm is fast
Why a new CPAN client cpm is fast
 
Perl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel ComputingPerl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel Computing
 
Recent Change of cpm
Recent Change of cpmRecent Change of cpm
Recent Change of cpm
 
Yapceu2015 geneva courts
Yapceu2015 geneva courtsYapceu2015 geneva courts
Yapceu2015 geneva courts
 
Studying geneva real estate prices using perl grammars
Studying geneva real estate prices using perl grammarsStudying geneva real estate prices using perl grammars
Studying geneva real estate prices using perl grammars
 
Perl Bag of Tricks - Baltimore Perl mongers
Perl Bag of Tricks  -  Baltimore Perl mongersPerl Bag of Tricks  -  Baltimore Perl mongers
Perl Bag of Tricks - Baltimore Perl mongers
 

Similar to Perl family: 15 years of Perl 6 and Perl 5

Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
ActiveState
 
[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4
Open Networking Summits
 

Similar to Perl family: 15 years of Perl 6 and Perl 5 (20)

Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
 
Keeping up with Perl: Development, Upgrade and Deployment Options for Perl 5.12
Keeping up with Perl: Development, Upgrade and Deployment Options for Perl 5.12Keeping up with Perl: Development, Upgrade and Deployment Options for Perl 5.12
Keeping up with Perl: Development, Upgrade and Deployment Options for Perl 5.12
 
The Parrot VM
The Parrot VMThe Parrot VM
The Parrot VM
 
Perl Myths 200802 with notes (OUTDATED, see 200909)
Perl Myths 200802 with notes (OUTDATED, see 200909)Perl Myths 200802 with notes (OUTDATED, see 200909)
Perl Myths 200802 with notes (OUTDATED, see 200909)
 
Building and Running OpenStack on POWER8
Building and Running OpenStack on POWER8Building and Running OpenStack on POWER8
Building and Running OpenStack on POWER8
 
Unit 1-introduction to perl
Unit 1-introduction to perlUnit 1-introduction to perl
Unit 1-introduction to perl
 
Enterprise Perl
Enterprise PerlEnterprise Perl
Enterprise Perl
 
Perl
PerlPerl
Perl
 
Katello on TorqueBox
Katello on TorqueBoxKatello on TorqueBox
Katello on TorqueBox
 
Scaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global OrganizationScaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global Organization
 
Quadrupling your elephants - RDF and the Hadoop ecosystem
Quadrupling your elephants - RDF and the Hadoop ecosystemQuadrupling your elephants - RDF and the Hadoop ecosystem
Quadrupling your elephants - RDF and the Hadoop ecosystem
 
OpenACC Monthly Highlights- December
OpenACC Monthly Highlights- DecemberOpenACC Monthly Highlights- December
OpenACC Monthly Highlights- December
 
Java and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystemJava and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystem
 
[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4
 
EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18
 
TWJUG August, What's new in MySQL 5.7 RC
TWJUG August, What's new in MySQL 5.7 RCTWJUG August, What's new in MySQL 5.7 RC
TWJUG August, What's new in MySQL 5.7 RC
 
Deluxe techperl
Deluxe techperlDeluxe techperl
Deluxe techperl
 
Parrot -- "one bytecode to rule them all"
Parrot -- "one bytecode to rule them all"Parrot -- "one bytecode to rule them all"
Parrot -- "one bytecode to rule them all"
 
State of the Dolphin, at db tech showcase Osaka 2014
State of the Dolphin, at db tech showcase Osaka 2014State of the Dolphin, at db tech showcase Osaka 2014
State of the Dolphin, at db tech showcase Osaka 2014
 
RPM Factory for RDO
RPM Factory for RDORPM Factory for RDO
RPM Factory for RDO
 

Recently uploaded

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

Recently uploaded (20)

VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 

Perl family: 15 years of Perl 6 and Perl 5

  • 1. PERL FAMILY 15 YEARS OF PERL 6 AND PERL 5 by generated Michal Jurosz (mj41) 23.6.2015
  • 2. PERL 6 PROGRESS following the day-to-day progress Free/OpenSource project taking a long time" != "not going to happen" , rakudo.cz , 2011, >1500 changes perl6.cz Perl 6 and Parrot links
  • 3. PERL 6 (OR P6) , (Wikipedia) , ... ( ) is anything that passes roast - repository of all spec tests the break in compatibility was mandated from the start perl6.org Perl 6 learnXinYminutes.com Rosetta Code >750 the official P6 test suite
  • 4. PERL - EARLY VERSIONS 1987 Perl 1: A general-purpose Unix scripting language to make report processing easier. 1988 Perl 2 1989 Perl 3 1991 Perl 4 (Programming Perl/Camel Book) October 17, 1994 - Perl 5.000
  • 5.
  • 6. PERL 6 - BEGINNING OSCON 2000 (July 17-20) Perl 6 started in a community session Jon Orwant, Coffee Mugs requests for comments RFC1 (1 Aug 2000), RFC 361 (30 Sep 2000) 361 RFCs
  • 7. PERL 6, 2000 And one of the very very high level goals of Perl 6 is to keep Perl capable of evolving. Perl 5 was running into some limits and we're going to figure out how to get around those limits. -- Larry Wall, 10/2000
  • 8. DYNAMIC LANGUAGES = PARROT April 2001, Parrot = Py3K + Perl 6 10/9/2001 - release a very, very early alpha - , virtual machine designed to run dynamic languages efficiently 2004 - Pirate (Python on Parrot) The Parrot Foundation prank Parrot 0.0.1 test.pasm test2.pasm
  • 9. THE STATE OF THE ONION 6 Let me put this bluntly. If we'd done Perl 6 on a schedule, you'd have it by now. And it would be crap. ... because we don't have a schedule. We just have a plan. -- Larry Wall, 2002
  • 10.
  • 11. SYNOPSES, 8/2004 Created: 10 Aug 2004 Perl 6 - specification + test suite (1140 files, spec 37600+79000) Perl 5 - interpreter + functional tests The Synopsis documents github.com/perl6/specs roast
  • 12. WHEN? TWO YEARS Finally, when ... Perl 6 beta will be available? That's a tough question ... With the state of Parrot and the design work completed so far ... a good chance we'll see one within the next two years. -- Allison Randal, 5/2004
  • 13. VOLUNTEERS Java has Sun. .NET has Microsoft. FreeSW has grants and volunteers 2005, 70k$ - NLNet grant 2008, 200k$ - Ian Hague grant 2015, 10k€ - Perl 6 Core Development Fund volunteers will do what they want
  • 14. PUNIE (PERL 1.000) ON PARROT 20 years to the day Perl 1.000 was released 2007 - Perl 5.10.0 is now out (Perl 1) compiler on Parrot VM capable of running almost the entire Perl 1 test suite successfully Punie
  • 15.
  • 16. PUGS (AUDREY TANG), 2005 >100 developers first month "-Ofun", commit bit policy, Synopses and >10k unit tests Haskell - many functional programming influences Haskell/Perl 5/STD/JavaScript/Parrot/... Parrot - Python, TCL, Ruby, JavaScript, ... mod_parrot, mod_perl6, ... IRC logs
  • 17. WHY PERL 6 IS TAKING SO ... LONG When will Perl 6 be ready? When it's done. Seriously, when will it be done? When the number of volunteers working on it have completed the amount of work remaining.
  • 18.
  • 19. JNTHN'S OSCON BEERS 2004 - Parrot Java to Parrot bytecode 2007 - Jonathan Worthington Junctions Perl 6 since that
  • 20. JNTHN My mission: Eliminate the implementation issues that stand in the way of greatly increased Perl 6 adoption. -- Jonathan "jnthn" Worthington
  • 21.
  • 22. PERL 6 - GLOSSARY language: 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 Star grammar: STD
  • 23. PERL 6 - LANGUAGE/SPEC specified by its test suite /specs - to test suite - repository of all spec tests - standard grammar whirlpool model Synopsis links roast STD.pm6
  • 25. VIRTUAL MACHINE (VM) execute instructions interpreting, (JIT) memory management build-in data structures strings, arrays, objects, ... abstract OS just-in-time
  • 26. NQP - NOT QUITE PERL (6) [en-kjů-pí], Patrick R. Michaud, end of 2007 a small, easier-to-optimize Perl 6 subset ideal for writing compilers, especially parse tree to AST mapping NQP compiler is implemented in NQP (bootstrapped) nearly all of Rakudo is NQP code (except CORE.setting)
  • 27. PERL ? an easy thing easy or a hard thing possible you can get your work done efficiently ... and have time to go for a beer
  • 28. ..., 4, 5, 6, ... ? backward compatibility finished/done?
  • 29. PERL 4 Perl 4 didn't have lexical (my) variables and the package separator was ' (not ::) and really nobody used packages anyway and there was no object support whatsoever
  • 30. PERL 5 + 6 Perl 5 not a dead-end language Perl 5 renaissance as development in parallel with Perl 6 stealing features use feature, use 5.x release cycle Modern Perl
  • 31. PERL 6 + 5 "Perl 6 is Perl." -- Larry Wall Rule 1: Whatever Larry says about Perl is correct. sister languages no intention to have Perl 6 replace Perl 5
  • 32. PERL 6 KILLING PERL 5? NO. hugely expanded test suite (27k 2002, 93k 2009) refactored internal - fixes, speed, memory 8/2006 dead regex engine improvements, named captures smart matching, given/when, state variables, defined-or, say, ... Moose, , CPAN modules git, rapid release cycle, cpants Ponie Pluggable keywords
  • 33. THE STATE OF THE ONION, 2002 - DYING But two years ago Perl 5 had already started dying, because people were starting to see it as a dead-end language. ... when we announced Perl 6, Perl 5 suddenly took on a new life ... -- Larry Wall, 2002
  • 34. PERL 6 - FEATURES 1 signatures positional, named, slurpy is ro, is rw, is copy - Buf, Uni, Str chained comparisons multiline comments, heredocs Rat type, Complex, Big integers, Buf, native references gone Unicode
  • 35. PERL 6 - FEATURES 2 scales better from script to application OO including roles and introspection multiple dispatch gradually typed - performance lazy evaluation concurrency - Promises, Channels, Supplies junctions (autothreading)
  • 36. PERL 6 - FEATURES 3, ... digest CPAN down into something more coherent install more than one version of package grammars and regexes STD.pm6 written in Perl 6 - overloading meta-operators, user-defined operators macros see features matrix
  • 37.
  • 38. RAKUDO LEAVING THE PARROT NEST 3/2009 1.0.0 "Haru Tatsu" released the first "stable" release to developers 1/2010 2.0.0 Production use one bytecode to rule them all separated repositories the deprecation policy (6 months, 3 months) people
  • 39. RAKUDO TODAY "Rakudo" - a Perl 6 language implementation reference (or "official") Perl 6 implementation primary backend is JVM is also supported Parrot VM abonded - at least for 2015 focus on "The Christmas" ToDo list , MoarVM rakudo.org github.com/rakudo
  • 40. RAKUDO ★ Rakudo Star - since 29.7.2010 distribution - including VM, modules, ... a useful and usable distribution of Perl 6 aimed at "early adopters" of Perl 6 "... pretty near does exist, ..." even if it "... still runs very slowly ... and has lots of bugs ..." -- lwall, OSCON 2010
  • 41. 6GUTS BY JNTHN Torment the implementers for the sake of the users" isn't a joke! In my first couple of years, I learned rather a lot about how not to implement Perl 6. ,6guts.wordpress.com slides on jnthn.net
  • 42. NOM/6MODEL/QREGEX - 2010.. “nom” Rakudo branch – short for “new object model” 6model - design and implement a metamodel core NQP re-built to use 6model rather than the Parrot object model a parallel effort to port the NQP language to the .Net CLR and the JVM
  • 43. NOM/6MODEL/QREGEX - ..2012 1/2011 chromatic - stopped working on Parrot (contributor since late 2001) 9/2011 - Rakudo itself is now mostly written in NQP and Perl 6 (90-95%), 1/2012 - so, we made it, in many sense this is a revolution 5/2012 - QRegex, QAST is AST design and implementation, written in NQP
  • 44. RAKUDO ON THE JVM - 2013 invokedynamic instruction awful startup time perl6-j instead of perl6-m concurrency only provided on JVM so far Thread, Promise, Supply, Channel, ... 7/2013 92%, 10/2013 99.9%
  • 45. MOARVM - 2013/2014 lightweight and metamodel-focused runtime for NQP and Rakudo supports 6model and various other needs natively (efficiently) enable the near-term exploration of JIT compilation in 6model quick and easy build 1/2014 99%, 3/2015 "100%" moarvm.com
  • 46. MOARVM VS. PARROT 1 Parrot started as a great VM to run Perl 5.6 performance - a 10+ year old codebase visions of multiple architects experimental code, rush to finish the deprecation policy
  • 47. MOARVM VS. PARROT 2 MoarVM lower startup times and lower memory use spesh and JIT - sophisticated dynamic optimization performance precise, generational GC ...
  • 48.
  • 49. PERL 6 - CHRISTMAS TODO Great List Refactor (GLR) the Native, Shaped Arrays (NSA) the Normalization Form Grapheme (NFG)
  • 50. PERL 6.0 Feb 2015, FOSDEM - a 6.0 language WenZPerl Donate 10,000 EUR 4/2015 - jnthn: May 2008, 200k$ - 4/2015 - Bart Wiegmans: Perl 6 Core Development Fund NFG, native arrays, ... Ian Hague grant Advancing the MoarVM JIT
  • 51. SLOW RAKUDO Perl 6 - lazy lists 8/2013 - about 3,600x slower than Perl 5 8/2014 - is 34x slower Better. But still sucks.
  • 52. FAST RAKUDO 8/2014 - loop_empty_native test/micro- benchmark 355x faster than 8/2013 so 14x faster than Perl 5
  • 53. PERL 6 - PICK TWO "Good, fast, cheap: pick two." Well, by definition our community has to do it cheap, so the saying reduces to "Good, Fast: pick one." And we quite intentionally picked good rather than fast. — Larry Wall (Feb 11 2015, )infoworld.com
  • 54. QUESTIONS? Michal "mj41" Jurosz Perl 6 guyGoodData Generated from source by inside . Powered by . github.com/mj41/perl6-history-mj41 Presentation::Builder prbuilder Docker container reveal.js