OSCON 2011 - Perl 5.16 and beyond

307
Perl 5.16 and Beyond Friday, July 29, 11

Transcript of OSCON 2011 - Perl 5.16 and beyond

Page 1: OSCON 2011 - Perl 5.16 and beyond

Perl 5.16 and Beyond

Friday, July 29, 11

Page 2: OSCON 2011 - Perl 5.16 and beyond

Jesse Vincent

Friday, July 29, 11

Page 3: OSCON 2011 - Perl 5.16 and beyond

Pumpking

Friday, July 29, 11

Page 4: OSCON 2011 - Perl 5.16 and beyond

Former Perl 6Project Manager

Friday, July 29, 11

Page 5: OSCON 2011 - Perl 5.16 and beyond

What's a Pumpking?

Friday, July 29, 11

Page 6: OSCON 2011 - Perl 5.16 and beyond

BDFL

Friday, July 29, 11

Page 7: OSCON 2011 - Perl 5.16 and beyond

BDFL

Friday, July 29, 11

Page 8: OSCON 2011 - Perl 5.16 and beyond

BDFL

Friday, July 29, 11

Page 9: OSCON 2011 - Perl 5.16 and beyond

I make decisions

Friday, July 29, 11

Page 10: OSCON 2011 - Perl 5.16 and beyond

I’m a manager

Friday, July 29, 11

Page 11: OSCON 2011 - Perl 5.16 and beyond

I don’t do “real work”

Friday, July 29, 11

Page 12: OSCON 2011 - Perl 5.16 and beyond

So, who makes Perl?

Friday, July 29, 11

Page 13: OSCON 2011 - Perl 5.16 and beyond

Many awesome people

Friday, July 29, 11

Page 14: OSCON 2011 - Perl 5.16 and beyond

I just stand around looking pretty...

Friday, July 29, 11

Page 15: OSCON 2011 - Perl 5.16 and beyond

...while other people do awesome stuff

Friday, July 29, 11

Page 16: OSCON 2011 - Perl 5.16 and beyond

Is your name in Perl’s AUTHORS file?

Friday, July 29, 11

Page 17: OSCON 2011 - Perl 5.16 and beyond

Are you aCPAN author?

Friday, July 29, 11

Page 18: OSCON 2011 - Perl 5.16 and beyond

You rock

Friday, July 29, 11

Page 19: OSCON 2011 - Perl 5.16 and beyond

You make Perl

Friday, July 29, 11

Page 20: OSCON 2011 - Perl 5.16 and beyond

The Release Process

Friday, July 29, 11

Page 21: OSCON 2011 - Perl 5.16 and beyond

Releases in the last 12-or-so months:

Friday, July 29, 11

Page 22: OSCON 2011 - Perl 5.16 and beyond

5.12.2

Friday, July 29, 11

Page 23: OSCON 2011 - Perl 5.16 and beyond

5.12.3

Friday, July 29, 11

Page 24: OSCON 2011 - Perl 5.16 and beyond

5.12.4

Friday, July 29, 11

Page 25: OSCON 2011 - Perl 5.16 and beyond

5.13.2

Friday, July 29, 11

Page 26: OSCON 2011 - Perl 5.16 and beyond

5.13.3

Friday, July 29, 11

Page 27: OSCON 2011 - Perl 5.16 and beyond

5.13.4

Friday, July 29, 11

Page 28: OSCON 2011 - Perl 5.16 and beyond

5.13.5

Friday, July 29, 11

Page 29: OSCON 2011 - Perl 5.16 and beyond

5.13.6

Friday, July 29, 11

Page 30: OSCON 2011 - Perl 5.16 and beyond

5.13.7

Friday, July 29, 11

Page 31: OSCON 2011 - Perl 5.16 and beyond

5.13.8

Friday, July 29, 11

Page 32: OSCON 2011 - Perl 5.16 and beyond

5.13.9

Friday, July 29, 11

Page 33: OSCON 2011 - Perl 5.16 and beyond

5.13.10

Friday, July 29, 11

Page 34: OSCON 2011 - Perl 5.16 and beyond

5.13.11

Friday, July 29, 11

Page 35: OSCON 2011 - Perl 5.16 and beyond

5.14.0

Friday, July 29, 11

Page 36: OSCON 2011 - Perl 5.16 and beyond

5.14.1

Friday, July 29, 11

Page 37: OSCON 2011 - Perl 5.16 and beyond

5.15.0

Friday, July 29, 11

Page 38: OSCON 2011 - Perl 5.16 and beyond

5.15.1

Friday, July 29, 11

Page 39: OSCON 2011 - Perl 5.16 and beyond

Perl 5.14.1 is the current release

of Perl 5

Friday, July 29, 11

Page 40: OSCON 2011 - Perl 5.16 and beyond

It came out 6ish weeks ago

Friday, July 29, 11

Page 41: OSCON 2011 - Perl 5.16 and beyond

As did Perl 5.12.4

