Getting gutsy with perl5
Todd Rinaldo has been working on the guts of Perl recently as part of the Perl compiler project at cPanel. He began with some of the pre-requisites needed to understand the presentation, including a basic understanding of C:
- structures
- unions
- arrays
- typedefs
- #define
He showed Nicolas Rochelemagne's talk Introduction to Perl Internals to give some background. Nicolas covered some of the basics of Perl internal data structures and some information about how perl handles memory.
After the video, Todd explained the B::C
module and some of its
siblings. He explained the difference between a stash and a pad, and talked
about how new pads are added each time you add a scope. Todd spent a little
more time discussing the internal data structures, mostly focusing on how they
relate to stashes and pads.
Next, he discussed how the parser doesn't actually generate an op-tree, as you might guess from an study of compilers. Instead, it generates several op-trees, that are linked together by entries in the stashes. He recommended spending time studying Reini Urban's Ill Guts if you are going to spend any time understanding this stuff.
He spent some time discussing some of what cPanel is using the compiler for and what they hoped to accomplish. He discussed some ideas about optimizing op-trees.
The talk generated several interesting discussions, that branched off the main topic at times.
We had 13 people attending this month. As always, we'd like to thank cPanel, Inc. for providing the meeting space and food for the group.