Re: [Japi] stacktraces running japitools on harmony

2006-11-15 Thread Stuart Ballard

On 11/15/06, Stefano Mazzocchi [EMAIL PROTECTED] wrote:


 What compiler is producing the jar that you're running this against?

Eclipse ECJ 3.2

/me wonders if later versions have fixed this problem

 Also, is BasicSwingTestCase public in the first place?

checking... yeah it's a 'public abstract' class.


...


Anyway, cool to see it's not a JAPI bug.


It still could be: perhaps I misunderstood the spec or there's an
exemption for abstract that I missed. Or the code that's trying to
detect this case is broken. I haven't investigated in detail, I don't
want to say that it's definitely ecj's bug. Just that that's the area
in which we should be investigating to find out where the problem
really does lie.

Stuart.

--
http://sab39.netreach.com/


Japitools 0.9.7 released

2006-11-13 Thread Stuart Ballard

I'm thrilled to be able to announce four things:

1) After far too long a wait, Japitools 0.9.7 Life, liberty[1] and
the pursuit of Japiness has been released.

This release includes the following improvements over 0.9.5:

- Almost complete 1.5 language support, including generics, enums and
varargs methods. The only missing feature for full language support
(and the only blocker for a 1.0 release) is annotations. Big thanks to
Jeroen Frijters for doing the heavy lifting of teaching Japitools to
parse these features in .class files.

- The ability to mark methods as not implemented by adding
NotImplementedException to the throws clause. This allows Japitools
to give results that more accurately match reality when parts of an
API are known to have been stubbed out rather than actually being
implemented.

- The ability to traverse packages non-recursively (thanks to a
contribution from Jaroslav Tuloch), making it easier to correctly
specify the packages that are part of a public API, especially when
that API is large. The new japiextractpkgs tool allows the list of
packages to be extracted from Javadoc documentation.

- An Ant task for running Japitools, thanks again to Jaroslav.

- Too many bug fixes and minor enhancements to name, including a lot
of changes that eliminate false positives and false negatives from the
results. Thanks to many people for bug reports, feature suggestions
and help in testing.

2) That there is now a Japitools mailing list,
[EMAIL PROTECTED] See the mailing lists page
(http://sab39.netreach.com/Software/Japitools/Mailing_Lists/52/) for
more information.

3) That Japitools has a new homepage, http://sab39.netreach.com/japi/.
It's ugly, and it's still a work in progress - some sections are still
missing content, and others still have content that hasn't entirely
been updated to match the current state of reality. I didn't want to
delay any further getting the new release into people's hands. I'll
continue working on filling out the content.

4) That Sun are AWESOME today!

Stuart.

[1] https://openjdk.dev.java.net/

--
http://sab39.netreach.com/


Re: Japi diffs for harmony

2006-11-09 Thread Stuart Ballard

Nathan Beyer wrote:

No problem on the name change, but doesn't what Stuart is talking
about require that methods add this exception to the signature to
actually show up in the reports?


That's correct. If it's a subclass of RuntimeException (which it ought
to be, otherwise it'd have to be in throws clauses anyway and that'd
show up as errors already) it makes no practical difference to have it
in the throws clause, but it provides a useful way to flag stub
methods in such a way that Japitools can detect them.

But yes, you have to do the work by hand to actually mark the stubs by
setting the throws clause accordingly.

Stuart.
--
http://sab39.dev.netreach.com/


Re: [Fwd: Re: Interesting discoveries playing around with japitools]

2006-11-09 Thread Stuart Ballard

Geir Magnusson Jr. wrote:

David Gilbert wrote:
 A boon?  Not at all, Classpath will be (mostly) redundant and will fade
 away, replaced by Sun's runtime.

I'm not so convinced of that.  GNU Classpath is under GPL + Exception,
so arguably it's not viral to things that link with it.


I think it's highly unlikely Sun will release their VM without terms
that enable proprietary code to be built on top of it. That'd be
particularly counterproductive of them.

My speculation would be that they'll release it under two licenses,
one similar to the terms they have now, and the GPL as the other. Code
released under those terms is clearly not viral.


