gcc/libjava/NEWS

331 lines
11 KiB
Plaintext
Raw Normal View History

*** Changes in GCC 4.0:
* Character encoders and decoders have been added for: iso-8859-6
(arabic), iso-8859-7 (greek), iso-8859-8 (hebrew), iso-8859-9
(latin-5), iso-8859-13, iso-8859-15 (latin-9), cp1047 (ebcdic),
ebcdic-xml-us,ascii, windows-1250, windows-1252, UTF-16BE (Big Endian),
UTF-16LE (Little Endian), UTF-32BE (Big Endian), UTF-32LE (Little
Endian).
* Lots of Calendar bug fixes.
* The http url protocol handler has been replaced with a full HTTP/1.1
version from GNU inetlib.
* A new ftp url protocol handler has been added also from GNU inetlib.
* java.beans has been updated to 1.4 including support for XMLEncoder
and XMLDecoder.
* Added implementations of javax.xml (JAXP 1.3), org.xml.sax (SAX2)
and org.w3c.dom (DOM Level 3) interfaces. It is possible to switch
between different implementations AElfred2, GNU DOM, GNU XSL, libxmlj
SAX, libxmlj DOM and libxmlj XSL by setting different system
properties. Also provided is a preliminary XPath 1.0
implementation. The libxmlj versions are build around libxml2 and
libxslt and have to be enabled during build time by the --enable-xmlj
configure flag. The current support is equal to the last released GNU
JAXP 1.3 release. These packages will be maintained as part of the GNU
Classpath core classes in the future. For more information,
conformance results and documentation on selecting different
implementations see doc/README.jaxp.
* Much fuller collection documentation.
* libgcj can now load service providers that are described via
META-INF/services/* resources in extension JARs. This is useful for
implementing the various APIs that are supposed to be extensible via
custom plugins. For details, please see the documentation of
gnu.classpath.ServiceFactory.
* GNU Classpath's JAR implementation now has preliminary support for
signed entries, for so called "signed JAR" file support. Signed JAR
files are one of the key security features of managed runtimes, and
allows code to run privileged given unforgeable proofs of identity.
* A much improved version of X.509 certificates has been added,
including a robust certificate path checking algorithm. Also included
is an implementation of the RSA signature scheme.
* New javax.crypto, javax.crypto.interfaces, javax.crypto.spec,
javax.net, javax.net.ssl, javax.security.auth,
javax.security.auth.callback, javax.security.auth.login,
javax.security.auth.x500, javax.security.sasl and org.ietf.jgss
packages are now officially part of GNU Classpath. Extra crypto
algorithms can be obtained from the GNU Crypto project, a full TLS
implementation is provided by the Jessie project.
http://www.gnu.org/software/gnu-crypto/
http://www.nongnu.org/jessie/
* java.security.AccessController has been implemented.
* The default java.lang.SecurityManager now uses AccessController.
* Lookahead support for regular expressions.
* java.util.regexp implementation through gnu.regexp wrappers.
* Serialization object stream fixes for multiple ClassLoader scenarios.
* java.net.URL now uses application classloader to load
URLStreamHandlers and reuses URLStreamHandlers when URL is reset (but
protocol isn't changed).
* java.io.File.deleteOnExit() implementation.
* java.io is now implemented by delegating most tasks directly to
java.nio.
* Reworked/Optimized implementations of java.nio.Buffer and subclasses.
* BufferedReader speed improvements.
* Multiple java.net.InetAdress fixes and java.rmi fixes.
* ServerSocket.accept() now restarts listening when system call
interrupted.
* java.net.URI implementation.
* New javax.print, javax.print.attribute[.standard] and
javax.print.event packages and classes.
* java.text multiple new features and bug fixes (only 2 out of the
1000+ java.text Mauve tests now fail).
* java.text attributed iterators support.
* Improved useabilty of java.text implementation for several
applications.
* More AWT accessible support.
* AWT gtk+ peers component layout, dialog placement, keyboard focus
handling and text positioning have been improved.
* ImageIO interfaces are more complete.
* JList, JTable and JTree have been hugely improved.
* java.awt.Robot support with GdkRobot in the gtk+ awt peers. Needs
XTest Extension (libXtst) XServer support.
* Full java.awt.color implementation, with all standard ICC profiles,
except for PhotoYCC color space.
* java.awt.image support updated to 1.4.
* Big-endian (PowerPC) fixes for native awt GTK+ peers.
* Better AWT focus management fro GTK+ peers.
* Much faster and better fonts support (for both gdk Graphics and cairo
Graphics2D)
* AWT Choice fixes for hidden components.
* More javax.imageio support.
* Better AWT Help MenuBar support.
* Swing TabbedPane, ColorChooser and ComboBox improvements.
* Start of JTree functionality.
* javax.swing.Spring and SpringLayout support.
* Added pluggable look and feel support for BasicTextFieldUI and
BasicToolBarSeparatorUI.
* java.swing.text support for (Default and Layered) Highlighter,
FieldView, PlainView, TabExpander and TabableView added.
* Start of JTable and JTree implementation.
* Internal Swing frames work.
* JMenu and JPopupMenu work.
* New gtk+ AWT FileDialog peer now based on gtk+2.4 or higher.
* java.awt.image LookupTables and kernel support.
* Improved java.awt.image.BufferedImage support.
* AWT 1.0 event model support.
* Frame.setIconImage() support.
* AWT GDKGraphics scaling.
* New configure flag --enable-gtk-cairo to build Graphics2D
implementation build on cairo and pangoft2. Enabled at runtime by
defining the system property gnu.java.awt.peer.gtk.Graphics=Graphics2D.
* javax.swing.JSpinner implemented.
* java.awt.geom completed. Area, Arc2D, Ellipse2D and Line2D
implemented.
* JColorChooser, JComboBox and JTextField implemented, including
example uses in GNU Classpath Examples swing Demo.
* Better (non-black) default AWT System colors.
* AWT lists use GTK treeviews.
* Proper AWT focus management has been implemented.
* Swing menus and scrollpanes are beginning to work.
* Swing splitpanes, dialogs and internal frames were added.
* Swing repainting / double buffering was redone.
* Font management and Pango DPI conversion fixes.
* A lot of AWT imaging and event bugs have been picked out.
* More of javax.swing.text has been implemented.
* javax.swing.Timer has been reimplemented.
* The gnu.java.awt.EmbeddedWindow class has been improved, and now
supports embedding AWT windows in other top-level X windows. This
functionality is required by gcjwebplugin.
* New javax.imageio, javax.imageio.event and javax.imageio.spi packages
and classes.
* Working implementation of javax.swing.undo.
* java.awt.geom.CubicCurve2D/QuadCurve2D: Can now solve cubic and
quadratic equations; implementation adapted from the GNU Scientific
Library.
* Lots of java.awt and gtk+ peer improvements. Also more Swing work.
Start of EmbeddedWindow support.
*** 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:
[multiple changes] 1999-08-09 Anthony Green <green@cygnus.com> * gij.cc: New file. * include/config.h.in: Rebuilt. * acconfig.h: Add INTERPRETER. * configure: Rebuilt. * Makefile.in: Rebuilt. * Makefile.am (libffi_files): Identify the libffi object files for inclusion in libgcj. (LIBFFIINCS): Define. * interpret.cc (gnu::gcj::runtime::MethodInvocation::continue1): Dummy definition for configurations without an interpreter. * java/net/natPlainSocketImpl.cc (getOption): Disamiguate call to java::lang::Boolean constructor. * include/java-interp.h: Always include java-cpool.h. * java/lang/natClassLoader.cc (getVMClassLoader0): Always return 0 when INTERPRETER not defined. * java/lang/Class.h (finalize): Define. * gnu/gcj/util/path/DirectoryPathEntry.java (getURL): Catch IOException from File.getCanonicalPath. (getStream): Likewise. * NEWS: More news. * THANKS: More thanks. 1999-08-09 Kresten Krab Thorup <krab@gnu.org> * resolve.cc (get_ffi_type_from_signature): Generate uint16 for jchar type. (_Jv_PrepareClass): Allow non-abstract classes to have abstract subclasses. (_Jv_ResolvePoolEntry): Revert subclass check for protected fields and methods. * interpret.cc (continue1/perform_invoke): Don't sign extend uint16 return val. (continue1/lshl,lshr): Push long, not int. (continue1/ulshr): Use UINT64, not long long. * defineclass.cc (handleFieldsEnd): Handle case when all fields are static. * java/lang/natClass.cc (forName): Add call to _Jv_InitClass. * java/lang/FirstThread.java (run): Add top-level exception handler. (run0): Renamed from run. 1999-08-08 Kresten Krab Thorup <krab@gnu.org> * configure.in (--with-interpreter): Added. * include/config.h.in (INTERPRETER): Added. * java/lang/ClassLoader.java: File replaced. * java/lang/VMClassLoader.java: New file. * java/lang/natClassLoader.cc: New file. * gnu/gcj/runtime/MethodInvocation.java: New file. * gnu/gcj/util/path/SearchPath.java: New file. * gnu/gcj/util/path/PathEntry.java: New file. * gnu/gcj/util/path/DirectoryPathEntry.java: New file. * gnu/gcj/util/path/ZipPathEntry.java: New file. * gnu/gcj/util/path/URLPathEntry.java: New file. * gnu/gcj/util/path/CacheEntry.java: New file. * include/java-interp.h: New file. * include/java-cpool.h: New file. * include/java-insns.h: New file. * defineclass.cc: New file. * interpret.cc: New file. * resolve.cc: New file. * java/lang/natClass.cc (loaded_classes, _Jv_RegisterClass, _Jv_RegisterClasses, _Jv_FindClassInCache, _Jv_FindClass, _Jv_NewClass, _Jv_FindArrayClass): Moved to natClassLoader.cc. (finalize): New. (STATE_NOTHING, STATE_RESOLVED, STATE_IN_PROGRESS, STATE_DONE, STATE_ERROR): Moved to java/lang/Class.h and renamed with JV_ prefix. (initializeClass): Use new JV_ prefixed names. Also, call ClassLoader::resolveClass instead of _Jv_ResolveClass. * java/lang/Class.h (JV_STATE_PRELOADING, JV_STATE_LOADING, JV_STATE_LOADED, JV_STATE_COMPILED, JV_STATE_PREPARED, JV_STATE_LINKED): New. (_Jv_WaitForState, _Jv_RegisterInitiatingLoader, _Jv_UnregisterClass, _Jv_InternClassStrings): New friends. (_Jv_IsInterpretedClass, _Jv_InitField, _Jv_LookupDeclaredMethod, _Jv_DetermineVTableIndex, _Jv_ResolvePoolEntry, _Jv_PrepareClass, _Jv_ClassReader, _Jv_InterpClass, _Jv_InterpMethod, _Jv_InterpMethodInvocation): New friends for interpreter. (finalize): New. (CONSTANT_Class, CONSTANT_String, etc.): Moved to include/java-cpool.h and renamed with JV_ prefix. * include/jvm.h (_Jv_makeUtf8Const, _Jv_makeUtf8TypeConst): New decls. (_Jv_UnregisterClass): New decl. * java/lang/natClassLoader.cc (_Jv_FindArrayClass): Added class loader argument. (_Jv_FindClass): Use class loader. * prims.cc (_Jv_makeUtf8Const): New function. (_Jv_NewObjectArray): Change use of _Jv_FindArrayClass. (_Jv_NewPrimArray): Ditto. (_Jv_FindClassFromSignature): Ditto. * java/lang/reflect/natArray.cc (newInstance): Ditto. * java/lang/reflect/natMethod.cc (getType): Ditto. * include/java-field.h (_Jv_Field::isRef): Make robust for non-resolved contexts. * boehm.cc (_Jv_MarkObj): Mark interpreter-related fields. Also, don't mark class->next field. * java/lang/VirtualMachineError.java: Added FIXME note. * configure.in (INTERPSPEC): New spec. * libgcj.spec.in: Added INTERPSPEC. * Makefile.am: Added gcjh friends for java/lang/VMClassLoader and gnu/gcj/runtime/MethodInvocation. (libgcj_la_SOURCES): Added resolve.cc defineclass.cc interpret.cc. (ordinary_java_source_files): Added above mentioned java classes. * configure: Rebuilt. * Makefile.in: Rebuilt. From-SVN: r28597
1999-08-08 22:06:23 +08:00
2000-02-15 16:51:29 +08:00
* 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
2000-02-15 17:35:51 +08:00
`java' command is also provided: `gij'.
[multiple changes] 1999-08-09 Anthony Green <green@cygnus.com> * gij.cc: New file. * include/config.h.in: Rebuilt. * acconfig.h: Add INTERPRETER. * configure: Rebuilt. * Makefile.in: Rebuilt. * Makefile.am (libffi_files): Identify the libffi object files for inclusion in libgcj. (LIBFFIINCS): Define. * interpret.cc (gnu::gcj::runtime::MethodInvocation::continue1): Dummy definition for configurations without an interpreter. * java/net/natPlainSocketImpl.cc (getOption): Disamiguate call to java::lang::Boolean constructor. * include/java-interp.h: Always include java-cpool.h. * java/lang/natClassLoader.cc (getVMClassLoader0): Always return 0 when INTERPRETER not defined. * java/lang/Class.h (finalize): Define. * gnu/gcj/util/path/DirectoryPathEntry.java (getURL): Catch IOException from File.getCanonicalPath. (getStream): Likewise. * NEWS: More news. * THANKS: More thanks. 1999-08-09 Kresten Krab Thorup <krab@gnu.org> * resolve.cc (get_ffi_type_from_signature): Generate uint16 for jchar type. (_Jv_PrepareClass): Allow non-abstract classes to have abstract subclasses. (_Jv_ResolvePoolEntry): Revert subclass check for protected fields and methods. * interpret.cc (continue1/perform_invoke): Don't sign extend uint16 return val. (continue1/lshl,lshr): Push long, not int. (continue1/ulshr): Use UINT64, not long long. * defineclass.cc (handleFieldsEnd): Handle case when all fields are static. * java/lang/natClass.cc (forName): Add call to _Jv_InitClass. * java/lang/FirstThread.java (run): Add top-level exception handler. (run0): Renamed from run. 1999-08-08 Kresten Krab Thorup <krab@gnu.org> * configure.in (--with-interpreter): Added. * include/config.h.in (INTERPRETER): Added. * java/lang/ClassLoader.java: File replaced. * java/lang/VMClassLoader.java: New file. * java/lang/natClassLoader.cc: New file. * gnu/gcj/runtime/MethodInvocation.java: New file. * gnu/gcj/util/path/SearchPath.java: New file. * gnu/gcj/util/path/PathEntry.java: New file. * gnu/gcj/util/path/DirectoryPathEntry.java: New file. * gnu/gcj/util/path/ZipPathEntry.java: New file. * gnu/gcj/util/path/URLPathEntry.java: New file. * gnu/gcj/util/path/CacheEntry.java: New file. * include/java-interp.h: New file. * include/java-cpool.h: New file. * include/java-insns.h: New file. * defineclass.cc: New file. * interpret.cc: New file. * resolve.cc: New file. * java/lang/natClass.cc (loaded_classes, _Jv_RegisterClass, _Jv_RegisterClasses, _Jv_FindClassInCache, _Jv_FindClass, _Jv_NewClass, _Jv_FindArrayClass): Moved to natClassLoader.cc. (finalize): New. (STATE_NOTHING, STATE_RESOLVED, STATE_IN_PROGRESS, STATE_DONE, STATE_ERROR): Moved to java/lang/Class.h and renamed with JV_ prefix. (initializeClass): Use new JV_ prefixed names. Also, call ClassLoader::resolveClass instead of _Jv_ResolveClass. * java/lang/Class.h (JV_STATE_PRELOADING, JV_STATE_LOADING, JV_STATE_LOADED, JV_STATE_COMPILED, JV_STATE_PREPARED, JV_STATE_LINKED): New. (_Jv_WaitForState, _Jv_RegisterInitiatingLoader, _Jv_UnregisterClass, _Jv_InternClassStrings): New friends. (_Jv_IsInterpretedClass, _Jv_InitField, _Jv_LookupDeclaredMethod, _Jv_DetermineVTableIndex, _Jv_ResolvePoolEntry, _Jv_PrepareClass, _Jv_ClassReader, _Jv_InterpClass, _Jv_InterpMethod, _Jv_InterpMethodInvocation): New friends for interpreter. (finalize): New. (CONSTANT_Class, CONSTANT_String, etc.): Moved to include/java-cpool.h and renamed with JV_ prefix. * include/jvm.h (_Jv_makeUtf8Const, _Jv_makeUtf8TypeConst): New decls. (_Jv_UnregisterClass): New decl. * java/lang/natClassLoader.cc (_Jv_FindArrayClass): Added class loader argument. (_Jv_FindClass): Use class loader. * prims.cc (_Jv_makeUtf8Const): New function. (_Jv_NewObjectArray): Change use of _Jv_FindArrayClass. (_Jv_NewPrimArray): Ditto. (_Jv_FindClassFromSignature): Ditto. * java/lang/reflect/natArray.cc (newInstance): Ditto. * java/lang/reflect/natMethod.cc (getType): Ditto. * include/java-field.h (_Jv_Field::isRef): Make robust for non-resolved contexts. * boehm.cc (_Jv_MarkObj): Mark interpreter-related fields. Also, don't mark class->next field. * java/lang/VirtualMachineError.java: Added FIXME note. * configure.in (INTERPSPEC): New spec. * libgcj.spec.in: Added INTERPSPEC. * Makefile.am: Added gcjh friends for java/lang/VMClassLoader and gnu/gcj/runtime/MethodInvocation. (libgcj_la_SOURCES): Added resolve.cc defineclass.cc interpret.cc. (ordinary_java_source_files): Added above mentioned java classes. * configure: Rebuilt. * Makefile.in: Rebuilt. From-SVN: r28597
1999-08-08 22:06:23 +08:00
2000-02-15 16:51:29 +08:00
* Support for specifying java system properties. Properties can either be set
at runtime via the GCJ_PROPERTIES environment variable in the format
"<name>=<value> ..."'; or can be compiled into an application binary using
-D<name>=<value>.
2000-01-20 07:08:05 +08:00
* Support for setjmp/longjmp (sjlj) exception handling has been added, as an
2000-02-15 17:35:51 +08:00
alternative to the existing range-table based mechanism. sjlj is the default
2000-02-15 16:51:29 +08:00
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.
2000-01-20 07:08:05 +08:00
* Throwable.printStackTrace() has been implemented.
2000-02-15 17:35:51 +08:00
* 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'.
2000-02-15 16:51:29 +08:00
* A pure-java implementation of java.math.BigInteger.
2000-01-20 07:08:05 +08:00
New in libgcj 2.95:
* First public release