OSCON 2011 - Perl 5.16 and beyond

10,266
-1

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,266
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

×