Perl 6
Sprixel: Revision 5

The name is a cute anagram of "Perl six". There is an existing but dormant version, and a radically different yet-to-be-released version.

Matthew Wilson (diakopter) has prototyped several Perl 6 implementations. His fourth one started out being called "vijs", because it connected the viv language parser to a runtime interpreter written in JavaScript. Along the way it got renamed to "Sprixel". The JavaScript was executed by the V8 Just-In-Time compiler and runtime that also gives the Google Chrome browser its extremely fast JavaScript performance. Any other JavaScript engine, or any other browser, can also be used, but they would be slower. Sprixel also runs in a text only mode without a web browser.

The main Sprixel program is written in Perl 5. It embeds viv and calls it to convert Perl 6 source to an Abstract Syntax Tree that is structured as set of nested Perl 5 hashes and arrays. Sprixel strips that AST to the most essential content and produces a JSON structure from it. Sprixel then calls the V8 JavaScript processor, passing it startup code, libraries and the JSON structure made from the AST. The startup code loads the JSON representation of your program, and the runtime libraries (all written in JavaScript) interpret the code in the (now in JavaScript data) AST.

Therefore deep down the Sprixel currently available at http://svn.pugscode.org/pugs/src/perl6/sprixel is an AST interpreter, but a fairly quick one when run on V8.

Development of this version of Sprixel stalled because implementing the complex features of Perl 6 in JavaScript became increasingly difficult, and also because diakopter wanted more speed than viv was ever going to give.

After several months of experimentation diakopter settled on C# as the new target language, targeting both the Mono and the .NET virtual machines. It will use a module called RunSharp to dynamically generate and execute native machine code via the Common Language Runtime bytecode. The new version of Sprixel will contain its own regex and grammar engine, and will probably need to keep its own derived variant of STD.pm for the Perl 6 language definition. The microbenchmarks published in #perl6 so far promise extremely fast parsing and execution performance.


Upload Files

Click "Browse" to find the file you want to upload. When you click "Upload file" your file will be uploaded and added to the list of attachments for this page.

Maximum file size: 50MB

 
 
 
File Name Author Date Uploaded Size

Save Page As

Enter a meaningful and distinctive title for your page.

Page Title:

Tip: You'll be able to find this page later by using the title you choose.

Page Already Exists

There is already a page named XXX. Would you like to:

Save with a different name:

Save the page with the name "XXX"

Append your text to the bottom of the existing page named: "XXX"

Upload Files

Click "Browse" to find the file you want to upload. When you click "Add file" this file will be added to the list of attachments for this page, and uploaded when you save the page.

 
 
 
Add Tags

Enter a tag and click "Add tag". The tag will be saved when you save the page.

Tag: 

Suggestions: