Sign In/My Account | View Cart  
advertisement


Listen Print

State of the Onion 2003
by Larry Wall | Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11

Good design is neither fast nor cheap. Every time we crank out a new chunk of the design of Perl 6 or of Parrot, it's a bit like writing a master's thesis. It's a lot of reading, and a lot of writing, and a lot of thinking, and a lot of email, and a lot of phone conferences. It's really complicated and multidimensional.

escher

There's a lot going on behind the scenes that you don't hear about every day. Many people have sacrificed to give us time to work on these things. People have donated their own time and money to it. O'Reilly and Associates have donated phone conferences and other infrastructure. The Perl 6 design team in particular has borne a direct financial cost but also a tremendous opportunity cost in pursuing this at the expense of career and income. I'm not looking for sympathy, but I want you to know that I almost certainly could have landed a full-time job 20 months ago if I'd been willing to forget about Perl 6. I'm extremely grateful for the grants the Perl Foundation has been able to give toward the Perl 6 effort. But I just want you to know that it's costing us more than that.

But Perl 6 is all about freedom, and that's why we're willing to pledge our lives, our fortunes, and our sacred honor.

Times are tough, and I'm not begging for more sacrifice from you good folks. I just want to give a little perspective, and fair warning that at some point soon I'm going to have to get a real job with real health insurance because I can't live off my mortgage much longer. It's bad for my ulcer, and it's bad for my family.

Fortunately, the basic design of Perl 6 is largely done, appearances to the contrary notwithstanding. Damian and I will be talking about that in the Perl 6 session later in the week.

Well, enough ranting. I don't want to sound ungrateful myself, because I'm not. In any event, the last three years have been extremely exciting, and I think the coming years will be just as interesting.

In particular, I have a great announcement to make at the end of my talk about what's going to be happening next. But let me explain a bit first what's happened, again using our poor, abused widget.

implementations

In this case, time is flowing in the upward direction.

Originally we just had one implementation of Perl, and the general perception as we started developing Perl 6 was that we were going to have two implementations of Perl.

But in actual fact, we're going to have at least three implementations of Perl.

First, the good old Perl 5 that's based on C, And on the right, the Perl 6 that's based on Parrot. But there in the middle is a Perl5 that is also based on Parrot.

ellipses

Note that the left two are the same language, while the right two share the same platform.

So what's that Perl 5 doing there in the middle? If you've been following Perl 6 development, you'll know that from the very beginning we've said that there has to be a migration strategy, and that that strategy has two parts. First, we have to be able to translate Perl 5 to Perl 6. If that were all of it, we wouldn't need the middle Perl there. But not only do people need to be able to translate from Perl 5 to Perl 6, it is absolutely crucial that they be allowed to do it piecemeal. You can't translate a complicated set of modules all at once and expect them to work. Instead, we want people to be able to run some of their modules in Perl 5, and others in Perl 6, all under the same interpreter.

So that's one good reason to have a Perl 5 compiler for Parrot. Another good reason is that we expect Perl 5 to run faster on Parrot, by and large.

hands

Yet another reason is that we have a little bootstrapping issue with the Perl 6 grammar. The Perl 6 grammar is defined in Perl 6 regexes. But those regexes are parsed with the Perl 6 grammar. Catch 22. The solution to this involves two things. First, a magical module of Damian's that translates Perl 6 regexes back into Perl 5 regexes. Second, a Perl 5 regex interpreter to run those regexes. Now, it'd be possible to do it with old Perl 5, but it'll be cleaner to run it with the new Perl 5 running on Parrot.

widget

Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11

Next Pagearrow