Perl 5.12
       Jesse Vincent
     jesse@perl.org
Hi!
I'm Jesse
I'm the Perl 5
  “Pumpking”
Pumpking?
I'll explain later
For now, just
 think of me as
“project janitor”
Perl 5 is 16
 years old
Perhaps you've
   heard that
 “Perl is Dead”
What they
  meant was
“Perl Must Die”
They're
on crack
Perl is very,
 very alive
Lots of exciting
code on CPAN
Moose
Plack
Devel::Declare
AnyEvent
...and a whole
    lot more
Two weeks
ago, I made the
  scariest web
 post of my life
Pic of PAUSE
It had a
 happy
 ending
The stable
version of Perl
 is now 5.12.0
Nobody has
reported any
    critical
 regressions
...so I haven't
  broken the
 Internet...yet
5.12? What
happened to
  Perl 6?
Perl 6 is a
 different
language
Perl 6 is still
being designed
   and built
rakudo.org
Perl 6 is
awesome
Perl 6 is the
  future
Perl 5 is the
 future, too
Perl 5 and Perl
 6 are sisters
Perl 5 and Perl
 6 are friends
“5” and “6”
aren't versions
     of one
   language
“Perl 5” and
“Perl 6” are
  names...
...for two
  different
languages
Perl 5's Creator
Perl 6's Creator
Perl 5 and Perl 6
 have the same
      father
“5” and “6” are
  versions of
  Larry Wall's
     brain
We're looking
forward to our
 “little sister”
  growing up