Friday, July 29, 11

Page 42: OSCON 2011 - Perl 5.16 and beyond

As did Perl 5.15.0

Friday, July 29, 11

Page 43: OSCON 2011 - Perl 5.16 and beyond

It used to take us 3 weeks to prepare

a release

Friday, July 29, 11

Page 44: OSCON 2011 - Perl 5.16 and beyond

And we made the Pumpking do it

Friday, July 29, 11

Page 45: OSCON 2011 - Perl 5.16 and beyond

Now it takesless than a day

Friday, July 29, 11

Page 46: OSCON 2011 - Perl 5.16 and beyond

The 43 step process is documented

Friday, July 29, 11

Page 47: OSCON 2011 - Perl 5.16 and beyond

Releases are still a chore if you do them

every month

Friday, July 29, 11

Page 48: OSCON 2011 - Perl 5.16 and beyond

Now we have rotating release engineers

Friday, July 29, 11

Page 49: OSCON 2011 - Perl 5.16 and beyond

Most of them arenew committers

Friday, July 29, 11

Page 50: OSCON 2011 - Perl 5.16 and beyond

Nice side effect:release engineers

need commit bits

Friday, July 29, 11

Page 51: OSCON 2011 - Perl 5.16 and beyond

Since the move to git, we’ve nearly doubled

our committer list

Friday, July 29, 11

Page 52: OSCON 2011 - Perl 5.16 and beyond

The world hasn’t ended

Friday, July 29, 11

Page 53: OSCON 2011 - Perl 5.16 and beyond

Some of those release engineers have become

prolific contributors

Friday, July 29, 11

Page 54: OSCON 2011 - Perl 5.16 and beyond

I just make decisions

Friday, July 29, 11

Page 55: OSCON 2011 - Perl 5.16 and beyond

I try to get them right

Friday, July 29, 11

Page 56: OSCON 2011 - Perl 5.16 and beyond

Sometimes they’re wrong

Friday, July 29, 11

Page 57: OSCON 2011 - Perl 5.16 and beyond

I have a littlebit of cover

Friday, July 29, 11

Page 58: OSCON 2011 - Perl 5.16 and beyond

Rule 1

Friday, July 29, 11

Page 59: OSCON 2011 - Perl 5.16 and beyond

Larry is always right

Friday, July 29, 11

Page 60: OSCON 2011 - Perl 5.16 and beyond

Rule 2

Friday, July 29, 11

Page 61: OSCON 2011 - Perl 5.16 and beyond

Larry is allowed to change his mind

Friday, July 29, 11

Page 62: OSCON 2011 - Perl 5.16 and beyond

I’m not Larry

Friday, July 29, 11

Page 63: OSCON 2011 - Perl 5.16 and beyond

I’m nowhere near as clever

Friday, July 29, 11

Page 64: OSCON 2011 - Perl 5.16 and beyond

My shirts are nowhere near as loud

Friday, July 29, 11

Page 65: OSCON 2011 - Perl 5.16 and beyond

At YAPC::NA, Larry said that the time of

hero-pumpkings is over

Friday, July 29, 11

Page 66: OSCON 2011 - Perl 5.16 and beyond

D

Friday, July 29, 11

Page 67: OSCON 2011 - Perl 5.16 and beyond

Dictator

Friday, July 29, 11

Page 68: OSCON 2011 - Perl 5.16 and beyond

Delegator

Friday, July 29, 11

Page 69: OSCON 2011 - Perl 5.16 and beyond

Documenter

Friday, July 29, 11

Page 70: OSCON 2011 - Perl 5.16 and beyond

Thankfully, Larry’s rules set me up to succeed

Friday, July 29, 11

Page 71: OSCON 2011 - Perl 5.16 and beyond

Rule 1 definitely doesn’t apply tothe Perl 5 runtime

Friday, July 29, 11

Page 72: OSCON 2011 - Perl 5.16 and beyond

However

Friday, July 29, 11

Page 73: OSCON 2011 - Perl 5.16 and beyond

The core needs more support for Rule 2

Friday, July 29, 11

Page 74: OSCON 2011 - Perl 5.16 and beyond

I haven’t heard thisin a while:

Friday, July 29, 11

Page 75: OSCON 2011 - Perl 5.16 and beyond

Perl is Dead!

Friday, July 29, 11

Page 76: OSCON 2011 - Perl 5.16 and beyond

What I’ve beenhearing lately:

Friday, July 29, 11

Page 77: OSCON 2011 - Perl 5.16 and beyond

Where are we going?

Friday, July 29, 11

Page 78: OSCON 2011 - Perl 5.16 and beyond

It’s changing too fast. Can you slow down?

Friday, July 29, 11

Page 79: OSCON 2011 - Perl 5.16 and beyond

You made regexes crazier?$#@!?

Friday, July 29, 11

Page 80: OSCON 2011 - Perl 5.16 and beyond

smartmatch isn’t named correctly...

Friday, July 29, 11

