The Perl Foundation took part in Google's Summer of Code program and managed to get 8 projects funded. As the projects were starting, I interviewed the students to see what their plans were. Now that the summer is over, I'm interviewing both the students and their mentors as a project postmortem. What happened? What went right? What went wrong?
Up now is A Generational, Thread-Aware GC for Parrot, by Alexandre Buisse with mentor Leopold Toetsch. First up is the mentor, then the student.
Hi there! Tell us a bit about yourself.I'm the Parrot Pumpking? - aka Patch Monster.
What qualifies you to be the mentor for this project?I've written two new garbage collectors for Parrot and added two variants to the default mark & sweep collector to investigate various aspects of GC. These experiments were based on a lot of GC literature and on studying other VM runtimes. The SoC project summarizes the various GC possibilities into a generational, incremental, mostly one-pass mark & compact GC scheme (GMC).
How did you communicate with the student during the project? What you communicate about?Initial communication was mostly by email. Later a lot of discussion on IRC (#parrot) followed, accompanied by more mails for issues that couldn't be easily expressed in one or two sentences. We were talking a lot about the guts of Parrot's object (PMC) structure, object allocation, and details of coding the garbage collector.
What is the state of the project? Where is it available?At SoC dead line Parrot with GMC enabled tested around 99,5 % success. The project is available as a branch in the Parrot SVN repository.
Did you learn anything that surprised you?I learned that I should have insisted more on syncing documentation and code. This would have prevented some circles around reaching the target.
Where is the project going to go now that the summer is over?Alexandre is still actively working on GMC and is improving the code. The project wasn't intended to be merged into Parrot trunk immediately as it also includes a change to the PMC layout. But I'm pretty sure that we first merge these PMC changes and eventually have the generational garbage collector as a compile-time option.
What, if anything, would you change about the SoC next year?Maybe Google could update their webpages regularly to better reflect SoC progress.
Got a silly fact about yourself or the project?
[ from IRC - inexact braindump ]
@leo Nattfodd: we can't allocate memory during GC, when we might lack
resources
@Nattfodd oops
Hi there. The summer was pretty good, though a bit geekish, maybe :)
Did the project go as expected?I expected it to be difficult and it was indeed difficult. I just didn't expected it to be that difficult. But it was done anyway and it almost works as expected, so I guess my answer to this is "yes".
Did you learn anything that surprised you?Surprised, not really. I was rather amazed at the complexity of parrot and at what it must have taken its developers to get to this point.
What's the status of the project? Where is it available?It has been released on Sept 1st as a notice on the perl6-internals mailing list. It is still available as an svn branch and has not yet been added to trunk. When I released it, I had a success rate of more than 99.5% in make test but it has then been tried on other architectures where it sometimes did not even build. Some bugfixes later, success rate has dropped to about 95% at best (depending on architectures). I am now working on improving that.
Where is the project going to go now that the summer is over?I will continue working on it, of course, as it is not yet completely bug-free and could use some improvements. But I won't be able to work on it at full-time, especially as I have some other projects going on. My first goal is to make GMC good enough for a merge in trunk. Another step will be adding thread support when those will be added in parrot.
What kind of help did you get from your mentor?A lot of help ! Leo helped me understand the internals of parrot and indicated me the right directions to go in. He also helped much with the design and corrected several flaws. He was always available on irc or by mail for my (often dummy) questions, which helped much. And it was also very helpful to have someone else following what you do and check you don't go completely crazy at some time :)
If you were going to do this again next year, what would you do differently?I would begin coding sooner (it has not been possible this year due to personal reasons). I had just enough time for testing on my box and could not have external feedback, which explains the mess at release-time. I also think I should have taken one or two days off before the craziness of the last week.