perl 5: today, tomorrow, and christmas

261
Perl 5 Today, Tomorrow, and Christmas

Upload: ricardo-signes

Post on 10-May-2015

1.104 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Perl 5: Today, Tomorrow, and Christmas

Perl 5Today, Tomorrow, and Christmas

Page 2: Perl 5: Today, Tomorrow, and Christmas

The Perl Dev That Was

Page 3: Perl 5: Today, Tomorrow, and Christmas

The Perl Dev That Was

- between perl 5.10 and perl 5.12, we changed how the release cycle works

Page 4: Perl 5: Today, Tomorrow, and Christmas

The Perl Dev That Was

- between perl 5.10 and perl 5.12, we changed how the release cycle works

- that was three years ago (!!)

Page 5: Perl 5: Today, Tomorrow, and Christmas

The Perl Dev That Was

- between perl 5.10 and perl 5.12, we changed how the release cycle works

- that was three years ago (!!)

- hopefully this is the last time we need to talk about the old ways

Page 6: Perl 5: Today, Tomorrow, and Christmas

The Old Days

blead

maint5.8.0 5.8.1

5.9.0 5.9.1 5.9.2

5.8.2

5.10.0

Page 7: Perl 5: Today, Tomorrow, and Christmas
Page 8: Perl 5: Today, Tomorrow, and Christmas

The Old Days

Page 9: Perl 5: Today, Tomorrow, and Christmas

The Old Days

- what merits a new dev release?

Page 10: Perl 5: Today, Tomorrow, and Christmas

The Old Days

- what merits a new dev release?

- when is a new major release done?

Page 11: Perl 5: Today, Tomorrow, and Christmas

The Old Days

- what merits a new dev release?

- when is a new major release done?

- what can get backported?

Page 12: Perl 5: Today, Tomorrow, and Christmas

The Old Days

- what merits a new dev release?

- when is a new major release done?

- what can get backported?

- i.e., how stable is a stable release?

Page 13: Perl 5: Today, Tomorrow, and Christmas

When I say so is when!

Page 14: Perl 5: Today, Tomorrow, and Christmas

When I say so is when!

- not a terrible idea in theory

Page 15: Perl 5: Today, Tomorrow, and Christmas

When I say so is when!

- not a terrible idea in theory

- but in practice, it led to very long waits for new features to be usable

Page 16: Perl 5: Today, Tomorrow, and Christmas

When I say so is when!

- not a terrible idea in theory

- but in practice, it led to very long waits for new features to be usable

- ...which led to bad designs surviving

Page 17: Perl 5: Today, Tomorrow, and Christmas
Page 18: Perl 5: Today, Tomorrow, and Christmas

- worse, the pumpking is now busy doing

Page 19: Perl 5: Today, Tomorrow, and Christmas

- worse, the pumpking is now busy doing

- "cherrymaint"

Page 20: Perl 5: Today, Tomorrow, and Christmas

- worse, the pumpking is now busy doing

- "cherrymaint"

- release planning

Page 21: Perl 5: Today, Tomorrow, and Christmas

- worse, the pumpking is now busy doing

- "cherrymaint"

- release planning

- release "paperwork"

Page 22: Perl 5: Today, Tomorrow, and Christmas

- worse, the pumpking is now busy doing

- "cherrymaint"

- release planning

- release "paperwork"

- cat herding (read: arguing with angries)

Page 23: Perl 5: Today, Tomorrow, and Christmas

- worse, the pumpking is now busy doing

- "cherrymaint"

- release planning

- release "paperwork"

- cat herding (read: arguing with angries)

- ...but is actually a hugely valuable coder

Page 24: Perl 5: Today, Tomorrow, and Christmas
Page 25: Perl 5: Today, Tomorrow, and Christmas

The Interregnum

Page 26: Perl 5: Today, Tomorrow, and Christmas

The Interregnum

- the 5.10 crisis

Page 27: Perl 5: Today, Tomorrow, and Christmas

The Interregnum

- the 5.10 crisis

- the San Diego call

Page 28: Perl 5: Today, Tomorrow, and Christmas

The Interregnum

- the 5.10 crisis

- the San Diego call

- 5.11 and the release engineers corps

Page 29: Perl 5: Today, Tomorrow, and Christmas

The Interregnum

- the 5.10 crisis

- the San Diego call

- 5.11 and the release engineers corps

- any idiot can do it!

Page 30: Perl 5: Today, Tomorrow, and Christmas

New Blead

blead

2011-065.15.0

Page 31: Perl 5: Today, Tomorrow, and Christmas

New Blead

blead

2011-065.15.0

2011-075.15.1

Page 32: Perl 5: Today, Tomorrow, and Christmas

New Blead

blead

2011-065.15.0

2011-075.15.1

2011-085.15.2

Page 33: Perl 5: Today, Tomorrow, and Christmas

