Perl 5.16 and BeyondFriday, July 29, 11
Jesse VincentFriday, July 29, 11
PumpkingFriday, July 29, 11
Former Perl 6                      Project ManagerFriday, July 29, 11
Whats a Pumpking?Friday, July 29, 11
BDFLFriday, July 29, 11
BDFLFriday, July 29, 11
BDFLFriday, July 29, 11
I make decisionsFriday, July 29, 11
I’m a managerFriday, July 29, 11
I don’t do “real work”Friday, July 29, 11
So, who makes Perl?Friday, July 29, 11
Many awesome peopleFriday, July 29, 11
I just stand around                        looking pretty...Friday, July 29, 11
...while other people do                       awesome stuffFriday, July 29, 11
Is your name in Perl’s                         AUTHORS file?Friday, July 29, 11
Are you a                      CPAN author?Friday, July 29, 11
You rockFriday, July 29, 11
You make PerlFriday, July 29, 11
The Release ProcessFriday, July 29, 11
Releases in the last                       12-or-so months:Friday, July 29, 11
5.12.2Friday, July 29, 11
5.12.3Friday, July 29, 11
5.12.4Friday, July 29, 11
5.13.2Friday, July 29, 11
5.13.3Friday, July 29, 11
5.13.4Friday, July 29, 11
5.13.5Friday, July 29, 11
5.13.6Friday, July 29, 11
5.13.7Friday, July 29, 11
5.13.8Friday, July 29, 11
5.13.9Friday, July 29, 11
5.13.10Friday, July 29, 11
5.13.11Friday, July 29, 11
5.14.0Friday, July 29, 11
5.14.1Friday, July 29, 11
5.15.0Friday, July 29, 11
5.15.1Friday, July 29, 11
Perl 5.14.1 is the                       current release                          of Perl 5Friday, July 29, 11
It came out 6ish                          weeks agoFriday, July 29, 11
As did Perl 5.12.4Friday, July 29, 11
As did Perl 5.15.0Friday, July 29, 11
It used to take us 3                       weeks to prepare                            a releaseFriday, July 29, 11
And we made the                      Pumpking do itFriday, July 29, 11
Now it takes                      less than a dayFriday, July 29, 11
The 43 step process is                         documentedFriday, July 29, 11
Releases are still a                      chore if you do them                          every monthFriday, July 29, 11
Now we have rotating                       release engineersFriday, July 29, 11
Most of them are                      new committersFriday, July 29, 11
Nice side effect:                       release engineers                      need commit bitsFriday, July 29, 11
Since the move to git,                      we’ve nearly doubled                        our committer listFriday, July 29,...
The world hasn’t endedFriday, July 29, 11
Some of those release                      engineers have become                       prolific contributorsFriday, July 29...
I just make decisionsFriday, July 29, 11
I try to get them rightFriday, July 29, 11
Sometimes                      they’re wrongFriday, July 29, 11
I have a little                       bit of coverFriday, July 29, 11
Rule 1Friday, July 29, 11
Larry is always rightFriday, July 29, 11
Rule 2Friday, July 29, 11
Larry is allowed to                       change his mindFriday, July 29, 11
I’m not LarryFriday, July 29, 11
I’m nowhere                      near as cleverFriday, July 29, 11
My shirts are nowhere                          near as loudFriday, July 29, 11
At YAPC::NA, Larry                       said that the time of                      hero-pumpkings is overFriday, July 29,...
DFriday, July 29, 11
DictatorFriday, July 29, 11
DelegatorFriday, July 29, 11
DocumenterFriday, July 29, 11
Thankfully, Larry’s rules                       set me up to succeedFriday, July 29, 11
Rule 1 definitely                      doesn’t apply to                      the Perl 5 runtimeFriday, July 29, 11
HoweverFriday, July 29, 11
The core needs more                       support for Rule 2Friday, July 29, 11
I haven’t heard this                           in a while:Friday, July 29, 11
Perl is Dead!Friday, July 29, 11
What I’ve been                      hearing lately:Friday, July 29, 11
Where are we going?Friday, July 29, 11
It’s changing too fast.                       Can you slow down?Friday, July 29, 11
You made regexes                        crazier?$#@!?Friday, July 29, 11
smartmatch isn’t                      named correctly...Friday, July 29, 11
...can we rename it to                       psychoticmatch?Friday, July 29, 11
The futureFriday, July 29, 11
I’ve been accused of                      lacking a vision for PerlFriday, July 29, 11
What I lack is a                      flame-proof suit.Friday, July 29, 11
If I’d talked about my                       vision 2 years ago...Friday, July 29, 11
You would have                       laughed at meFriday, July 29, 11
...now that we can do                           do releases...Friday, July 29, 11
A VisionFriday, July 29, 11
New versions of Perl                      shouldn’t break your                        existing softwareFriday, July 29, 11
Old syntax and                      semantics can’t stop                      Perl 5 from evolvingFriday, July 29, 11
We need to be able to                          make mistakes                       as we rebuild Perl 5Friday, July 29, 11
We will                         make mistakes                      as we rebuild Perl 5Friday, July 29, 11
*coughsmartmatchcough*Friday, July 29, 11
We have                         made mistakes                      as we’ve rebuilt PerlFriday, July 29, 11
We need to be able to                      recover from mistakes                        as we rebuild PerlFriday, July 29,...
The runtime footprint                      is too big and must be                           slimmed downFriday, July 29, 11
Perl should have                      sane defaultsFriday, July 29, 11
It should be possible                      to build more of Perl                             in PerlFriday, July 29, 11
Perl should run                      everywhereFriday, July 29, 11
Not just on every kind                           of hardwareFriday, July 29, 11
or every OSFriday, July 29, 11
Every VMFriday, July 29, 11
Every BrowserFriday, July 29, 11
Every PhoneFriday, July 29, 11
How do we get there?Friday, July 29, 11
New versions of Perl                        shouldn’t break                       existing softwareFriday, July 29, 11
Old syntax and semantics               must not stop Perl 5                   from evolvingFriday, July 29, 11
When your code runs,                       you have no idea                      what semantics it’ll seeFriday, July 29, 11
You need to jump                      through defensive                           hoops.Friday, July 29, 11
Lots of defensive hoopsFriday, July 29, 11
use v5.14;Friday, July 29, 11
“Can I have a Perl that’s                         5.14 or newer?”Friday, July 29, 11
“Anything newer than                      5.14.0 would be great!”Friday, July 29, 11
“Ok. I’m 5.30.                       Have fun!”Friday, July 29, 11
That’s not usefulFriday, July 29, 11
It needs to changeFriday, July 29, 11
Declare the version of                       Perl 5 you expectFriday, July 29, 11
use v5.16;Friday, July 29, 11
“I want a Perl that                       works like 5.16”Friday, July 29, 11
The runtime should                      honor that requestFriday, July 29, 11
Perl should give you                      semantics as close as                      possible to what you                 ...
New features                      should not work                      under ‘use v5.$older;’Friday, July 29, 11
It’s critical that we be                           able to evolveFriday, July 29, 11
We need an                      escape hatchFriday, July 29, 11
We don’t have oneFriday, July 29, 11
We need                      Rule 2Friday, July 29, 11
Changes to syntax or                        semantics break                         existing codeFriday, July 29, 11
Why?Friday, July 29, 11
They conflict with                       existing syntaxFriday, July 29, 11
They change the                      meaning of existing                          semanticsFriday, July 29, 11
They conflict with                       things users doFriday, July 29, 11
What do we do?Friday, July 29, 11
If you declare an old                       version, you get old                      syntax and semanticsFriday, July 29,...
...at least to the                      best of our abilitiesFriday, July 29, 11
Perfection isn’t possibleFriday, July 29, 11
We can get far closer                       than we do nowFriday, July 29, 11
Breaking existing code                      should be a last resortFriday, July 29, 11
We will break                   backward compatibility                  in limited circumstancesFriday, July 29, 11
Some craziness can’t be                       fixed in an “optional”                          or lexical wayFriday, July 29...
This is going to be                        hard workFriday, July 29, 11
A lot of hard workFriday, July 29, 11
It’s not impossibleFriday, July 29, 11
I have proofFriday, July 29, 11
DeprecationFriday, July 29, 11
Our current                      deprecation cycle                         is 1 yearFriday, July 29, 11
“It warns in 5.16.0”Friday, July 29, 11
“It’s gone in 5.18.0”Friday, July 29, 11
That’s turning out                       to be too shortFriday, July 29, 11
Very few operating                      systems release that                           frequentlyFriday, July 29, 11
“Declare by default”                       means we can make                      some changes soonerFriday, July 29, 11
If it still works in old             code, we can change it            with no deprecation cycleFriday, July 29, 11
Some old misfeatures                      need to come out lest                       they block significant               ...
If we can’t emulate the                         old feature for old                      code, we need a longer           ...
“It dies in code that                      declares ‘use v5.16’”Friday, July 29, 11
“It warns in older                        code on 5.16.0”Friday, July 29, 11
“It still warns in old                         code on 5.18.0”Friday, July 29, 11
“It’s gone in 5.20.0”Friday, July 29, 11
Old ModulesFriday, July 29, 11
We haven’t just been                      deprecating and yanking                        broken old featuresFriday, July 2...
We’ve been doing the                      same to old modulesFriday, July 29, 11
They all end up                        on CPANFriday, July 29, 11
This has started to hurt                 users who wrote code                with “no non-core deps”Friday, July 29, 11
We need to make it                      easier to ship two                       flavors of Perl 5Friday, July 29, 11
Hotel CaliforniaFriday, July 29, 11
aka Traditional PerlFriday, July 29, 11
The Times,They                      Are A-Changin’Friday, July 29, 11
aka Bootstrappable PerlFriday, July 29, 11
There’s work going on                       to make this easierFriday, July 29, 11
Cleaning up                      the languageFriday, July 29, 11
The runtime footprint                      is too big and must be                           slimmed downFriday, July 29, 11
One of the points of                        doing this is to                       clean up the coreFriday, July 29, 11
How does this                      clean up the core?Friday, July 29, 11
Perl is a big languageFriday, July 29, 11
There are bigger                         languagesFriday, July 29, 11
Its harder to manage                           a big languageFriday, July 29, 11
It’s harder to learn                          a big languageFriday, July 29, 11
It’s harder to fix bugs in                            a big languageFriday, July 29, 11
We’re ok, but not                      amazing at core                       language devFriday, July 29, 11
As a community, we’re                      awesome at modulesFriday, July 29, 11
How do we make Perl                       a smaller language?Friday, July 29, 11
It’s possible to load                      modules that inject                           new builtinsFriday, July 29, 11
It’s possible to load                      modules that inject                            old builtinsFriday, July 29, 11
Time to start...Friday, July 29, 11
...refactoringFriday, July 29, 11
Lots of stuff in perl isnt                         necessarily part of                        Perl 5 the LanguageFriday, J...
This stuff is part of                      Perl 5 the chainsawFriday, July 29, 11
I like our chainsawFriday, July 29, 11
I’m not talking about                       deprecating this stuffFriday, July 29, 11
...just about                      decoupling itFriday, July 29, 11
SysV IPC functionsFriday, July 29, 11
Socket IO functionsFriday, July 29, 11
Unix user & group                      information functionsFriday, July 29, 11
Unix network                      information functionsFriday, July 29, 11
Process and process                        group functionsFriday, July 29, 11
FormatsFriday, July 29, 11
smartmatchFriday, July 29, 11
...and probably a bunch                            of other stuffFriday, July 29, 11
That bit about “forcing                      a version declaration”Friday, July 29, 11
If you don’t, you’ll get                      whatever was in 5.14.Friday, July 29, 11
The implementation of                  SysV might be a moduleFriday, July 29, 11
As a developer writing                          code in Perl 5,                      you won’t need to careFriday, July 29...
..and shouldn’t                       be able to tellFriday, July 29, 11
In the future we might                      fix a bug or two in the                         modularized codeFriday, July 29...
You could take the                      update without having                      to upgrade all of Perl 5Friday, July 29...
Someday we might                      remove things from the                         default runtimeFriday, July 29, 11
Every feature we                      externalize reclaims                       precious memoryFriday, July 29, 11
Every feature we                      externalize reclaims                        precious sanityFriday, July 29, 11
That just means you’ll                       need to declare you                      want an older featureFriday, July 29...
...but only if you ask for                                v5.16Friday, July 29, 11
...but only if you ask for                                v5.18Friday, July 29, 11
...but only if you ask for                                v5.20Friday, July 29, 11
Existing code                       won’t breakFriday, July 29, 11
There are many, many                      unanswered questionsFriday, July 29, 11
But it’s doableFriday, July 29, 11
I have proof!Friday, July 29, 11
Case study:                      SmartmatchFriday, July 29, 11
After YAPC::NA rjbs                      (and others) raised the                        issue of smartmatchFriday, July 29...
Perl has a history of                       theft from other                            languagesFriday, July 29, 11
Perl has a history of                      borrowing from other                             languagesFriday, July 29, 11
We stole                      smartmatch                      from Perl 6Friday, July 29, 11
It’s very cleverFriday, July 29, 11
It’s nearly                      impossible                       to explainFriday, July 29, 11
It’s nearly                        impossible                      to understandFriday, July 29, 11
RJBS (the previous                       speaker) proposed a                      saner, much less clever,                ...
I don’t want to break                      existing code that uses                            smartmatchFriday, July 29, 11
Jesse Luehrs (DOY)                      was sitting in the back                         of my YAPC talkFriday, July 29, 11
He...Friday, July 29, 11
...threw himself                      at the problemFriday, July 29, 11
He extracted                      smartmatch into                       an XS moduleFriday, July 29, 11
He reimplemented it                      entirely in pure perlFriday, July 29, 11
It’s slower, but it’s                      understandable and                             hackableFriday, July 29, 11
He implemented                      Ricardo’s saner smart                      match as an alternativeFriday, July 29, 11
I’m hoping that 5.16                          ships DOY’s                          smartmatch                        imple...
use v5.16; should load                        the new one in your                               scopeFriday, July 29, 11
use v5.14; should load                        the old one in your                               scopeFriday, July 29, 11
no “use v5.x;” line                      should load the old one                          in your scope.Friday, July 29, 11
We need a module                      hierarchy for such                        things in coreFriday, July 29, 11
The Test SuiteFriday, July 29, 11
(Keeping us honest)Friday, July 29, 11
We have an                      amazing                       test suiteFriday, July 29, 11
Over time, we need to                       tease apart (at least)                          3 kinds of testsFriday, July 2...
Language testsFriday, July 29, 11
Bug-fix testsFriday, July 29, 11
Implementation testsFriday, July 29, 11
To hold us to the                      compatibility promises                       we make, we need a                    ...
“Run the test suites we                       shipped with previous                            releases...”Friday, July 29...
...all of emFriday, July 29, 11
Weve been moving                          pretty fastFriday, July 29, 11
We’ve done some                          things I...Friday, July 29, 11
...wouldn’t do againFriday, July 29, 11
I’m going to be a lot                      more skeptical about                          new featuresFriday, July 29, 11
...at least ones that                      don’t make it easier to                       have fewer featuresFriday, July 2...
We should have sane                           defaultsFriday, July 29, 11
There’s lots of crazy                            in Perl 5Friday, July 29, 11
Syntactic CrazyFriday, July 29, 11
Semantic CrazyFriday, July 29, 11
Internal CrazyFriday, July 29, 11
Module CrazyFriday, July 29, 11
It may be time to                      consider doing away                       with some of thatFriday, July 29, 11
But ONLY if you                      declare “use v5.16”Friday, July 29, 11
But ONLY if you                      declare “use v5.18”Friday, July 29, 11
But ONLY if you                      declare “use v5.20”Friday, July 29, 11
We’ve started down                           this roadFriday, July 29, 11
“use v5.12” includes                          “use strict;”Friday, July 29, 11
Where do we go next?Friday, July 29, 11
warnings on by defaultFriday, July 29, 11
autodie-esque defaultsFriday, July 29, 11
autodie does good for                            your codeFriday, July 29, 11
using deep, scary evilFriday, July 29, 11
I will not show                        you the evilFriday, July 29, 11
Ask Paul FenwickFriday, July 29, 11
The guy with the                           accentFriday, July 29, 11
In the hatFriday, July 29, 11
We should throw                      exceptions rather than                       just return on failureFriday, July 29, 11
I don’t want us to                      bikeshed an exception                            hierarchyFriday, July 29, 11
Heck, I’d be happy if we                      started with dying with                        well-defined stringsFriday, Ju...
(I’d love an exception hierarchy)Friday, July 29, 11
2-arg open()                      gone by defaultFriday, July 29, 11
1-arg open()                      gone by default?Friday, July 29, 11
Latin-1 autopromote                          off by defaultFriday, July 29, 11
utf-8 everything                         by defaultFriday, July 29, 11
A clean, simple                      meta-model with basic                       classes and methodsFriday, July 29, 11
No indirect object syntax                             by defaultFriday, July 29, 11
But only if you declare                           “use v5.16”Friday, July 29, 11
But only if you declare                           “use v5.18”Friday, July 29, 11
But only if you declare                           “use v5.20”Friday, July 29, 11
So, Why?Friday, July 29, 11
Perl needs to be                      cleaner, simpler and                      easier to work withFriday, July 29, 11
For users...Friday, July 29, 11
...and for implementersFriday, July 29, 11
Perl should run                      everywhereFriday, July 29, 11
Why isn’t Perl 5 on                       other Runtimes?Friday, July 29, 11
“There’s no spec”Friday, July 29, 11
That didn’t stop RubyFriday, July 29, 11
“Only Perl 5 can                        parse Perl 5”Friday, July 29, 11
That didnt stop PPIFriday, July 29, 11
To survive, a desperate                      hacker needs to be able                       to reimplement Perl 5Friday, Ju...
Thanks!Friday, July 29, 11
How do we make this                        happen faster?Friday, July 29, 11
Perl 5 Maint FundFriday, July 29, 11
perlfoundation.orgFriday, July 29, 11
Questions/Tomatoes?                      http://blog.fsck.com                      jesse@perl.org                      @ob...
About the nameFriday, July 29, 11
Our language is called                             Perl 5Friday, July 29, 11
Perl 6 is our                       precocious                        kid sisterFriday, July 29, 11
I’m happy to talk about                         renaming Perl 5...Friday, July 29, 11
...if you write me a                second implementation               that passes the test suiteFriday, July 29, 11
Upcoming SlideShare
Loading in...5
×

