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.

JavaScript : Object System

Seems to be the toughest part of the project, providing inbuilt object's support. Thanks to the specification provided by Ecmascript, finally got hold of whole Object thing. Time to speed up my work now..

JavaScript's object system is based around a global Object which is created before the control enters any execution context and that is its whole purpose also. We can't call it as a function neither as a constructor. All the other features are its properties only.

Parrot-GMP: Even more tests and NCI work

Nothing too glamorous to report again - the test suite continues to grow. All functions are currently covered (and passing) except for functions related to random numbers. These functions are especially tricky because they rely on a special C-struct to both hold the seed and point to which pseudo-random number function we want to use. GMP is flexible in that there are multiple functions a user can choose from - some which favor speed and others which favor randomness - but the code is messy. Furthermore, to handle structs in NCI we need something called a StructView.

It's a Miracle!

This week in HBDB-land was very significant. I was finally able to achieve command recognition. I had abandoned work on it for about a week because it was such a nuisance. Instead, I focused on testing which was a pain as well but it got done. Reluctantly, I returned my focus to the command parsing logic and within 5 minutes, I had solved my problem with a single ampersand. This makes me so happy.

Migrated winxed to github

I've just migrated the Winxed repository.

Old url:

New url:

GSoC 5: Q:PIRsand

I've lost more time to the bog that is removing Q:PIR blocks. I keep triggering odd little bugs and only have the most complicated bits left. There are 7 Q:PIR blocks, of which 3 are to handle the multiple return values from post_children(). On bacek's advice, I'm going to just not worry about the last few bits. I'd really like to get rid of them by the end of summer, but at this point it's blocking forward progress.

Also, my pool has a pile of problems. It's green and the pump is broken and and and... I'm sure very few people care, but the repeated trips to the pool store are eating up far more time than I had intended.

Compiler work

Puffin pair

Double puffin this week! And that's to (partly) make up for my short 3 day vacation to Scotland, starting tomorrow.


It's So Close, I Can Almost Smell It

Ok, not literally. Though I wonder what code would actually smell like. Burning brain cells, maybe?

Alright, here's the scoop. I'm going to keep things brief as I eagerly want to get back to my adorable little segfaults. :)

Parrot-GMP: More Tests

Nothing terribly exciting to report - progress is continuing as I am writing more and more tests to cover all of the GMP Integer functions. A function is considered covered when there are at least two tests that call that function. I've used Whiteknight++'s Rosella library for both the testing harness and the tests themselves. The harness is written in NQP while the individual test files are written in Winxed. This isn't a big problem since both NQP and Winxed come bundled with Parrot.

CorellaScript : AST and LALR parsing.

In the process of understanding of parse trees to get PIR, I spent some time learning the LALR(1) parsing algorithm which is being used in corellaScript.
Out of the three stages of compiler design, lexical analysing, Parsing, and code generating.
Parsing is the most important one, It is the stage where the token stream generated by lexer is analyzed according to the rules of specified grammar .

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.

Syndicate content