A smaller, faster, more agile Perl

I've been working on a secret project lately, and I wasn't quite sure it was going work out. Most forks of Perl don't, but because they try to go bigger. I needed something that went smaller. Miniperl and microperl, both parts of the core distribution, weren't enough.

It started with a customer who wanted to limit what could happen, but the Safe compartments weren't sufficient to limit that. I had advised against Perl for this situation, but they were adamant that it had to be Perl. So, I and some of their programmers set about removing or disabling parts from core.

Some stuff was easy. Smart-matching and overloading were gone the first day, but that was only a warm up.

Perl has this backronym as the Practical Extraction and Report Language. There's even an extra A in there from a previous name. While looking at this particular scenario, we realized that we didn't need most of the extraction stuff. We ripped out all of that. Since this is a new language, really, and we can't use the same name (see the Artistic License) for it, we called it PRL: Practical Report Language. It was pretty good. Malicious users could send all the malicious input they wanted, but there was no way to process it. We'd cut out most of the problems with programming in this step.

Things got a bit heated in the next phase when we were hard up to remove even more. We needed the reports, and we needed the language, so we set our sites on Practical. After all, we had to admit to ourselves that most people's use of the language isn't practical at all, so if no one on the team is going to use the P, we didn't need to keep it in. We called Phase 2 RL.

One of the other team members had gone off on his own in an experiment to create PL by getting rid of the reports. His reduction was elegant since the programmer was freed from both input and output. He wanted to release an alpha, which he called PL/1, but after he found out that name was taken, he gave up. He disappeared into Crowdtilt, a Perl shop, last I heard, and was working on PL/2.

We still weren't hitting our milestones though, especially since cPanel and Booking had been poaching Perl developers with lucrative offers to live below sea level while working on things that don't do well when they get wet. Under management pressure to cut the size in half, we stopped working on the language side of it and got rid of the L. Our new language was called R.

Our code base passed it's one test (that the tar ball existed), so we also turned off the integration and continuous testing services. We didn't need CPAN testers anymore because you couldn't use third-party modules--those bits on untrusted code that mess up most projects by adding even more functionality to your program.

Once we got to this point, we were done. Maybe not finished, but we weren't going to work on it anymore. We told management we were done, sent in the invoices, and pointed them at www.r-project.org to get our new language (some executives went to www.our-project.org and were really upset that we didn't go through international sales to set this up). After we told them that we were giving them the R website and community for free, they were happy again.

But, someone else in management didn't get the memo about the work we'd done, got nervous about Windows XP being marked as end-of-life, and pressured the executives to use his nephew to redesign everything in VBScript since they already had a license for Excel. I got them to release our internal work to the public so it wouldn't go to waste.

If you want to use it too, it's all open source and on the web. Good luck and don't let me know what you think!

2 Comments

I'm pretty sure that you forgot to mention that the meaning of the remaining 'R' changed also: Now it stands for "Reduction". The amount of reduction would have statisfied a 'RR' but this acronym is unfortunately used by a car brand which doesn't come to mind thinking of reduction.

It took me some paragraphs to understand the mental depth of this blog post. Very very good.

Best regards
McA

I was going through my RSS backlog when I read this. I'm not proud to say that I didn't realize it was posted on April 1st until the PL/1 paragraph.

Leave a comment

About brian d foy

user-pic I'm the author of Mastering Perl, and the co-author of Learning Perl (6th Edition), Intermediate Perl, Programming Perl (4th Edition) and Effective Perl Programming (2nd Edition).