« Little languages | Main | 1427/1427 »

January 15, 2005

Progress on AspectJ 5

I realised I haven't said anything about the progress we're making on AspectJ 5, and more specifically on the integration of the full Java 5 compiler from Eclipse that became available late last year.

I started work on the compiler integration on Thursday 6th January. It's been interesting to explore the Java compiler and see all the changes that have gone in to support the new Java 5 features. I explained the basic process we go through to integrate a new release of the Eclipse compiler in a previous blog entry. This time of course things are a little more challenging as there are lots of new features to get to grips with.

Some of you will understand how happy I was when I finally got the parser generator to report:

This grammar is LALR(1).

Things have been going well. On my laptop I have a version of AspectJ that can happily compile any Java 5 program. You can also use Java 5 features in aspects (parameterised types, annotations, enums, new for loops etc..). The hardest part of course is the interaction of AspectJ features with Java 5 features - for example, many of the new features in Java 5 change the resolution process for determining which method is the target of a call. These changes interact with the changes we make to support privileged aspects and inter-type declarations too and some rework has been needed.

Right now, I have 1421 out of 1427 tests passing. Once the last 6 bugs are nailed I'll do a big commit and then there'll be a developer build available for those who want to take the new features out for a spin. That build will represent a very significant milestone on the road to the AspectJ 5 release.

Posted by adrian at January 15, 2005 04:26 PM [permalink]


Post a comment

Thanks for signing in, . Now you can comment. (sign out)

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

Remember me?