Page 81: OSCON 2011 - Perl 5.16 and beyond

...can we rename it to psychoticmatch?

Friday, July 29, 11

Page 82: OSCON 2011 - Perl 5.16 and beyond

The future

Friday, July 29, 11

Page 83: OSCON 2011 - Perl 5.16 and beyond

I’ve been accused of lacking a vision for Perl

Friday, July 29, 11

Page 84: OSCON 2011 - Perl 5.16 and beyond

What I lack is aflame-proof suit.

Friday, July 29, 11

Page 85: OSCON 2011 - Perl 5.16 and beyond

If I’d talked about my vision 2 years ago...

Friday, July 29, 11

Page 86: OSCON 2011 - Perl 5.16 and beyond

You would havelaughed at me

Friday, July 29, 11

Page 87: OSCON 2011 - Perl 5.16 and beyond

...now that we can do do releases...

Friday, July 29, 11

Page 88: OSCON 2011 - Perl 5.16 and beyond

A Vision

Friday, July 29, 11

Page 89: OSCON 2011 - Perl 5.16 and beyond

New versions of Perl shouldn’t break your

existing software

Friday, July 29, 11

Page 90: OSCON 2011 - Perl 5.16 and beyond

Old syntax and semantics can’t stop Perl 5 from evolving

Friday, July 29, 11

Page 91: OSCON 2011 - Perl 5.16 and beyond

We need to be able to make mistakes

as we rebuild Perl 5

Friday, July 29, 11

Page 92: OSCON 2011 - Perl 5.16 and beyond

We willmake mistakes

as we rebuild Perl 5

Friday, July 29, 11

Page 93: OSCON 2011 - Perl 5.16 and beyond

*coughsmartmatchcough*

Friday, July 29, 11

Page 94: OSCON 2011 - Perl 5.16 and beyond

We have made mistakes

as we’ve rebuilt Perl

Friday, July 29, 11

Page 95: OSCON 2011 - Perl 5.16 and beyond

We need to be able to recover from mistakes

as we rebuild Perl

Friday, July 29, 11

Page 96: OSCON 2011 - Perl 5.16 and beyond

The runtime footprint is too big and must be

slimmed down

Friday, July 29, 11

Page 97: OSCON 2011 - Perl 5.16 and beyond

Perl should havesane defaults

Friday, July 29, 11

Page 98: OSCON 2011 - Perl 5.16 and beyond

It should be possible to build more of Perl

in Perl

Friday, July 29, 11

Page 99: OSCON 2011 - Perl 5.16 and beyond

Perl should run everywhere

Friday, July 29, 11

Page 100: OSCON 2011 - Perl 5.16 and beyond

Not just on every kind of hardware

Friday, July 29, 11

Page 101: OSCON 2011 - Perl 5.16 and beyond

or every OS

Friday, July 29, 11

Page 102: OSCON 2011 - Perl 5.16 and beyond

Every VM

Friday, July 29, 11

Page 103: OSCON 2011 - Perl 5.16 and beyond

Every Browser

Friday, July 29, 11

Page 104: OSCON 2011 - Perl 5.16 and beyond

Every Phone

Friday, July 29, 11

Page 105: OSCON 2011 - Perl 5.16 and beyond

How do we get there?

Friday, July 29, 11

Page 106: OSCON 2011 - Perl 5.16 and beyond

New versions of Perl shouldn’t break

existing software

Friday, July 29, 11

Page 107: OSCON 2011 - Perl 5.16 and beyond

Old syntax and semantics must not stop Perl 5

from evolving

Friday, July 29, 11

Page 108: OSCON 2011 - Perl 5.16 and beyond

When your code runs, you have no idea

what semantics it’ll see

Friday, July 29, 11

Page 109: OSCON 2011 - Perl 5.16 and beyond

You need to jump through defensive

hoops.

Friday, July 29, 11

Page 110: OSCON 2011 - Perl 5.16 and beyond

Lots of defensive hoops

Friday, July 29, 11

Page 111: OSCON 2011 - Perl 5.16 and beyond

use v5.14;

Friday, July 29, 11

Page 112: OSCON 2011 - Perl 5.16 and beyond

“Can I have a Perl that’s 5.14 or newer?”

Friday, July 29, 11

Page 113: OSCON 2011 - Perl 5.16 and beyond

“Anything newer than 5.14.0 would be great!”

Friday, July 29, 11

Page 114: OSCON 2011 - Perl 5.16 and beyond

“Ok. I’m 5.30. Have fun!”

Friday, July 29, 11

Page 115: OSCON 2011 - Perl 5.16 and beyond

That’s not useful

Friday, July 29, 11

Page 116: OSCON 2011 - Perl 5.16 and beyond

It needs to change

Friday, July 29, 11

Page 117: OSCON 2011 - Perl 5.16 and beyond

Declare the version of Perl 5 you expect

Friday, July 29, 11

Page 118: OSCON 2011 - Perl 5.16 and beyond

