Pugs
Perl 6 For Real
Audrey Tang
http://pugscode.org/

Perl
is ergonomic

P is for
Practical

Manipulexity
&
Whipuptitude

Abstraction
--> Sexy

Closures
Bless / Tie
BEGIN block

Shorthand
--> Natural

Regex
Contexts
$_ as Topic

Stepping
sideways

CPAN
is versatile

No coding
= Best coding

10+ years
2500+ authors
8000+ modules

Smoke Testing
Issue Tracking
Rating & Discussion
Package Management

Vocabulary
> Syntax

Addictive
Super glue

Jenga
Syndrome

Perl 6
is powerful

RFC
Parrot
Apocalypses

Lazy
Evaluation

Rebindable
Grammar

Dependent
Constrained
Soft Typing

Traits
Metamodel

MMD on
Type & Value

Syntactic Aspartame
without Bloat

use perl5:DBI;
use jsan:DOM;

...but it stayed
Imaginary
for 5 years

Perl6::Rules
P6C/PIR
PGE/PAST

Deadlocked:
Insufficient
Manipulexity

Haskell
is fantastic

SVK
steals from the best:
Darcs

"The Dream that stuff are made of"
"An alien language"

$work in C
Terabytes of AFP
Evil Binary Format
Old AIX machine

Parse::AFP
Prototype in perl5
Leaks horribly
Hard to refactor

OpenAFP.hs
30 days
3000 lines
Highly efficient

touchForeignPtr
unsafeInterleaveIO
WriterT ReaderT IO
3-arg class with Fundeps
DSL, TH, Generics
(Kudos to #haskell)

Feb 1st
TaPL arrived
as an exercise...

Pugs
is expansive

Feb 6th
Primitive Interpreter
(1|2)+(3|4)-->(4|5|6)
Parsec.Expr

Feb 16th
Imperative runtime
say "Hello, world"
ContT ReaderT

Feb 23rd
Test.pm runs
is(1+1, 2, 'add')
10,000 tests today

Mar 19th
PCRE Regex
s:p5:g/x/Y/;
hsregex

Apr 26th
BEGIN blocks
use fp;
unsafePerformIO

May 25th
Embedded Perl5/Parrot
AddHandler mod_pugs
FFI & hsc2hs

Jun 24th
Perl6-->PIL-->Parrot
make smoke-pir
GADT & Fundeps

Jul 14th
PIL-->Perl5
make smoke-perl5
DrIFT

Jul 17th
PIL-->Javascript
make smoke-js
Passes 90% tests now

Aug 1st
Self-hosting Object Model
class Class is Object;
Ported to JS, P5, P6

Sep 21st
Blondie
Type inferencer
Codegen to native C

People
are alive

-Ofun

Anarchistic
Development

@Larry
Lambda camels

#perl6
p6[cli]
Journals

Poetry
Obfuscation
JAPH

Hackathons
Taipei Vienna
Toronto Tel-Aviv
...and more

Plans
are for real

6.0    Initial Release
6.2    Functions
6.28   Objects
6.283  Grammars

6.2831    Types
6.28318   Macro
6.283185  Self-host

use pugs;

import Pugs
JSAN().use('pugs')
#include <pugs.h>

CLR?
JVM?
YARV?

Visiolize
Formalize

Erdosing
Wanderdekade
Feb 1st, 2006 

Thank you!
