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.

Parrot Design Documents in Need of Overhaul

Andrew Whitworth -- the fastest blogger in the East! -- has already blogged about our September 18 meeting in Fairless Hills, PA. He has received several responses to that post, as well as a more complete response from chromatic -- the fastest blogger in the West! whiteknight has responded in turn. Enjoy!

A Gathering of Parrot Developers in the Pacific Northwest, Saturday, October 16

I'd like to go public with an idea I've been developing in discussions with the other recently elected Parrot Foundation Board of Directors and some other Parrot contributors: A one-day gathering of Parrot developers to be held in Portland, Oregon, USA on Saturday, October 16.

This gathering would have three objectives and the division of the day into parts would match those objectives:

1. Enable Parrot developers to meet each other face-to-face, get to know one another better, and start to figure out how each can best contribute to the project.

PAST Optimization: GSoC is over

The Google Summer of Code pencils-down date was last Monday. GSoC is now over, but I don't plan to stop working on my project.

The initial goals listed in my project proposal were:

  • A library for PAST traversal.
  • A framework for PAST optimization and analysis tools.
  • A regular-expression-like pattern matching library for PASTs.
  • An optimization to turn tail-calls in PAST into PIR ".tailcall".

Hybrid Threads: GSoC Project Results

I proposed a pretty ambitious Google Summer of Code project this year. Although I didn't manage to do everything I hoped, I did manage to get a useful subset of threading functionality working in the gsoc_threads branch. In this blog post I will describe what I have working and what more needs to be done.

Moving to multiple OS threads

Now that I have the basic green threads (Task) API basically working, it's time to start mixing in OS threads. I plan to do that in two steps: First I'm going to use OS threads to solve the key issue with the green threads implementation - blocking IO. The result of this will be basically equivilent to CPython threads-with-GIL. The second step - real parallel thread execution - will have to wait for after GSoC pencils down.

PAST Optimization: plans for the final weeks of GSoC

I spent this last week working on Tree::Optimizer (and getting distracted by Rakudo *).

I've got the functionality described in my blog post last week mostly finished. The only thing remaining is making sure that recursive passes correctly handle nulls, which I'm about to work on.

The Google Summer of Code is almost over. Next Monday is the "suggested 'pencils down'" date. The following Monday is the "firm 'pencils down'" date. After that are final evaluations.

Here's my plan for the remainder of GSoC:

  1. Merge the pass-manager branch of my project's repo into master.

The extra pointer has to go.

I reached the midterms mostly as scheduled, and NFG is pretty much feature complete now. There's still some stuff to do here and there, but the 'big ticket' items are done. So, I have been looking at what needs to be done before the gsoc_nfg branch can be merged back into trunk. And that means giving a hard look at all of the places where I've cut corners and see if they can be made better. It's mostly minor stuff, like leaving out a cast, or not paying attention to const mismatches in a few places. Most of it is just a matter of code cleanup. Until you see the extra pointer I added to string headers.

Cleaning up and speeding up optimizations with Tree::Optimizer

After a false start earlier this week, I've begun implementing something like LLVM's PassManager. It can be found in the pass-manager branch of my project's git repository.

Today, I'm going to talk about adding optimizations to compilers using my GSoC project without Tree::Optimizer and with it. Note that most of the features of Tree::Optimizer that I describe here are not yet implemented.

Green Threads: A Classic Example

Now that I have green threads basically working with the API functionality I discussed in my last blog post, I've been working on coming up with tests/examples that clearly demonstrate both how green threads in Parrot work and that they work as advertised. With that goal in mind, this blog post is about a classic concurrent programming example: The Sieve of Eratosthenes.

Syndicate content