New Blead

blead

2011-065.15.0

2011-075.15.1

2011-085.15.2

2011-095.15.3

Page 34: Perl 5: Today, Tomorrow, and Christmas

New Blead

blead

2011-065.15.0

2011-075.15.1

2011-085.15.2

2011-095.15.3

2012-055.15.9

Page 35: Perl 5: Today, Tomorrow, and Christmas

New Blead

blead

2011-065.15.0

2011-075.15.1

2011-085.15.2

2011-095.15.3

2012-055.15.9

maint2012-065.16.0

Page 36: Perl 5: Today, Tomorrow, and Christmas

New Blead

blead

2011-065.15.0

2011-075.15.1

2011-085.15.2

2011-095.15.3

2012-055.15.9

maint2012-065.16.0

2012-065.17.0

Page 37: Perl 5: Today, Tomorrow, and Christmas

New Blead

blead

2011-065.15.0

2011-075.15.1

2011-085.15.2

2011-095.15.3

2012-055.15.9

maint2012-065.16.0

2012-065.17.0

David G. Zefram Rik Stevan Abigail Zefram

Rik

Page 38: Perl 5: Today, Tomorrow, and Christmas

New Maint

blead

maint2012-065.16.0

2012-065.17.0

Zefram

Rik

Page 39: Perl 5: Today, Tomorrow, and Christmas

New Maint

blead

maint2012-065.16.0

2012-065.17.0

Zefram

Rik

2012-075.16.1

?

Page 40: Perl 5: Today, Tomorrow, and Christmas

New Maint

blead

maint2012-065.16.0

2012-065.17.0

Zefram

Rik

2012-075.16.1

?

2012-095.16.2

?

Page 41: Perl 5: Today, Tomorrow, and Christmas

New Maint

blead

maint2012-065.16.0

2012-065.17.0

Zefram

Rik

2012-075.16.1

?

2012-095.16.2

2013-??5.16.2

? ?

Page 42: Perl 5: Today, Tomorrow, and Christmas

Minimal Maint

Page 43: Perl 5: Today, Tomorrow, and Christmas

- almost all dev. burden is kept in blead

Minimal Maint

Page 44: Perl 5: Today, Tomorrow, and Christmas

- almost all dev. burden is kept in blead

- the rules about changing maint are strict

Minimal Maint

Page 45: Perl 5: Today, Tomorrow, and Christmas

- almost all dev. burden is kept in blead

- the rules about changing maint are strict

- must be critical bug fix

Minimal Maint

Page 46: Perl 5: Today, Tomorrow, and Christmas

- almost all dev. burden is kept in blead

- the rules about changing maint are strict

- must be critical bug fix

- (which includes security)

Minimal Maint

Page 47: Perl 5: Today, Tomorrow, and Christmas

- almost all dev. burden is kept in blead

- the rules about changing maint are strict

- must be critical bug fix

- (which includes security)

- very effective! in fact, so effective that...

Minimal Maint

Page 48: Perl 5: Today, Tomorrow, and Christmas

Multimaint

blead

2012-065.16.0

2012-065.17.0

Zefram

Rik

2012-075.16.1

?

2012-095.16.2

2013-??5.16.2

? ?

maint-5.16

2011-055.14.0

Jesse

maint-5.14

Page 49: Perl 5: Today, Tomorrow, and Christmas
Page 50: Perl 5: Today, Tomorrow, and Christmas

New Cherrymaint

blead

maint2012-055.16.0

2012-055.17.0

Zefram

Rik

2012-075.16.1

?

2012-095.16.2

2013-??5.16.2

? ?

Page 51: Perl 5: Today, Tomorrow, and Christmas

New Cherrymaint

blead

maint2012-065.16.0

2012-065.17.0

Zefram

Rik

2012-075.16.1

?

2012-095.16.2

2013-??5.16.2

? ?

Page 52: Perl 5: Today, Tomorrow, and Christmas

Pumpking?

Page 53: Perl 5: Today, Tomorrow, and Christmas
Page 54: Perl 5: Today, Tomorrow, and Christmas

What is the Pumpking?

Page 55: Perl 5: Today, Tomorrow, and Christmas

What is the Pumpking?

- the patch pumpkin

Page 56: Perl 5: Today, Tomorrow, and Christmas

What is the Pumpking?

- the patch pumpkin

- the person with the conch

Page 57: Perl 5: Today, Tomorrow, and Christmas

What is the Pumpking?

- the patch pumpkin

- the person with the conch

- the benevolent dictator for now

Page 58: Perl 5: Today, Tomorrow, and Christmas

What is the Pumpking?

- the patch pumpkin

- the person with the conch

- the benevolent dictator for now

- was: the one who could do everything

Page 59: Perl 5: Today, Tomorrow, and Christmas

What is the Pumpking?

- the patch pumpkin

- the person with the conch

