Topaz is still on SourceForge

Topaz, which was almost the next version of Perl in 2000, is still in Sourceforge. Chip Salzenberg had a hunch that rewriting Perl’s guts in C++ would be the thing to solve its maintenance issues. He codenamed his project Topaz and went to work.

He didn’t get it working though, and Chip’s the sort of guy that can get anything working. He took C++ to its limits. At the 1999 OSCON, he explained what he wanted to do and why he chose C++ in his talk Topaz: Perl for the 22nd Century. It’s old enough that there’s a RealAudio version of the talk. Heck, the Topaz repo uses CVS. I tried compiling CVS but it doesn’t like my getline (and I didn’t try that hard).

Blue topaz

A year later he had given up, for solid technical reasons, but also because the community pushed all in for Perl 6. I recall a talk where Chip discussed very technical C++ things he discovered, but it seems to have disappeared from the world. We also might have been sitting around a table in the hallway listening to him talk about it too. For what it’s worth, Simon Cozens tried a similar thing with Sapphire (and there’s Perl 11 and RPerl and …).

Much of the discussion around that time was about which language the next perl sources would use. The then current Perl 5 sources were in C and had macros on top of macros (on top of macros) as it bent over backward to not conflict with other C code it might be embedded next to. Today we have DBI as a generic database interface, but back in the day there were things like oraperl, an Oracle client with Perl embedded in it (or Perl with an Oracle client embedded in it).

Other options were briefly considered, but a crazy idea stuck. Perl 6 would be written in Perl 6. That sounds a little weird, but if you unwind it a bit it works.

There’s NQP, or “Not Quite Perl 6” which serves as a basic layer between a virtual machine and Perl 6. From that, NQP looks quite a bit like Perl 6 and can bootstrap Perl 6. As long as NQP can translate its part to the layer under it, Perl 6 can go anywhere NQP can go. That might be Parrot, a JVM, or MOAR (MetaModel on a Runtime).

One comment

Leave a Reply

Your email address will not be published. Required fields are marked *