Question about the Generics branch.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wednesday 01 Mar 2006 14:38, theUser BL wrote:
> At
> http://builder.classpath.org/dist/
> are two versions:
> - GNU Classpath with generics
> and
> - GNU Classpath without generics
>
> At first I thoughted, that the generics-branch have more files and would be
> bigger then the normal version.
>

In theory, it does because it has new classes such as java.lang.Enum that 
can't be created on the main branch.

> But thats not true. classpath-latest.tar.gz is bigger then
> classpath-generics-latest.tar.gz and glibj-latest.zip is bigger then
> glibj-generics-latest.zip
>
This is because I'm currently in the process of merging the two back together, 
which is a fairly non-trivial task when there are major changes made on the 
main branch.

It isn't just that there are more files on the generics branch, but there are 
major changes to some of the core files in java.lang and java.util that 
prevent compilation without support for the new language features.  Thus, a 
change to one of these files on the main branch results in a fairly manual 
merge process to create a version which has both the changes and the generics 
additions.

> And looking inside the current Changelog of the both *.tar.gz files shows,
> that there existing some changes, which are in classpath-latest.tar.gz, but
> not in classpath-generics-latest.tar.gz and the other way around.
>

The former are due to the merge mentioned above; the two will be much closer 
shortly (there's more than a month's worth of patches to go in).  The latter 
are changes specific to that branch that (by and large) can't go on the main 
branch.

> So, it shows me, that classpath-latest.tar.gz is NOT a subset of
> classpath-generics-latest.tar.gz
>

No, the relationship isn't that straightforward.

> What me more wonder is, that in the cvs at
> http://cvs.savannah.gnu.org/viewcvs/?cvsroot=classpath there is no clue
> about the two branches. It seems, that there existing only the one there.
>

You need to change to use the combo box at the bottom to change the tag used 
if you just want to see the generics branch.  By default, it will show a 
hybrid of changes on all branches.  For example, files get removed twice 
(once on the main branch, once on the generics branch) in this view.

> And I don't know, why classpath-latest.tar.gz AND
> classpath-generics-latest.tar.gz exists.
> Why isn't it possible to have only one package. And that there existing
> configure options like
> ./configure --with-generics
> and
> ./configure --without-generis
>

Because the tree would have to contain two versions of every file that differs 
between the two and select it at compile time.   It's one possible solution, 
I suppose, but it introduces a build infrastructure that has to be modified 
everytime a file differs between the two and would have to be dropped when 
the two join back together (which will happen eventually).

> For all other things (which compiler is used, if gjdoc is installed, etc)
> are also configure-options.
> Why isn't it possible for generics.
>

See above .  You'd also have to handle the fact that a number of compilers 
can't be used with the generics branch.

> Btw: Which JVM can run the generics-branch?
> JamVM can only run with the glibj-latest.zip, but not with the
> glibj-generics-latest.zip.
>

JamVM should be able to run with both.  I do so.  The difference is in which 
compiler will be able to make sense of it.  As far as JVMs go, they merely 
need to be able to handle the new version number and ldc construct to run 
(which can occur with earlier code compiled to the 1.5 bytecode spec. 
anyway).  For full support, it needs to implement all the new VM stuff too, 
which isn't complete yet.

> I was first exposed, that Generics needs only a special compiler (gcjx,
> ecj). But it seems, that it needs also a special JVM. Which JVM can run the
> GNU Classpath generics-brach?
>
>

JamVM definately can.  I don't know about the current status of gcj and kaffe, 
as I believe that they are beginning to use an fairly unaltered Classpath, 
but my guess would be that they can't as yet; someone correct me if I'm 
wrong!  Best thing to do is try it and find out.  You probably at least need 
a VM that can take an arbitrary Classpath release like JamVM, as you will 
need to build the generics branch yourself and then point the VM at it.

> Greatings
> theuserbl

Thanks for your interest,
Cheers,
-- 
Andrew :)

Please avoid sending me Microsoft Office (e.g. Word, PowerPoint) attachments.
See http://www.fsf.org/philosophy/no-word-attachments.html
Support OpenDocument instead.

Escape the Java Trap with GNU Classpath!
http://www.gnu.org/philosophy/java-trap.html
public class gcj extends Freedom implements Java { ... }

"Value your freedom, or you will lose it, teaches history. 
`Don't bother us with politics' respond those who don't want to learn." 
-- Richard Stallman


[Index of Archives]     [Linux Kernel]     [Linux Cryptography]     [Fedora]     [Fedora Directory]     [Red Hat Development]

  Powered by Linux