Perl 5.16 and Beyond - YAPC::Asia 2011

2,153 views

Published on

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
2,153
On SlideShare
0
From Embeds
0
Number of Embeds
423
Actions
Shares
0
Downloads
18
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • Back when I was the p6pm, the logo looked like this.\n\nsince then, we’ve, uh, reinvented it\n
  • Back when I was the p6pm, the logo looked like this.\n\nsince then, we’ve, uh, reinvented it\n
  • \n
  • \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
  • \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
  • Am I talking too fast?\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Cue ghandi quote\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
  • 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
  • see the recent flamewar on p5p\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • sane defaults will change over time\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
  • \n
  • \n
  • except where we can’t or it would be too insane\n
  • Stevan Little has proposed his first Map\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 - YAPC::Asia 2011

    1. 1. Perl 5.16 and beyondJesse Vincentjesse@perl.org@obra
    2. 2. Perl 6 Recovering Perl 6 Project Manager
    3. 3. Perl 6 Recovering Perl 6 Project Manager
    4. 4. Perl 5Perl 5 Pumpking
    5. 5. Perl 5Perl 5 Pumpking
    6. 6. Perl 5Perl 5 Pumpking
    7. 7. Perl 5Perl 5 Pumpking http://flic.kr/p/6StRmB
    8. 8. Perl 5Perl 5 Pumpking
    9. 9. ?Whats a Pumpking?
    10. 10. BDFL
    11. 11. BDFL
    12. 12. BDFL
    13. 13. I make decisions
    14. 14. ( )(the unpopular ones)
    15. 15. I delegate
    16. 16. ( ) (any real work)
    17. 17. I document
    18. 18. ( )(process and policy)
    19. 19. I destress
    20. 20. ( )(other people)
    21. 21. I’m a manager
    22. 22. Perl ?So, who makes Perl?
    23. 23. Many awesome people
    24. 24. I just standaroundlookingpretty...
    25. 25. ...while other people do awesome stuff
    26. 26. Perl AUTHORS ? Is your name in Perl’s AUTHORS file?
    27. 27. CPAN ? Are you aCPAN author?
    28. 28. You rock
    29. 29. PerlYou make Perl
    30. 30. PerlThe rules ofPerl Club
    31. 31. commit e8cd7eae0498ecc1fd3801fe3160Author: Gurusamy Sarathy <gsar@cpan.org>Date: Sun Oct 10 23:48:07 1999 +0000add perlhack.pod from Nathan Torkington<gnat@frii.com>
    32. 32. 1Rule 1
    33. 33. Perl Larry is always right about howPerl should behave
    34. 34. 2Rule 2
    35. 35. Larry is allowed to change his mindabout any matter at a later date...
    36. 36. ...regardless of whether he previouslyinvoked Rule 1
    37. 37. I’m not Larry
    38. 38. I’m nowhere near as clever
    39. 39. My shirts arenowhere near as loud
    40. 40. My shirts arenowhere near as loud
    41. 41. The rules aren’tjust for Larry
    42. 42. The rules aren’tjust for the Pumpking
    43. 43. Perl 5 The rules also apply to the Perl 5 core.
    44. 44. ?What?
    45. 45. 1Rule 1
    46. 46. PerlPerl is always right!
    47. 47. ( ) (TMTOWTDI)
    48. 48. 2Rule 2
    49. 49. Perl 5The Perl 5 coreis allowed to...
    50. 50. ?change its mind?
    51. 51. Changing ourminds is easy
    52. 52. We are very good at it
    53. 53. Not flailing wildly whenwe do has been hard
    54. 54. ...and leads to problems
    55. 55. at least I haven’t heard this in a while...
    56. 56. PerlPerl is Dead !
    57. 57. PerlPerl is Dead !1!!
    58. 58. PerlPerl is Dead !1!!one!
    59. 59. What I’ve beenhearing lately...
    60. 60. ?Where are we going?
    61. 61. It’s changing too fast.Can you slow down?
    62. 62. ? You made regexescrazier? /$#@!/l?
    63. 63. smartmatch isn’tnamed correctly...
    64. 64. we should call it psychoticmatch
    65. 65. ?Now that it’s undead,can we rename it?
    66. 66. I’ve been accused of lacking avision for Perl 5
    67. 67. WhatI lackis a flame-proof suit http://en.wikipedia.org/wiki/File:Dance_Dance_Immolation.jpg
    68. 68. peWhat rl5I lack -po rt e rsis a flame-proof suit http://en.wikipedia.org/wiki/File:Dance_Dance_Immolation.jpg
    69. 69. 2 If I’d talked about myvision 2 years ago...
    70. 70. You would havelaughed at me
    71. 71. Perl 5 Improving Perl 5 did not matter
    72. 72. We couldn’t evenput out a new release
    73. 73. In the past year...
    74. 74. 5 Five StableReleases
    75. 75. 1 A dozendevelopment releases
    76. 76. Perl 5.14.2Perl 5.14.2 is thecurrent stablerelease of Perl 5
    77. 77. 9It came out inSeptember
    78. 78. 3 It used to take us3 weeks to prepare a release
    79. 79. We made thePumpking do it
    80. 80. 1 Now it takesless than a day
    81. 81. 43 The 43 step process is documented
    82. 82. We have rotatingrelease engineers
    83. 83. Many of them arenew committers
    84. 84. Release engineersneed commit bits
    85. 85. git Since the switch to git, we’ve nearly doubled our committer list
    86. 86. The worldhasn’t ended
    87. 87. Some of those releaseengineers have become prolific contributors
    88. 88. Now thatreleasesare easy...
    89. 89. Perl 5A Vision for Perl 5
    90. 90. New versions of Perl 5should not breakyour existing software
    91. 91. Old syntax and semantics must not stopPerl 5 from evolving
    92. 92. Perl 5We need to be able to make mistakes as we rebuild Perl 5
    93. 93. We will make mistakesas we rebuild Perl 5
    94. 94. We have made mistakesas we’ve rebuilt Perl 5
    95. 95. We need to be able torecover from mistakes as we rebuild Perl 5
    96. 96. The runtime istoo big and must be slimmed down
    97. 97. Perl should havesane defaults
    98. 98. We need to be able to recover from lastyear’s “sane defaults”
    99. 99. Perl 5 Perl 5It should be possible to build more of Perl 5 in Perl 5
    100. 100. Perl should runeverywhere
    101. 101. 2: Perl Rule 2:Perl is allowed to change its mind
    102. 102. That’s already true
    103. 103. That hurts programs and programmers
    104. 104. When your code runs, you have no ideawhat semantics it’ll see
    105. 105. use v5.14;
    106. 106. 5.14 Perl ?“Can I have a Perl that’s 5.14 or newer?”
    107. 107. 5.14.0 ! “Anything newer than 5.14.0 would be great!”
    108. 108. OK 5.30 ! “Ok. I’m 5.30. Have fun!”
    109. 109. That is not useful
    110. 110. It needs to change
    111. 111. Perl 5From now on, declare the version of Perl 5 you expect
    112. 112. use v5.16;
    113. 113. 5.16 Perl 5 “I want a Perl 5 that works like 5.16”
    114. 114. The runtime shouldhonor that request
    115. 115. Perl should give yousemantics as close aspossible to what you request
    116. 116. New featuresshould not workunder ‘use v5.$older;’
    117. 117. It’s critical that we be able to evolve
    118. 118. We need anescape hatch
    119. 119. We needRule 2
    120. 120. If you declare an old version, you get old syntax and semantics
    121. 121. ...at least to thebest of our abilities
    122. 122. Perfection isnot possible
    123. 123. We can get far closer than we do now
    124. 124. Breaking existing code should be a last resort
    125. 125. In limitedcircumstances we will break backward compatibility
    126. 126. Some craziness can’t befixed in an “optional” or lexical way
    127. 127. This is going to be hard work
    128. 128. A lot of hard work
    129. 129. It’s not impossible
    130. 130. Deprecation
    131. 131. 1 Our currentdeprecation cycle is 1 year
    132. 132. 5.16.0 “It warns in 5.16.0”
    133. 133. 5.18.0“It’s gone in 5.18.0”
    134. 134. That’s turning outto be too short
    135. 135. OSVery few operatingsystems release that frequently
    136. 136. Declare by default means we can makesome changes sooner
    137. 137. If it still works in old code, we get to change it with nodeprecation cycle
    138. 138. Some misfeaturesneed to come outlest they block major improvements
    139. 139. If we can’t emulate an old feature for oldcode, we get a longer deprecation cycle
    140. 140. use v5.16 die “It dies in code thatdeclares ‘use v5.16’”
    141. 141. 5.16.0 “It warns in older code on 5.16.0”
    142. 142. 5.18.0 “It still warns in old code on 5.18.0”
    143. 143. 5.20.0“It’s gone in 5.20.0”
    144. 144. 2 Rule 2 andOld Modules
    145. 145. We haven’t just beendeprecating and yanking broken old features
    146. 146. We’ve been doing thesame to old modules
    147. 147. CPANThey all end up on CPAN
    148. 148. This hurts users who wrote code with“no non-core deps”
    149. 149. 2 Perl 5We need to make iteasier to ship two flavors of Perl 5
    150. 150. (Eagles)Hotel California
    151. 151. 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!
    152. 152. Perlaka Traditional Perl
    153. 153. (Bob Dylan)The Times,TheyAre A-Changin’
    154. 154. 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’
    155. 155. Perlaka Bootstrappable Perl
    156. 156. There’s work going on to make this easier
    157. 157. PerlPerl is a big language
    158. 158. There are bigger languages
    159. 159. Its harder to manage a big language
    160. 160. It’s harder to learn a big language
    161. 161. It’s harder to fix bugs in a big language
    162. 162. We’re ok, but notamazing at corelanguage dev
    163. 163. Perl As a community, we’re awesome at modules
    164. 164. Perl ?How do we make Perla smaller language?
    165. 165. It’s possible to loadmodules that inject new builtins
    166. 166. It’s possible to loadmodules that inject old builtins
    167. 167. Time to start...
    168. 168. ...refactoring
    169. 169. Lots of stuff in perl isnt necessarily part of Perl 5 the language
    170. 170. Perl 5 This stuff is part of Perl 5 the chainsaw
    171. 171. I like our chainsaw
    172. 172. I’m not talking about deprecating this stuff
    173. 173. ...just aboutdecoupling it
    174. 174. SysV IPCSysV IPC functions
    175. 175. Socket IOSocket IO functions
    176. 176. Unix / Unix user & group information functions
    177. 177. Unix Unix networkinformation functions
    178. 178. Process and process group functions
    179. 179. Formats
    180. 180. smartmatch
    181. 181. ...and probably a bunch of other stuff
    182. 182. use v5.16 5.14If you don’t ‘use v5.16’,you’ll get whatever was in 5.14.
    183. 183. SysV The implementation of SysV might be a module
    184. 184. As a Perl 5 user you won’t need to care
    185. 185. ..and shouldn’t be able to tell
    186. 186. In the future we mightfix a bug or two in the modularized code
    187. 187. Perl 5 You could take the update without having to upgrade all of Perl 5
    188. 188. Someday we mightremove things from the default runtime
    189. 189. Every feature weexternalize reclaimsprecious memory
    190. 190. Every feature weexternalize reclaims precious sanity
    191. 191. That just means you’ll need to declare youwant an older feature
    192. 192. v5.16...but only if you ask for v5.16
    193. 193. v5.18...but only if you ask for v5.18
    194. 194. v5.20...but only if you ask for v5.20
    195. 195. Existing codewon’t break
    196. 196. There are many, many unanswered questions
    197. 197. But it’s doable
    198. 198. Perl Weve been moving pretty fast
    199. 199. We’ve done some things I...
    200. 200. would notdo again
    201. 201. I’m going to be a lotmore skeptical about new features
    202. 202. ...at least ones thatdon’t make it easier to have fewer features
    203. 203. We should havesane defaults
    204. 204. Perl 5 There’s lots of crazy in Perl 5
    205. 205. Syntactic Crazy
    206. 206. Semantic Crazy
    207. 207. Internal Crazy
    208. 208. Module Crazy
    209. 209. It may be time toconsider doing away with some of that
    210. 210. We’ve starteddown this road
    211. 211. "use v5.12" "use strict;" “use v5.12” includes “use strict;”
    212. 212. ?Where do we go next?
    213. 213. warningswarnings on by default
    214. 214. autodieautodie-esque defaults
    215. 215. return We should throwexceptions rather than just return on failure
    216. 216. I don’t want us to bikeshed anexception hierarchy
    217. 217. Heck, I’d be happy if westarted with dying with well-defined strings
    218. 218. ( ) (I’d love an exception hierarchy)
    219. 219. 2 open() 2-arg open() gone by default
    220. 220. 1 open() 1-arg open() gone by default
    221. 221. No more package separator
    222. 222. Latin-1 Latin-1 autopromote off by default
    223. 223. utf-8utf-8 everything by default
    224. 224. A clean, simplemeta-model with classesand methods
    225. 225. No indirect object syntax by default
    226. 226. "use v5.16"But only if you declare “use v5.16”
    227. 227. "use v5.18"But only if you declare “use v5.18”
    228. 228. "use v5.20"But only if you declare “use v5.20”
    229. 229. Perl Perl needs to be cleaner, simpler and easier to work with
    230. 230. For users...
    231. 231. ...and forimplementers
    232. 232. Perl Perl should run everywhere
    233. 233. Not just on everykind of hardware
    234. 234. OS Not just on everyOperating System
    235. 235. VMEvery VM
    236. 236. Every Browser
    237. 237. Every Phone
    238. 238. Perl 5 ?Why isn’t Perl 5 onother runtimes?
    239. 239. “There’s no spec”
    240. 240. RubyThat didn’t stop Ruby
    241. 241. Perl 5 Perl 5 “Only Perl 5 can parse Perl 5”
    242. 242. PPIThat didnt stop PPI
    243. 243. Perl 5 To survive, a desperate hacker needs to be ableto reimplement Perl 5
    244. 244. Thanks!
    245. 245. Super-thanksindividual sponsors!
    246. 246. Questions?http://blog.fsck.comjesse@perl.org@obra
    247. 247. ?So, you want to changethe name?
    248. 248. Perl 7 ?To something like Perl 7?
    249. 249. Or Raptor?
    250. 250. Perl 5Our language is called Perl 5
    251. 251. Perl 6 Perl 6 is our precocious kid sister
    252. 252. Perl 5I’m happy to talk about renaming Perl 5...
    253. 253. ...if you write me asecond implementation
    254. 254. ...that passes the test suite

    ×