Successfully reported this slideshow.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Perl 5.12.0

  1. 1. Perl 5.12 Jesse Vincent jesse@perl.org
  2. 2. Hi!
  3. 3. I'm Jesse
  4. 4. I'm the Perl 5 “Pumpking”
  5. 5. Pumpking?
  6. 6. I'll explain later
  7. 7. For now, just think of me as “project janitor”
  8. 8. Perl 5 is 16 years old
  9. 9. Perhaps you've heard that “Perl is Dead”
  10. 10. What they meant was “Perl Must Die”
  11. 11. They're on crack
  12. 12. Perl is very, very alive
  13. 13. Lots of exciting code on CPAN
  14. 14. Moose
  15. 15. Plack
  16. 16. Devel::Declare
  17. 17. AnyEvent
  18. 18. ...and a whole lot more
  19. 19. Two weeks ago, I made the scariest web post of my life
  20. 20. Pic of PAUSE
  21. 21. It had a happy ending
  22. 22. The stable version of Perl is now 5.12.0
  23. 23. Nobody has reported any critical regressions
  24. 24. ...so I haven't broken the Internet...yet
  25. 25. 5.12? What happened to Perl 6?
  26. 26. Perl 6 is a different language
  27. 27. Perl 6 is still being designed and built
  28. 28. rakudo.org
  29. 29. Perl 6 is awesome
  30. 30. Perl 6 is the future
  31. 31. Perl 5 is the future, too
  32. 32. Perl 5 and Perl 6 are sisters
  33. 33. Perl 5 and Perl 6 are friends
  34. 34. “5” and “6” aren't versions of one language
  35. 35. “Perl 5” and “Perl 6” are names...
  36. 36. ...for two different languages
  37. 37. Perl 5's Creator
  38. 38. Perl 6's Creator
  39. 39. Perl 5 and Perl 6 have the same father
  40. 40. “5” and “6” are versions of Larry Wall's brain
  41. 41. We're looking forward to our “little sister” growing up
  42. 42. Perl 6 will not replace Perl 5
  43. 43. A quick reminder...
  44. 44. What was new in Perl 5.10?
  45. 45. given...when
  46. 46. given ($foo) { when (/^abc/) { $abc = 1; } when (/^def/) { $def = 1; } when (/^xyz/) { $xyz = 1; } default { $nothing = 1; } }
  47. 47. defined-or
  48. 48. $a // $b defined $a ? $a : $b
  49. 49. $c //= $d $c = $d unless defined $c
  50. 50. Recursive pattens in regexes
  51. 51. Named captures in regexes
  52. 52. perldoc perl5100delta
  53. 53. What's new in Perl 5.12?
  54. 54. You can use Perl 5.10 features
  55. 55. 5.10 isn't “too new to use” anymore
  56. 56. “use 5.12.0;” includes “use strict”;
  57. 57. Deprecations warn by default
  58. 58. “suidperl” is dead.
  59. 59. package Foo::Bar 1.0;
  60. 60. Y2038 Compliance
  61. 61. Unicode improvements and upgrade to version 5.2.
  62. 62. Pluggable Keywords
  63. 63. Overridable Function Lookup
  64. 64. Dtrace Support
  65. 65. Modules deprecated from the core: ● Class::ISA ● Pod::Plainer ● Shell ● Switch
  66. 66. Don't worry, they're still on CPAN
  67. 67. Yadda yadda yadda...
  68. 68. (A new operator)
  69. 69. sub do_something { die “Unimplemented!”; } do_something();
  70. 70. sub do_something {…} do_something();
  71. 71. j$ perl test.pl Unimplemented at test.pl line 3.
  72. 72. perldoc perl5120delta
  73. 73. Lots of this was new in 5.10.1, too.
  74. 74. New release process
  75. 75. New pumpking
  76. 76. (Me)
  77. 77. So. That “Pumpking” thing
  78. 78. Pumpkin King
  79. 79. Keeper of the Patch Pumpkin
  80. 80. “Patch Pumpkin?”
  81. 81. David Croy once told me once that at a previous job, there was one tape drive and multiple systems that used it for backups. But instead of some high-tech exclusion software, they used a low-tech method to prevent multiple simultaneous backups: a stuffed pumpkin. No one was allowed to make backups unless they had the “backup pumpkin.” Chip Salzenberg
  82. 82. My job got its name because we didn't use a version control system 20 years ago.
  83. 83. Learn from Perl's History
  84. 84. Use Version Control...
  85. 85. ...otherwise, you may have to explain weird software development traditions to your children.
  86. 86. What's the pumpking do?
  87. 87. The Pumpking makes sure that the release of Perl doesn't suck.
  88. 88. ...and that it actually happens.
  89. 89. How it used to work
  90. 90. Perl 5.10
  91. 91. Perl 5.10.0
  92. 92. December 2007
  93. 93. It took 5 years
  94. 94. It burned through two pumpkings
  95. 95. Hugo van der Sanden (hvds)
  96. 96. Resigned in 2004
  97. 97. Rafael Garcia Suarez (rgs)
  98. 98. Resigned July 2009
  99. 99. Perl 5.10.1
  100. 100. Maintenance Release
  101. 101. 2800 commits changing over 350,000 loc in 2600 files
  102. 102. Only 700 or so blead commits weren't picked for 5.10.1
  103. 103. Before 5.12, maint releases: 1)include regression fixes 2)include general fixes 3)include build fixes (so it will compile on new/updated platforms) 4)include newer CPAN modules related to (3) 5)generally update CPAN modules where newer releases are available 6)include new features that aren't too scary and don't break backwards compatibility 7)maintain binary compatibility 8)don't break anything.
  104. 104. Dave Mitchell was the maint pumpking for Perl 5.10.1
  105. 105. He did all that work himself
  106. 106. “Doing all the above is *very* hard.” Dave Mitchell
  107. 107. Dave has a gift for understatement
  108. 108. That was a “maintenance” release
  109. 109. It included module updates...
  110. 110. It included behavior changes...
  111. 111. It included bug fixes...
  112. 112. It included new features...
  113. 113. It was a lot of work
  114. 114. It took too long
  115. 115. Maintenance release
  116. 116. That doesn't sound like “maintenance”
  117. 117. August 2009
  118. 118. Dave Mitchell (dapm)
  119. 119. Retired October 2009
  120. 120. Pumpkings are a precious commodity.
  121. 121. We can't keep burning them out.
  122. 122. The Pumpking's Job ● Hardcore C hacker ● Patch applier ● Release Engineer ● Language Designer ● Supreme Arbiter of Good Taste ● Project Manager ● HR Manager ● Dispute Resolver
  123. 123. Wow. That's a lot of stuff
  124. 124. Like I said before...
  125. 125. Project Janitor
  126. 126. Who have our pumpkings been?
  127. 127. Larry Wall, Andy Dougherty, Tom Christiansen, Charles Bailey, Nick Ing-Simmons, Chip Salzenberg, Tim Bunce, Malcolm Beattie, Gurusamy Sarathy, Graham Barr, Jarkko Hietaniemi, Hugo van der Sanden, Michael Schwern, Rafael Garcia- Suarez, Nicholas Clark, Richard Clamp, Leon Brocard, Dave Mitchell.
  128. 128. ...and now me
  129. 129. I don't want to burn out
  130. 130. How do you get to be pumpking?
  131. 131. (Traditionally)
  132. 132. Be a hardcore C hacker...
  133. 133. ...who loves Perl...
  134. 134. ...and has a responsibility complex
  135. 135. That's right
  136. 136. We take our best hackers...
  137. 137. ...and make them into managers
  138. 138. That is a complete waste of their talents
  139. 139. Nobody since Larry has been pumpking for two major versions
  140. 140. We can't keep losing pumpkings!
  141. 141. After rgs and dapm...
  142. 142. ...we ran out of qualified pumpkings!
  143. 143. This system is broken
  144. 144. How do you fix a broken system?
  145. 145. Reimplement from scratch!
  146. 146. Like I said, earlier
  147. 147. Perl 6 is the future
  148. 148. Perl 6 is not Perl 5
  149. 149. How else do you fix a broken system?
  150. 150. Refactoring!
  151. 151. Role decomposition?
  152. 152. What is the pumpking?
  153. 153. Hardcore C hacker
  154. 154. Delegate it!
  155. 155. Patch applier
  156. 156. Delegate it!
  157. 157. Release Engineer
  158. 158. Delegate it!
  159. 159. Language Designer
  160. 160. Delegate it!
  161. 161. (partially)
  162. 162. Supreme Arbiter of Good Taste
  163. 163. Core responsibility!
  164. 164. Dispute Resolver
  165. 165. Core responsibility!
  166. 166. “HR” Manager
  167. 167. Core Responsibility!
  168. 168. Project Manager
  169. 169. Core responsibility!
  170. 170. Ok.
  171. 171. Pumpkings don't need to be C hackers
  172. 172. Development releases leading to 5.10.0:
  173. 173. 5.9.0 2003-10-27
  174. 174. 5.9.1 2004-03-16
  175. 175. 5.9.2 2005-04-01
  176. 176. 5.9.3 2006-01-28
  177. 177. 5.9.4 2006-08-15
  178. 178. 5.9.5 2007-07-07
  179. 179. Development releases leading to 5.12.0:
  180. 180. 5.11.0 2009-10-02
  181. 181. 5.11.1 2009-10-20
  182. 182. 5.11.2 2009-11-20
  183. 183. 5.11.3 2009-12-20
  184. 184. 5.11.4 2010-01-20
  185. 185. 5.11.5 2010-02-20
  186. 186. 5.12.0-RC1 2010-03-21
  187. 187. 5.13.0 2010-04-20
  188. 188. Detect a trend?
  189. 189. Every Month
  190. 190. On the 20th
  191. 191. That sounds like a lot of work
  192. 192. I won't lie
  193. 193. 5.11.0 took me 4 days
  194. 194. 5.11.1 took me 2 days
  195. 195. 5.11.2 released by Leon Brocard
  196. 196. 5.11.3 released by me
  197. 197. 5.11.4 released by Ricardo Signes
  198. 198. 5.11.5 released by Steve Hay On Windows!!
  199. 199. Development releases now take hours instead of days.
  200. 200. The process is documented. See porting/release_manager_guide.pod
  201. 201. Release managers make dev releases See porting/release_schedule.pod
  202. 202. Pumpkings don't need to.
  203. 203. Who actually makes Perl?
  204. 204. 4 1 0- 0 20 5.12.0 1 0 9- 1 20 6 0 9- 0 20 5.11.0 Unique authors per month 5.10.1 1 0 9- 0 20 5.10.0 8 0 8- 0 20 3 0 8- 0 20 0 0 7- 1 20 5 0 7- 0 20 2 0 6- 1 20 7 0 6- 0 20 2 0 6- 0 20 9 0 5- 0 20 4 0 5- 0 20 1 0 4- 1 20 5.9.0 6 0 4- 0 20 1 0 4- 0 20 8 0 3- 0 5.8.0 20 3 0 3- 0 20 0 0 2- 1 20 5 0 2- 0 20 n th Mo 70 60 50 40 30 20 10 0
  205. 205. 2 -1 09 20 7 -0 09 Commits per author per month 20 2 -0 09 20 9 -0 08 20 4 -0 08 20 1 -1 07 20 - 06 07 20 1 -0 07 20 8 -0 06 20 3 -0 06 20 0 -1 05 20 5 -0 05 20 2 -1 04 20 7 -0 04 20 2 -0 04 20 - 09 03 20 4 -0 03 20 1 -1 02 20 6 -0 02 20 1 -0 02 20 8 6 4 2 0 18 16 14 12 10
  206. 206. 800 700 600 500 400 300 200 100 0 1 0-0 201 Pumpking-authored-patches Pumpking vs Contributor Patches 9 -09 200 - 05 Porter Patches 9 200 9 - 01 200 8 - 09 200 8 - 05 200 1 8 -0 200 7 - 09 200 7 - 05 200 7 - 01 200 6 - 09 200 6 - 05 200 6 - 01 200 5 - 09 200 5 - 05 200 5 - 01 200 4 - 09 200 5 4-0 200 4 -01 200 3 - 09 200 3 - 05 200 3 - 01 200 2 - 09 200 5 2 -0 200 2 - 01 200 0 800 700 600 500 400 300 200 100
  207. 207. 800 700 600 500 400 300 200 100 0 0 - 01 201 Pumpking vs Contributor Patches 9 - 09 200 9 - 05 200 9 - 01 200 9 8 -0 200 8 - 05 200 8 - 01 200 7 - 09 200 7 - 05 200 7 - 01 200 6 -09 200 6 - 05 200 6 - 01 200 5 - 09 200 5 - 05 200 5 - 01 200 4 -09 200 4 - 05 200 4 - 01 200 3 - 09 200 3 - 05 200 3 - 01 200 2 -09 200 2 - 05 200 2 - 01 200 800 700 600 500 400 300 200 100 0
  208. 208. What about "Stable releases"?
  209. 209. Old maintperl policy
  210. 210. New releases of maint should contain as many changes as possible
  211. 211. New maintperl policy
  212. 212. New releases of maint should contain as few changes as possible
  213. 213. If there is any question about whether a patch should be backported to maint, then the answer is probably “No!”
  214. 214. What's OK
  215. 215. Portability fixes, like changes to Configure and hints/
  216. 216. Documentation updates
  217. 217. Fixes for crashes that don't change features or hurt performance
  218. 218. Patches to fix security issues
  219. 219. Minimal patches to fix crashes or security issues in CPAN modules
  220. 220. What's not OK
  221. 221. New warnings or errors
  222. 222. Deprecating features
  223. 223. New versions of dual-life modules
  224. 224. Breaking binary compatibility
  225. 225. Adding or removing features
  226. 226. Ports to a new platform or OS
  227. 227. ...anything else
  228. 228. When's 5.12.1 coming?
  229. 229. Estimated: May 12, 2010
  230. 230. So, what's coming in 5.12.1?
  231. 231. Bugfixes
  232. 232. 5.12.x will come every 3 months
  233. 233. When's 5.14 coming?
  234. 234. Spring 2011
  235. 235. What's coming in 5.14?
  236. 236. I don't know
  237. 237. What I want in Perl 5.14
  238. 238. AST roundtripping improvements
  239. 239. Easier CPAN module install
  240. 240. Better connectivity
  241. 241. HTTP Client
  242. 242. IPv6
  243. 243. SSL?
  244. 244. Performance improvements
  245. 245. Memory use improvements
  246. 246. What do you want in Perl 5.14?
  247. 247. Trying out 5.12.0
  248. 248. perlbrew (gugod)
  249. 249. # install perlbrew curl -O -L http://xrl.us/perlbrew perl perlbrew install # setup perlbrew ~/perl5/perlbrew/bin/perlbrew init echo "source $HOME/perl5/perlbrew/etc/bashrc" >> ~/.bashrc # restart your shell exec $SHELL # install perl 5.12.0: this takes ~10 minutes perlbrew -v install perl-5.12.0 perlbrew switch perl-5.12.0
  250. 250. Thanks!
  251. 251. Questions? Jesse Vincent jesse@perl.org

×