Perl 6 will not
replace Perl 5
A quick
reminder...
What was new
in Perl 5.10?
given...when
given ($foo) {
  when (/^abc/) { $abc   = 1; }
  when (/^def/) { $def   = 1; }
  when (/^xyz/) { $xyz   = 1; }
  default {...
defined-or
$a // $b


defined $a ? $a : $b
$c //= $d



$c = $d unless defined $c
Recursive
pattens in
 regexes
Named
captures in
 regexes
perldoc perl5100delta
What's new in
 Perl 5.12?
You can use
 Perl 5.10
  features
5.10 isn't “too
 new to use”
  anymore
“use 5.12.0;”
   includes
 “use strict”;
Deprecations
warn by default
“suidperl” is
   dead.
package Foo::Bar 1.0;
Y2038
Compliance
Unicode
improvements
and upgrade to
 version 5.2.
Pluggable
Keywords
Overridable
 Function
 Lookup
Dtrace Support
Modules deprecated from the core:
●   Class::ISA
●   Pod::Plainer
●   Shell
●   Switch
Don't worry,
they're still on
    CPAN
Yadda yadda
  yadda...
(A new
operator)
sub do_something {
  die “Unimplemented!”;
}

do_something();
sub do_something {…}



do_something();
j$ perl test.pl

Unimplemented at test.pl line 3.
perldoc perl5120delta
Lots of this was
 new in 5.10.1,
      too.
New release
  process
New pumpking
(Me)
So. That
“Pumpking”
   thing
Pumpkin King
Keeper of the
Patch Pumpkin
“Patch
Pumpkin?”
David Croy once told me once that at a previous
job, there was one tape drive and multiple
systems that used it for backup...
My job got its name
  because we didn't
use a version control
system 20 years ago.
Learn from
Perl's History
Use Version
 Control...
...otherwise, you may
have to explain weird
software development
   traditions to your
       children.
What's the
pumpking do?
The Pumpking
 makes sure that
  the release of
Perl doesn't suck.
...and that it
   actually
  happens.
How it used to
   work
Perl 5.10
Perl 5.10.0
December 2007
It took 5 years
It burned
through two
 pumpkings
Hugo van der
Sanden (hvds)
Resigned in
  2004
Rafael Garcia
Suarez (rgs)
Resigned July
    2009
Perl 5.10.1
Maintenance
 Release
2800 commits
changing over
350,000 loc in
  2600 files
Only 700 or so
blead commits
weren't picked
   for 5.10.1
Before 5.12, maint releases:
1)include regression fixes
2)include general fixes
3)include build fixes (so it will compile ...
Dave Mitchell
was the maint
pumpking for
 Perl 5.10.1
He did all that
work himself
“Doing all
the above is
*very* hard.”

Dave Mitchell
Dave has
   a gift for
understatement
That was a
“maintenance”
   release
It included
  module
updates...
It included
 behavior
changes...
It included
bug fixes...
It included
new features...
It was
a lot of work
It took too long
Maintenance
  release
That doesn't
  sound like
“maintenance”
August 2009
Dave Mitchell
  (dapm)
Retired
October 2009
Pumpkings are
  a precious
 commodity.
We can't keep
burning them
    out.
The Pumpking's Job
●   Hardcore C hacker
●   Patch applier
●   Release Engineer
●   Language Designer
●   Supreme Arbiter ...
Wow. That's a
 lot of stuff
Like I said
 before...
Project Janitor
Who have our
 pumpkings
   been?
Larry Wall, Andy Dougherty, Tom
  Christiansen, Charles Bailey, Nick
Ing-Simmons, Chip Salzenberg, Tim
 Bunce, Malcolm Bea...
...and now me
I don't want to
   burn out
How do you
 get to be
pumpking?
(Traditionally)
Be a hardcore
 C hacker...
...who loves
    Perl...
...and has a
responsibility
    complex
That's right
We take our
best hackers...
...and make
  them into
 managers
That is a
complete waste
 of their talents
Nobody since
Larry has been
 pumpking for
  two major
   versions
We can't keep
   losing
 pumpkings!
After rgs and
   dapm...
...we ran out of
    qualified
   pumpkings!
This system is
    broken
How do you fix
  a broken
  system?
Reimplement
from scratch!
Like I said,
  earlier
Perl 6 is the
  future
Perl 6 is not
  Perl 5
How else do
you fix a broken
   system?
Refactoring!
Role
decomposition?
What is the
pumpking?
Hardcore C
 hacker
Delegate it!
Patch applier
Delegate it!
Release
Engineer
Delegate it!
Language
Designer
Delegate it!
(partially)
Supreme
Arbiter of
Good Taste
Core
responsibility!
Dispute
Resolver
Core
responsibility!
“HR” Manager
Core
Responsibility!
Project
Manager
Core
responsibility!
Ok.
Pumpkings
don't need to
be C hackers
Development
  releases
 leading to
   5.10.0:
5.9.0
2003-10-27
5.9.1
2004-03-16
5.9.2
2005-04-01
5.9.3
2006-01-28
5.9.4
2006-08-15
5.9.5
2007-07-07
Development
  releases
 leading to
   5.12.0:
5.11.0
2009-10-02
5.11.1
2009-10-20
5.11.2
2009-11-20
5.11.3
2009-12-20
5.11.4
2010-01-20
5.11.5
2010-02-20
5.12.0-RC1
2010-03-21
5.13.0
2010-04-20
Detect a trend?
Every Month
On the 20th
That sounds
 like a lot of
     work
I won't lie
5.11.0 took me
    4 days
5.11.1 took me
    2 days
5.11.2 released
    by Leon
    Brocard
5.11.3 released
     by me
5.11.4 released
  by Ricardo
    Signes
5.11.5 released
 by Steve Hay
        On Windows!!
Development
  releases now
    take hours
instead of days.
The process is
  documented.
See porting/release_manager_guide.pod
Release
    managers
    make dev
    releases
See porting/release_schedule.pod
Pumpkings
don't need to.
Who actually
makes Perl?
4
                                                                                                         1   0- 0
      ...
2
                                                                                -1
                                     ...
800



                                                            700



                                                ...
800



                                        700



                                              600



               ...
What about
  "Stable
releases"?
Old maintperl
   policy
New releases
of maint should
   contain as
many changes
  as possible
New maintperl
   policy
New releases
of maint should
contain as few
  changes as
    possible
If there is any question about
  whether a patch should be
backported to maint, then the
    answer is probably “No!”
What's OK
Portability fixes,
like changes to
 Configure and
      hints/
Documentation
   updates
Fixes for
  crashes that
  don't change
features or hurt
  performance
Patches to fix
security issues
Minimal patches
 to fix crashes or
security issues in
  CPAN modules
What's not OK
New warnings
  or errors
Deprecating
 features
New versions
 of dual-life
  modules
Breaking binary
 compatibility
Adding or
removing
 features
Ports to a new
platform or OS
...anything else
When's 5.12.1
  coming?
Estimated: May
   12, 2010
So, what's
coming in
 5.12.1?
Bugfixes
5.12.x will come
every 3 months
When's 5.14
 coming?
Spring 2011
What's coming
  in 5.14?
I don't know
What I want in
 Perl 5.14
AST
 roundtripping
improvements
Easier CPAN
module install
Better
connectivity
HTTP Client
IPv6
SSL?
Performance
improvements
Memory use
improvements
What do you
want in Perl
  5.14?
Trying out
  5.12.0
perlbrew
(gugod)
# install perlbrew
curl -O -L http://xrl.us/perlbrew
perl perlbrew install

# setup perlbrew
~/perl5/perlbrew/bin/perlbrew...
Thanks!
Questions?
        Jesse Vincent
      jesse@perl.org
Perl 5.12.0
Perl 5.12.0
Perl 5.12.0
Upcoming SlideShare
Loading in …5
×

Perl 5.12.0

4,229 views

Published on

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,229
On SlideShare
0
From Embeds
0
Number of Embeds
37
Actions
Shares
0
Downloads
45
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

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

×