Retrotranslator Changelog
=================================

1.2.9 (2009-08-09)
---------------------------------
  - Fixed a bug: VerifyError: Stack size too large when translating to 1.2 or 1.1.
  - Metadata embedded with the reflection option take the highest precedence.
  - Backports for interfaces can be inherited when using the smart option.
  - Regular expressions can contain quoted strings that end with a back slash.
  - Added support for java.net.Socket(java.net.Proxy), but the proxy is ignored.

1.2.8 (2008-12-14)
---------------------------------
  - Dropped the support of the Android platform.
  - Smaller jars when using embedding since the runtime library doesn't use its advanced features internally.

1.2.7 (2008-06-22)
---------------------------------
  - Added limited support for using backports via reflection.
  - Added support for Java 5.0 features in regular expressions.
  - Added support for java.math.BigDecimal.stripTrailingZeros().
  - Added options -syncvolatile and -syncfinal to emulate Java 5.0 memory model.
  - Added support for methods highestOneBit and lowestOneBit of java.lang.Integer and java.lang.Long.
  - Added option -keepclasslit to prevent replacement of certain types with their base types in class literals.
  - Added a feature to identify the current JVM as Java 5.0 when using the java.lang.System.getProperty method.
  - Fixed a bug: cannot read annotations when using "-reflection safe".

1.2.6 (2008-02-29)
---------------------------------
  - The -embed option does not require the -destjar or -destdir options.
  - Fixed a bug introduced in 1.2.5. All hyphens in file and directory names were replaced with
    dollar signs in advanced mode or when the Retrotranslator.fixHyphen option was specified.

1.2.5 (2008-02-26)
---------------------------------
  - Added support for generics and annotations on the Android platform.
  - Added options -reflection and -stripannot.

1.2.4 (2008-01-28)
---------------------------------
  - Added support for Java 5.0 API on J2SE 1.3.
  - Fixed a bug in translation of inner classes for Java 1.3 and earlier.
  - Added a workaround for a bug #4776385 in Sun JDK 1.2.2 for Windows.
  - Fixed a bug: translated jar files didn't contain directory entries.
  - Added support for java.lang.reflect.Member.isSynthetic().
  - Added support for java.math.BigDecimal.divide(BigDecimal).
  - Added support for the java.lang.Math methods: cbrt(double), cosh(double), expm1(double),
    log10(double), log1p(double), signum(double), signum(float), sinh(double), tanh(double).
  - Added support for UnsupportedOperationException(String, Throwable), UnsupportedOperationException(Throwable).

1.2.3 (2007-10-28)
---------------------------------
  - Basic support for Java 1.1, 1.2, and 1.3.
  - Backports are loaded using the classpath option.
  - New option -smart to make backports inheritable.
  - Support for Java 5 methods of java.util.Properties.
  - Support for Java 5 methods of javax.net.ssl.HttpsURLConnection.
  - Support for SecurityException(String, Throwable), SecurityException(Throwable).
  - Limited support for java.lang.Thread.getState() and java.lang.Thread.getAllStackTraces().
  - Limited support for Java 5 methods of java.net.URLConnection and java.net.HttpURLConnection.
  - Limited support for java.util.Timer(String), java.util.Timer(String, boolean), java.util.Timer.purge().
  - Improved the -uptodatecheck functionality, in particular when translating jars.
  - Fixed a bug: Interface methods that override methods from java.lang.Object didn't work in certain cases.
  - Fixed a bug: Missing constructors passed verification when such constructors were present in base classes.
  - Fixed a bug: It wasn't possible to catch exceptions in java.lang.Thread.run() when using the advanced option.
  - Added a warning for a case when wrong classes are used for the verification.
  - With the -lazy option only translated classes are verified.
  - Upgraded to backport-util-concurrent 3.1.

1.2.2 (2007-06-25)
---------------------------------
  - Support for java.math.BigInteger.TEN.
  - Support for java.lang.Short.reverseBytes(short).
  - Support for java.lang.StackTraceElement(String, String, String, int).
  - Support for the append methods of java.io.StringWriter and java.io.CharArrayWriter.
  - Support for java.math.BigDecimal(char[]) and java.math.BigDecimal(char[], int, int).
  - Limited support for java.lang.StringBuffer.trimToSize().
  - Limited support for java.lang.Thread.UncaughtExceptionHandler.
  - Limited support for java.nio.charset.Charset.defaultCharset().
  - Limited support for java.lang.management.ManagementFactory.getPlatformMBeanServer().
  - New option -support to enable advanced features one by one.
  - New option -uptodatecheck to skip translation of files if the destination files are newer.
  - Changed the messages printed during translation.
  - Fixed a bug with using enum values when initializing static fields of the same enum.

1.2.1 (2007-02-01)
---------------------------------
  - Support for java.util.Deque and java.util.ArrayDeque.
  - Support for java.util.Arrays.copyOf(...) and java.util.Arrays.copyOfRange(...).
  - Limited support for UNICODE-related methods of Character, String, and StringBuffer.
  - The -backport option accepts individual classes and is used even when -retainapi is specified.

