Finally, after a nasty month of recitals, concerts, final exams, term papers, Katori Shinto Ryu seminars, and basement remodeling, my work output on Parrot is starting to pick up. I sent off a patch about an hour ago to get Parrot to compile with g++ through to the imcc code. Time permitting, I should have it the rest of the way by the end of the weekend. I'm really hoping that this added strictness will help to get Parrot compiling with Borland C++, which is a much more strict compiler than gcc is.
An EBKAC must have happened because it looks like a couple entries are missing.
Sorry, no real news here. End of school year means available time is being sucked up by running the children to concerts, recitals, soccer games, and so on. My wife is enjoying working on final papers, studying for exams, and art projects. At the same time, I'm nearly finished with my basement.
Perl 5 has occupied my time as well with me finally completing an old bug fix and updating new modules. My side projects of trying to test CPAN with bleadperl and creating TODO tests for the existing Perl bugs have been cutting into my tuit supply as well.
Fortunately, my tuits should increase towards the end of next week. In the mean time, don't expect any major changes, but I should have a trickle of changes starting in the next day or so.
I've been somewhat quiet since my last update. A weekend of nice weather filled my schedule with yard work. That doesn't mean things have been at a complete shutdown.
Shortly after completing building Parrot with Intel C++, I tried my first
make -j. It wasn't the complete failure I expected, but Parrot didn't build either. Obviously, there's a dependency problem somewhere. I'm also realizing that the Parrot makefile is a lot less structured than Perl's and things that normally build after miniparrot seem to be built before the ops files are converted to C. Its time to throw Parrot on a computer with many more CPUs to see how much damage I can do.
Borland C++ has been a bit more frustrating. Hoping to see that my patches have helped, instead Borland C++ is unable to make it past compiling the ops files. Using dmake has been as much of a failure, but it seemed to produce some useful error messages now, so there is still hope.
Sun Studio on Linux is somewhat on hold for me while I wait to see when the release of Sun Studio 12 happens. I'm hoping some bugs I see go away with the release, similarly to the problems I disovered in the Sun Studio 12 beta by trying to compile a threaded Perl.
On other fronts, I'm going to try to upgrade my OpenBSD VM to 4.1 sometime this week. I've found new problems with Perl with every OpenBSD release, so I'm interested in seeing how Parrot fares.
I've gotten one milestone for the grant completed today with a completed Intel C++ compile and test on Linux. Patches should be on their way shortly.
The other night, I sent in a large patch to cleanup some additional implicit void pointer casts that C++ simply cannot live with. particle gave me a great idea on IRC, however, for cleaning up some of the redundancy of one set of cleanups with a macro. So, its time to re-patch with some additional cleanups for good measure. More on this patch later today.
The C++ keyword cleanup of Parrot was completed last week with some help from Mark Glines and his working "make splint" on Parrot. I'm working now one some changes to Parrot::Ops2c::Utils that will move some struct and function declarations out to header files rather than in
src/ops/core_ops.c. The current structure is cause C++ some problems and the refactoring should help things out.
Other than that, I've made a few other cleanups throughout Parrot last week, ranging from silencing a few warnings on OpenBSD to giving
STRING.strstart an actual type other than being yet another Parrot void pointer.
The work on C++ has been taking me much longer than I thought, but, hopefully, this work will help clean up the Parrot code a bit more, make it a bit more portable, and, hopefully, actually allow someone to make good use of what I've been doing.
The work on changing variables called
class to something else in Parrot continues. I have a rather large patch ready to let loose after the release this Tuesday. I also found a couple of files with variables named
this, but the PMC method
namespace() is my newest bit of pain.
Yesterday, I sent in a patch that appears to clean up the last bits necessary to get Intel C++ to compile. One big problem for C++ compiles.
Yes, that's right. A variable named class. C++ really doesn't like that very much. I would have thought that would have been something that
-Wc++-compat would have caught, but obviously it didn't. I'm looking at
as a possible replacement, but I should mail the p6i list on that change.
With all the cleanup, though, the problems with linking a workable Parrot became clear. The guessed platform seems to be messed up with Intel C++ causing defines to be incorrect for src/platform.c. I should have this sorted out early this week.
I've been beaten by a bad cold the past few days, but I'm finally getting to the point of feeling better. Cleanup has been going slowly while chasing down unexpected test successes on Fedora, that have been failing everywhere else. Here's a few things I'm looking at right now.