- the benevolent dictator for now

- was: the one who could do everything

- now: the one who manages

Page 60: Perl 5: Today, Tomorrow, and Christmas

Jesse and Rik

Page 61: Perl 5: Today, Tomorrow, and Christmas

Jesse and Rik

- we get along well

Page 62: Perl 5: Today, Tomorrow, and Christmas

Jesse and Rik

- we get along well

- we both want what is good for Perl 5

Page 63: Perl 5: Today, Tomorrow, and Christmas

Jesse and Rik

- we get along well

- we both want what is good for Perl 5

- but we see the future very differently

Page 64: Perl 5: Today, Tomorrow, and Christmas
Page 65: Perl 5: Today, Tomorrow, and Christmas
Page 66: Perl 5: Today, Tomorrow, and Christmas

Rik and Jesse

Page 67: Perl 5: Today, Tomorrow, and Christmas

Rik and Jesse

- Jesse's "5.16 and Beyond" was inspired by his hopes and dreams

Page 68: Perl 5: Today, Tomorrow, and Christmas

Rik and Jesse

- Jesse's "5.16 and Beyond" was inspired by his hopes and dreams

- This talk is inspired by my fears and anxieties

Page 69: Perl 5: Today, Tomorrow, and Christmas

The Pumpking's Job

Page 70: Perl 5: Today, Tomorrow, and Christmas

The Pumpking's Job

- ...is not to make sure perl gets better.

- It's to make sure perl doesn't get worse.

Page 71: Perl 5: Today, Tomorrow, and Christmas

Designing Perl

Page 72: Perl 5: Today, Tomorrow, and Christmas

Designing Perl

- So, does that mean that the pumpking is Perl's designer?

Page 73: Perl 5: Today, Tomorrow, and Christmas

Designing Perl

- So, does that mean that the pumpking is Perl's designer?

- Only to the extent that the designs he offers are carried out.

Page 74: Perl 5: Today, Tomorrow, and Christmas

Designing Perl

- So, does that mean that the pumpking is Perl's designer?

- Only to the extent that the designs he offers are carried out.

- Saying "make it so" depends on having a crew who will make it so.

Page 75: Perl 5: Today, Tomorrow, and Christmas

Designing Perl

- So, does that mean that the pumpking is Perl's designer?

- Only to the extent that the designs he offers are carried out.

- Saying "make it so" depends on having a crew who will make it so.

- Instead, he or she is the decider.

Page 76: Perl 5: Today, Tomorrow, and Christmas

How a Bill Becomes a Law

Page 77: Perl 5: Today, Tomorrow, and Christmas

Mailing List Judo

Page 78: Perl 5: Today, Tomorrow, and Christmas

Mailing List Judo

- how do you get your change applied?

Page 79: Perl 5: Today, Tomorrow, and Christmas

Mailing List Judo

- how do you get your change applied?

- by avoiding controversy

Page 80: Perl 5: Today, Tomorrow, and Christmas

Mailing List Judo

- how do you get your change applied?

- by avoiding controversy

- ...at least on the list

Page 81: Perl 5: Today, Tomorrow, and Christmas

Syntax

Page 82: Perl 5: Today, Tomorrow, and Christmas

Syntax

- perl programmers obsess over it

Page 83: Perl 5: Today, Tomorrow, and Christmas

Syntax

- perl programmers obsess over it

- even when the semantics are the real problem

Page 84: Perl 5: Today, Tomorrow, and Christmas

Syntax

- perl programmers obsess over it

- even when the semantics are the real problem

- ?->

Page 85: Perl 5: Today, Tomorrow, and Christmas

Syntax

- perl programmers obsess over it

- even when the semantics are the real problem

- ?->- letting a syntax discussion start can be fatal

Page 86: Perl 5: Today, Tomorrow, and Christmas

Changing Anything

Page 87: Perl 5: Today, Tomorrow, and Christmas

Changing Anything

- some argue that change itself is bad

Page 88: Perl 5: Today, Tomorrow, and Christmas

Changing Anything

- some argue that change itself is bad

- "someone might be relying on this error"

Page 89: Perl 5: Today, Tomorrow, and Christmas

Other Lunacy

Page 90: Perl 5: Today, Tomorrow, and Christmas

Other Lunacy

- "Your patch is nice, but why don't we do fifteen other things along with it?"

Page 91: Perl 5: Today, Tomorrow, and Christmas

Other Lunacy

- "Your patch is nice, but why don't we do fifteen other things along with it?"

- "There are serious problems with this patch, too large to fit in the margin of this email."

Page 92: Perl 5: Today, Tomorrow, and Christmas

...and in reality...

Page 93: Perl 5: Today, Tomorrow, and Christmas

...and in reality...

- These observations are true.

Page 94: Perl 5: Today, Tomorrow, and Christmas

...and in reality...

- These observations are true.

