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.

GSoC: LALR Parsing: School's out for summer.

I'm rather behind on my blogging schedule, and also somewhat behind on my coding schedule, thanks to finals and packing and moving out of the dorm, but there is good news: finals are over, and now I'm free to focus more on summer of code. In this blog post, I'll describe the representation I've decided on for grammars, and talk about my next steps.

Another piece of good news, I've actually decided on a name: LALRskate.

GSoC 4: Unsteady Ground

My work this week was slightly complicated by pmichaud changing PCT in master. Turns out that tracking changes in a method I already converted is harder than converting it in the first place. However, since NQP and Rakudo are already using the enhancements, I thought it valuable to merge them quickly. I'm mostly done, just hunting down some sneaky bugs.

CorellaScript : talking in PIR .


An another week filled with working with PIR and JavaScript.
some struggle with JavaScript's confusing syntax
self executing anonymous functions , prototype inheritance, and why "this" behaves differently in different situations.

Coming to corellaScript
some work on test-suite as well. It is now using commonjs's unit-test library. working on tests .

Had first meeting and a nice discussion with _Coke yesterday.

Parrot-GMP: Generated Code, Strings, and Tests

A lot has happened since my last update. I have finished tweaking the script that generates the Winxed convenience class as well as inline POD documentation. The NCI PIR bindings use the internal names (such as __gmpz_init) and have no safety features whatsoever - they are the absolute bare minimum to call these functions.

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.


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 "" 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.

Syndicate content