OSCON 2011 - Perl 5.16 and beyond

9 min read Original article ↗
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

    I don’t do“real work” Friday, July 29, 11

  • 12.
  • 13.
  • 14.

    I just standaround looking pretty... Friday, July 29, 11

  • 15.
  • 16.

    Is your namein Perl’s AUTHORS file? Friday, July 29, 11

  • 17.

    Are you a CPAN author? Friday, July 29, 11

  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.

    Perl 5.14.1 isthe current release of Perl 5 Friday, July 29, 11

  • 40.

    It came out6ish weeks ago Friday, July 29, 11

  • 41.
  • 42.
  • 43.

    It used totake us 3 weeks to prepare a release Friday, July 29, 11

  • 44.

    And we madethe Pumpking do it Friday, July 29, 11

  • 45.
  • 46.

    The 43 stepprocess is documented Friday, July 29, 11

  • 47.
  • 48.

    Now we haverotating release engineers Friday, July 29, 11

  • 49.

    Most of themare new committers Friday, July 29, 11

  • 50.

    Nice side effect: release engineers need commit bits Friday, July 29, 11

  • 51.

    Since the moveto git, we’ve nearly doubled our committer list Friday, July 29, 11

  • 52.
  • 53.

    Some of thoserelease engineers have become prolific contributors Friday, July 29, 11

  • 54.
  • 55.

    I try toget them right Friday, July 29, 11

  • 56.

    Sometimes they’re wrong Friday, July 29, 11

  • 57.

    I have alittle bit of cover Friday, July 29, 11

  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.

    I’m nowhere near as clever Friday, July 29, 11

  • 64.

    My shirts arenowhere near as loud Friday, July 29, 11

  • 65.

    At YAPC::NA, Larry said that the time of hero-pumpkings is over Friday, July 29, 11

  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.

    Rule 1 definitely doesn’t apply to the Perl 5 runtime Friday, July 29, 11

  • 72.
  • 73.

    The core needsmore support for Rule 2 Friday, July 29, 11

  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.

    What I lackis a flame-proof suit. Friday, July 29, 11

  • 85.

    If I’d talkedabout my vision 2 years ago... Friday, July 29, 11

  • 86.
  • 87.
  • 88.
  • 89.

    New versions ofPerl shouldn’t break your existing software Friday, July 29, 11

  • 90.

    Old syntax and semantics can’t stop Perl 5 from evolving Friday, July 29, 11

  • 91.

    We need tobe able to make mistakes as we rebuild Perl 5 Friday, July 29, 11

  • 92.

    We will make mistakes as we rebuild Perl 5 Friday, July 29, 11

  • 93.
  • 94.

    We have made mistakes as we’ve rebuilt Perl Friday, July 29, 11

  • 95.

    We need tobe able to recover from mistakes as we rebuild Perl Friday, July 29, 11

  • 96.
  • 97.
  • 98.

    It should bepossible to build more of Perl in Perl Friday, July 29, 11

  • 99.
  • 100.

    Not just onevery kind of hardware Friday, July 29, 11

  • 101.
  • 102.
  • 103.
  • 104.
  • 105.

    How do weget there? Friday, July 29, 11

  • 106.

    New versions ofPerl shouldn’t break existing software Friday, July 29, 11

  • 107.

    Old syntax andsemantics must not stop Perl 5 from evolving Friday, July 29, 11

  • 108.

    When your coderuns, you have no idea what semantics it’ll see Friday, July 29, 11

  • 109.

    You need tojump through defensive hoops. Friday, July 29, 11

  • 110.
  • 111.
  • 112.

    “Can I havea Perl that’s 5.14 or newer?” Friday, July 29, 11

  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.

    “I want aPerl that works like 5.16” Friday, July 29, 11

  • 120.
  • 121.

    Perl should giveyou semantics as close as possible to what you request Friday, July 29, 11

  • 122.

    New features should not work under ‘use v5.$older;’ Friday, July 29, 11

  • 123.
  • 124.

    We need an escape hatch Friday, July 29, 11

  • 125.
  • 126.

    We need Rule 2 Friday, July 29, 11

  • 127.

    Changes to syntaxor semantics break existing code Friday, July 29, 11

  • 128.
  • 129.
  • 130.

    They change the meaning of existing semantics Friday, July 29, 11

  • 131.
  • 132.
  • 133.

    If you declarean old version, you get old syntax and semantics Friday, July 29, 11

  • 134.

    ...at least tothe best of our abilities Friday, July 29, 11

  • 135.
  • 136.

    We can getfar closer than we do now Friday, July 29, 11

  • 137.
  • 138.

    We will break backward compatibility in limited circumstances Friday, July 29, 11

  • 139.
  • 140.
  • 141.

    A lot ofhard work Friday, July 29, 11

  • 142.
  • 143.
  • 144.
  • 145.

    Our current deprecation cycle is 1 year Friday, July 29, 11

  • 146.
  • 147.
  • 148.
  • 149.
  • 150.
  • 151.

    If it stillworks in old code, we can change it with no deprecation cycle Friday, July 29, 11

  • 152.

    Some old misfeatures need to come out lest they block significant improvements Friday, July 29, 11

  • 153.

    If we can’temulate the old feature for old code, we need a longer deprecation cycle Friday, July 29, 11

  • 154.

    “It dies incode that declares ‘use v5.16’” Friday, July 29, 11

  • 155.

    “It warns inolder code on 5.16.0” Friday, July 29, 11

  • 156.
  • 157.
  • 158.
  • 159.

    We haven’t justbeen deprecating and yanking broken old features Friday, July 29, 11

  • 160.
  • 161.
  • 162.

    This has startedto hurt users who wrote code with “no non-core deps” Friday, July 29, 11

  • 163.

    We need tomake it easier to ship two flavors of Perl 5 Friday, July 29, 11

  • 164.
  • 165.
  • 166.
  • 167.
  • 168.
  • 169.
  • 170.
  • 171.

    One of thepoints of doing this is to clean up the core Friday, July 29, 11

  • 172.
  • 173.

    Perl is abig language Friday, July 29, 11

  • 174.
  • 175.
  • 176.
  • 177.

    It’s harder tofix bugs in a big language Friday, July 29, 11

  • 178.

    We’re ok, butnot amazing at core language dev Friday, July 29, 11

  • 179.
  • 180.

    How do wemake Perl a smaller language? Friday, July 29, 11

  • 181.

    It’s possible toload modules that inject new builtins Friday, July 29, 11

  • 182.

    It’s possible toload modules that inject old builtins Friday, July 29, 11

  • 183.
  • 184.
  • 185.

    Lots of stuffin perl isn't necessarily part of Perl 5 the Language Friday, July 29, 11

  • 186.

    This stuff ispart of Perl 5 the chainsaw Friday, July 29, 11

  • 187.
  • 188.

    I’m not talkingabout deprecating this stuff Friday, July 29, 11

  • 189.
  • 190.
  • 191.
  • 192.

    Unix user &group information functions Friday, July 29, 11

  • 193.

    Unix network information functions Friday, July 29, 11

  • 194.
  • 195.
  • 196.
  • 197.
  • 198.

    That bit about“forcing a version declaration” Friday, July 29, 11

  • 199.

    If you don’t,you’ll get whatever was in 5.14. Friday, July 29, 11

  • 200.
  • 201.

    As a developerwriting code in Perl 5, you won’t need to care Friday, July 29, 11

  • 202.
  • 203.

    In the futurewe might fix a bug or two in the modularized code Friday, July 29, 11

  • 204.

    You could takethe update without having to upgrade all of Perl 5 Friday, July 29, 11

  • 205.

    Someday we might remove things from the default runtime Friday, July 29, 11

  • 206.

    Every feature we externalize reclaims precious memory Friday, July 29, 11

  • 207.

    Every feature we externalize reclaims precious sanity Friday, July 29, 11

  • 208.

    That just meansyou’ll need to declare you want an older feature Friday, July 29, 11

  • 209.
  • 210.
  • 211.
  • 212.
  • 213.
  • 214.
  • 215.
  • 216.
  • 217.

    After YAPC::NA rjbs (and others) raised the issue of smartmatch Friday, July 29, 11

  • 218.

    Perl has ahistory of theft from other languages Friday, July 29, 11

  • 219.

    Perl has ahistory of borrowing from other languages Friday, July 29, 11

  • 220.

    We stole smartmatch from Perl 6 Friday, July 29, 11

  • 221.
  • 222.

    It’s nearly impossible to explain Friday, July 29, 11

  • 223.

    It’s nearly impossible to understand Friday, July 29, 11

  • 224.

    RJBS (the previous speaker) proposed a saner, much less clever, smart match Friday, July 29, 11

  • 225.

    I don’t wantto break existing code that uses smartmatch Friday, July 29, 11

  • 226.

    Jesse Luehrs (DOY) was sitting in the back of my YAPC talk Friday, July 29, 11

  • 227.
  • 228.
  • 229.

    He extracted smartmatch into an XS module Friday, July 29, 11

  • 230.
  • 231.

    It’s slower, butit’s understandable and hackable Friday, July 29, 11

  • 232.

    He implemented Ricardo’s saner smart match as an alternative Friday, July 29, 11

  • 233.

    I’m hoping that5.16 ships DOY’s smartmatch implementations Friday, July 29, 11

  • 234.
  • 235.
  • 236.

    no “use v5.x;”line should load the old one in your scope. Friday, July 29, 11

  • 237.

    We need amodule hierarchy for such things in core Friday, July 29, 11

  • 238.
  • 239.
  • 240.

    We have an amazing test suite Friday, July 29, 11

  • 241.

    Over time, weneed to tease apart (at least) 3 kinds of tests Friday, July 29, 11

  • 242.
  • 243.
  • 244.
  • 245.

    To hold usto the compatibility promises we make, we need a new test harness Friday, July 29, 11

  • 246.

    “Run the testsuites we shipped with previous releases...” Friday, July 29, 11

  • 247.
  • 248.
  • 249.
  • 250.
  • 251.

    I’m going tobe a lot more skeptical about new features Friday, July 29, 11

  • 252.

    ...at least onesthat don’t make it easier to have fewer features Friday, July 29, 11

  • 253.
  • 254.
  • 255.
  • 256.
  • 257.
  • 258.
  • 259.

    It may betime to consider doing away with some of that Friday, July 29, 11

  • 260.

    But ONLY ifyou declare “use v5.16” Friday, July 29, 11

  • 261.

    But ONLY ifyou declare “use v5.18” Friday, July 29, 11

  • 262.

    But ONLY ifyou declare “use v5.20” Friday, July 29, 11

  • 263.
  • 264.
  • 265.
  • 266.
  • 267.
  • 268.
  • 269.
  • 270.

    I will notshow you the evil Friday, July 29, 11

  • 271.
  • 272.
  • 273.
  • 274.

    We should throw exceptions rather than just return on failure Friday, July 29, 11

  • 275.

    I don’t wantus to bikeshed an exception hierarchy Friday, July 29, 11

  • 276.

    Heck, I’d behappy if we started with dying with well-defined strings Friday, July 29, 11

  • 277.

    (I’d love anexception hierarchy) Friday, July 29, 11

  • 278.
  • 279.

    1-arg open() gone by default? Friday, July 29, 11

  • 280.
  • 281.
  • 282.

    A clean, simple meta-model with basic classes and methods Friday, July 29, 11

  • 283.
  • 284.

    But only ifyou declare “use v5.16” Friday, July 29, 11

  • 285.

    But only ifyou declare “use v5.18” Friday, July 29, 11

  • 286.

    But only ifyou declare “use v5.20” Friday, July 29, 11

  • 287.
  • 288.

    Perl needs tobe cleaner, simpler and easier to work with Friday, July 29, 11

  • 289.
  • 290.
  • 291.
  • 292.
  • 293.
  • 294.
  • 295.

    “Only Perl 5can parse Perl 5” Friday, July 29, 11

  • 296.
  • 297.

    To survive, adesperate hacker needs to be able to reimplement Perl 5 Friday, July 29, 11

  • 298.
  • 299.

    How do wemake this happen faster? Friday, July 29, 11

  • 300.
  • 301.
  • 302.

    Questions/Tomatoes? http://blog.fsck.com jesse@perl.org @obra Friday, July 29, 11

  • 303.
  • 304.
  • 305.

    Perl 6 isour precocious kid sister Friday, July 29, 11

  • 306.

    I’m happy totalk about renaming Perl 5... Friday, July 29, 11

  • 307.

    ...if you writeme a second implementation that passes the test suite Friday, July 29, 11