*** Changes in GCC 3.4: * Compiling a .jar file will now cause non-.class entries to be automatically compiled as resources. * libgcj has been ported to Darwin. * Jeff Sturm has adapted Jan Hubicka's call graph optimization code to gcj. * libgcj has a new gcjlib URL type; this lets URLClassLoader load code from shared libraries. * libgcj has been much more completely merged with GNU Classpath. * Class loading is now much more correct; in particular the caller's class loader is now used when that is required. * Eclipse 2.x will run out of the box using gij. * Parts of java.nio have been implemented. Direct and indirect buffers work, as do fundamental file and socket operations. * java.awt has been improved, though it is still not ready for general use. * The HTTP protocol handler now uses HTTP/1.1 and can handle the POST method. * The MinGW port has matured. Enhancements include socket timeout support, thread interruption, improved Runtime.exec() handling and support for accented characters in filenames. *** Changes in GCC 3.3: * The java.sql and javax.sql packages now implement the JDBC 3.0 (JDK 1.4) API. * The JDK 1.4 assert facility has been implemented. * The bytecode interpreter is now direct threaded and thus faster. *** Changes in GCC 3.1: * libgcj now includes RMI, java.lang.ref.*, javax.naming, and javax.transaction. * Property files and other system resources can be compiled into executables which use libgcj using the new gcj --resource feature. * libgcj has been ported to more platforms. In particular there is now a mostly-functional mingw32 (Windows) target port. * JNI and CNI invocation interfaces were implemented, so gcj-compiled Java code can now be called from a C/C++ application. * gcj can now use builtin functions for certain known methods, for instance Math.cos. * gcj can now automatically remove redundant array-store checks in some common cases. * The --no-store-checks optimization option was added. This can be used to omit runtime store checks for code which is known not to throw ArrayStoreException * The following third party interface standards were added to libgcj: org.w3c.dom and org.xml.sax. * java.security has been merged with GNU Classpath. The new package is now JDK 1.2 compliant, and much more complete. * A bytecode verifier was added to the libgcj interpreter. * java.lang.Character was rewritten to comply with the Unicode 3.0 standard, and improve performance. * Partial support for many more locales was added to libgcj. * Socket timeouts have been implemented. * libgcj has been merged into a single shared library. There are no longer separate shared libraries for the garbage collector and zlib. * Several performance improvements were made to gcj and libgcj: o Hash synchronization (thin locks) o A special allocation path for finalizer-free objects o Thread-local allocation o Parallel GC, and other GC tweaks *** Changes in GCC 3.0: * libgcj now includes a bytecode interpreter. If a compiled version of a class is not found in the application binary or linked shared libraries, the class loader will search for a bytecode version in the CLASSPATH and execute it using the interpreter. A new front end that behaves like the traditional `java' command is also provided: `gij'. * Support for specifying java system properties. Properties can either be set at runtime via the GCJ_PROPERTIES environment variable in the format "= ..."'; or can be compiled into an application binary using -D=. * Support for setjmp/longjmp (sjlj) exception handling has been added, as an alternative to the existing range-table based mechanism. sjlj is the default on non-sparc, non-x86 targets, or can be specified with the `--enable-sjlj-exceptions' configure parameter. * Complete JDK 1.1 reflection support, including invocation. * Throwable.printStackTrace() has been implemented. * Runtime.loadLibrary() has been implemented. * Class.forName() will now try to load a series of shared objects in order to find the requested class. If a class `gnu.quux.whatever' is requested, libgcj will search the system shared library path (eg LD_LIBRARY_PATH) for `gnu-quux-whatever.so', then `gnu-quux.so', and finally `gnu.so'. * A pure-java implementation of java.math.BigInteger. New in libgcj 2.95: * First public release