use v5.16;

Friday, July 29, 11

Page 119: OSCON 2011 - Perl 5.16 and beyond

“I want a Perl that works like 5.16”

Friday, July 29, 11

Page 120: OSCON 2011 - Perl 5.16 and beyond

The runtime should honor that request

Friday, July 29, 11

Page 121: OSCON 2011 - Perl 5.16 and beyond

Perl should give you semantics as close as possible to what you

request

Friday, July 29, 11

Page 122: OSCON 2011 - Perl 5.16 and beyond

New features should not work under ‘use v5.$older;’

Friday, July 29, 11

Page 123: OSCON 2011 - Perl 5.16 and beyond

It’s critical that we be able to evolve

Friday, July 29, 11

Page 124: OSCON 2011 - Perl 5.16 and beyond

We need anescape hatch

Friday, July 29, 11

Page 125: OSCON 2011 - Perl 5.16 and beyond

We don’t have one

Friday, July 29, 11

Page 126: OSCON 2011 - Perl 5.16 and beyond

We needRule 2

Friday, July 29, 11

Page 127: OSCON 2011 - Perl 5.16 and beyond

Changes to syntax or semantics break

existing code

Friday, July 29, 11

Page 128: OSCON 2011 - Perl 5.16 and beyond

Why?

Friday, July 29, 11

Page 129: OSCON 2011 - Perl 5.16 and beyond

They conflict with existing syntax

Friday, July 29, 11

Page 130: OSCON 2011 - Perl 5.16 and beyond

They change the meaning of existing

semantics

Friday, July 29, 11

Page 131: OSCON 2011 - Perl 5.16 and beyond

They conflict with things users do

Friday, July 29, 11

Page 132: OSCON 2011 - Perl 5.16 and beyond

What do we do?

Friday, July 29, 11

Page 133: OSCON 2011 - Perl 5.16 and beyond

If you declare an old version, you get old

syntax and semantics

Friday, July 29, 11

Page 134: OSCON 2011 - Perl 5.16 and beyond

...at least to thebest of our abilities

Friday, July 29, 11

Page 135: OSCON 2011 - Perl 5.16 and beyond

Perfection isn’t possible

Friday, July 29, 11

Page 136: OSCON 2011 - Perl 5.16 and beyond

We can get far closer than we do now

Friday, July 29, 11

Page 137: OSCON 2011 - Perl 5.16 and beyond

Breaking existing code should be a last resort

Friday, July 29, 11

Page 138: OSCON 2011 - Perl 5.16 and beyond

We will break backward compatibility in limited circumstances

Friday, July 29, 11

Page 139: OSCON 2011 - Perl 5.16 and beyond

Some craziness can’t be fixed in an “optional”

or lexical way

Friday, July 29, 11

Page 140: OSCON 2011 - Perl 5.16 and beyond

This is going to behard work

Friday, July 29, 11

Page 141: OSCON 2011 - Perl 5.16 and beyond

A lot of hard work

Friday, July 29, 11

Page 142: OSCON 2011 - Perl 5.16 and beyond

It’s not impossible

Friday, July 29, 11

Page 143: OSCON 2011 - Perl 5.16 and beyond

I have proof

Friday, July 29, 11

Page 144: OSCON 2011 - Perl 5.16 and beyond

Deprecation

Friday, July 29, 11

Page 145: OSCON 2011 - Perl 5.16 and beyond

Our current deprecation cycle

is 1 year

Friday, July 29, 11

Page 146: OSCON 2011 - Perl 5.16 and beyond

“It warns in 5.16.0”

Friday, July 29, 11

Page 147: OSCON 2011 - Perl 5.16 and beyond

“It’s gone in 5.18.0”

Friday, July 29, 11

Page 148: OSCON 2011 - Perl 5.16 and beyond

That’s turning out to be too short

Friday, July 29, 11

Page 149: OSCON 2011 - Perl 5.16 and beyond

Very few operating systems release that

frequently

Friday, July 29, 11

Page 150: OSCON 2011 - Perl 5.16 and beyond

“Declare by default” means we can make

some changes sooner

Friday, July 29, 11

Page 151: OSCON 2011 - Perl 5.16 and beyond

If it still works in old code, we can change it

with no deprecation cycle

Friday, July 29, 11

Page 152: OSCON 2011 - Perl 5.16 and beyond

Some old misfeatures need to come out lest they block significant

improvements

Friday, July 29, 11

Page 153: OSCON 2011 - Perl 5.16 and beyond

If we can’t emulate the old feature for old

code, we need a longer deprecation cycle

Friday, July 29, 11

Page 154: OSCON 2011 - Perl 5.16 and beyond

“It dies in code that declares ‘use v5.16’”

Friday, July 29, 11

Page 155: OSCON 2011 - Perl 5.16 and beyond

“It warns in older code on 5.16.0”

Friday, July 29, 11

Page 156: OSCON 2011 - Perl 5.16 and beyond

