 NEWS/ChangeLog for rJava
--------------------------

0.4-11  2006-10-10
    o	Replace variadic macros with wrappers (for compilers that don't
	support ISO C99).

    o	Modify JNI error reporting - use warnings instead of direct stderr.

    o	Update to JRI 0.3-5

0.4-10	2006-09-14
    o	Removed obsolete JNI 1.1 support that is no longer provided
	in JDK 1.6 and thus prevented rJava from being used with JDK 1.6

    o	Update to JRI 0.3-4 (change compilation to force Java 1.4
	compatibility even when more recent JDK is used)

0.4-9	2006-09-12
    o	Update to JRI 0.3-3 which fixes API version mistake which

0.4-8	2006-09-11
    o	Added --enable-jri=auto option which will build JRI only if R
	shared library is present. It is now the default.

    o	Update to JRI 0.3-2 (added boolean support)

0.4-7	2006-09-05
    o	.jevalArray now works with Java objects that have not been
	cast to a Java array explicitly. The function is now also
	documented properly.

    o	Added .jgetEx and .jclear functions for querying and clearing
	of Java exceptions/throwables.

    o	Added .jthrow to allow throwing of exceptions from R code.

    o	Fixed a typo in .jrcall when handling string return values.

0.4-6	2006-08-20
    o	Fixed bug in initialization on Windows, introduced in 0.4-4

0.4-5	2006-06-24
    o	Added support for scalar bytes as .jbyte (byte arrays are still
	natively represented as RAW vectors)

    o	Added .r2j function which allows to push R objects into Java as
	references. This works only if R is run via JRI, because it
	requires a working Rengine instance.

0.4-4	2006-06-21
    o	Fixed bug that prevented loading into existing VM
	if the classpath contained duplicate items.
	.jmergeClassPath now filters out duplicate paths.

    o	.jcall and .jnew discard all named parameters that are passed
	as `...'. Named parameters are now reserved for future call options

    o	Converted all S3-methods into S4 methods.
	Also `show' is now used instead of `print' and the
	output format was changed.

    o	Protoype for jobjRef is now a valid null-Object

    o	Added .jequals and corresponding ==, != op methods.
	Currently == and != operators feature the same behavior as
	.jequals(...,strict=FALSE), i.e. scalar non-Java objects are
	converted into Java objects if possible and then compared, so
	 s <- .jnew("java/lang/String","foo")
	 s == "foo"  # returns TRUE

    o	Added .jinherits which allows to check Java-side
	inheritance using JNI (= isAssignableTo).

    o   Added .jfindClass and .jclassRef that return Java
	class object

    o	Added check parameter to .jcall and .jnew that allows the caller
	to prevent implicit call to .jcheck
	It is mainly useful in cases where silent operation
	is desired (e.g. in conjunction with try).
	Additionally, silent parameter was added to .jnew

    o	Added is.jnull which is like is.null but also returns
	TRUE if the supplied Java object is a null-reference

    o	Added jlong class and .jlong function. Those were documented in
	the tutorial but never really implemented. Still, they may not
	be supported in all parts of rJava.
	WARNING: conversion between Java's long and R's jlong is lossy!
	R stores jlong in doubles so the conversion implies loss of
	precision.

0.4-3	2006-05-16
    o	improved, documented and fixed handling of fields
	.jfield is dedicated accessor with more options

0.4-2	2006-05-08
    o	Update to JRI 0.2-5 (no change in rJava)

0.4-1	2006-05-05
    o	Fixed bug in Windows initialization

0.4-0	2006-05-03
    o	JRI is now included in rJava

0.3-9	2006-04-20
     o	fixed a minor bug in Rglue.c that may prevent older
	compilers from compiling it.

0.3-8	2006-04-17
     o	.jinit has an additional parameter 'parameters' that allows
	users to pass additional parameters to the VM (such as -X...)

     o	.jinit now uses a hack (defined in .jmergeClassPath) that
	allows us to modify the class path of a running VM. This may
	or may not work for a specific VM, because it is an ugly hack
	exploiting some implementational features of the VM.
	See .jmergeClassPath source for reference and explanation.

     o	.jarray now supports the use of .jarray(x) where x is a Java
	reference. The documentation requires you to use
	.jarray(list(x)), but since the use of .jarray(x) seems to be
	a very common mistake, we may as well silently support it.

     o	.jarray has an optional parameter contents.class which allows
	the global specification of the class type for arrays of
	objects. (Untested, use with care! In most cases .jcast is
	probably what you really want.)

     o	Added some more support for floats, longs and byte arrays.
	(Again, untested)

0.3-7	2006-01-31 (non-public release)
     o	New, experimental feature has been added - JNI cache. This
	feature can be enabled by passing --enable-jni-cache argument
	to configure. Normally, each time we access JVM we retrieve
	new JNI environment to make sure there are no threading
	issues. In single-threaded environment this is superfluous, so
	we may as well cache it. The idea is to reduce the
	overhead. However, the gain is not as huge as expected, so it
	is not enabled by default. Also note that threads and
	jni-cache are mutually exclusive.

     o	Another even more experimental feature has been added -
	support for threads. This feature is enabled by using
	--enable-threads configure argument. When threads support is
	enabled, JVM is started on a thread separate from the main
	thread. Some implementations of AWT classes require
	this. However, it is not always safe to use, because R event
	loop is unaware of the separate thread and can deadlock it.

0.3-6	2006-01-30
0.3-5	2006-01-02
0.3-4	2005-12-28
0.3-3	2005-12-20
0.3	2005-12-19	[finalizers, arrays]
0.2	2005-09-03	[S4 classes]
0.1	2003-08-26	[initial release]
