Bryce McKinlay wrote: > Gary Benson wrote: > > If compatibility _is_ broken, will it fail gracefully? > > libgcj 4.0.0 would crash if it saw a compiled class with an > incompatible version ID, but this is fixed in 4.0.1 and 4.1. Now, we > will silently refuse to load the class and fall back to the bytecode > interpreter when a native-compiled class could not be loaded for > some reason. > > But, I'm not sure that this is really the most "graceful" behaviour > - the user could easily be unaware that their .so did not load and > wonder why performance is bad. Other alternatives we could consider > include: > > 1. Issue a warning before falling back to the bytecode interpreter > 2. Throw a ClassFormatError/ClassNotFoundException/VerifyError My vote would go for #1. > Note that this will most likely happen when you try to run a newwer > compiled class against an old runtime. In general, we will try to > preserve backwards-compatibility so that old compiled classes will > continue to work with new runtimes - although, as Tom points out, we > don't yet guarantee it. Cool.