OSCON 2011 - Perl 5.16 and beyond

  • 9,653 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • Got a good overview of what should be expected of future releases.
    Are you sure you want to
    Your message goes here
  • 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
  • very good overview about the recent politics in perl
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
9,653
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
86
Comments
3
Likes
12

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Perl 5.16 and BeyondFriday, July 29, 11
  • 2. Jesse VincentFriday, July 29, 11
  • 3. PumpkingFriday, July 29, 11
  • 4. Former Perl 6 Project ManagerFriday, July 29, 11
  • 5. Whats a Pumpking?Friday, July 29, 11
  • 6. BDFLFriday, July 29, 11
  • 7. BDFLFriday, July 29, 11
  • 8. BDFLFriday, July 29, 11
  • 9. I make decisionsFriday, July 29, 11
  • 10. I’m a managerFriday, July 29, 11
  • 11. I don’t do “real work”Friday, July 29, 11
  • 12. So, who makes Perl?Friday, July 29, 11
  • 13. Many awesome peopleFriday, July 29, 11
  • 14. I just stand around looking pretty...Friday, July 29, 11
  • 15. ...while other people do awesome stuffFriday, July 29, 11
  • 16. Is your name in Perl’s AUTHORS file?Friday, July 29, 11
  • 17. Are you a CPAN author?Friday, July 29, 11
  • 18. You rockFriday, July 29, 11
  • 19. You make PerlFriday, July 29, 11
  • 20. The Release ProcessFriday, July 29, 11
  • 21. Releases in the last 12-or-so months:Friday, July 29, 11
  • 22. 5.12.2Friday, July 29, 11
  • 23. 5.12.3Friday, July 29, 11
  • 24. 5.12.4Friday, July 29, 11
  • 25. 5.13.2Friday, July 29, 11
  • 26. 5.13.3Friday, July 29, 11
  • 27. 5.13.4Friday, July 29, 11
  • 28. 5.13.5Friday, July 29, 11
  • 29. 5.13.6Friday, July 29, 11
  • 30. 5.13.7Friday, July 29, 11
  • 31. 5.13.8Friday, July 29, 11
  • 32. 5.13.9Friday, July 29, 11
  • 33. 5.13.10Friday, July 29, 11
  • 34. 5.13.11Friday, July 29, 11
  • 35. 5.14.0Friday, July 29, 11
  • 36. 5.14.1Friday, July 29, 11
  • 37. 5.15.0Friday, July 29, 11
  • 38. 5.15.1Friday, July 29, 11
  • 39. Perl 5.14.1 is the current release of Perl 5Friday, July 29, 11
  • 40. It came out 6ish weeks agoFriday, July 29, 11
  • 41. As did Perl 5.12.4Friday, July 29, 11
  • 42. As did Perl 5.15.0Friday, July 29, 11
  • 43. It used to take us 3 weeks to prepare a releaseFriday, July 29, 11
  • 44. And we made the Pumpking do itFriday, July 29, 11
  • 45. Now it takes less than a dayFriday, July 29, 11
  • 46. The 43 step process is documentedFriday, July 29, 11
  • 47. Releases are still a chore if you do them every monthFriday, July 29, 11
  • 48. Now we have rotating release engineersFriday, July 29, 11
  • 49. Most of them are new committersFriday, July 29, 11
  • 50. Nice side effect: release engineers need commit bitsFriday, July 29, 11
  • 51. Since the move to git, we’ve nearly doubled our committer listFriday, July 29, 11
  • 52. The world hasn’t endedFriday, July 29, 11
  • 53. Some of those release engineers have become prolific contributorsFriday, July 29, 11
  • 54. I just make decisionsFriday, July 29, 11
  • 55. I try to get them rightFriday, July 29, 11
  • 56. Sometimes they’re wrongFriday, July 29, 11
  • 57. I have a little bit of coverFriday, July 29, 11
  • 58. Rule 1Friday, July 29, 11
  • 59. Larry is always rightFriday, July 29, 11
  • 60. Rule 2Friday, July 29, 11
  • 61. Larry is allowed to change his mindFriday, July 29, 11
  • 62. I’m not LarryFriday, July 29, 11
  • 63. I’m nowhere near as cleverFriday, July 29, 11
  • 64. My shirts are nowhere near as loudFriday, July 29, 11
  • 65. At YAPC::NA, Larry said that the time of hero-pumpkings is overFriday, July 29, 11
  • 66. DFriday, July 29, 11
  • 67. DictatorFriday, July 29, 11
  • 68. DelegatorFriday, July 29, 11
  • 69. DocumenterFriday, July 29, 11
  • 70. Thankfully, Larry’s rules set me up to succeedFriday, July 29, 11
  • 71. Rule 1 definitely doesn’t apply to the Perl 5 runtimeFriday, July 29, 11
  • 72. HoweverFriday, July 29, 11
  • 73. The core needs more support for Rule 2Friday, July 29, 11
  • 74. I haven’t heard this in a while:Friday, July 29, 11
  • 75. Perl is Dead!Friday, July 29, 11
  • 76. What I’ve been hearing lately:Friday, July 29, 11
  • 77. Where are we going?Friday, July 29, 11
  • 78. It’s changing too fast. Can you slow down?Friday, July 29, 11
  • 79. You made regexes crazier?$#@!?Friday, July 29, 11
  • 80. smartmatch isn’t named correctly...Friday, July 29, 11
  • 81. ...can we rename it to psychoticmatch?Friday, July 29, 11
  • 82. The futureFriday, July 29, 11
  • 83. I’ve been accused of lacking a vision for PerlFriday, July 29, 11
  • 84. What I lack is a flame-proof suit.Friday, July 29, 11
  • 85. If I’d talked about my vision 2 years ago...Friday, July 29, 11
  • 86. You would have laughed at meFriday, July 29, 11
  • 87. ...now that we can do do releases...Friday, July 29, 11
  • 88. A VisionFriday, July 29, 11
  • 89. New versions of Perl shouldn’t break your existing softwareFriday, July 29, 11
  • 90. Old syntax and semantics can’t stop Perl 5 from evolvingFriday, July 29, 11
  • 91. We need to be able to make mistakes as we rebuild Perl 5Friday, July 29, 11
  • 92. We will make mistakes as we rebuild Perl 5Friday, July 29, 11
  • 93. *coughsmartmatchcough*Friday, July 29, 11
  • 94. We have made mistakes as we’ve rebuilt PerlFriday, July 29, 11
  • 95. We need to be able to recover from mistakes as we rebuild PerlFriday, July 29, 11
  • 96. The runtime footprint is too big and must be slimmed downFriday, July 29, 11
  • 97. Perl should have sane defaultsFriday, July 29, 11
  • 98. It should be possible to build more of Perl in PerlFriday, July 29, 11
  • 99. Perl should run everywhereFriday, July 29, 11
  • 100. Not just on every kind of hardwareFriday, July 29, 11
  • 101. or every OSFriday, July 29, 11
  • 102. Every VMFriday, July 29, 11
  • 103. Every BrowserFriday, July 29, 11
  • 104. Every PhoneFriday, July 29, 11
  • 105. How do we get there?Friday, July 29, 11
  • 106. New versions of Perl shouldn’t break existing softwareFriday, July 29, 11
  • 107. Old syntax and semantics must not stop Perl 5 from evolvingFriday, July 29, 11
  • 108. When your code runs, you have no idea what semantics it’ll seeFriday, July 29, 11
  • 109. You need to jump through defensive hoops.Friday, July 29, 11
  • 110. Lots of defensive hoopsFriday, July 29, 11
  • 111. use v5.14;Friday, July 29, 11
  • 112. “Can I have a Perl that’s 5.14 or newer?”Friday, July 29, 11
  • 113. “Anything newer than 5.14.0 would be great!”Friday, July 29, 11
  • 114. “Ok. I’m 5.30. Have fun!”Friday, July 29, 11
  • 115. That’s not usefulFriday, July 29, 11
  • 116. It needs to changeFriday, July 29, 11
  • 117. Declare the version of Perl 5 you expectFriday, July 29, 11
  • 118. use v5.16;Friday, July 29, 11
  • 119. “I want a Perl that works like 5.16”Friday, July 29, 11
  • 120. The runtime should honor that requestFriday, July 29, 11
  • 121. Perl should give you semantics as close as possible to what you requestFriday, July 29, 11
  • 122. New features should not work under ‘use v5.$older;’Friday, July 29, 11
  • 123. It’s critical that we be able to evolveFriday, July 29, 11
  • 124. We need an escape hatchFriday, July 29, 11
  • 125. We don’t have oneFriday, July 29, 11
  • 126. We need Rule 2Friday, July 29, 11
  • 127. Changes to syntax or semantics break existing codeFriday, July 29, 11
  • 128. Why?Friday, July 29, 11
  • 129. They conflict with existing syntaxFriday, July 29, 11
  • 130. They change the meaning of existing semanticsFriday, July 29, 11
  • 131. They conflict with things users doFriday, July 29, 11
  • 132. What do we do?Friday, July 29, 11
  • 133. If you declare an old version, you get old syntax and semanticsFriday, July 29, 11
  • 134. ...at least to the best of our abilitiesFriday, July 29, 11
  • 135. Perfection isn’t possibleFriday, July 29, 11
  • 136. We can get far closer than we do nowFriday, July 29, 11
  • 137. Breaking existing code should be a last resortFriday, July 29, 11
  • 138. We will break backward compatibility in limited circumstancesFriday, July 29, 11
  • 139. Some craziness can’t be fixed in an “optional” or lexical wayFriday, July 29, 11
  • 140. This is going to be hard workFriday, July 29, 11
  • 141. A lot of hard workFriday, July 29, 11
  • 142. It’s not impossibleFriday, July 29, 11
  • 143. I have proofFriday, July 29, 11
  • 144. DeprecationFriday, July 29, 11
  • 145. Our current deprecation cycle is 1 yearFriday, July 29, 11
  • 146. “It warns in 5.16.0”Friday, July 29, 11
  • 147. “It’s gone in 5.18.0”Friday, July 29, 11
  • 148. That’s turning out to be too shortFriday, July 29, 11
  • 149. Very few operating systems release that frequentlyFriday, July 29, 11
  • 150. “Declare by default” means we can make some changes soonerFriday, July 29, 11
  • 151. If it still works in old code, we can change it with no deprecation cycleFriday, July 29, 11
  • 152. Some old misfeatures need to come out lest they block significant improvementsFriday, July 29, 11
  • 153. If we can’t emulate the old feature for old code, we need a longer deprecation cycleFriday, July 29, 11
  • 154. “It dies in code that declares ‘use v5.16’”Friday, July 29, 11
  • 155. “It warns in older code on 5.16.0”Friday, July 29, 11
  • 156. “It still warns in old code on 5.18.0”Friday, July 29, 11
  • 157. “It’s gone in 5.20.0”Friday, July 29, 11
  • 158. Old ModulesFriday, July 29, 11
  • 159. We haven’t just been deprecating and yanking broken old featuresFriday, July 29, 11
  • 160. We’ve been doing the same to old modulesFriday, July 29, 11
  • 161. They all end up on CPANFriday, July 29, 11
  • 162. This has started to hurt users who wrote code with “no non-core deps”Friday, July 29, 11
  • 163. We need to make it easier to ship two flavors of Perl 5Friday, July 29, 11
  • 164. Hotel CaliforniaFriday, July 29, 11
  • 165. aka Traditional PerlFriday, July 29, 11
  • 166. The Times,They Are A-Changin’Friday, July 29, 11
  • 167. aka Bootstrappable PerlFriday, July 29, 11
  • 168. There’s work going on to make this easierFriday, July 29, 11
  • 169. Cleaning up the languageFriday, July 29, 11
  • 170. The runtime footprint is too big and must be slimmed downFriday, July 29, 11
  • 171. One of the points of doing this is to clean up the coreFriday, July 29, 11
  • 172. How does this clean up the core?Friday, July 29, 11
  • 173. Perl is a big languageFriday, July 29, 11
  • 174. There are bigger languagesFriday, July 29, 11
  • 175. Its harder to manage a big languageFriday, July 29, 11
  • 176. It’s harder to learn a big languageFriday, July 29, 11
  • 177. It’s harder to fix bugs in a big languageFriday, July 29, 11
  • 178. We’re ok, but not amazing at core language devFriday, July 29, 11
  • 179. As a community, we’re awesome at modulesFriday, July 29, 11
  • 180. How do we make Perl a smaller language?Friday, July 29, 11
  • 181. It’s possible to load modules that inject new builtinsFriday, July 29, 11
  • 182. It’s possible to load modules that inject old builtinsFriday, July 29, 11
  • 183. Time to start...Friday, July 29, 11
  • 184. ...refactoringFriday, July 29, 11
  • 185. Lots of stuff in perl isnt necessarily part of Perl 5 the LanguageFriday, July 29, 11
  • 186. This stuff is part of Perl 5 the chainsawFriday, July 29, 11
  • 187. I like our chainsawFriday, July 29, 11
  • 188. I’m not talking about deprecating this stuffFriday, July 29, 11
  • 189. ...just about decoupling itFriday, July 29, 11
  • 190. SysV IPC functionsFriday, July 29, 11
  • 191. Socket IO functionsFriday, July 29, 11
  • 192. Unix user & group information functionsFriday, July 29, 11
  • 193. Unix network information functionsFriday, July 29, 11
  • 194. Process and process group functionsFriday, July 29, 11
  • 195. FormatsFriday, July 29, 11
  • 196. smartmatchFriday, July 29, 11
  • 197. ...and probably a bunch of other stuffFriday, July 29, 11
  • 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. The implementation of SysV might be a moduleFriday, July 29, 11
  • 201. As a developer writing code in Perl 5, you won’t need to careFriday, July 29, 11
  • 202. ..and shouldn’t be able to tellFriday, July 29, 11
  • 203. In the future we might fix a bug or two in the modularized codeFriday, July 29, 11
  • 204. You could take the update without having to upgrade all of Perl 5Friday, July 29, 11
  • 205. Someday we might remove things from the default runtimeFriday, July 29, 11
  • 206. Every feature we externalize reclaims precious memoryFriday, July 29, 11
  • 207. Every feature we externalize reclaims precious sanityFriday, July 29, 11
  • 208. That just means you’ll need to declare you want an older featureFriday, July 29, 11
  • 209. ...but only if you ask for v5.16Friday, July 29, 11
  • 210. ...but only if you ask for v5.18Friday, July 29, 11
  • 211. ...but only if you ask for v5.20Friday, July 29, 11
  • 212. Existing code won’t breakFriday, July 29, 11
  • 213. There are many, many unanswered questionsFriday, July 29, 11
  • 214. But it’s doableFriday, July 29, 11
  • 215. I have proof!Friday, July 29, 11
  • 216. Case study: SmartmatchFriday, July 29, 11
  • 217. After YAPC::NA rjbs (and others) raised the issue of smartmatchFriday, July 29, 11
  • 218. Perl has a history of theft from other languagesFriday, July 29, 11
  • 219. Perl has a history of borrowing from other languagesFriday, July 29, 11
  • 220. We stole smartmatch from Perl 6Friday, July 29, 11
  • 221. It’s very cleverFriday, July 29, 11
  • 222. It’s nearly impossible to explainFriday, July 29, 11
  • 223. It’s nearly impossible to understandFriday, July 29, 11
  • 224. RJBS (the previous speaker) proposed a saner, much less clever, smart matchFriday, July 29, 11
  • 225. I don’t want to break existing code that uses smartmatchFriday, July 29, 11
  • 226. Jesse Luehrs (DOY) was sitting in the back of my YAPC talkFriday, July 29, 11
  • 227. He...Friday, July 29, 11
  • 228. ...threw himself at the problemFriday, July 29, 11
  • 229. He extracted smartmatch into an XS moduleFriday, July 29, 11
  • 230. He reimplemented it entirely in pure perlFriday, July 29, 11
  • 231. It’s slower, but it’s understandable and hackableFriday, July 29, 11
  • 232. He implemented Ricardo’s saner smart match as an alternativeFriday, July 29, 11
  • 233. I’m hoping that 5.16 ships DOY’s smartmatch implementationsFriday, July 29, 11
  • 234. use v5.16; should load the new one in your scopeFriday, July 29, 11
  • 235. use v5.14; should load the old one in your scopeFriday, July 29, 11
  • 236. no “use v5.x;” line should load the old one in your scope.Friday, July 29, 11
  • 237. We need a module hierarchy for such things in coreFriday, July 29, 11
  • 238. The Test SuiteFriday, July 29, 11
  • 239. (Keeping us honest)Friday, July 29, 11
  • 240. We have an amazing test suiteFriday, July 29, 11
  • 241. Over time, we need to tease apart (at least) 3 kinds of testsFriday, July 29, 11
  • 242. Language testsFriday, July 29, 11
  • 243. Bug-fix testsFriday, July 29, 11
  • 244. Implementation testsFriday, July 29, 11
  • 245. To hold us to the compatibility promises we make, we need a new test harnessFriday, July 29, 11
  • 246. “Run the test suites we shipped with previous releases...”Friday, July 29, 11
  • 247. ...all of emFriday, July 29, 11
  • 248. Weve been moving pretty fastFriday, July 29, 11
  • 249. We’ve done some things I...Friday, July 29, 11
  • 250. ...wouldn’t do againFriday, July 29, 11
  • 251. I’m going to be a lot more skeptical about new featuresFriday, July 29, 11
  • 252. ...at least ones that don’t make it easier to have fewer featuresFriday, July 29, 11
  • 253. We should have sane defaultsFriday, July 29, 11
  • 254. There’s lots of crazy in Perl 5Friday, July 29, 11
  • 255. Syntactic CrazyFriday, July 29, 11
  • 256. Semantic CrazyFriday, July 29, 11
  • 257. Internal CrazyFriday, July 29, 11
  • 258. Module CrazyFriday, July 29, 11
  • 259. It may be time to consider doing away with some of thatFriday, July 29, 11
  • 260. But ONLY if you declare “use v5.16”Friday, July 29, 11
  • 261. But ONLY if you declare “use v5.18”Friday, July 29, 11
  • 262. But ONLY if you declare “use v5.20”Friday, July 29, 11
  • 263. We’ve started down this roadFriday, July 29, 11
  • 264. “use v5.12” includes “use strict;”Friday, July 29, 11
  • 265. Where do we go next?Friday, July 29, 11
  • 266. warnings on by defaultFriday, July 29, 11
  • 267. autodie-esque defaultsFriday, July 29, 11
  • 268. autodie does good for your codeFriday, July 29, 11
  • 269. using deep, scary evilFriday, July 29, 11
  • 270. I will not show you the evilFriday, July 29, 11
  • 271. Ask Paul FenwickFriday, July 29, 11
  • 272. The guy with the accentFriday, July 29, 11
  • 273. In the hatFriday, July 29, 11
  • 274. We should throw exceptions rather than just return on failureFriday, July 29, 11
  • 275. I don’t want us to bikeshed an exception hierarchyFriday, July 29, 11
  • 276. Heck, I’d be happy if we started with dying with well-defined stringsFriday, July 29, 11
  • 277. (I’d love an exception hierarchy)Friday, July 29, 11
  • 278. 2-arg open() gone by defaultFriday, July 29, 11
  • 279. 1-arg open() gone by default?Friday, July 29, 11
  • 280. Latin-1 autopromote off by defaultFriday, July 29, 11
  • 281. utf-8 everything by defaultFriday, July 29, 11
  • 282. A clean, simple meta-model with basic classes and methodsFriday, July 29, 11
  • 283. No indirect object syntax by defaultFriday, July 29, 11
  • 284. But only if you declare “use v5.16”Friday, July 29, 11
  • 285. But only if you declare “use v5.18”Friday, July 29, 11
  • 286. But only if you declare “use v5.20”Friday, July 29, 11
  • 287. So, Why?Friday, July 29, 11
  • 288. Perl needs to be cleaner, simpler and easier to work withFriday, July 29, 11
  • 289. For users...Friday, July 29, 11
  • 290. ...and for implementersFriday, July 29, 11
  • 291. Perl should run everywhereFriday, July 29, 11
  • 292. Why isn’t Perl 5 on other Runtimes?Friday, July 29, 11
  • 293. “There’s no spec”Friday, July 29, 11
  • 294. That didn’t stop RubyFriday, July 29, 11
  • 295. “Only Perl 5 can parse Perl 5”Friday, July 29, 11
  • 296. That didnt stop PPIFriday, July 29, 11
  • 297. To survive, a desperate hacker needs to be able to reimplement Perl 5Friday, July 29, 11
  • 298. Thanks!Friday, July 29, 11
  • 299. How do we make this happen faster?Friday, July 29, 11
  • 300. Perl 5 Maint FundFriday, July 29, 11
  • 301. perlfoundation.orgFriday, July 29, 11
  • 302. Questions/Tomatoes? http://blog.fsck.com jesse@perl.org @obraFriday, July 29, 11
  • 303. About the nameFriday, July 29, 11
  • 304. Our language is called Perl 5Friday, July 29, 11
  • 305. Perl 6 is our precocious kid sisterFriday, July 29, 11
  • 306. I’m happy to talk about renaming Perl 5...Friday, July 29, 11
  • 307. ...if you write me a second implementation that passes the test suiteFriday, July 29, 11