Also, I think the copyright assignment requirement will be a big deal.


If OpenOffice is anything to go by, Sun will require a copyright
assignment to them; Classpath requires a copyright assignment to the
FSF. Yes, that's a little bit different because a lot of developers
will trust the FSF a lot more than they do Sun...

I actually think it'd be really smart of Sun to not require a
copyright assignment at all, but rather require contributing
developers to license their code under *both* sets of terms just as
Sun itself does. That would allow Sun to continue to use the dual
licensing scheme without the stigma of the copyright assignment
requirement. And it's very similar (in spirit, if not in details) to
the model that Mozilla has used for years - originally to allow
Netscape to make proprietary releases based on the contributed code.

As far as the suggestion elsewhere in the thread (that I lost, digest
mode subscription is painful ;) ) that the GNU people would feel it
necessary to fork Sun's Java entirely to maintain their sense of
freedom, I don't think this is so. The FSF have fairly strong
philosophical disagreements with Linus but have never forked the
kernel. They have philosophical disagreements with the ASF sometimes
but there isn't a GNU fork of the Apache webserver. I think a GPL'd
Java would be considered acceptable - because the license allows the
*option* of a fork if Sun proves to be a sufficiently poor steward.
But I've never heard of a project being preemptively forked on the
offchance the maintainer will make unacceptable decisions in the
future. At least I've never heard of such a fork having even the
slightest success.

A lot depends, of course, on how Sun actually engages the community -
I'd say that's even more important than the license, as long as the
license isn't *completely* un-work-withable.


Understood.  For me, an additional requirement is an open and level
community, where all participants are working together under exactly the
same terms. (Which is where GNU Classpath will be different than what I
understand the Sun model will be)


I don't consider it a foregone conclusion either way as to whether
Classpath will or won't continue with any enthusiasm if Sun's
implementation is released under an acceptable license and with an
acceptable process for getting contributions back in. There's a lot of
momentum behind Classpath right now but it might be hard to justify
all the effort to get from (essentially) complete 1.4 and parts of
1.5, to parity with Sun's 6.

Either way we live in interesting times :) And either way Sun's
release under *any* open source license is a very good thing.

Stuart.
--
http://sab39.dev.netreach.com/


Re: [Japi] Re: [Fwd: Re: Interesting discoveries playing around with japitools]

2006-11-09 Thread Stuart Ballard

On 11/9/06, Stefano Mazzocchi [EMAIL PROTECTED] wrote:

Sometimes some climbers manage to get to the other side to find that
some people are very welcoming and appreciative of cultural differences
while others not so much.


Ok, wow, this whole subthread is kind of what I meant by the politics
being scary.

I think we can all agree that among the Classpath devs and among the
Harmony devs there's plenty of goodwill in theory but also a fair
degree of disillusionment that the hoped-for level of cooperation
wasn't able to materialize.

But improving Japitools and having a better understanding of what it
does and doesn't do is in the best interests of both projects - and
other projects that might want to use it.

Japitools isn't affiliated with Classpath btw, I had Classpath in mind
when I originally developed it, yes, and it's GPL licensed because I
have a mild preference for that license, but I don't feel strongly
about it. One of the reasons I started a Japitools list in fact was to
try to have some neutral ground for discussions to avoid any
perception (or, even worse, reality) that Harmony had any kind of
second class status.

While I admit that coming from the Classpath side of the fence
originally, I have mixed feelings about whether the licensing
differences were actually worth starting a whole separate project for.
But Harmony exists and I hope it succeeds, just as I hope Classpath
succeeds. More interoperable implementations can't hurt. And the
interoperable part is where Japitools comes in.

So can we all play nice? ;)

Stuart.
--
http://sab39.netreach.com/


Re: [Fwd: Re: Interesting discoveries playing around with japitools]

2006-11-07 Thread Stuart Ballard

On 11/7/06, Stefano Mazzocchi [EMAIL PROTECTED] wrote:

btw, I signed up on the japi mail list, so I think we should take it
from there.