“It still warns in old code on 5.18.0”

Friday, July 29, 11

Page 157: OSCON 2011 - Perl 5.16 and beyond

“It’s gone in 5.20.0”

Friday, July 29, 11

Page 158: OSCON 2011 - Perl 5.16 and beyond

Old Modules

Friday, July 29, 11

Page 159: OSCON 2011 - Perl 5.16 and beyond

We haven’t just been deprecating and yanking

broken old features

Friday, July 29, 11

Page 160: OSCON 2011 - Perl 5.16 and beyond

We’ve been doing the same to old modules

Friday, July 29, 11

Page 161: OSCON 2011 - Perl 5.16 and beyond

They all end upon CPAN

Friday, July 29, 11

Page 162: OSCON 2011 - Perl 5.16 and beyond

This has started to hurt users who wrote code

with “no non-core deps”

Friday, July 29, 11

Page 163: OSCON 2011 - Perl 5.16 and beyond

We need to make it easier to ship two flavors of Perl 5

Friday, July 29, 11

Page 164: OSCON 2011 - Perl 5.16 and beyond

Hotel California

Friday, July 29, 11

Page 165: OSCON 2011 - Perl 5.16 and beyond

aka Traditional Perl

Friday, July 29, 11

Page 166: OSCON 2011 - Perl 5.16 and beyond

The Times, They Are A-Changin’

Friday, July 29, 11

Page 167: OSCON 2011 - Perl 5.16 and beyond

aka Bootstrappable Perl

Friday, July 29, 11

Page 168: OSCON 2011 - Perl 5.16 and beyond

There’s work going on to make this easier

Friday, July 29, 11

Page 169: OSCON 2011 - Perl 5.16 and beyond

Cleaning upthe language

Friday, July 29, 11

Page 170: OSCON 2011 - Perl 5.16 and beyond

The runtime footprint is too big and must be

slimmed down

Friday, July 29, 11

Page 171: OSCON 2011 - Perl 5.16 and beyond

One of the points of doing this is to

clean up the core

Friday, July 29, 11

Page 172: OSCON 2011 - Perl 5.16 and beyond

How does this clean up the core?

Friday, July 29, 11

Page 173: OSCON 2011 - Perl 5.16 and beyond

Perl is a big language

Friday, July 29, 11

Page 174: OSCON 2011 - Perl 5.16 and beyond

There are bigger languages

Friday, July 29, 11

Page 175: OSCON 2011 - Perl 5.16 and beyond

It's harder to managea big language

Friday, July 29, 11

Page 176: OSCON 2011 - Perl 5.16 and beyond

It’s harder to learna big language

Friday, July 29, 11

Page 177: OSCON 2011 - Perl 5.16 and beyond

It’s harder to fix bugs in a big language

Friday, July 29, 11

Page 178: OSCON 2011 - Perl 5.16 and beyond

We’re ok, but not amazing at core

language dev

Friday, July 29, 11

Page 179: OSCON 2011 - Perl 5.16 and beyond

As a community, we’re awesome at modules

Friday, July 29, 11

Page 180: OSCON 2011 - Perl 5.16 and beyond

How do we make Perl a smaller language?

Friday, July 29, 11

Page 181: OSCON 2011 - Perl 5.16 and beyond

It’s possible to load modules that inject

new builtins

Friday, July 29, 11

Page 182: OSCON 2011 - Perl 5.16 and beyond

It’s possible to load modules that inject

old builtins

Friday, July 29, 11

Page 183: OSCON 2011 - Perl 5.16 and beyond

Time to start...

Friday, July 29, 11

Page 184: OSCON 2011 - Perl 5.16 and beyond

...refactoring

Friday, July 29, 11

Page 185: OSCON 2011 - Perl 5.16 and beyond

Lots of stuff in perl isn't necessarily part of Perl 5 the Language

Friday, July 29, 11

Page 186: OSCON 2011 - Perl 5.16 and beyond

This stuff is part of Perl 5 the chainsaw

Friday, July 29, 11

Page 187: OSCON 2011 - Perl 5.16 and beyond

I like our chainsaw

Friday, July 29, 11

Page 188: OSCON 2011 - Perl 5.16 and beyond

I’m not talking about deprecating this stuff

Friday, July 29, 11

Page 189: OSCON 2011 - Perl 5.16 and beyond

...just aboutdecoupling it

Friday, July 29, 11

Page 190: OSCON 2011 - Perl 5.16 and beyond

SysV IPC functions

Friday, July 29, 11

Page 191: OSCON 2011 - Perl 5.16 and beyond

Socket IO functions

Friday, July 29, 11

Page 192: OSCON 2011 - Perl 5.16 and beyond

Unix user & group information functions

Friday, July 29, 11

Page 193: OSCON 2011 - Perl 5.16 and beyond

Unix network information functions

Friday, July 29, 11

Page 194: OSCON 2011 - Perl 5.16 and beyond

Process and process group functions

Friday, July 29, 11

