5. 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
6. 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
7. 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
8.
9. 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
10. 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
11. 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
12. 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
13.
14. 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
15. 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
16. 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
17. 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
18.
19. 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
21. 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.
22.
23. JNTHN'S OSCON BEERS
2004 - Parrot
Java to Parrot bytecode
2007 - Jonathan Worthington
Junctions
Perl 6 since that
24. JNTHN
My mission:
Eliminate the implementation issues
that stand in the way of greatly
increased Perl 6 adoption.
-- Jonathan "jnthn" Worthington
27. 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
29. NIECZA
C#, CLR (.NET, Mono)
one man show - sorear
2010.06.30 What's "Nie mamy
czas"? =)
2010.06.30 it means "We don't have
time" in Czech.
30. VIRTUAL MACHINE (VM)
execute instructions
interpreting, (JIT)
memory management
build-in data structures
strings, arrays, objects, ...
abstract OS
just-in-time
31. 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)
32. 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
34. 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
35. 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
36. 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
37. 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
38. 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
39. 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
40. 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)
41. 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
42.
43. 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
44. 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
45. 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
46. 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
47. 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
48. 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
49. 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%
50. 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
51. 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
52. MOARVM VS. PARROT 2
MoarVM
lower startup times and lower memory use
spesh and JIT - sophisticated dynamic
optimization
performance
precise, generational GC
...
53.
54. PERL 6 - CHRISTMAS TODO
Great List Refactor (GLR)
the Native, Shaped Arrays (NSA)
the Normalization Form Grapheme (NFG)
55. 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
56. SLOW RAKUDO
Perl 6 - lazy lists
8/2013 - about 3,600x slower than Perl 5
8/2014 - is 34x slower
Better. But still sucks.
57. FAST RAKUDO
8/2014 - loop_empty_native test/micro-
benchmark
355x faster than 8/2013
so 14x faster than Perl 5
58. 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