- So the advice to "lobby in private" seems promising.

Page 95: Perl 5: Today, Tomorrow, and Christmas

...and in reality...

- These observations are true.

- So the advice to "lobby in private" seems promising.

- Everybody wants to avoid a long p5p thread

Page 96: Perl 5: Today, Tomorrow, and Christmas

...and in reality...

- These observations are true.

- So the advice to "lobby in private" seems promising.

- Everybody wants to avoid a long p5p thread

- …because p5p can be a horrible place.

Page 97: Perl 5: Today, Tomorrow, and Christmas

U+1F4A9

Page 98: Perl 5: Today, Tomorrow, and Christmas

U+1F4A9

- In most cases, everything I've just said is true.

Page 99: Perl 5: Today, Tomorrow, and Christmas

U+1F4A9

- In most cases, everything I've just said is true.

- …and also crap.

Page 100: Perl 5: Today, Tomorrow, and Christmas

U+1F4A9

- In most cases, everything I've just said is true.

- …and also crap.

- p5p has, in part, a culture of fear

Page 101: Perl 5: Today, Tomorrow, and Christmas

U+1F4A9

- In most cases, everything I've just said is true.

- …and also crap.

- p5p has, in part, a culture of fear

- …of endless, horrible argument

Page 102: Perl 5: Today, Tomorrow, and Christmas

Improving p5p

Page 103: Perl 5: Today, Tomorrow, and Christmas

Improving p5p

- if discussion on p5p was not only reliably civil…

Page 104: Perl 5: Today, Tomorrow, and Christmas

Improving p5p

- if discussion on p5p was not only reliably civil…

- …but also technically on point…

Page 105: Perl 5: Today, Tomorrow, and Christmas

Improving p5p

- if discussion on p5p was not only reliably civil…

- …but also technically on point…

- contributors would want to engage in it

Page 106: Perl 5: Today, Tomorrow, and Christmas

Improving p5p

Page 107: Perl 5: Today, Tomorrow, and Christmas

Improving p5p

- we would still try to avoid controversy

Page 108: Perl 5: Today, Tomorrow, and Christmas

Improving p5p

- we would still try to avoid controversy

- …but by reaching consensus, not with tricks

Page 109: Perl 5: Today, Tomorrow, and Christmas

Improving p5p

- we would still try to avoid controversy

- …but by reaching consensus, not with tricks

- so the pumpking never needs to decide!

Page 110: Perl 5: Today, Tomorrow, and Christmas

The Pumpking's Job

Page 111: Perl 5: Today, Tomorrow, and Christmas

The Pumpking's Job

- What will I do with all that free time?

Page 112: Perl 5: Today, Tomorrow, and Christmas

The Pumpking's Job

- What will I do with all that free time?

- I will try to improve the list's culture.

Page 113: Perl 5: Today, Tomorrow, and Christmas

The Pumpking's Job

- What will I do with all that free time?

- I will try to improve the list's culture.

- My promise:

Page 114: Perl 5: Today, Tomorrow, and Christmas

The Pumpking's Job

- What will I do with all that free time?

- I will try to improve the list's culture.

- My promise:

- I will call out unreasonable arguments and, even more, unreasonable behavior.

Page 115: Perl 5: Today, Tomorrow, and Christmas

The Pumpking's Job

Page 116: Perl 5: Today, Tomorrow, and Christmas

The Pumpking's Job

- ...is to make sure p5p culture gets better.

Page 117: Perl 5: Today, Tomorrow, and Christmas

The Final Decision

Page 118: Perl 5: Today, Tomorrow, and Christmas

The Final Decision

- sometimes, controversy is unavoidable

Page 119: Perl 5: Today, Tomorrow, and Christmas

The Final Decision

- sometimes, controversy is unavoidable

- there is no consensus on whether a new feature is a good idea

Page 120: Perl 5: Today, Tomorrow, and Christmas

The Final Decision

- sometimes, controversy is unavoidable

- there is no consensus on whether a new feature is a good idea

- how can Rik still avoid having to decide?

Page 121: Perl 5: Today, Tomorrow, and Christmas

CPAN, not perl

Page 122: Perl 5: Today, Tomorrow, and Christmas

CPAN, not perl

- can the feature be implemented on CPAN?

Page 123: Perl 5: Today, Tomorrow, and Christmas

CPAN, not perl

- can the feature be implemented on CPAN?

- if not, why not? can that be fixed?

Page 124: Perl 5: Today, Tomorrow, and Christmas

CPAN, not perl

- can the feature be implemented on CPAN?

- if not, why not? can that be fixed?

- can its semantics be simulated for testing?

Page 125: Perl 5: Today, Tomorrow, and Christmas

feature

Page 126: Perl 5: Today, Tomorrow, and Christmas

feature

- can the feature be lexically hidden behind feature.pm?

