They'd been waiting for more than a decade. And then Monday night in San Francisco, where the Embarcadero meets the Bay, Craigslist took over the Exploratorium for a long-awaited event. They handed out bottle openers with built-in flash drives, as well as t-shirts and Craigslist stickers with the new Perl 6 logo. "Help yourself to food and Larry and drinks," one greeter told me. Larry Wall, the creator of Perl, was circulating through the room in a red and white Hawaiian shirt, chatting and posing for pictures...
It felt like a great moment in geek history. More than a decade after O'Reilly Media released their book about the "upcoming" Perl 6 language, the celebratory launch of this first development release had finally arrived. Craigslist hosted the event, so there were classy little appetizer plates with banh mi sandwiches, dolma rolls with olives, and even little bowls of sobe salad. Waiters circulated throughout the celebration, handing out free drinks which all appeared to be California-produced wine and beers. (Lagunitas, Sierra Nevada ...)
And now, 28 years after the first release of Perl — and more than 20 years after Perl 5 — Larry Wall was going to unveil something new...
At 7:30 the room grew quiet, and the small throng of geeks migrated into the "Kanbar Forum" room — a small auditorium with a large presentation screen — for the official unveiling. Someone told me even Randal L. Schwartz was in the room. There was already a browser on the screen that was displaying the Perl6 home page at Perl6.org, and two more tabs appeared to be IRC logs "for #p..." The quiet chatter turned to applause when Larry Wall finally walked out onto the stage. Then he made shadow puppets on the screen with his fingers — and left.
"I have to say, these language designers can be such a tease sometimes," joked Jeremy Zawondy from Craigslist. He'd come up to the podium to officially introduce Larry before the main presentation. Jeremy noted the parallel development of Perl 5 and Perl 6, arguing that it really says something about the Perl community. And then he shared how people had answered his question when RSVPing for the event on Meetup. "What do you love about Perl?"
"I've been using it forever. It's part of my brain."
"Because it's so wrong." (Applause) Jeremy turned to the audience and said, "So far I agree with all of these."
"Brevity and Power."
"It dares to be weird.
"It's been paying the bills for 20 years." (Jeremy pointed out what a remarkable statement that was...)
"It makes me feel happy."
"Its love is unconditional."
"My first and only successful company was built on Perl." (Laughter and applause)
"Perl loves me."
"And last, but not least: 'It's readable'." (Laughter from audience...) But Jeremy said he'd been talking to Larry and his wife about the old joke comparing Perl code to line noise. And he noted that later, languages started copying Perl's built-in support for regular expressions. "They made fun of Perl, but..." Then he said something about "years to come" — I'm not sure if he was talking about Larry or Perl — and then finally Larry Wall came back onto the stage.
He removed his leather cowboy hat, smiled, and then playfully handed the hat to his wife. One of the first things he said was a thank-you to Craigslist, "for sponsoring me these last few years." 61-year-old Larry Wall said he couldn't properly express his gratitude to Craigslist. And then he launched into his first series of slides.
Larry Wall Presents; Perl 6
By, er, Larry Wall.
He alluded to the road ahead, joking that because he was using vim as his text editor, it was trivially easy to re-write the version number for Perl's new compiler as 18.104.22.168.0.0.0.0.0. Then he added something about a versioning system with a holiday theme — 6.Birthday and 6.Christmas...
My favorite slide said "More bugs. Less docs." ("Wait, that's a bug," Larry joked, quickly replacing it with a slide that said "More docs, less bugs.") For example, he described one of Perl's earlier problems as "Hanging things on the wrong peg." (That is, too many things being accessible in the "global" namespace, which Larry proved by displaying the keys from a hash of global environment variables.) Then he ran the same code on Perl 6, which found no variables in the global namespace. A lot of them went instead into the CORE library. "They're hung on the right peg," Larry said, "instead of the wrong peg..."
He seemed pleased to be upgrading a language that he'd first shared with the world more than 28 years ago. He pointed out that Perl 6 would have fewer arbitrary lists for geeks to memorize. (Like which symbols are global, but also which functions use the special $_ variable as their default parameter). And Larry demonstrated a Perl 6 program which, among other things, made use of the trendy new "enumerated" type. The program simulated a forest fire using tree icons in one of four states.
enums <Empty Tree Heating Burning>
Amazingly, all the little tree icons were continuously being re-drawn surprisingly quickly on his screen, each one using different ANSI colors to simulate their current state. Larry explained that this was being facilitated by the tree object's "direct-access variables", created by adding a "bang" after the variable-type sigil.
"By the way, strict is default," he said, drawing enthusiastic applause from the audience. The strict pragma stops the troublesome auto-creation of new variables when a variable name is accidentally mistyped — which has plagued Perl developers for years.
He also said something about improving the scoping of methods by looking up the call stack (noting Perl's infamous attempt at a local function back in the 1990s). There was a nod to other quirks of Perl 5 — "multi-pass parsing" and various examples of "action at a distance" — showing that he'd really dug down into the "guts" of Perl.
He had a funny response when someone asked about his philosophy about what should be included in the standard library. First he replied that Perl 6 is analogous to the Linux kernel, in the sense that nobody only downloads it by itself. ("They download a distribution.") So unlike some other programming languages, these "editorial decisions" about what should be included are delegated to the creators of those distributions. "In other words...we punt."
But one of the most impressive bullet points was just two words: "dog food". Instead of dipping into the Unix tool box for the language's implementation, "In Perl 6, we 'eat our own dog food.' " Much of the "guts" of Perl 6 — like the parser and the runtime — is now actually written in Perl 6. And they're also working on an advanced bundling. ("We plan to do better than CPAN.")
He seemed excited that universities would now have a single language that could be used to teach every style of programming — from functional to procedural. With an eye toward the future, he said "Some professors will think that's a great thing." And this came up again after a very thoughtful observation about the new butterfly logo for Perl 6.
"Paul Graham wrote this thing about the 100-year language," Larry remembered, which had inspired some thoughts about language longevity. So the new butterfly logo for Perl 6 "is specifically designed, among other things, to appeal to 7-year-old girls. The Python community has done a much better job appealing to kids with fun stuff.
"We don't expect to be the language of the week. We don't want to play that game. We want it to keep being there... We don't want their language to run out of steam. It might be a 30- or 40-year language. I think it's good enough." And then someone in the audience asked him which part of Perl 6 was his favorite.
"The part where we get done," he answered.
"I kind of like all of it, really."