Page 195: OSCON 2011 - Perl 5.16 and beyond

Formats

Friday, July 29, 11

Page 196: OSCON 2011 - Perl 5.16 and beyond

smartmatch

Friday, July 29, 11

Page 197: OSCON 2011 - Perl 5.16 and beyond

...and probably a bunch of other stuff

Friday, July 29, 11

Page 198: OSCON 2011 - Perl 5.16 and beyond

That bit about “forcing a version declaration”

Friday, July 29, 11

Page 199: OSCON 2011 - Perl 5.16 and beyond

If you don’t, you’ll get whatever was in 5.14.

Friday, July 29, 11

Page 200: OSCON 2011 - Perl 5.16 and beyond

The implementation of SysV might be a module

Friday, July 29, 11

Page 201: OSCON 2011 - Perl 5.16 and beyond

As a developer writing code in Perl 5,

you won’t need to care

Friday, July 29, 11

Page 202: OSCON 2011 - Perl 5.16 and beyond

..and shouldn’tbe able to tell

Friday, July 29, 11

Page 203: OSCON 2011 - Perl 5.16 and beyond

In the future we might fix a bug or two in the

modularized code

Friday, July 29, 11

Page 204: OSCON 2011 - Perl 5.16 and beyond

You could take the update without having to upgrade all of Perl 5

Friday, July 29, 11

Page 205: OSCON 2011 - Perl 5.16 and beyond

Someday we might remove things from the

default runtime

Friday, July 29, 11

Page 206: OSCON 2011 - Perl 5.16 and beyond

Every feature we externalize reclaims precious memory

Friday, July 29, 11

Page 207: OSCON 2011 - Perl 5.16 and beyond

Every feature we externalize reclaims

precious sanity

Friday, July 29, 11

Page 208: OSCON 2011 - Perl 5.16 and beyond

That just means you’ll need to declare you

want an older feature

Friday, July 29, 11

Page 209: OSCON 2011 - Perl 5.16 and beyond

...but only if you ask for v5.16

Friday, July 29, 11

Page 210: OSCON 2011 - Perl 5.16 and beyond

...but only if you ask for v5.18

Friday, July 29, 11

Page 211: OSCON 2011 - Perl 5.16 and beyond

...but only if you ask for v5.20

Friday, July 29, 11

Page 212: OSCON 2011 - Perl 5.16 and beyond

Existing codewon’t break

Friday, July 29, 11

Page 213: OSCON 2011 - Perl 5.16 and beyond

There are many, many unanswered questions

Friday, July 29, 11

Page 214: OSCON 2011 - Perl 5.16 and beyond

But it’s doable

Friday, July 29, 11

Page 215: OSCON 2011 - Perl 5.16 and beyond

I have proof!

Friday, July 29, 11

Page 216: OSCON 2011 - Perl 5.16 and beyond

Case study: Smartmatch

Friday, July 29, 11

Page 217: OSCON 2011 - Perl 5.16 and beyond

After YAPC::NA rjbs (and others) raised the

issue of smartmatch

Friday, July 29, 11

Page 218: OSCON 2011 - Perl 5.16 and beyond

Perl has a history of theft from other

languages

Friday, July 29, 11

Page 219: OSCON 2011 - Perl 5.16 and beyond

Perl has a history of borrowing from other

languages

Friday, July 29, 11

Page 220: OSCON 2011 - Perl 5.16 and beyond

We stole smartmatchfrom Perl 6

Friday, July 29, 11

Page 221: OSCON 2011 - Perl 5.16 and beyond

It’s very clever

Friday, July 29, 11

Page 222: OSCON 2011 - Perl 5.16 and beyond

It’s nearlyimpossibleto explain

Friday, July 29, 11

Page 223: OSCON 2011 - Perl 5.16 and beyond

It’s nearly impossible

to understand

Friday, July 29, 11

Page 224: OSCON 2011 - Perl 5.16 and beyond

RJBS (the previous speaker) proposed a

saner, much less clever, smart match

Friday, July 29, 11

Page 225: OSCON 2011 - Perl 5.16 and beyond

I don’t want to break existing code that uses

smartmatch

Friday, July 29, 11

Page 226: OSCON 2011 - Perl 5.16 and beyond

Jesse Luehrs (DOY) was sitting in the back

of my YAPC talk

Friday, July 29, 11

Page 227: OSCON 2011 - Perl 5.16 and beyond

He...

Friday, July 29, 11

Page 228: OSCON 2011 - Perl 5.16 and beyond

...threw himselfat the problem

Friday, July 29, 11

Page 229: OSCON 2011 - Perl 5.16 and beyond

He extracted smartmatch intoan XS module

Friday, July 29, 11

Page 230: OSCON 2011 - Perl 5.16 and beyond

He reimplemented it entirely in pure perl

Friday, July 29, 11

Page 231: OSCON 2011 - Perl 5.16 and beyond

It’s slower, but it’s understandable and

hackable