Page 127: Perl 5: Today, Tomorrow, and Christmas

feature

- can the feature be lexically hidden behind feature.pm?

- (remember, not every feature needs to be in a version bundle)

Page 128: Perl 5: Today, Tomorrow, and Christmas

feature

- can the feature be lexically hidden behind feature.pm?

- (remember, not every feature needs to be in a version bundle)

- use experimental

Page 129: Perl 5: Today, Tomorrow, and Christmas

use experimental ‘bind_op’;

my $y = “Foo bar”;my $x := $y;

:=

Page 130: Perl 5: Today, Tomorrow, and Christmas

use experimental ‘bind_op’;

my $y = “Foo bar”;my $x := $y;

:=

Feature “experimental_bind_op” is not supported by Perl 5.22.0

Page 131: Perl 5: Today, Tomorrow, and Christmas

Strategy of Last Resort

Page 132: Perl 5: Today, Tomorrow, and Christmas

Strategy of Last Resort

- the change is controversial

Page 133: Perl 5: Today, Tomorrow, and Christmas

Strategy of Last Resort

- the change is controversial

- and can't be prototyped on CPAN

Page 134: Perl 5: Today, Tomorrow, and Christmas

Strategy of Last Resort

- the change is controversial

- and can't be prototyped on CPAN

- and can or can't go into feature.pm

Page 135: Perl 5: Today, Tomorrow, and Christmas

Strategy of Last Resort

- the change is controversial

- and can't be prototyped on CPAN

- and can or can't go into feature.pm

- how do we decide?

Page 136: Perl 5: Today, Tomorrow, and Christmas

The Final Decision

Page 137: Perl 5: Today, Tomorrow, and Christmas

The Final Decision

- is the feature small and specific?

Page 138: Perl 5: Today, Tomorrow, and Christmas

The Final Decision

- is the feature small and specific?

- is the feature generic and unsurprising?

Page 139: Perl 5: Today, Tomorrow, and Christmas

The Final Decision

- is the feature small and specific?

- is the feature generic and unsurprising?

- is the feature teachable?

Page 140: Perl 5: Today, Tomorrow, and Christmas

The Final Decision

- is the feature small and specific?

- is the feature generic and unsurprising?

- is the feature teachable?

- what's the maintenance burden?

Page 141: Perl 5: Today, Tomorrow, and Christmas

The Final Decision

- is the feature small and specific?

- is the feature generic and unsurprising?

- is the feature teachable?

- what's the maintenance burden?

- does it feel like it makes Perl more Perlish?

Page 142: Perl 5: Today, Tomorrow, and Christmas

Perlishness

Page 143: Perl 5: Today, Tomorrow, and Christmas

Perlishness

- I know it when I see it.

Page 144: Perl 5: Today, Tomorrow, and Christmas

Perlishness

- I know it when I see it.

- "gets us further along our road map"

Page 145: Perl 5: Today, Tomorrow, and Christmas

The Road Map

Page 146: Perl 5: Today, Tomorrow, and Christmas

The Road Map

- I don't make one.

Page 147: Perl 5: Today, Tomorrow, and Christmas

The Road Map

- I don't make one.

- I don't see the point. I don't implement perl.

Page 148: Perl 5: Today, Tomorrow, and Christmas

The Road Map

- I don't make one.

- I don't see the point. I don't implement perl.

- Submitted patches are the roads

Page 149: Perl 5: Today, Tomorrow, and Christmas

Pathfinding

Page 150: Perl 5: Today, Tomorrow, and Christmas

Pathfinding

- Backward compatibility

Page 151: Perl 5: Today, Tomorrow, and Christmas

Pathfinding

- Backward compatibility

- POLS

Page 152: Perl 5: Today, Tomorrow, and Christmas

Pathfinding

- Backward compatibility

- POLS

- Utility

Page 153: Perl 5: Today, Tomorrow, and Christmas

Pathfinding

- Backward compatibility

- POLS

- Utility

- Conceptual simplicity

Page 154: Perl 5: Today, Tomorrow, and Christmas

Pathfinding

- Backward compatibility

- POLS

- Utility

- Conceptual simplicity

- Readability

Page 155: Perl 5: Today, Tomorrow, and Christmas

Intelligent Design

Page 156: Perl 5: Today, Tomorrow, and Christmas

Intelligent Design

- always the best way to build something

Page 157: Perl 5: Today, Tomorrow, and Christmas

Intelligent Design

- always the best way to build something

- assuming sufficient intelligence

Page 158: Perl 5: Today, Tomorrow, and Christmas

Intelligent Design

- always the best way to build something

- assuming sufficient intelligence

- and omnipotence

Page 159: Perl 5: Today, Tomorrow, and Christmas

Intelligent Design

- always the best way to build something

- assuming sufficient intelligence

- and omnipotence

- i.e., great if you're God

Page 160: Perl 5: Today, Tomorrow, and Christmas

