Parrot is a virtual machine designed to efficiently compile and execute bytecode for dynamic languages. Parrot currently hosts a variety of language implementations in various stages of completion, including Tcl, Javascript, Ruby, Lua, Scheme, PHP, Python, Perl 6, APL, and a .NET bytecode translator. Parrot is not about parrots, though we are rather fond of them for obvious reasons.

Progress at Last!

This week in HBDB world was very productive. I was able to identify the root of all the difficulties and complications that I've been experiencing: poor design.

More objects.

Puffin staring

Isn't the puffin just great? Hopefully he'll be enough to distract you from the rest of the post.

GSoC 3: My God, It's Full of Goto

This has been a bit of an eventful week outside of GSoC. I had another housemate move in, so I'm surrounded by boxes and keep getting asked to move this or fix something around the house. But progress has been made:

June 6 PAST::Node in NQP: Conversion of PAST::Node and it's seven subclasses into full NQP code.

CorellaScript: Parsing JavaScript

hmm... done with the parser and AST part. learned the use of
temporary scope and closures in JavaScript.
Quite interesting to see how Jison can make help in parsing languages.

Will start work on code generator this week, and implement basic features.

repository for the project will be CorellaScript

Looking forward to lots of coding.

Breakpoints...Again

While I feel like I got a lot of work done today, this past week was unfortunately much like the last: frustrating. Implementing breakpoints has turned out to be a lot more...interesting...than I had expected. And to what do I owe this great frustration? Why IMCC of course! For those of you who are unfamiliar with this, IMCC stands for "I Make Coders Cry."

Here's why:

A very simple algorithm for creating a breakpoint would look like this:

1. User enters command breakpoint 12
2. Store line number 12 somehwere
3. Run code

Parrot-GMP: Yo dawg, heard you like generating code...

Step 1 for my project involved reading GMP.h and generating an NCI definition file from that. I've tweaked a few settings in the unimaginatively named "gmph2ncidef.pl" script that does that and refactored some common parts out in to YAML configuration files. This generates a PIR source file that gives us access to the GMP library functions.

1+2. And objects!

Finally done with exams, yesterday was my last. Ever, hopefully. So I had time to do some work. You can find it at either http://bitbucket.org/lucian1900/puffin or http://github.com/lucian1900/puffin. I pull from bitbucket, but push to both.



GSoC 2: Keeping Up the Pace

Today will be very brief. I'm a bit tired as my holiday weekend was very busy.

May 30 PAST NQP Framework: Convert PAST into NQP-based files via Q:PIR constructs. This will involve splitting Node.pir into separate files for each class, providing a NQP structure for each sub and updating the build framework.

As I noted a while back, I did this in the first couple of days of work. I'm now into the process of hunting down Q:PIR blocks and replacing them with NQP (using pir:: where needed).

Parrot-GMP: Step #1 complete

I've just finished step one of the project: minimally parsing the header gmp.h and generating an NCI definition file that is readable by the script ncidef2pir.pl. I'd definitely like to refactor this script into separate modules (with tests and docs) and make it usable for the larger community, but for now it suffices for the project.

Parrot-GMP: Abandon Hope All Ye Who Enter Here

Good evening fellow parroters,

My blog posts will become increasingly technical as time goes on and if you're not into that kind of thing, then TL; DR - I'm working on it.

Still here? Good.

The main idea behind my project is to get usable bindings for GMP integer functions into Parrot. The GMP library is a good choice because it is free (as in beer and as in speech), stable, actively developed for 20 years, and generally fast: there are all kinds of optimizations for different architectures and compilers that there is absolutely no reason we should re-invent the wheel.

Syndicate content