• Save
Perl 5.16 and beyond
Upcoming SlideShare
Loading in...5
×
 

Perl 5.16 and beyond

on

  • 10,205 views

My YAPC::Europe 2011 keynote about my vision for the future of Perl 5.

My YAPC::Europe 2011 keynote about my vision for the future of Perl 5.

Statistics

Views

Total Views
10,205
Views on SlideShare
7,344
Embed Views
2,861

Actions

Likes
14
Downloads
0
Comments
1

49 Embeds 2,861

http://www.readwriteweb.com 2160
http://readwrite.com 313
http://feeds2.feedburner.com 60
http://feeds.feedburner.com 39
https://twitter.com 39
http://feedproxy.google.com 38
http://m.readwriteweb.com 36
http://paper.li 28
http://a0.twimg.com 14
http://us-w1.rockmelt.com 13
http://www.hanrss.com 12
http://translate.googleusercontent.com 11
http://translate.googleusercontent.com 11
http://semanticweb.collected.info 10
http://www.sci-tech-watch.com 6
http://zizindrin.com 6
http://futureweb.collected.info 6
http://cloudcomputing.collected.info 5
http://webcache.googleusercontent.com 4
http://127.0.0.1:8795 4
http://digitalapprentices.collected.info 4
http://translate.google.com 3
http://seocollege.org 3
http://digitalscene.collected.info 3
http://www.thelinuxcrowd.com 3
http://www.linkedin.com 2
http://dedenf.collected.info 2
http://leapf.org 2
http://twitter.com 2
http://www.readingshq.com 2
http://tech.collected.info 2
http://snstouch.com 1
http://techapplicant.collected.info 1
http://spacelounge.collected.info 1
http://chat.usealice.org 1
http://www.twylah.com 1
http://clayschools.blackboard.com 1
http://websitestech.collected.info 1
http://trunk.ly 1
http://rss.qoli.de 1
http://www2.warwick.ac.uk 1
http://www.gotubo.com 1
http://filips.collected.info 1
http://alexanderchalkidis.com 1
http://techandstuff.collected.info 1
http://mobilemarketing.collected.info 1
http://aitao.collected.info 1
http://flavors.me 1
http://techbloggers.collected.info 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • Back when I was the p6pm, the logo looked like this.\n
  • These days, P6 has something more modern and reasonable for a logo\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • (I learned this trick from DHH)\n
  • \n
  • \n
  • \n
  • \n
  • ask for applause for the audience\n
  • \n
  • \n
  • \n
  • \n
  • But I suck at photoshop and couldn’t put his face on michael j fox’s body inside a delorean\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • This one is EASY\n
  • \n
  • \n
  • \n
  • \n
  • No, Perl 5 is not self-aware. That’s Perl 6\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Cue ghandi quote\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • This is the first time I’ve given a talk since I started pumpkinging where the # didn’t change.\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Side effect:\n\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • *coughsmartmatchcough*\n
  • \n
  • \n
  • \n
  • Sane defaults will evolve\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • this will contain only what we need to bootstrap the CPAN client.\n
  • \n
  • \n
  • Like our friends in the php community\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • ...but we didn’t manage to understand that without a typesystem, it kinda sucks\n
  • or perhaps I should say...\n
  • \n
  • \n
  • \n
  • \n
  • even though it can’t be doing possibly right\n
  • it was an early version of this talk\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • once we’ve done that, why don’t we....\n
  • \n
  • again, this slide was there before damian’s talk\n
  • \n
  • except where we can’t or it would be too insane\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Perl 5.16 and beyond Perl 5.16 and beyond Presentation Transcript

  • Perl 5.16 and beyondJesse Vincentjesse@perl.org@obra
  • Recovering Perl 6Project Manager
  • Recovering Perl 6Project Manager
  • Perl 5 Pumpking
  • Perl 5 Pumpking
  • Perl 5 Pumpking
  • Perl 5 Pumpking http://flic.kr/p/6StRmB
  • Perl 5 Pumpking
  • Whats a Pumpking?
  • BDFL
  • BDFL
  • BDFL
  • I make decisions
  • (the unpopular ones)
  • I delegate
  • (any real work)
  • I document
  • (process and policy)
  • I destress
  • (other people)
  • I’m a manager
  • So, who makes Perl?
  • Many awesome people
  • I just stand around looking pretty...
  • ...while other people do awesome stuff
  • Is your name in Perl’s AUTHORS file?
  • Are you aCPAN author?
  • You rock
  • You make Perl
  • The rules ofPerl Club
  • The REAL rules of Perl Club
  • commit e8cd7eae0498ecc1fd3801fe3160Author: Gurusamy Sarathy <gsar@cpan.org>Date: Sun Oct 10 23:48:07 1999 +0000add perlhack.pod from Nathan Torkington<gnat@frii.com>
  • That predates Damian’s talk
  • Yes, I know he’s capable of time travel
  • Rule 1
  • Larry is always right about howPerl should behave
  • Rule 2
  • Larry is allowed to change his mindabout any matter at a later date...
  • ...regardless of whether he previouslyinvoked Rule 1
  • I’m not Larry
  • I’m nowhere near as clever
  • My shirts arenowhere near as loud
  • My shirts arenowhere near as loud
  • The rules aren’tjust for Larry
  • The rules aren’tjust for the Pumpking
  • The rules also apply to the Perl 5 core.
  • What?
  • Rule 1
  • Perl is always right!
  • (TMTOWTDI)
  • Rule 2
  • The Perl 5 coreis allowed to...
  • change its mind?
  • Changing ourminds is easy
  • We are very good at it
  • Not flailing wildly whenwe do has been hard
  • ...and leads to problems
  • at least I haven’t heard this in a while...
  • Perl is Dead !
  • Perl is Dead !1!!
  • Perl is Dead !1!!one!
  • What I’ve beenhearing lately...
  • Where are we going?
  • It’s changing too fast.Can you slow down?
  • You made regexescrazier? /$#@!/l?
  • smartmatch isn’tnamed correctly...
  • we should call it psychoticmatch
  • Now that it’s undead,can we rename it?
  • I’ve been accused of lacking avision for Perl 5
  • What I lackis a flame-proof suit http://en.wikipedia.org/wiki/File:Dance_Dance_Immolation.jpg
  • What I lack pe rl5 -po rt e rsis a flame-proof suit http://en.wikipedia.org/wiki/File:Dance_Dance_Immolation.jpg
  • If I’d talked about myvision 2 years ago...
  • You would havelaughed at me
  • Improving Perl 5did not matter
  • We couldn’t evenput out a new release
  • In the past year...
  • Five StableReleases
  • A dozendevelopment releases
  • In metric, that’s1.2×10 1 releases
  • Perl 5.14.1 is thecurrent stablerelease of Perl 5
  • It came out in June
  • ...as did Perl 5.12.4
  • ..as did Perl 5.15.0
  • (all of them came out the same week)
  • It used to take us3 weeks to prepare a release
  • We made thePumpking do it
  • Now it takesless than a day
  • The 43 step process is documented
  • We have rotatingrelease engineers
  • Many of them arenew committers
  • Release engineersneed commit bits
  • Since the switch to git,we’ve nearly doubled our committer list
  • The worldhasn’t ended
  • Some of those releaseengineers have become prolific contributors
  • Now thatreleasesare easy...
  • A Vision for Perl 5
  • New versions of Perl 5should not breakyour existing software
  • Old syntax and semantics must not stopPerl 5 from evolving
  • We need to be able to make mistakes as we rebuild Perl 5
  • We will make mistakesas we rebuild Perl 5
  • We have made mistakesas we’ve rebuilt Perl 5
  • We need to be able torecover from mistakes as we rebuild Perl 5
  • The runtime istoo big and must be slimmed down
  • Perl should havesane defaults
  • We need to be able to recover from lastyear’s “sane defaults”
  • It should be possible to build more of Perl 5 in Perl 5
  • Perl should runeverywhere
  • Rule 2:Perl is allowed to change its mind
  • That’s already true
  • That hurts programs and programmers
  • When your code runs, you have no ideawhat semantics it’ll see
  • use v5.14;
  • “Can I have a Perl that’s 5.14 or newer?”
  • “Anything newer than 5.14.0 would be great!”
  • “Ok. I’m 5.30. Have fun!”
  • That is not useful
  • It needs to change
  • From now on, declare the version of Perl 5 you expect
  • use v5.16;
  • “I want a Perl 5 thatworks like 5.16”
  • The runtime shouldhonor that request
  • Perl should give yousemantics as close aspossible to what you request
  • New featuresshould not workunder ‘use v5.$older;’
  • It’s critical that we be able to evolve
  • We need anescape hatch
  • We needRule 2
  • If you declare an old version, you get old syntax and semantics
  • ...at least to thebest of our abilities
  • Perfection isnot possible
  • We can get far closer than we do now
  • Breaking existing code should be a last resort
  • In limitedcircumstances we will break backward compatibility
  • Some craziness can’t befixed in an “optional” or lexical way
  • This is going to be hard work
  • A lot of hard work
  • It’s not impossible
  • Deprecation
  • Our currentdeprecation cycle is 1 year
  • “It warns in 5.16.0”
  • “It’s gone in 5.18.0”
  • That’s turning outto be too short
  • Very few operatingsystems release that frequently
  • Declare by default means we can makesome changes sooner
  • If it still works in old code, we get to change it with nodeprecation cycle
  • Some misfeaturesneed to come outlest they block major improvements
  • If we can’t emulate an old feature for oldcode, we get a longer deprecation cycle
  • “It dies in code thatdeclares ‘use v5.16’”
  • “It warns in older code on 5.16.0”
  • “It still warns in old code on 5.18.0”
  • “It’s gone in 5.20.0”
  • Rule 2 andOld Modules
  • We haven’t just beendeprecating and yanking broken old features
  • We’ve been doing thesame to old modules
  • They all end up on CPAN
  • This hurts users who wrote code with“no non-core deps”
  • We need to make iteasier to ship two flavors of Perl 5
  • Hotel California
  • Last thing I remember, I wasRunning for the doorI had to find the passage backTo the place I was before’relax,’ said the night man,We are programmed to receive.You can checkout any time you like,But you can never leave!
  • aka Traditional Perl
  • The Times,TheyAre A-Changin’
  • The line it is drawnThe curse it is castThe slow one nowWill later be fastAs the present nowWill later be pastThe order is rapidly fadin’And the first one now will later be lastFor the times they are a-changin’
  • aka Bootstrappable Perl
  • There’s work going on to make this easier
  • Perl is a big language
  • There are bigger languages
  • Its harder to manage a big language
  • It’s harder to learn a big language
  • It’s harder to fix bugs in a big language
  • We’re ok, but notamazing at corelanguage dev
  • As a community, we’reawesome at modules
  • How do we make Perla smaller language?
  • It’s possible to loadmodules that inject new builtins
  • It’s possible to loadmodules that inject old builtins
  • Time to start...
  • ...refactoring
  • Lots of stuff in perl isnt necessarily part of Perl 5 the language
  • This stuff is part ofPerl 5 the chainsaw
  • I like our chainsaw
  • I’m not talking about deprecating this stuff
  • ...just aboutdecoupling it
  • SysV IPC functions
  • Socket IO functions
  • Unix user & groupinformation functions
  • Unix networkinformation functions
  • Process and process group functions
  • Formats
  • smartmatch
  • ...and probably a bunch of other stuff
  • If you don’t ‘use v5.16’,you’ll get whatever was in 5.14.
  • The implementation of SysV might be a module
  • As a Perl 5 user you won’t need to care
  • ..and shouldn’t be able to tell
  • In the future we mightfix a bug or two in the modularized code
  • You could take the update withouthaving to upgrade all of Perl 5
  • Someday we mightremove things from the default runtime
  • Every feature weexternalize reclaimsprecious memory
  • Every feature weexternalize reclaims precious sanity
  • That just means you’ll need to declare youwant an older feature
  • ...but only if you ask for v5.16
  • ...but only if you ask for v5.18
  • ...but only if you ask for v5.20
  • Existing codewon’t break
  • There are many, many unanswered questions
  • But it’s doable
  • I have proof!
  • Case study:Smartmatch
  • After YAPC::NA RJBS(and others) raised the issue of smartmatch
  • Perl has a history of borrowing from other languages
  • Perl has a history of thieving from other languages
  • We stolesmartmatchfrom Perl 6
  • It’s very clever
  • It’s very clever
  • It’s nearlyimpossible to explain
  • It’s nearlyimpossible tounderstand
  • RJBS proposed a saner, much less clever, smart match
  • I don’t want to breakexisting code that uses “smartmatch”
  • Jesse Luehrs (DOY)was sitting in the back of my YAPC talk
  • All guys namedJesse are crazy
  • He...
  • ...threw himself at the problem
  • He extractedsmartmatch into an XS module
  • He reimplemented itentirely in pure perl
  • It’s slower, but it’sunderstandable and hackable
  • He implementedRicardo’s saner smartmatch as an alternative
  • I’m hoping that 5.16 ships DOY’s smartmatchimplementations
  • use v5.16; shouldload the new one in your scope
  • use v5.14; should load the old one in your scope
  • no “use v5.x;” line should load the old one in your scope.
  • We need a modulehierarchy for such things in core
  • The Test Suite
  • (Keeping us honest)
  • We have anamazing test suite
  • Over time, we need to tease apart (at least) 3 kinds of tests
  • Language tests
  • Bug-fix tests
  • Implementation tests
  • To hold us to thecompatibility promises we make, we need a new test harness
  • “Run the test suites we shipped with allprevious releases...”
  • Weve been moving pretty fast
  • We’ve done some things I...
  • would notdo again
  • I’m going to be a lotmore skeptical about new features
  • ...at least ones thatdon’t make it easier to have fewer features
  • We should havesane defaults
  • There’s lots of crazy in Perl 5
  • Syntactic Crazy
  • Semantic Crazy
  • Internal Crazy
  • Module Crazy
  • It may be time toconsider doing away with some of that
  • We’ve starteddown this road
  • “use v5.12” includes“use strict;”
  • Where do we go next?
  • warnings on by default
  • autodie-esque defaults
  • autodie does good for your code
  • using deep, scary evil
  • I will not show you the evil
  • Ask Paul Fenwick
  • You’re safe today. He’s not here
  • We should throwexceptions rather than just return on failure
  • I don’t want us to bikeshed anexception hierarchy
  • Heck, I’d be happy if westarted with dying with well-defined strings
  • (I’d love an exception hierarchy)
  • 2-arg open()gone by default
  • 1-arg open()gone by default
  • No more package separator
  • Latin-1autopromote off by default
  • utf-8 everything by default
  • A clean, simplemeta-model with classesand methods
  • No indirect object syntax by default
  • But only if you declare “use v5.16”
  • But only if you declare “use v5.18”
  • But only if you declare “use v5.20”
  • Perl needs to becleaner, simpler and easier to work with
  • For users...
  • ...and forimplementers
  • Perl should runeverywhere
  • Not just on everykind of hardware
  • Not just on everyOperating System
  • Every VM
  • Every Browser
  • Every Phone
  • Why isn’t Perl 5 onother runtimes?
  • “There’s no spec”
  • That didn’t stop Ruby
  • “Only Perl 5 can parse Perl 5”
  • That didnt stop PPI
  • To survive, a desperate hacker needs to be ableto reimplement Perl 5
  • Thanks!
  • How do we make this happen faster?
  • Perl 5 Maint Fund
  • perlfoundation.org
  • Questions/Tomatoes?http://blog.fsck.comjesse@perl.org@obra
  • So, you want to changethe name?
  • To something like Perl 7?
  • Or Raptor?
  • Our language is called Perl 5
  • Perl 6 is our precocious kid sister
  • I’m happy to talk about renaming Perl 5...
  • ...if you write me asecond implementation
  • ...that passes the test suite