Friday, July 29, 11

Page 232: OSCON 2011 - Perl 5.16 and beyond

He implemented Ricardo’s saner smart match as an alternative

Friday, July 29, 11

Page 233: OSCON 2011 - Perl 5.16 and beyond

I’m hoping that 5.16 ships DOY’s smartmatch

implementations

Friday, July 29, 11

Page 234: OSCON 2011 - Perl 5.16 and beyond

'use v5.16;' should load the new one in your

scope

Friday, July 29, 11

Page 235: OSCON 2011 - Perl 5.16 and beyond

'use v5.14;' should load the old one in your

scope

Friday, July 29, 11

Page 236: OSCON 2011 - Perl 5.16 and beyond

no “use v5.x;” line should load the old one

in your scope.

Friday, July 29, 11

Page 237: OSCON 2011 - Perl 5.16 and beyond

We need a module hierarchy for such

things in core

Friday, July 29, 11

Page 238: OSCON 2011 - Perl 5.16 and beyond

The Test Suite

Friday, July 29, 11

Page 239: OSCON 2011 - Perl 5.16 and beyond

(Keeping us honest)

Friday, July 29, 11

Page 240: OSCON 2011 - Perl 5.16 and beyond

We have anamazingtest suite

Friday, July 29, 11

Page 241: OSCON 2011 - Perl 5.16 and beyond

Over time, we need to tease apart (at least)

3 kinds of tests

Friday, July 29, 11

Page 242: OSCON 2011 - Perl 5.16 and beyond

Language tests

Friday, July 29, 11

Page 243: OSCON 2011 - Perl 5.16 and beyond

Bug-fix tests

Friday, July 29, 11

Page 244: OSCON 2011 - Perl 5.16 and beyond

Implementation tests

Friday, July 29, 11

Page 245: OSCON 2011 - Perl 5.16 and beyond

To hold us to the compatibility promises we make, we need a

new test harness

Friday, July 29, 11

Page 246: OSCON 2011 - Perl 5.16 and beyond

“Run the test suites we shipped with previous

releases...”

Friday, July 29, 11

Page 247: OSCON 2011 - Perl 5.16 and beyond

...all of em

Friday, July 29, 11

Page 248: OSCON 2011 - Perl 5.16 and beyond

We've been moving pretty fast

Friday, July 29, 11

Page 249: OSCON 2011 - Perl 5.16 and beyond

We’ve done some things I...

Friday, July 29, 11

Page 250: OSCON 2011 - Perl 5.16 and beyond

...wouldn’t do again

Friday, July 29, 11

Page 251: OSCON 2011 - Perl 5.16 and beyond

I’m going to be a lot more skeptical about

new features

Friday, July 29, 11

Page 252: OSCON 2011 - Perl 5.16 and beyond

...at least ones that don’t make it easier to

have fewer features

Friday, July 29, 11

Page 253: OSCON 2011 - Perl 5.16 and beyond

We should have sane defaults

Friday, July 29, 11

Page 254: OSCON 2011 - Perl 5.16 and beyond

There’s lots of crazyin Perl 5

Friday, July 29, 11

Page 255: OSCON 2011 - Perl 5.16 and beyond

Syntactic Crazy

Friday, July 29, 11

Page 256: OSCON 2011 - Perl 5.16 and beyond

Semantic Crazy

Friday, July 29, 11

Page 257: OSCON 2011 - Perl 5.16 and beyond

Internal Crazy

Friday, July 29, 11

Page 258: OSCON 2011 - Perl 5.16 and beyond

Module Crazy

Friday, July 29, 11

Page 259: OSCON 2011 - Perl 5.16 and beyond

It may be time to consider doing away with some of that

Friday, July 29, 11

Page 260: OSCON 2011 - Perl 5.16 and beyond

But ONLY if you declare “use v5.16”

Friday, July 29, 11

Page 261: OSCON 2011 - Perl 5.16 and beyond

But ONLY if you declare “use v5.18”

Friday, July 29, 11

Page 262: OSCON 2011 - Perl 5.16 and beyond

But ONLY if you declare “use v5.20”

Friday, July 29, 11

Page 263: OSCON 2011 - Perl 5.16 and beyond

We’ve started down this road

Friday, July 29, 11

Page 264: OSCON 2011 - Perl 5.16 and beyond

“use v5.12” includes “use strict;”

Friday, July 29, 11

Page 265: OSCON 2011 - Perl 5.16 and beyond

Where do we go next?

Friday, July 29, 11

Page 266: OSCON 2011 - Perl 5.16 and beyond

warnings on by default

Friday, July 29, 11

Page 267: OSCON 2011 - Perl 5.16 and beyond

autodie-esque defaults

Friday, July 29, 11

Page 268: OSCON 2011 - Perl 5.16 and beyond

autodie does good for your code

Friday, July 29, 11

Page 269: OSCON 2011 - Perl 5.16 and beyond

using deep, scary evil

Friday, July 29, 11