Evolution

Page 161: Perl 5: Today, Tomorrow, and Christmas

Evolution

- seems to have worked pretty well

Page 162: Perl 5: Today, Tomorrow, and Christmas

Evolution

- seems to have worked pretty well

- except for the billions of required deaths

Page 163: Perl 5: Today, Tomorrow, and Christmas

Evolution

- seems to have worked pretty well

- except for the billions of required deaths

- and millions of years

Page 164: Perl 5: Today, Tomorrow, and Christmas

Evolution

- seems to have worked pretty well

- except for the billions of required deaths

- and millions of years

- and all those extinct species

Page 165: Perl 5: Today, Tomorrow, and Christmas

Evolution

- seems to have worked pretty well

- except for the billions of required deaths

- and millions of years

- and all those extinct species

- and I still ended up with an appendix

Page 166: Perl 5: Today, Tomorrow, and Christmas

Intelligent Evolution

Page 167: Perl 5: Today, Tomorrow, and Christmas

Intelligent Evolution

- mutations are designed, not random

Page 168: Perl 5: Today, Tomorrow, and Christmas

Intelligent Evolution

- mutations are designed, not random

- then further mutated in captivity

Page 169: Perl 5: Today, Tomorrow, and Christmas

Intelligent Evolution

- mutations are designed, not random

- then further mutated in captivity

- and possibly slaughtered before reaching the wild

Page 170: Perl 5: Today, Tomorrow, and Christmas
Page 171: Perl 5: Today, Tomorrow, and Christmas
Page 172: Perl 5: Today, Tomorrow, and Christmas

Recovering from Error

Page 173: Perl 5: Today, Tomorrow, and Christmas

Oops

Page 174: Perl 5: Today, Tomorrow, and Christmas

Oops

- so, Rik had to decide something

Page 175: Perl 5: Today, Tomorrow, and Christmas

Oops

- so, Rik had to decide something

- and he made the wrong choice

Page 176: Perl 5: Today, Tomorrow, and Christmas

Oops

- so, Rik had to decide something

- and he made the wrong choice

- and everybody can tell

Page 177: Perl 5: Today, Tomorrow, and Christmas

Oops

- so, Rik had to decide something

- and he made the wrong choice

- and everybody can tell

- and he wants to fix it up so the new smartassign operator is not legacy

Page 178: Perl 5: Today, Tomorrow, and Christmas

Experimental?

Page 179: Perl 5: Today, Tomorrow, and Christmas

Experimental?

- was it marked experimental?

Page 180: Perl 5: Today, Tomorrow, and Christmas

Experimental?

- was it marked experimental?

- if so, we can just remove the thing

Page 181: Perl 5: Today, Tomorrow, and Christmas

Experimental?

- was it marked experimental?

- if so, we can just remove the thing

- ...in theory

Page 182: Perl 5: Today, Tomorrow, and Christmas

Current Experiments

Page 183: Perl 5: Today, Tomorrow, and Christmas

Current Experiments

- fork emulation

Page 184: Perl 5: Today, Tomorrow, and Christmas

Current Experiments

- fork emulation

- lvalue subroutines

Page 185: Perl 5: Today, Tomorrow, and Christmas

Current Experiments

- fork emulation

- lvalue subroutines

- weak references (!?)

Page 186: Perl 5: Today, Tomorrow, and Christmas

Experimental?

Page 187: Perl 5: Today, Tomorrow, and Christmas

Experimental?

- was it marked experimental?

Page 188: Perl 5: Today, Tomorrow, and Christmas

Experimental?

- was it marked experimental?

- if so, we can just remove the thing

Page 189: Perl 5: Today, Tomorrow, and Christmas

Experimental?

- was it marked experimental?

- if so, we can just remove the thing

- ...in theory

Page 190: Perl 5: Today, Tomorrow, and Christmas

Experimental?

- was it marked experimental?

- if so, we can just remove the thing

- ...in theory

- if not, we'll do a deprecation

Page 191: Perl 5: Today, Tomorrow, and Christmas

Deprecation Cycle

Page 192: Perl 5: Today, Tomorrow, and Christmas

Deprecation Cycle

1. (optional) announce in 5.16 delta that we'll probably deprecate a behavior next time

Page 193: Perl 5: Today, Tomorrow, and Christmas

Deprecation Cycle

1. (optional) announce in 5.16 delta that we'll probably deprecate a behavior next time

2. start issuing warnings in 5.18

Page 194: Perl 5: Today, Tomorrow, and Christmas

Deprecation Cycle

1. (optional) announce in 5.16 delta that we'll probably deprecate a behavior next time

2. start issuing warnings in 5.18

3. keep issuing them in 5.20

Page 195: Perl 5: Today, Tomorrow, and Christmas

Deprecation Cycle

1. (optional) announce in 5.16 delta that we'll probably deprecate a behavior next time