OSCON 2011 - Perl 5.16 and beyond

10,013

Published on

Published in: Technology
3 Comments
12 Likes
Statistics
Notes
  • Got a good overview of what should be expected of future releases.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Very exciting stuff. This presentation motivated me to donate to the Perl Foundation for the first time.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • very good overview about the recent politics in perl
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
10,013
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
87
Comments
3
Likes
12
Embeds 0
No embeds

No notes for slide

OSCON 2011 - Perl 5.16 and beyond

  1. 1. Perl 5.16 and BeyondFriday, July 29, 11
  2. 2. Jesse VincentFriday, July 29, 11
  3. 3. PumpkingFriday, July 29, 11
  4. 4. Former Perl 6 Project ManagerFriday, July 29, 11
  5. 5. Whats a Pumpking?Friday, July 29, 11
  6. 6. BDFLFriday, July 29, 11
  7. 7. BDFLFriday, July 29, 11
  8. 8. BDFLFriday, July 29, 11
  9. 9. I make decisionsFriday, July 29, 11
  10. 10. I’m a managerFriday, July 29, 11
  11. 11. I don’t do “real work”Friday, July 29, 11
  12. 12. So, who makes Perl?Friday, July 29, 11
  13. 13. Many awesome peopleFriday, July 29, 11
  14. 14. I just stand around looking pretty...Friday, July 29, 11
  15. 15. ...while other people do awesome stuffFriday, July 29, 11
  16. 16. Is your name in Perl’s AUTHORS file?Friday, July 29, 11
  17. 17. Are you a CPAN author?Friday, July 29, 11
  18. 18. You rockFriday, July 29, 11
  19. 19. You make PerlFriday, July 29, 11
  20. 20. The Release ProcessFriday, July 29, 11
  21. 21. Releases in the last 12-or-so months:Friday, July 29, 11
  22. 22. 5.12.2Friday, July 29, 11
  23. 23. 5.12.3Friday, July 29, 11
  24. 24. 5.12.4Friday, July 29, 11
  25. 25. 5.13.2Friday, July 29, 11
  26. 26. 5.13.3Friday, July 29, 11
  27. 27. 5.13.4Friday, July 29, 11
  28. 28. 5.13.5Friday, July 29, 11
  29. 29. 5.13.6Friday, July 29, 11
  30. 30. 5.13.7Friday, July 29, 11
  31. 31. 5.13.8Friday, July 29, 11
  32. 32. 5.13.9Friday, July 29, 11
  33. 33. 5.13.10Friday, July 29, 11
  34. 34. 5.13.11Friday, July 29, 11
  35. 35. 5.14.0Friday, July 29, 11
  36. 36. 5.14.1Friday, July 29, 11
  37. 37. 5.15.0Friday, July 29, 11
  38. 38. 5.15.1Friday, July 29, 11
  39. 39. Perl 5.14.1 is the current release of Perl 5Friday, July 29, 11
  40. 40. It came out 6ish weeks agoFriday, July 29, 11
  41. 41. As did Perl 5.12.4Friday, July 29, 11
  42. 42. As did Perl 5.15.0Friday, July 29, 11
  43. 43. It used to take us 3 weeks to prepare a releaseFriday, July 29, 11
  44. 44. And we made the Pumpking do itFriday, July 29, 11
  45. 45. Now it takes less than a dayFriday, July 29, 11
  46. 46. The 43 step process is documentedFriday, July 29, 11
  47. 47. Releases are still a chore if you do them every monthFriday, July 29, 11
  48. 48. Now we have rotating release engineersFriday, July 29, 11
  49. 49. Most of them are new committersFriday, July 29, 11
  50. 50. Nice side effect: release engineers need commit bitsFriday, July 29, 11
  51. 51. Since the move to git, we’ve nearly doubled our committer listFriday, July 29, 11
  52. 52. The world hasn’t endedFriday, July 29, 11
  53. 53. Some of those release engineers have become prolific contributorsFriday, July 29, 11
  54. 54. I just make decisionsFriday, July 29, 11
  55. 55. I try to get them rightFriday, July 29, 11
  56. 56. Sometimes they’re wrongFriday, July 29, 11
  57. 57. I have a little bit of coverFriday, July 29, 11
  58. 58. Rule 1Friday, July 29, 11
  59. 59. Larry is always rightFriday, July 29, 11
  60. 60. Rule 2Friday, July 29, 11
  61. 61. Larry is allowed to change his mindFriday, July 29, 11
  62. 62. I’m not LarryFriday, July 29, 11
  63. 63. I’m nowhere near as cleverFriday, July 29, 11
  64. 64. My shirts are nowhere near as loudFriday, July 29, 11
  65. 65. At YAPC::NA, Larry said that the time of hero-pumpkings is overFriday, July 29, 11
  66. 66. DFriday, July 29, 11
  67. 67. DictatorFriday, July 29, 11
  68. 68. DelegatorFriday, July 29, 11
  69. 69. DocumenterFriday, July 29, 11
  70. 70. Thankfully, Larry’s rules set me up to succeedFriday, July 29, 11
  71. 71. Rule 1 definitely doesn’t apply to the Perl 5 runtimeFriday, July 29, 11
  72. 72. HoweverFriday, July 29, 11
  73. 73. The core needs more support for Rule 2Friday, July 29, 11
  74. 74. I haven’t heard this in a while:Friday, July 29, 11
  75. 75. Perl is Dead!Friday, July 29, 11
  76. 76. What I’ve been hearing lately:Friday, July 29, 11
  77. 77. Where are we going?Friday, July 29, 11
  78. 78. It’s changing too fast. Can you slow down?Friday, July 29, 11
  79. 79. You made regexes crazier?$#@!?Friday, July 29, 11
  80. 80. smartmatch isn’t named correctly...Friday, July 29, 11
  81. 81. ...can we rename it to psychoticmatch?Friday, July 29, 11
  82. 82. The futureFriday, July 29, 11
  83. 83. I’ve been accused of lacking a vision for PerlFriday, July 29, 11
  84. 84. What I lack is a flame-proof suit.Friday, July 29, 11
  85. 85. If I’d talked about my vision 2 years ago...Friday, July 29, 11
  86. 86. You would have laughed at meFriday, July 29, 11
  87. 87. ...now that we can do do releases...Friday, July 29, 11
  88. 88. A VisionFriday, July 29, 11
  89. 89. New versions of Perl shouldn’t break your existing softwareFriday, July 29, 11
  90. 90. Old syntax and semantics can’t stop Perl 5 from evolvingFriday, July 29, 11
  91. 91. We need to be able to make mistakes as we rebuild Perl 5Friday, July 29, 11
  92. 92. We will make mistakes as we rebuild Perl 5Friday, July 29, 11
  93. 93. *coughsmartmatchcough*Friday, July 29, 11
  94. 94. We have made mistakes as we’ve rebuilt PerlFriday, July 29, 11
  95. 95. We need to be able to recover from mistakes as we rebuild PerlFriday, July 29, 11
  96. 96. The runtime footprint is too big and must be slimmed downFriday, July 29, 11
  97. 97. Perl should have sane defaultsFriday, July 29, 11
  98. 98. It should be possible to build more of Perl in PerlFriday, July 29, 11
  99. 99. Perl should run everywhereFriday, July 29, 11
  100. 100. Not just on every kind of hardwareFriday, July 29, 11
  101. 101. or every OSFriday, July 29, 11
  102. 102. Every VMFriday, July 29, 11
  103. 103. Every BrowserFriday, July 29, 11
  104. 104. Every PhoneFriday, July 29, 11
  105. 105. How do we get there?Friday, July 29, 11
  106. 106. New versions of Perl shouldn’t break existing softwareFriday, July 29, 11
  107. 107. Old syntax and semantics must not stop Perl 5 from evolvingFriday, July 29, 11
  108. 108. When your code runs, you have no idea what semantics it’ll seeFriday, July 29, 11
  109. 109. You need to jump through defensive hoops.Friday, July 29, 11
  110. 110. Lots of defensive hoopsFriday, July 29, 11
  111. 111. use v5.14;Friday, July 29, 11
  112. 112. “Can I have a Perl that’s 5.14 or newer?”Friday, July 29, 11
  113. 113. “Anything newer than 5.14.0 would be great!”Friday, July 29, 11
  114. 114. “Ok. I’m 5.30. Have fun!”Friday, July 29, 11
  115. 115. That’s not usefulFriday, July 29, 11
  116. 116. It needs to changeFriday, July 29, 11
  117. 117. Declare the version of Perl 5 you expectFriday, July 29, 11
  118. 118. use v5.16;Friday, July 29, 11
  119. 119. “I want a Perl that works like 5.16”Friday, July 29, 11
  120. 120. The runtime should honor that requestFriday, July 29, 11
  121. 121. Perl should give you semantics as close as possible to what you requestFriday, July 29, 11
  122. 122. New features should not work under ‘use v5.$older;’Friday, July 29, 11
  123. 123. It’s critical that we be able to evolveFriday, July 29, 11
  124. 124. We need an escape hatchFriday, July 29, 11
  125. 125. We don’t have oneFriday, July 29, 11
  126. 126. We need Rule 2Friday, July 29, 11
  127. 127. Changes to syntax or semantics break existing codeFriday, July 29, 11
  128. 128. Why?Friday, July 29, 11
  129. 129. They conflict with existing syntaxFriday, July 29, 11
  130. 130. They change the meaning of existing semanticsFriday, July 29, 11
  131. 131. They conflict with things users doFriday, July 29, 11
  132. 132. What do we do?Friday, July 29, 11
  133. 133. If you declare an old version, you get old syntax and semanticsFriday, July 29, 11
  134. 134. ...at least to the best of our abilitiesFriday, July 29, 11
  135. 135. Perfection isn’t possibleFriday, July 29, 11
  136. 136. We can get far closer than we do nowFriday, July 29, 11
  137. 137. Breaking existing code should be a last resortFriday, July 29, 11
  138. 138. We will break backward compatibility in limited circumstancesFriday, July 29, 11
  139. 139. Some craziness can’t be fixed in an “optional” or lexical wayFriday, July 29, 11
  140. 140. This is going to be hard workFriday, July 29, 11
  141. 141. A lot of hard workFriday, July 29, 11
  142. 142. It’s not impossibleFriday, July 29, 11
  143. 143. I have proofFriday, July 29, 11
  144. 144. DeprecationFriday, July 29, 11
  145. 145. Our current deprecation cycle is 1 yearFriday, July 29, 11
  146. 146. “It warns in 5.16.0”Friday, July 29, 11
  147. 147. “It’s gone in 5.18.0”Friday, July 29, 11
  148. 148. That’s turning out to be too shortFriday, July 29, 11
  149. 149. Very few operating systems release that frequentlyFriday, July 29, 11
  150. 150. “Declare by default” means we can make some changes soonerFriday, July 29, 11
  151. 151. If it still works in old code, we can change it with no deprecation cycleFriday, July 29, 11
  152. 152. Some old misfeatures need to come out lest they block significant improvementsFriday, July 29, 11
  153. 153. If we can’t emulate the old feature for old code, we need a longer deprecation cycleFriday, July 29, 11
  154. 154. “It dies in code that declares ‘use v5.16’”Friday, July 29, 11
  155. 155. “It warns in older code on 5.16.0”Friday, July 29, 11
  156. 156. “It still warns in old code on 5.18.0”Friday, July 29, 11
  157. 157. “It’s gone in 5.20.0”Friday, July 29, 11
  158. 158. Old ModulesFriday, July 29, 11
  159. 159. We haven’t just been deprecating and yanking broken old featuresFriday, July 29, 11
  160. 160. We’ve been doing the same to old modulesFriday, July 29, 11
  161. 161. They all end up on CPANFriday, July 29, 11
  162. 162. This has started to hurt users who wrote code with “no non-core deps”Friday, July 29, 11
  163. 163. We need to make it easier to ship two flavors of Perl 5Friday, July 29, 11
  164. 164. Hotel CaliforniaFriday, July 29, 11
  165. 165. aka Traditional PerlFriday, July 29, 11
  166. 166. The Times,They Are A-Changin’Friday, July 29, 11
  167. 167. aka Bootstrappable PerlFriday, July 29, 11
  168. 168. There’s work going on to make this easierFriday, July 29, 11
  169. 169. Cleaning up the languageFriday, July 29, 11
  170. 170. The runtime footprint is too big and must be slimmed downFriday, July 29, 11
  171. 171. One of the points of doing this is to clean up the coreFriday, July 29, 11
  172. 172. How does this clean up the core?Friday, July 29, 11
  173. 173. Perl is a big languageFriday, July 29, 11
  174. 174. There are bigger languagesFriday, July 29, 11
  175. 175. Its harder to manage a big languageFriday, July 29, 11
  176. 176. It’s harder to learn a big languageFriday, July 29, 11
  177. 177. It’s harder to fix bugs in a big languageFriday, July 29, 11
  178. 178. We’re ok, but not amazing at core language devFriday, July 29, 11
  179. 179. As a community, we’re awesome at modulesFriday, July 29, 11
  180. 180. How do we make Perl a smaller language?Friday, July 29, 11
  181. 181. It’s possible to load modules that inject new builtinsFriday, July 29, 11
  182. 182. It’s possible to load modules that inject old builtinsFriday, July 29, 11
  183. 183. Time to start...Friday, July 29, 11
  184. 184. ...refactoringFriday, July 29, 11
  185. 185. Lots of stuff in perl isnt necessarily part of Perl 5 the LanguageFriday, July 29, 11
  186. 186. This stuff is part of Perl 5 the chainsawFriday, July 29, 11
  187. 187. I like our chainsawFriday, July 29, 11
  188. 188. I’m not talking about deprecating this stuffFriday, July 29, 11
  189. 189. ...just about decoupling itFriday, July 29, 11
  190. 190. SysV IPC functionsFriday, July 29, 11
  191. 191. Socket IO functionsFriday, July 29, 11
  192. 192. Unix user & group information functionsFriday, July 29, 11
  193. 193. Unix network information functionsFriday, July 29, 11
  194. 194. Process and process group functionsFriday, July 29, 11
  195. 195. FormatsFriday, July 29, 11
  196. 196. smartmatchFriday, July 29, 11
  197. 197. ...and probably a bunch of other stuffFriday, July 29, 11
  198. 198. That bit about “forcing a version declaration”Friday, July 29, 11
  199. 199. If you don’t, you’ll get whatever was in 5.14.Friday, July 29, 11
  200. 200. The implementation of SysV might be a moduleFriday, July 29, 11
  201. 201. As a developer writing code in Perl 5, you won’t need to careFriday, July 29, 11
  202. 202. ..and shouldn’t be able to tellFriday, July 29, 11
  203. 203. In the future we might fix a bug or two in the modularized codeFriday, July 29, 11
  204. 204. You could take the update without having to upgrade all of Perl 5Friday, July 29, 11
  205. 205. Someday we might remove things from the default runtimeFriday, July 29, 11
  206. 206. Every feature we externalize reclaims precious memoryFriday, July 29, 11
  207. 207. Every feature we externalize reclaims precious sanityFriday, July 29, 11
  208. 208. That just means you’ll need to declare you want an older featureFriday, July 29, 11
  209. 209. ...but only if you ask for v5.16Friday, July 29, 11
  210. 210. ...but only if you ask for v5.18Friday, July 29, 11
  211. 211. ...but only if you ask for v5.20Friday, July 29, 11
  212. 212. Existing code won’t breakFriday, July 29, 11
  213. 213. There are many, many unanswered questionsFriday, July 29, 11
  214. 214. But it’s doableFriday, July 29, 11
  215. 215. I have proof!Friday, July 29, 11
  216. 216. Case study: SmartmatchFriday, July 29, 11
  217. 217. After YAPC::NA rjbs (and others) raised the issue of smartmatchFriday, July 29, 11
  218. 218. Perl has a history of theft from other languagesFriday, July 29, 11
  219. 219. Perl has a history of borrowing from other languagesFriday, July 29, 11
  220. 220. We stole smartmatch from Perl 6Friday, July 29, 11
  221. 221. It’s very cleverFriday, July 29, 11
  222. 222. It’s nearly impossible to explainFriday, July 29, 11
  223. 223. It’s nearly impossible to understandFriday, July 29, 11
  224. 224. RJBS (the previous speaker) proposed a saner, much less clever, smart matchFriday, July 29, 11
  225. 225. I don’t want to break existing code that uses smartmatchFriday, July 29, 11
  226. 226. Jesse Luehrs (DOY) was sitting in the back of my YAPC talkFriday, July 29, 11
  227. 227. He...Friday, July 29, 11
  228. 228. ...threw himself at the problemFriday, July 29, 11
  229. 229. He extracted smartmatch into an XS moduleFriday, July 29, 11
  230. 230. He reimplemented it entirely in pure perlFriday, July 29, 11
  231. 231. It’s slower, but it’s understandable and hackableFriday, July 29, 11
  232. 232. He implemented Ricardo’s saner smart match as an alternativeFriday, July 29, 11
  233. 233. I’m hoping that 5.16 ships DOY’s smartmatch implementationsFriday, July 29, 11
  234. 234. use v5.16; should load the new one in your scopeFriday, July 29, 11
  235. 235. use v5.14; should load the old one in your scopeFriday, July 29, 11
  236. 236. no “use v5.x;” line should load the old one in your scope.Friday, July 29, 11
  237. 237. We need a module hierarchy for such things in coreFriday, July 29, 11
  238. 238. The Test SuiteFriday, July 29, 11
  239. 239. (Keeping us honest)Friday, July 29, 11
  240. 240. We have an amazing test suiteFriday, July 29, 11
  241. 241. Over time, we need to tease apart (at least) 3 kinds of testsFriday, July 29, 11
  242. 242. Language testsFriday, July 29, 11
  243. 243. Bug-fix testsFriday, July 29, 11
  244. 244. Implementation testsFriday, July 29, 11
  245. 245. To hold us to the compatibility promises we make, we need a new test harnessFriday, July 29, 11
  246. 246. “Run the test suites we shipped with previous releases...”Friday, July 29, 11
  247. 247. ...all of emFriday, July 29, 11
  248. 248. Weve been moving pretty fastFriday, July 29, 11
  249. 249. We’ve done some things I...Friday, July 29, 11
  250. 250. ...wouldn’t do againFriday, July 29, 11
  251. 251. I’m going to be a lot more skeptical about new featuresFriday, July 29, 11
  252. 252. ...at least ones that don’t make it easier to have fewer featuresFriday, July 29, 11
  253. 253. We should have sane defaultsFriday, July 29, 11
  254. 254. There’s lots of crazy in Perl 5Friday, July 29, 11
  255. 255. Syntactic CrazyFriday, July 29, 11
  256. 256. Semantic CrazyFriday, July 29, 11
  257. 257. Internal CrazyFriday, July 29, 11
  258. 258. Module CrazyFriday, July 29, 11
  259. 259. It may be time to consider doing away with some of thatFriday, July 29, 11
  260. 260. But ONLY if you declare “use v5.16”Friday, July 29, 11
  261. 261. But ONLY if you declare “use v5.18”Friday, July 29, 11
  262. 262. But ONLY if you declare “use v5.20”Friday, July 29, 11
  263. 263. We’ve started down this roadFriday, July 29, 11
  264. 264. “use v5.12” includes “use strict;”Friday, July 29, 11
  265. 265. Where do we go next?Friday, July 29, 11
  266. 266. warnings on by defaultFriday, July 29, 11
  267. 267. autodie-esque defaultsFriday, July 29, 11
  268. 268. autodie does good for your codeFriday, July 29, 11
  269. 269. using deep, scary evilFriday, July 29, 11
  270. 270. I will not show you the evilFriday, July 29, 11
  271. 271. Ask Paul FenwickFriday, July 29, 11
  272. 272. The guy with the accentFriday, July 29, 11
  273. 273. In the hatFriday, July 29, 11
  274. 274. We should throw exceptions rather than just return on failureFriday, July 29, 11
  275. 275. I don’t want us to bikeshed an exception hierarchyFriday, July 29, 11
  276. 276. Heck, I’d be happy if we started with dying with well-defined stringsFriday, July 29, 11
  277. 277. (I’d love an exception hierarchy)Friday, July 29, 11
  278. 278. 2-arg open() gone by defaultFriday, July 29, 11
  279. 279. 1-arg open() gone by default?Friday, July 29, 11
  280. 280. Latin-1 autopromote off by defaultFriday, July 29, 11
  281. 281. utf-8 everything by defaultFriday, July 29, 11
  282. 282. A clean, simple meta-model with basic classes and methodsFriday, July 29, 11
  283. 283. No indirect object syntax by defaultFriday, July 29, 11
  284. 284. But only if you declare “use v5.16”Friday, July 29, 11
  285. 285. But only if you declare “use v5.18”Friday, July 29, 11
  286. 286. But only if you declare “use v5.20”Friday, July 29, 11
  287. 287. So, Why?Friday, July 29, 11
  288. 288. Perl needs to be cleaner, simpler and easier to work withFriday, July 29, 11
  289. 289. For users...Friday, July 29, 11
  290. 290. ...and for implementersFriday, July 29, 11
  291. 291. Perl should run everywhereFriday, July 29, 11
  292. 292. Why isn’t Perl 5 on other Runtimes?Friday, July 29, 11
  293. 293. “There’s no spec”Friday, July 29, 11
  294. 294. That didn’t stop RubyFriday, July 29, 11
  295. 295. “Only Perl 5 can parse Perl 5”Friday, July 29, 11
  296. 296. That didnt stop PPIFriday, July 29, 11
  297. 297. To survive, a desperate hacker needs to be able to reimplement Perl 5Friday, July 29, 11
  298. 298. Thanks!Friday, July 29, 11
  299. 299. How do we make this happen faster?Friday, July 29, 11
  300. 300. Perl 5 Maint FundFriday, July 29, 11
  301. 301. perlfoundation.orgFriday, July 29, 11
  302. 302. Questions/Tomatoes? http://blog.fsck.com jesse@perl.org @obraFriday, July 29, 11
  303. 303. About the nameFriday, July 29, 11
  304. 304. Our language is called Perl 5Friday, July 29, 11
  305. 305. Perl 6 is our precocious kid sisterFriday, July 29, 11
  306. 306. I’m happy to talk about renaming Perl 5...Friday, July 29, 11
  307. 307. ...if you write me a second implementation that passes the test suiteFriday, July 29, 11
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×