Page 270: OSCON 2011 - Perl 5.16 and beyond

I will not show you the evil

Friday, July 29, 11

Page 271: OSCON 2011 - Perl 5.16 and beyond

Ask Paul Fenwick

Friday, July 29, 11

Page 272: OSCON 2011 - Perl 5.16 and beyond

The guy with the accent

Friday, July 29, 11

Page 273: OSCON 2011 - Perl 5.16 and beyond

In the hat

Friday, July 29, 11

Page 274: OSCON 2011 - Perl 5.16 and beyond

We should throw exceptions rather than just return on failure

Friday, July 29, 11

Page 275: OSCON 2011 - Perl 5.16 and beyond

I don’t want us to bikeshed an exception

hierarchy

Friday, July 29, 11

Page 276: OSCON 2011 - Perl 5.16 and beyond

Heck, I’d be happy if we started with dying with

well-defined strings

Friday, July 29, 11

Page 277: OSCON 2011 - Perl 5.16 and beyond

(I’d love an exception hierarchy)

Friday, July 29, 11

Page 278: OSCON 2011 - Perl 5.16 and beyond

2-arg open() gone by default

Friday, July 29, 11

Page 279: OSCON 2011 - Perl 5.16 and beyond

1-arg open()gone by default?

Friday, July 29, 11

Page 280: OSCON 2011 - Perl 5.16 and beyond

Latin-1 autopromote off by default

Friday, July 29, 11

Page 281: OSCON 2011 - Perl 5.16 and beyond

utf-8 everything by default

Friday, July 29, 11

Page 282: OSCON 2011 - Perl 5.16 and beyond

A clean, simple meta-model with basic classes and methods

Friday, July 29, 11

Page 283: OSCON 2011 - Perl 5.16 and beyond

No indirect object syntax by default

Friday, July 29, 11

Page 284: OSCON 2011 - Perl 5.16 and beyond

But only if you declare “use v5.16”

Friday, July 29, 11

Page 285: OSCON 2011 - Perl 5.16 and beyond

But only if you declare “use v5.18”

Friday, July 29, 11

Page 286: OSCON 2011 - Perl 5.16 and beyond

But only if you declare “use v5.20”

Friday, July 29, 11

Page 287: OSCON 2011 - Perl 5.16 and beyond

So, Why?

Friday, July 29, 11

Page 288: OSCON 2011 - Perl 5.16 and beyond

Perl needs to be cleaner, simpler and easier to work with

Friday, July 29, 11

Page 289: OSCON 2011 - Perl 5.16 and beyond

For users...

Friday, July 29, 11

Page 290: OSCON 2011 - Perl 5.16 and beyond

...and for implementers

Friday, July 29, 11

Page 291: OSCON 2011 - Perl 5.16 and beyond

Perl should run everywhere

Friday, July 29, 11

Page 292: OSCON 2011 - Perl 5.16 and beyond

Why isn’t Perl 5 onother Runtimes?

Friday, July 29, 11

Page 293: OSCON 2011 - Perl 5.16 and beyond

“There’s no spec”

Friday, July 29, 11

Page 294: OSCON 2011 - Perl 5.16 and beyond

That didn’t stop Ruby

Friday, July 29, 11

Page 295: OSCON 2011 - Perl 5.16 and beyond

“Only Perl 5 can parse Perl 5”

Friday, July 29, 11

Page 296: OSCON 2011 - Perl 5.16 and beyond

That didn't stop PPI

Friday, July 29, 11

Page 297: OSCON 2011 - Perl 5.16 and beyond

To survive, a desperate hacker needs to be able to reimplement Perl 5

Friday, July 29, 11

Page 298: OSCON 2011 - Perl 5.16 and beyond

Thanks!

Friday, July 29, 11

Page 299: OSCON 2011 - Perl 5.16 and beyond

How do we make this happen faster?

Friday, July 29, 11

Page 300: OSCON 2011 - Perl 5.16 and beyond

Perl 5 Maint Fund

Friday, July 29, 11

Page 301: OSCON 2011 - Perl 5.16 and beyond

perlfoundation.org

Friday, July 29, 11

Page 302: OSCON 2011 - Perl 5.16 and beyond

Questions/Tomatoes?http://blog.fsck.com [email protected]@obra

Friday, July 29, 11

Page 303: OSCON 2011 - Perl 5.16 and beyond

About the name

Friday, July 29, 11

Page 304: OSCON 2011 - Perl 5.16 and beyond

Our language is called Perl 5

Friday, July 29, 11

Page 305: OSCON 2011 - Perl 5.16 and beyond

Perl 6 is ourprecociouskid sister

Friday, July 29, 11

Page 306: OSCON 2011 - Perl 5.16 and beyond

I’m happy to talk about renaming Perl 5...

Friday, July 29, 11

Page 307: OSCON 2011 - Perl 5.16 and beyond

...if you write me a second implementation

that passes the test suite

Friday, July 29, 11