1.2.0 (2007-01-10)
  WARNING: This release is not fully compatible with the previous one.
---------------------------------
  - Supported java.lang.ThreadLocal.remove() in advanced mode.
  - Added -target option for Java 6 to Java 5 translation.
  - Improved bytecode compatibility with different JVMs.
  - Backported java.util.concurrent.locks.LockSupport.
  - Added java.net.Proxy and java.net.ProxySelector.
  - Added java.net.URL.openConnection(Proxy), currenly the argument is ignored.
  - Added java.lang.instrument.* classes, but instrumentation is not supported.
  - Added java.lang.Thread.State enumeration, but Thread.getState() is not implemented.
  - Limited support for DecimalFormat.isParseBigDecimal() and DecimalFormat.setParseBigDecimal(boolean).
  - Removed deprecated Retrotranslator constructor and JITRetrotranslator.install method.
  - Ant task: added nested fileset, jarfileset, and dirset; removed src.
  - Upgraded to backport-util-concurrent 3.0.
  - Signature is being removed when translating signed jars.
  - Retrotranslator runtime depends on backport-util-concurrent.
  - When embedding runtime support, only directly or indirectly referenced classes are being kept.

1.1.0 (2006-11-08)
---------------------------------
  - New -retainflags option to keep Java 5 specific access modifiers (was default before).
  - SoftReference(Object, ReferenceQueue) and WeakReference(Object, ReferenceQueue) are being
    intercepted in advanced mode to support null for the second parameter on any JVM 1.4.

1.0.9 (2006-10-25)
---------------------------------
  - Supported: java.net.URL.toURI().
  - Supported: all methods of java.lang.reflect.AccessibleObject.
  - Supported: java.lang.Integer.signum(int) and java.lang.Long.signum(long).
  - Supported: java.util.Formatter and formatting methods of java.lang.String.
  - Supported: all constructors and methods of java.io.PrintStream and java.io.PrintWriter.
  - New -backport option for user-specified backport packages.
  - New options for JITRetrotranslator: -advanced and -backport (-advanced was default before).
  - Bug fixed: Embedding runtime & backport failed in UNIX environments.
  - Only required jars are being embedded when an -embed option is specified.

1.0.8 (2006-08-20)
---------------------------------
  - Supported: all constructors of java.io.PrintWriter.
  - Supported: java.rmi.server.RemoteObjectInvocationHandler.
  - Supported: IllegalArgumentException(String, Throwable), IllegalArgumentException(Throwable).
  - Supported: java.util.concurrent.locks.Condition.awaitNanos(long) but with very little accuracy guarantees.
  - Supported in BigDecimal: divideAndRemainder(BigDecimal), divideToIntegralValue(BigDecimal), remainder(BigDecimal).
  - Bug fixed: translation did not work for ReentrantReadWriteLock.readLock() and ReentrantReadWriteLock.writeLock().
  - New -retainapi option to make classes compatible with JVM 1.4 but keep use of Java 5 API.

1.0.7 (2006-07-04)
---------------------------------
  - Bug fixed: MissingResourceException when Java 5.0 API is used for classes generated at runtime.
  - Ability to specify a package name for embedding retrotranslator-runtime-x.x.x.jar and backport-util-concurrent.jar.

1.0.6 (2006-06-27)
---------------------------------
  - Emulated generic signatures for the collections framework classes (useful for JAXB).
  - Cached data used by the transformer can be garbage collected.

1.0.5 (2006-06-05)
---------------------------------
  - New -advanced option allows to override Java 1.4 methods.
  - Supported in BigDecimal: ZERO, ONE, TEN, pow(int), toPlainString(), valueOf(double), valueOf(long).
  - Supported BigDecimal.setScale(int, int) for negative scales in advanced mode.
  - Ability to process UTF-8 text files in addition to bytecode: "-srcmask *.class;*.tld".
  - getMethod(String, Class...) and getDeclaredMethod(String, Class...) are intercepted in advanced mode
    to better support generics and covariant return types on several JVM implementations, e.g. JRockit 1.4.2_08-b03.
  - Upgraded to backport-util-concurrent 2.2.
  - Deleted net.sf.retrotranslator.runtime.java.util._Collections (edu.emory.mathcs.backport.java.util.Collections is
    used instead), so retrotranslator-runtime-1.0.5.jar is NOT binary compatible with retrotranslator-runtime-1.0.4.jar.

1.0.4 (2006-04-25)
---------------------------------
  - Bug fixed: String.replace(CharSequence, CharSequence) did not work with some characters.
  - Bug fixed: NotSerializableException when serializing annotations.
  - Retrotranslator will not replace "-" by "$" in identifiers any more, e.g. in "package-info.class".

1.0.3 (2006-04-04)
---------------------------------
  - Bug fixed: NullPointerException on invisible (RetentionPolicy.CLASS) annotations
  - Supported: java.util.regex.Pattern.quote(String).