cc'ing both harmony-dev and japitools-list for now so that at least
harmony folks are aware the discussion is moving. Feel free to just
stick to japitools-list for followups.


If you need some CSS/webdesign skills, I'll be happy to give a hand.


Heh, yeah, I know it's ugly. I generally know enough CSS and HTML to
achieve a particular desired result - it's knowing *what* desired
result I want to achieve that's tricky.

In theory I like the idea of a site that mimics the look of the
results pages somewhat, since that's what most people know Japitools
from. It'd be great if that could be achieved while still being
attractive and usable though.


 I'd really love if some Harmony developers would join the japitools
 mailing list if you're interested in the Japi results and how to make
 best use of them. I plan to announce both the lists and the new
 website more prominently when I have a new release to announce as
 well, but seeing as there was active discussion going on right now, I
 didn't want to wait.

oh, didn't even know one existed.


It didn't. I created it about 2 days ago ;)


 (Yes, the japitools list is on an FSF server. I really really hope
 that this isn't going to be a political problem for you guys. I
 selected Savannah for hosting japitools before Harmony even existed,
 because it made most sense at the time when Classpath developers were
 the main users. Please don't let that hinder our ability to
 communicate on something that makes sense for all projects concerned)

you kidding? of course I'll join.


I'm never quite sure. Some of the politics between the Classpath and
Harmony projects have been quite scary from my point of view.

Stuart.
--
http://sab39.dev.netreach.com/


Re: Japi diffs for harmony

2006-11-07 Thread Stuart Ballard

Tim Ellison wrote:

I'm no fan of stubs for just such reason.  But for those dev's that are
following along, there is an
org.apache.harmony.luni.util.NotYetImplementedException that is defined
for just such purposes.


Would you consider renaming this to NotImplementedException since Japi
recognizes that name in throws clauses and treats it specially?

If you feel strongly about not changing the existing name, I can add
NotYetImplementedException as an alternative hardcoded name in
Japitools but that seems kinda redundant...

What do you think?

Stuart.
--
http://sab39.dev.netreach.com/


Re: [Japi] [general] interesting discoveries with japitools - part 2

2006-11-07 Thread Stuart Ballard

On 11/7/06, Stefano Mazzocchi [EMAIL PROTECTED] wrote:

java.awt.peer:
Missing
method java.awt.peer.WindowPeer.updateFocusableWindowState(): missing in
bea1.5


This one indicates that your set of packages is not correct:
java.awt.peer is not a documented package. Unfortunately getting the
right set of packages is hard on Windows - I just posted on
japitools-list about improving that situation. If you do happen to be
on a unix-like system this should work:

japiextractpkgs docs/api/overview-frame.html jdk15.pkgs
japize as jdk15 packages jre/lib/*.jar `cat jdk15.pkgs`

where docs/api is a folder containing the JDK javadocs.

The trouble is that the backquote quoting and the cat command aren't
available on Windows and I'm not aware of an alternative. So the plan
is to get Japize to accept @jdk15.pkgs as an alternative syntax. Any
volunteers or anyone who knows where I could find code to do that,
dealing with quoting and the like, under a GPL-compatible license,
please speak up on japitools-list...


java.util.concurrent:
Abs.add
method java.util.concurrent.Delayed.compareTo(java.lang.Object): new
interface method in bea1.5


So, it appears that that Sun added a method that is not available in the
javadocs (bad Sun, no donut for you!) and that BEA did not (correctly)
implement.

Also, BEA added the method compareTo to the
java.util.concurrent.Delayed interface. This is not really a problem
because Delayed extends Comparable, therefore all classes implementing
Delayed will have to have the compareTo method anyway.


Comparable is really fun in the presence of generics. Does Delayed
implement Comparable or ComparableDelayed or Comparable? extends
Delayed or what?

If it implements ComparableDelayed then it *doesn't* technically
have a compareTo(Object) method but a compareTo(Delayed) instead. If
Sun added a compareTo(Object) method as well... well that'd have some
rather weird effects. I'll need to take a while to get my head round
that. Could you produce and send me Japi files of *just* the Delayed
class in both implementations so I can look at the differences in
detail?


Stuart, do you think this is something that japitools should check?

I would call this a false positive.


I think it's an indicator of something, I'd say more investigation is
needed before determining it's a Japitools bug.


java.awt.peer:
Missing
method java.awt.peer.WindowPeer.updateFocusableWindowState(): missing in
ibm1.5


Again peer should not be included.


java.util.concurrent:
Abs.add
method java.util.concurrent.Delayed.compareTo(java.lang.Object): new
interface method in ibm1.5


Same as above.


javax.xml.datatype:
Bad
field
javax.xml.datatype.DatatypeFactory.DATATYPEFACTORY_IMPLEMENTATION_CLASS:
constant
[com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl]
in sun1.5, but constant
[org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl] in ibm1.5


This is an API bug on Sun's part; alternative implementers are screwed
here either way. Constant fields are inlined so the value will be
taken from the implementation the code was *compiled* against, not
what it's running against. Japitools is correct to report this as an
error, but the only *correct* fix is for Sun to un-constify that
field.


java.util.concurrent:
Abs.add
method java.util.concurrent.Delayed.compareTo(java.lang.Object): new
interface method in sun1.5
Done.

Hmmm, the compareTo is in both the direct and the reverse? smells like a
japitool bug to me.


Yes that is odd. Please do send me those two Japi files.


java.lang:
Missing
method java.lang.StringBuilder.append(java.lang.StringBuilder): missing
in sun1.5


Weird.


 2) package org.w3c.dom.xpath: missing in sun1.5


This again is a not getting the right set of packages issue. Adding
extra packages isn't illegal (at least not in Japitools's view of the
world); the comparisons should be done based on which packages are
*documented* as present.


The results show clearly that japitools did indeed improve a lot over
the last released version.


Great :)


NOTE: the results were taken with the following package passed to the
japize tool:

 +java +javax +org -org.apache -org.ietf


Yup, that's your trouble ;)

Stuart.
--
http://sab39.dev.netreach.com/


Re: Japi diffs for harmony

2006-11-06 Thread Stuart Ballard

I tried sending this previously, but Stefano seems to have not
received it (at least I got no response or followup) and (as I
suspected) the list definitely didn't because I wasn't subscribed. I
subscribed to the digest version now so that I'm not so excluded from
japitools-related discussion on harmony-dev.

My response to Stefano's questions is below. I've seen further
discussion on japitools in the harmony-dev archives and I'll send
separate mail addressing the japi-related bits of that.

Stuart.

-- Forwarded message --
From: Stuart Ballard [EMAIL PROTECTED]
Date: Nov 3, 2006 12:29 PM
Subject: Re: Japi diffs for harmony
To: Stefano Mazzocchi [EMAIL PROTECTED]
Cc: harmony-dev@incubator.apache.org


(this will probably bounce from harmony-dev, I'm not subscribed; feel
free to forward it)

On 11/3/06, Stefano Mazzocchi [EMAIL PROTECTED] wrote:

Stuart,

I'm a *huge* fan of your Japi diffs (I admit that I have a sort of
obsessive compulsion about it, getting happy with every small percentage
increase and sad when it decreases).


*grin* I do the same thing for Classpath. To be honest I find the
Harmony results confusing myself; sometimes they seem to bounce up and
down with the same errors getting added and removed over and over
again. I'm dependent on an unofficial source for Japi files of
Harmony, though, because the project doesn't provide official nightly
builds as far as I know - and my suspicion is that perhaps different
variations are getting built and I'm getting which ever happens to be
the last that was built. I haven't gotten around to asking, though,
sorry about that.

If I could grab an actual tarball of the very latest build at any
given time, I'd like that better. See
http://builder.classpath.org/dist/ for what they do which is perfect
for me.


That said, I have a few questions to ask, see below.


Great, I'm always happy to clarify this stuff :)


It tells me there are 10 packages and 52 classes missing. Great. Then it
gives me a percentage. Who is that percentage calculated? Is it by class
coverage? method coverage? package coverage? a weighted sum of all the
above?


The percentages are admittedly difficult to define in a way that's
truly meaningful, but the idea of *having* a percentage was too
compelling for me not to try to come up with a definition. So here's
how Japi calculates it:

First of all, anything whatsoever that's neither public nor protected
is discarded.

Each class or interface (or enum or annotation) counts as one item.
Each field, method or constructor within a class counts as one item.
*Including* inherited fields and methods, regardless of whether they
get overridden in the class itself.

Each of these items gets classified as good, bad, minor or missing. If
an entire class is missing, *all* its members are classified as
missing. Likewise if an entire package is classified as missing, all
the classes within it and all their members are counted as missing.

If there is more than one error on the same item (eg a class is
incorrectly abstract, doesn't implement the right interface *and* has
the wrong serialVersionUID) it still only counts as bad once (the
serialVersionUID is a minor error but the bad errors take
precedence).

The percentages are then calculated based on the total count in the
left-hand API. In other words if a particular package in the RI had
only one single interface with four methods, of which Harmony
implemented two correctly and one incorrectly, the percentages for
that package would be:

60% good (the interface itself + 2 methods)
20% bad (one method)
20% missing (one method)

If Harmony also incorrectly added an extra method to the interface, it
would be 60% good, 20% bad, 20% missing, 20% abs. add. (Because while
adding members in general is legal, because it's backwards compatible,
adding methods to interfaces or abstract classes that have public or
protected constructors is not). And yes, that's a total of 120%,
because it's a percentage of the left-hand API, and an abs-add error
indicates something outside that API.

Incidentally the inclusion of inherited members for calculating the
percentage causes some strange effects; - because of inherited methods
from Object, simply declaring a class has a disproportionate effect,
even if none of the declared members of that class itself are present.
And because an enum, for example, inherits so many members from Object
and Enum, merely declaring an enum has a hugely disproportionate
effect compared to the tiny amount of code it takes.

But I couldn't come up with another way of defining the percentages
that would make sense and be self-consistent. The reasons why are a
little complicated and this email is already long so I won't go into
them, though.


How is it possible that jdk15 vs harmony is 94.66% and harmony vs jdk15
is 90.88%


Wow, I'm impressed that harmony is 94.66 against 1.5. That's
incredibly good progress - especially if all of that is actual
functional implementations

Re: Interesting discoveries playing around with japitools

2006-11-06 Thread Stuart Ballard

I've been following this thread as best I can from the archives.

I suspect the results you're getting were from the last release of
Japitools. I can't blame you for this - I ought to have made a new one
long ago - but the last release has a bunch of known bugs compared to
the current code. In particular the last release should definitely not
be used for anything where 1.5 language features are present.

The latest CVS code should be vastly improved; if you try this and
you're still seeing unexplained discrepancies, please let me know.

I'm planning to bundle up the current code into a new release in the
next few days, and I'm also revamping the website with the intention
to make it clear that the CVS code exists and is generally
recommended. (The very-much-work-in-progress new site can be seen at
http://sab39.netreach.com/japi).

One particular issue of note, because it concerns an issue that I just
(re)discovered on the Classpath results also: QName appears to trigger
an ecj bug in certain versions which produces an invalid class file by
incorrectly inheriting a generic parameter into a *static* inner
class. Apparently the latest ecj fixes this. I'm not 100% sure that
this is the issue that's causing it to be incorrectly reported missing
- but it seems awfully coincidental that the very same class with that
issue is the one that you're seeing problems on.

I'd really love if some Harmony developers would join the japitools
mailing list if you're interested in the Japi results and how to make
best use of them. I plan to announce both the lists and the new
website more prominently when I have a new release to announce as
well, but seeing as there was active discussion going on right now, I
didn't want to wait.

(Yes, the japitools list is on an FSF server. I really really hope
that this isn't going to be a political problem for you guys. I
selected Savannah for hosting japitools before Harmony even existed,
because it made most sense at the time when Classpath developers were
the main users. Please don't let that hinder our ability to
communicate on something that makes sense for all projects concerned)

Stuart.
--
http://sab39.dev.netreach.com/


Re: Update on build status

2006-03-16 Thread Stuart Ballard
Mark Hindess mark.hindess at googlemail.com writes:
 Our local builds now complete a two stage build.  First with a
 certified JDK and then with the eclipse compiler running on the VME
 and deploy directory from the first stage build.  They then run the
 tests.

This seems a good point to jump in and say that I'm now generating nightly Japi
reports based on the latest CVS too. I'm also producing nightly diff emails
(whenever something changes) that are being sent in the general direction of
this list, but presumably being refused because the address they're being sent
from ([EMAIL PROTECTED]) isn't a subscriber (in fact, I don't even receive mail
there so I couldn't subscribe it if I wanted to). If someone could unblock it,
that'd be great.

Sometimes the results change as a result of bugfixes in Japi itself (I'm looking
into two suspicious lines in the Classpath output right now that might need Japi
changes), but for the most part you'll only get emails based on changes to
Harmony.

Thanks,
Stuart.



Re: Understanding JAPI tools (was: Re: [jira] Created: (HARMONY-163) Three types in java.util.jar are not implemented in Harmony)

2006-03-03 Thread Stuart Ballard
Tim Ellison t.p.ellison at gmail.com writes:
 Stuart: is there some way to avoid JAPI taking inherited API signatures
 into account when doing the diff?  kinda like the javadoc tool.

This is something of a Japi FAQ (I should probably put together a Japi FAQ page
somewhere now that it's no longer the case that pretty much everyone using Japi
is on the Classpath list ;) ).

The answer is no, it doesn't do this, and I'm not going to implement it. The
reason is that whether a method is overridden or not is *not* part of the public
API. Javadoc documents it, sure, but that's not really sufficient to say whether
it's part of the API or not - it's quite likely it was simply easier to write
Javadoc that way (so it didn't have to go and find the doc comments in the
superclass's source file, etc).

The rules of binary compatibility say that moving a method up or down the class
hierarchy is a completely compatible change.

A method may be overridden, or not, purely for performance reasons and the
behavior could be completely identical. For example, LinkedList.subList is not
documented as being overridden, but if it's not, that guarantees that the
iterator() method will always be at least O(N) where N is the startIndex that
the sublist was created with. An overridden LinkedList.subList method could hang
on to the start and end nodes of the list and provide an O(1) implementation of
iterator(). As long as some effort was taken to ensure that serialization stayed
compatible, there's no reason why a Free runtime shouldn't do that optimization
even if Sun doesn't.

I've also heard of cases where Sun documents a method as being overridden even
though as far as any testing can determine, all it does is call super. There
should be no obligation for any Free runtime to duplicate this inefficiency.

It's also possible to implement a method that needs changed behavior in a
subclass by making the superclass delegate some parts of its behavior to
non-public methods, so the superclass method is unchanged but the subclass just
overrides the non-public methods (obviously, this only works if the subclass is
in the same package, but that's pretty common).

Finally, it's possible (albeit unlikely) that even if there *was* an apparent
need to override a method in a subclass because it has different behavior, there
might be some weird optimization-related reason why somebody might want to
actually write it as if (this instanceof Whatever) in the superclass. I can't
see why that would happen, but if someone did that and got all the behavior
right, they shouldn't be penalized for it in Japi.

Basically, Japi's business is to test the coverage of the API, and it's a
fundamental design decision that Japi will *not* be testing implementation
details. I've done quite a lot of work fixing bugs where implementation details
inadvertently get exposed in the Japi results and if I find any more I'll fix
them too.

I think this is *extremely* important because, among other things, it's the
*only* reason I feel legally secure in distributing Japi files for the JDK. As
long as they only contain functional information necessary for interoperability,
they're uncopyrightable. If they start exposing copyrightable implementation
details, they become derived works of the JDK, and illegal to distribute (or,
technically, to even create in the first place). And potentially so do the
results of the comparisons. And if you then use those comparisons to make
decisions on what to implement in Harmony, it jeopardizes Harmony's cleanroom
status too. (IANAL; the people who actually decide whether legal risks are
acceptable might think this isn't actually a problem for Harmony, but *I* don't
want to be responsible for it ;) )

The right way to ensure that you've overridden all the right methods is to test
the *behavior* of those methods. Obviously this is a lot more work than a simple
automated run via Japi or equivalent, but it's the only way to get meaningful
results.

Obviously since Japi is Free Software I can't prevent others from making a
version that does this, but I hope I've shown why I think it would be a bad 
idea.

Stuart.



Re: [jira] Created: (HARMONY-146) doxygen build is broken

2006-03-01 Thread Stuart Ballard
Mark Hindess mark.hindess at googlemail.com writes:

 Since these are generated files they probably shouldn't be in svn in
 the first place.  Though I can see why it is handy to have them there.
  Perhaps we need a snapshot on the web site?
 
  Was it something the automated build process have informed us about ?
 
 The build is currently only doing cd make; ant.  I can add the doc
 build but at the moment the ant tasks are configured to ignore
 failures so the build wouldn't actually break.

I thought the results of the builds were already in
http://cvs.apache.org/dist/incubator/harmony/snapshots/

That's what I've been using for Japi results. I did notice that the last run
was from Feb 17th, but I thought that was just because no automated build was
running.

If there *is* an automated build running, could its output be made available
somewhere so the Japi results can be based on the latest CVS rather than two
weeks old?

Thanks,
Stuart.




Re: classlib build status emails?

2006-02-21 Thread Stuart Ballard
Stuart Ballard stuart.a.ballard at gmail.com writes:
 If you can give me an url that will always point to the latest jar file(s), I
 can set up nightly japi results and mail diffs to this list.

Geir gave me a pointer to the latest snapshots, so the japi results are now 
online:

http://www.kaffe.org/~stuart/japi/htmlout/h-jdk10-harmony
http://www.kaffe.org/~stuart/japi/htmlout/h-jdk11-harmony
http://www.kaffe.org/~stuart/japi/htmlout/h-jdk12-harmony
http://www.kaffe.org/~stuart/japi/htmlout/h-jdk13-harmony
http://www.kaffe.org/~stuart/japi/htmlout/h-jdk14-harmony
http://www.kaffe.org/~stuart/japi/htmlout/h-jdk15-harmony
http://www.kaffe.org/~stuart/japi/htmlout/h-harmony-jdk15

The last report triggers a recently-discovered bug in japitools that causes some
StringBuffer methods to be incorrectly reported as missing in jdk15 (which
would mean that they are extra methods in harmony). I suggest ignoring the last
report for now, or at least verifying anything it claims against Sun's
documentation before acting on it.

Other than that the reports should give correct information about Harmony's
coverage of the API defined in each JDK version.

Whenever these results change for better or worse, (unless I've screwed
something up), an email will be sent to this list with the differences.

Stuart.



Re: classlib build status emails?

2006-02-20 Thread Stuart Ballard
Mark Hindess mark.hindess at googlemail.com writes:
 Is there any interest in having build status emails sent to this list?
 I'm building classlib trunk with continuum and it would be simple for
 me to have messages like the following sent to the list whenever the
 status of our builds change.  Currently I'm building only on linux but
 I plan to get windows builds running in the next few days.

Are the resulting rt.jar (and/or jce.jar and/or jsse.jar, or equivalent) files
available anywhere? If so (as discussed previously on this list) I'd be
interested in producing japi comparisons to show API coverage and errors against
the various JDK versions.

If you can give me an url that will always point to the latest jar file(s), I
can set up nightly japi results and mail diffs to this list.

(please keep me CC'd on responses, I can't keep up with the harmony list and
only check the archives intermittently)

Stuart.



Re: newbie to project-where to start from

2006-02-16 Thread Stuart Ballard
Geir Magnusson Jr geir at pobox.com writes:
 I think we should certainly be using Muave for testing.  However, that 
 doesn't remove the need for our own unit tests to be testing 
 implementation internals.

Completely agree. Tests of implementation internals don't belong in Mauve of
course.

I guess the question is whether, when a Harmony contributor wants to write a
test for documented, public, specified API functionality, should that test go in
Mauve instead of Harmony's own test framework?

Obviously I'd argue that it should, as then it benefits all implementations, not
just Harmony. Plus if Harmony contributors are running Mauve regularly, they're
getting the benefits of Mauve tests contributed by developers of other
implementations too.

(I've watched people go down this road before: I was following several projects
with independent class library implementations years before there was any
prospect of them merging into Classpath as they've now done. Even when there was
no cooperation on the library code, everybody seemed to agree it was in their
best interests to collaborate on the test suite...)

If it *is* recommended for Harmony contributors to put such tests into Mauve,
that recommendation probably ought to be mentioned in answer to questions like
the one that I replied to; the original poster didn't say whether their tests
were going to be of implementation internals or not...

 Would you like to help us get it working in our build/test framework?

I'm afraid you're asking the wrong person: I can't get Mauve working at all...

Stuart.



Re: build fails - what next?

2006-02-14 Thread Stuart Ballard
Geir Magnusson Jr geir at pobox.com writes:
 
 That's the problem.  As far as I know, GCJ isn't quite complete yet...
 

[javac]  (at line 63)
[javac] encodedParams = (byte []) s.readUnshared();
[javac] 
[javac] The method readUnshared() is undefined for the type
  ObjectInputStream

http://www.kaffe.org/~stuart/japi/htmlout/cvs/h-jdk14-classpath#err_missing_java_io

Congratulations! You managed to hit one of the only two missing methods in
Classpath's implementation of java.io. Might want to report what this breaks on
the Classpath list - they're usually quick to fix holes like this if they break
a real app, especially if it's a Free one.

Of course, getting it fixed is an entirely different issue from getting it into
gcj in a released version of your distro...

Stuart.



API coverage results for Harmony?

2006-02-11 Thread Stuart Ballard
(please keep me cc'd as I'm not subscribed to this list)

First off, I'd like to admit up front that I haven't been following the Harmony
project very closely and so I'm pretty ignorant about the state of your
progress, so please forgive any stupid misconceptions I may have.

I maintain a set of programs called japitools
(http://www.kaffe.org/~stuart/japi/ - not part of the kaffe project as such,
they just generously offered to host the homepage) which can be used to produce
(among other things) reports of how well a particular J2SE implementation covers
the API defined by Sun's reference implementation. In collaboration with the
Classpath developers I've been producing nightly results of Classpath's coverage
of each JDK release, as seen for example here (and others linked from the
homepage):

http://www.kaffe.org/~stuart/japi/htmlout/h-jdk14-classpath
http://www.kaffe.org/~stuart/japi/htmlout/h-jdk15-classpath-generics

I also send out emails to the classpath-testresults mailing list with reports on
the differences, if any, between each night's results, which is a handy way to
catch any API coverage regressions that might be introduced, as well as a nice
concrete way to see progress being made.

My understanding is that the Harmony project has made pretty significant
progress on its own class library implementation and I thought you might be
interested in producing similar nightly reports for Harmony. If you are
interested, there are a couple of ways we could go about it.

My machine doesn't have the resources to build a J2SE implementation itself so
for each project I report on I rely on their own nightly build infrastructure.
(I don't know if Harmony has such a thing set up already; alternatively a
developer could set up nightly build scripts on their own machine). Ideally (and
to match what other projects do) the script would also check out the latest
japitools source code, build it, and run the Japize tool to produce a
harmony.japi.gz file, and then make that file available for download
somewhere. I'd then configure my scripts to download that file and produce the
comparisons you see (I can also provide those scripts and the JDK japi files so
if you want to run them yourselves you can - there's nothing secret about them
;) ).

If running Japize yourselves is a problem for any reason, if you instead made
your equivalent(s) of rt.jar (and jce.jar and jsse.jar if you have them)
available for download, I could do the Japize as part of my script too.

Is there any interest in something like this?

If you want nightly difference reports sent to some mailing list, please also
let me know which list :)

Thanks,
Stuart.