2. start issuing warnings in 5.18

3. keep issuing them in 5.20

4. remove the behavior in 5.22

Page 196: Perl 5: Today, Tomorrow, and Christmas

The Eternal Bug

Page 197: Perl 5: Today, Tomorrow, and Christmas

The Eternal Bug

- some behaviors can't be detected and made fatal practically

Page 198: Perl 5: Today, Tomorrow, and Christmas

The Eternal Bug

- some behaviors can't be detected and made fatal practically

- arybase feature: we could remove it

Page 199: Perl 5: Today, Tomorrow, and Christmas

The Eternal Bug

- some behaviors can't be detected and made fatal practically

- arybase feature: we could remove it

- The Unicode Bug...

Page 200: Perl 5: Today, Tomorrow, and Christmas

The Unicode Bug

Page 201: Perl 5: Today, Tomorrow, and Christmas

my $x = acquire_input;

The Unicode Bug

Page 202: Perl 5: Today, Tomorrow, and Christmas

my $x = acquire_input;

$x .= “Á”; # <-- that’s an A-acute

The Unicode Bug

Page 203: Perl 5: Today, Tomorrow, and Christmas

my $x = acquire_input;

$x .= “Á”; # <-- that’s an A-acute

print $x =~ /á/i ? ‘match’ : ‘no match’;

The Unicode Bug

Page 204: Perl 5: Today, Tomorrow, and Christmas

Features in Flight

Page 205: Perl 5: Today, Tomorrow, and Christmas

pluggable syntax

Page 206: Perl 5: Today, Tomorrow, and Christmas

(the MOP)

Page 207: Perl 5: Today, Tomorrow, and Christmas

regexp class sets

Page 208: Perl 5: Today, Tomorrow, and Christmas

$str = /\A (?[a-z] - [aeiou])\z/x

regex class sets

Page 209: Perl 5: Today, Tomorrow, and Christmas

casemod escapes

Page 210: Perl 5: Today, Tomorrow, and Christmas

casemod escapes

Page 211: Perl 5: Today, Tomorrow, and Christmas

$input = <STDIN>;

casemod escapes

Page 212: Perl 5: Today, Tomorrow, and Christmas

$input = <STDIN>;# ricardo

casemod escapes

Page 213: Perl 5: Today, Tomorrow, and Christmas

$input = <STDIN>;# ricardo# RICARDO

casemod escapes

Page 214: Perl 5: Today, Tomorrow, and Christmas

$input = <STDIN>;# ricardo# RICARDO# Ricardo

casemod escapes

Page 215: Perl 5: Today, Tomorrow, and Christmas

$input = <STDIN>;# ricardo# RICARDO# Ricardo

$str = “\u\L$input”; # Ricardo

casemod escapes

Page 216: Perl 5: Today, Tomorrow, and Christmas

casemod escapes

Page 217: Perl 5: Today, Tomorrow, and Christmas

$let = “\L\N{LATIN CAPITAL LETTER A}”;

casemod escapes

Page 218: Perl 5: Today, Tomorrow, and Christmas

$let = “\L\N{LATIN CAPITAL LETTER A}”;# $let is now ‘a’

casemod escapes

Page 219: Perl 5: Today, Tomorrow, and Christmas

$let = “\L\N{LATIN CAPITAL LETTER A}”;# $let is now ‘a’

$let =~ /\L\N{LATIN CAPITAL LETTER A}/;

casemod escapes

Page 220: Perl 5: Today, Tomorrow, and Christmas

$let = “\L\N{LATIN CAPITAL LETTER A}”;# $let is now ‘a’

$let =~ /\L\N{LATIN CAPITAL LETTER A}/;# fails!!

casemod escapes

Page 221: Perl 5: Today, Tomorrow, and Christmas

$let = “\L\N{LATIN CAPITAL LETTER A}”;# $let is now ‘a’

$let =~ /\L\N{LATIN CAPITAL LETTER A}/;# fails!!

qr<\N{LATIN CAPITAL LETTER A}>

casemod escapes

Page 222: Perl 5: Today, Tomorrow, and Christmas

$let = “\L\N{LATIN CAPITAL LETTER A}”;# $let is now ‘a’

$let =~ /\L\N{LATIN CAPITAL LETTER A}/;# fails!!

qr<\N{LATIN CAPITAL LETTER A}># (?^u:\N{U+41})

casemod escapes

Page 223: Perl 5: Today, Tomorrow, and Christmas

$let = “\L\N{LATIN CAPITAL LETTER A}”;# $let is now ‘a’

$let =~ /\L\N{LATIN CAPITAL LETTER A}/;# fails!!

qr<\N{LATIN CAPITAL LETTER A}># (?^u:\N{U+41})

qr<\L\N{LATIN CAPITAL LETTER A}>

casemod escapes

