... indistinguishable from magic
effing the ineffable since 1977
If it makes you Japi...

If it makes you Japi...

I've just made a few more tweaks to the nightly Japi scripts. This may result in some false positives in the nightly diff emails, or it may result in the nightly diff emails being completely screwed up or missing entirely due to me having messed up the changes. Here's what I've done:
  • On an entirely trivial note, cleaned up the nightly processing script to move a bunch of repetitive code into functions. This shouldn't have any concrete effects but made the other changes, and hopefully future changes, easier to implement.
  • Added reverse comparisons against jdk6 and jdk7 in addition to the forward ones that were already happening. (Those links will be broken until such time as the run happens successfully)
  • Changed the Japize process for all the JDK versions from 1.2 up to use the new japiextractpkgs tool to pull the package list from their documentation. I'm pretty sure I'd got these right by hand, but automating the process doesn't hurt and certainly saved time getting jdk6 and 7 right.
  • Added a new "-p" flag to japicompat. This is intended for use in the reverse comparisons (classpath-vs-jdk15 for example). Up to now, if the classpath japi file had included any packages that aren't part of jdk15, those would have been reported as "missing in jdk15" and skewed the percentages, so it was important to make the list of packages in the classpath japi file match jdk15 exactly and exclude any extra packages. On the other hand this made it impossible to get a true result against jdk6 even in the forward direction, in case some of those packages that got excluded were actually needed for jdk6. With the "-p" option, japicompat will simply ignore any missing packages and calculate the percentages accordingly.
While working on these changes I've discovered a couple of bugs: JDK6's java.util.Arrays class cannot be Japized - apparently it uses an array type in some context where Japize believed arrays were illegal - and neither can classpath-generics's javax.swing.text.DefaultTextUI (Japize simply complains about "class not found" - but if it didn't find it, how did it even know to look?)

I'm sick this weekend which means (a) lots of relaxation trying to persuade my body to recover fast, but (b) possibly a bunch of free time to hack on this stuff. I may even get to working on Annotation support which is the last 1.5 language feature missing in japitools and the big showstopper for a 1.0 release.