OSCON 2011 - Perl 5.16 and beyond
Upcoming SlideShare
Loading in...5
×
 

OSCON 2011 - Perl 5.16 and beyond

on

  • 9,682 views

 

Statistics

Views

Total Views
9,682
Slideshare-icon Views on SlideShare
9,635
Embed Views
47

Actions

Likes
12
Downloads
86
Comments
3

7 Embeds 47

http://www.redditmedia.com 17
http://twitter.com 10
http://lanyrd.com 10
https://twitter.com 5
http://djibril.developpez.com 2
http://www.linkedin.com 2
http://paper.li 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

13 of 3 Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Got a good overview of what should be expected of future releases.
    Are you sure you want to
    Your message goes here
    Processing…
  • Very exciting stuff. This presentation motivated me to donate to the Perl Foundation for the first time.
    Are you sure you want to
    Your message goes here
    Processing…
  • very good overview about the recent politics in perl
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    OSCON 2011 - Perl 5.16 and beyond OSCON 2011 - Perl 5.16 and beyond Presentation Transcript

    • 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, 11
    • The world hasn’t endedFriday, July 29, 11
    • Some of those release engineers have become prolific contributorsFriday, July 29, 11
    • 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, 11
    • 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, 11
    • 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 requestFriday, July 29, 11
    • 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, 11
    • ...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, 11
    • 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 improvementsFriday, July 29, 11
    • If we can’t emulate the old feature for old code, we need a longer deprecation cycleFriday, July 29, 11
    • “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 29, 11
    • 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, July 29, 11
    • 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, 11
    • ..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, 11
    • You could take the update without having to upgrade all of Perl 5Friday, July 29, 11
    • 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, 11
    • ...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, 11
    • 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, smart matchFriday, July 29, 11
    • 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 implementationsFriday, July 29, 11
    • 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 29, 11
    • 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 new test harnessFriday, July 29, 11
    • “Run the test suites we shipped with previous releases...”Friday, July 29, 11
    • ...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 29, 11
    • 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, July 29, 11
    • (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, July 29, 11
    • 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 @obraFriday, July 29, 11
    • 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