Page 224: Perl 5: Today, Tomorrow, and Christmas

$let = “\L\N{LATIN CAPITAL LETTER A}”;# $let is now ‘a’

$let =~ /\L\N{LATIN CAPITAL LETTER A}/;# fails!!

qr<\N{LATIN CAPITAL LETTER A}># (?^u:\N{U+41})

qr<\L\N{LATIN CAPITAL LETTER A}># (?^u:\n{u+41})

casemod escapes

Page 225: Perl 5: Today, Tomorrow, and Christmas

ÅÂÃÄÉÃ

Page 226: Perl 5: Today, Tomorrow, and Christmas

EBCDIC

Page 227: Perl 5: Today, Tomorrow, and Christmas

smartmatch

Page 228: Perl 5: Today, Tomorrow, and Christmas

The Future of ~~

Page 229: Perl 5: Today, Tomorrow, and Christmas

The Future of ~~

- deprecate and remove?

Page 230: Perl 5: Today, Tomorrow, and Christmas

The Future of ~~

- deprecate and remove?

- make pluggable with simple replacement?

Page 231: Perl 5: Today, Tomorrow, and Christmas

The Future of ~~

- deprecate and remove?

- make pluggable with simple replacement?

- leave as is with giant warning sign?

Page 232: Perl 5: Today, Tomorrow, and Christmas

The Future of ~~

- deprecate and remove?

- make pluggable with simple replacement?

- leave as is with giant warning sign?

- and then what about given/when?

Page 233: Perl 5: Today, Tomorrow, and Christmas

magic flags

Page 234: Perl 5: Today, Tomorrow, and Christmas

utf8 strictness

Page 235: Perl 5: Today, Tomorrow, and Christmas

(??{{ ... }})

Page 236: Perl 5: Today, Tomorrow, and Christmas

The Secret Roadmap

Page 237: Perl 5: Today, Tomorrow, and Christmas

slim core

Page 238: Perl 5: Today, Tomorrow, and Christmas

multiple cores

Page 239: Perl 5: Today, Tomorrow, and Christmas

fatal implicit close()

Page 240: Perl 5: Today, Tomorrow, and Christmas

fatal implicit close()

Page 241: Perl 5: Today, Tomorrow, and Christmas

{

fatal implicit close()

Page 242: Perl 5: Today, Tomorrow, and Christmas

{ use autodie;

fatal implicit close()

Page 243: Perl 5: Today, Tomorrow, and Christmas

{ use autodie; open my $fh, ‘>’, $filename;

fatal implicit close()

Page 244: Perl 5: Today, Tomorrow, and Christmas

{ use autodie; open my $fh, ‘>’, $filename; $fh->print( ... );

fatal implicit close()

Page 245: Perl 5: Today, Tomorrow, and Christmas

{ use autodie; open my $fh, ‘>’, $filename; $fh->print( ... );} # should die if close fails!

fatal implicit close()

Page 246: Perl 5: Today, Tomorrow, and Christmas

better exceptions

Page 247: Perl 5: Today, Tomorrow, and Christmas

my $x = try { $y / $z} catch { return $Infinity if $_->tagged(‘divbyzero’); die $_;}

better exceptions

Page 248: Perl 5: Today, Tomorrow, and Christmas

MOP and pluggable OO

Page 249: Perl 5: Today, Tomorrow, and Christmas

chars v. bytes

Page 250: Perl 5: Today, Tomorrow, and Christmas

chars v. bytes

Page 251: Perl 5: Today, Tomorrow, and Christmas

my $buf = $fh->readline;

chars v. bytes

Page 252: Perl 5: Today, Tomorrow, and Christmas

my $buf = $fh->readline;

my $str = decode_utf8($buf);

chars v. bytes

Page 253: Perl 5: Today, Tomorrow, and Christmas

my $buf = $fh->readline;

my $str = decode_utf8($buf);

STDOUT->print( $str );

chars v. bytes

Page 254: Perl 5: Today, Tomorrow, and Christmas

my $buf = $fh->readline;

my $str = decode_utf8($buf);

STDOUT->print( $str );# fatal or autoencode

chars v. bytes

Page 255: Perl 5: Today, Tomorrow, and Christmas

autoboxing

Page 256: Perl 5: Today, Tomorrow, and Christmas

autoboxing

Page 257: Perl 5: Today, Tomorrow, and Christmas

@array->push(@list);

autoboxing

Page 258: Perl 5: Today, Tomorrow, and Christmas

@array->push(@list);

$arrayref->push(@list);

autoboxing

Page 259: Perl 5: Today, Tomorrow, and Christmas

@array->push(@list);

$arrayref->push(@list);

for ($x->values) { ... }

autoboxing

Page 260: Perl 5: Today, Tomorrow, and Christmas

Any questions?

Page 261: Perl 5: Today, Tomorrow, and Christmas

Thank you!