1.0.2 (2006-03-21)
---------------------------------
   - Bug fixed: exception on deserialization of enum inner classes.

1.0.1 (2006-03-13)
---------------------------------
   - Bug fixed: NullPointerException in RetrotranslatorTask
   - Access to methods emptyList(), emptyMap(), emptySet() of java.util.Collections
     is now being replaced with access to fields EMPTY_LIST, EMPTY_MAP, EMPTY_SET.

1.0.0 (2006-03-10)
---------------------------------
   - Ability to process JAR files.
   - Supported: System.nanoTime(), System.clearProperty(String), Boolean.compareTo(Boolean)

0.9.9 (2006-03-01)
---------------------------------
  - Supported: Thread.getId(), UUID, MatchResult, Flushable, Appendable, Readable.
  - Retrotranslator transformer API was improved for better plugin integration.
  - JIT Retrotranslator works on IBM JDK and BEA JRockit JDK.
  - Bug fixed: debug information is kept in translated classes.
  - Bug fixed: invocations of DelayQueue are translated properly.
  - Bug fixed: JIT Retrotranslator supports runtime annotations.

0.9.8 (2006-02-03)
---------------------------------
  - Bug fixed: translated classes didn't work on JRE 1.4.1-b21 where only java.lang.Object may be used
    as qualifying type for array cloning. See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4750641
  - Limited support for Thread.getStackTrace(). Non-empty stack trace is returned only for current thread.
  - Support for StringBuffer(CharSequence) and for StringBuffer methods: append(CharSequence),
    append(CharSequence, int, int), insert(int, CharSequence), insert(int, CharSequence, int, int)
  - Option "-lazy" was added to transform Java 5.0 bytecode only.
  - Upgrade to backport-util-concurrent 2.1.

0.9.7 (2006-01-12)
---------------------------------
  - Support for EnumMap, Closeable, IllegalStateException(String, Throwable), IllegalStateException(Throwable).
  - Class literal expression (Classname.class) caused class initialization, fixed.
  - A private copy of ASM was put into retrotranslator-runtime-0.9.7.jar to prevent ASM versions conflict.
  - JITRetrotranslator does not require sun.misc.* classes to compile.

0.9.6 (2006-01-05)
---------------------------------
  - Dynamic discovery of backported classes.
  - Full support for generics reflection.
  - Improved java.lang.Enum support.
  - Support for all methods in java.lang.Class.
  - Support for BigDecimal(int), BigDecimal(long).
  - Iterable is distinct from Collection, but even Iterable arrays can hold Collections.
  - Patch 1392759 - build patch to create maven repository deployment units.

0.9.5 (2005-12-28)
---------------------------------
  - Support for EnumSet.
  - Support for methods in Arrays.
  - Partial support for generics reflection.
  - Patch 1392096 - easier integration to Maven 2.
  - Patch 1391894 - fix for bug 1391863.
  - Patch 1391842 - build patch for Mac OS X.
  - ASM 2.1 replaced with ASM 3.0 beta.

0.9.4 (2005-12-19)
---------------------------------
  - Support for methods in LinkedList: element, offer, peek, poll, remove.
  - Support for methods in Package: isAnnotationPresent, getAnnotation, getAnnotations, getDeclaredAnnotations.
  - A variable or field of type Queue is assignable from LinkedList.
  - A variable or field of type AnnotatedElement is assignable from Package, Class, Constructor, Field, or Method.
  - Bug fix: IOException when JIT Retrotranslator runs jar file with dependencies.

0.9.3 (2005-12-13)
---------------------------------
  - JIT Retrotranslator for Sun JVM 1.4 added. You may launch your application from
    net.sf.retrotranslator.transformer.JITRetrotranslator or simply
    call JITRetrotranslator.install() before loading Java 5.0 classes.
  - java.lang.Iterable is now replaced with java.util.Collection during translation.
  - Bug fix: Class.isAnnotation and Class.isEnum didn't work.

0.9.2 (2005-12-09)
---------------------------------
  - Support for methods: String.contains, String.contentEquals, String.replace, Matcher.quoteReplacement,
    Class.isAnnotation, Class.isEnum, Collections.checkedMap, Class.checkedSortedMap.
  - New option -stripsign to strip signature information used by Java 5.0 compiler.
  - Bug fix: the verifier didn't deal with abstract classes and arrays of primitives correctly.

0.9.1 (2005-12-08)
---------------------------------
  - A reference verifier to show warnings when references to unknown classes, methods, or fields are found.
  - An integrated Ant task.
  - Command line syntax changed:
     replaced: -source by -srcdir;
     added: -destdir, -verify, -classpath;
     removed: -target
  - Support for methods: Boolean.parseBoolean, Class.getEnumConstants, Class.cast, Class.asSubclass.
  - Support for new methods in Collections: checkedCollection, checkedSet, checkedSortedSet,
  checkedList, emptySet, emptyList, emptyMap, reverseOrder, frequency, disjoint, addAll.

0.9.0 (2005-11-28)
---------------------------------
Initial release
