
<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta http-equiv="content-style-type" content="text/css">
<link rel="stylesheet" type="text/css" href="style.css">
<title>ProGuard Downloads</title>
</head>
<body>

<script type="text/javascript" language="JavaScript">
<!--
if (window.self==window.top)
  document.write('<a class="largebutton" target="_top" href="index.html#downloads.html">ProGuard index</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/dexguard">DexGuard</a> <a class="largebutton" target="_top" href="http://www.saikoa.com/">Saikoa</a> <a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>')
//-->
</script>
<noscript>
<a class="largebutton" target="_top"  href="index.html#downloads.html">ProGuard index</a>
<a class="largebutton" target="_top"  href="http://www.saikoa.com/dexguard">DexGuard</a>
<a class="largebutton" target="_top"  href="http://www.saikoa.com/">Saikoa</a>
<a class="largebutton" target="other" href="http://sourceforge.net/projects/proguard/">Sourceforge</a>
</noscript>

<h2>Downloads</h2>

<b>ProGuard</b> is distributed under the terms of the GNU General Public
License. Please consult the <a href="license.html">license page</a> for more
details.
<p>
<b>ProGuard</b> is written in Java, so it requires a Java Runtime Environment
   (JRE 1.5 or higher).
<p>
You can download the latest release (containing the program jars, the
documentation that you're reading now, examples, and the source code) from this
location:
<p>
<center><a href="http://sourceforge.net/projects/proguard/files/"
target="other">Download section at SourceForge</a></center>
<p>

The <a href="http://sourceforge.net/projects/proguard/files/proguard/"
target="other">proguard</a> section contains major releases and updates with
sub-minor version numbers, for applying emergency fixes. The
<a href="http://sourceforge.net/projects/proguard/files/proguard%20beta/"
target="other">proguard beta</a> section contains beta releases. These include
new features and any less urgent bug fixes collected since the previous
release.
<p>
If you're still working with an older version of <b>ProGuard</b>, check out
the summary of changes below, to see if you're missing something essential.
Better look at the up-to-date <a
href="http://proguard.sourceforge.net/downloads.html">on-line version</a> if
you're reading a local copy of this page. Unless noted otherwise,
<b>ProGuard</b> remains compatible across versions, so don't be afraid to
update.
<p>
If you're only interested in individual jar files for your build process, you
can also download them from the Maven Central repository, with GroupId
<a href="http://search.maven.org/#search|ga|1|g:%22net.sf.proguard%22"
target="other">net.sf.proguard</a> and ArtifactIds
<a href="http://search.maven.org/#search|ga|1|a:%22proguard-parent%22"
target="other">proguard-parent</a>,
<a href="http://search.maven.org/#search|ga|1|a:%22proguard-base%22"
target="other">proguard-base</a>,
<a href="http://search.maven.org/#search|ga|1|a:%22proguard-gui%22"
target="other">proguard-gui</a>,
<a href="http://search.maven.org/#search|ga|1|a:%22proguard-anttask%22"
target="other">proguard-anttask</a>,
<a href="http://search.maven.org/#search|ga|1|a:%22proguard-gradle%22"
target="other">proguard-gradle</a>,
<a href="http://search.maven.org/#search|ga|1|a:%22proguard-wtk-plugin%22"
target="other">proguard-wtk-plugin</a>, and
<a href="http://search.maven.org/#search|ga|1|a:%22proguard-retrace%22"
target="other">proguard-retrace</a>.

<h3><div>Oct 2014</div> Version 5.1</h3>
<ul>
<li>Fixed processing of various kinds of closures in Java 8.
<li>Fixed shrinking of generic signatures in classes and methods.
<li>Fixed shrinking of debug information about generic local variable types.
<li>Fixed optimization of default implementations in interfaces.
<li>Fixed optimization of variable initializations.
<li>Fixed obfuscation of internal class names in strings.
<li>Updated documentation and examples.
</ul>

<h3><div>Aug 2014</div> Version 5.0</h3>
<ul>
<li>Added support for Java 8.
<li>Added <code>-keep</code> modifier <code>includedescriptorclasses</code>.
<li>Added automatic suggestions for keeping attributes.
<li>Clearing preverification information when <code>-dontpreverify</code> is
    specified.
<li>Extended optimization support for conservative optimization with java
    system property <code>optimize.conservatively</code>.
<li>Fixed occasional preverification problem.
<li>Fixed shrinking of generic class signatures.
<li>Fixed shrinking of generic variable signatures.
<li>Fixed analysis of unused parameters for bootstrap methods in library
    classes.
<li>Fixed inlining problem of non-returning subroutines.
<li>Fixed possible IllegalArgumentException and ArrayIndexOutOfBoundsException
    in enum simplification.
<li>Fixed unnecessary notes about dynamic class instantiations with constant
    class names.
<li>Fixed preverification of unnecessary casts of null values.
<li>Fixed lazy resolution of output jars in Gradle task.
<li>Fixed processing of synthetic code with alternative initializer invocations.
<li>Improved handling of symbolic links in shell scripts.
<li>Improved default path in Windows bat files.
<li>Updated documentation and examples.
</ul>

<h3><div>Dec 2013</div> Version 4.11</h3>
<ul>
<li>Added simplification of basic enum types.
<li>Added reading and writing of apk and aar archives.
<li>Fixed criteria for class merging.
<li>Fixed simplification of variable initializations.
<li>Fixed simplification of redundant boolean variables.
<li>Fixed optimization of unused stack entries in exception handlers.
<li>Fixed correction of access flags after class merging, method inlining, and
    class repackaging.
<li>Refined criterion for method inlining.
<li>Updated documentation and examples.
</ul>

<h3><div>Jul 2013</div> Version 4.10</h3>
<ul>
<li>Made Gradle task resolve files lazily.
<li>Enabled as-needed execution in Gradle task.
<li>Using standard string interpolation for Gradle configuration.
<li>Reduced log levels for console output in Gradle task.
<li>Updated documentation and examples.
</ul>

<h3><div>Mar 2013</div> Version 4.9</h3>
<ul>
<li>Added Gradle task.
<li>Added more peephole optimizations for strings.
<li>Improved optimization of classes with static initializers.
<li>Improved processing of finally blocks compiled with JDK 1.4 or older.
<li>Fixed shrinking of access widening abstract methods, for the Dalvik VM.
<li>Fixed overly aggressive shrinking of class annotations.
<li>Fixed processing of unused classes in generic signatures.
<li>Fixed merging of classes with similar class members.
<li>Added java system property <code>optimize.conservatively</code> to allow
    for instructions intentionally throwing <code>NullPointerException</code>,
    <code>ArrayIndexOutOfBoundsException</code>, or
    <code>ClassCastException</code> without other useful effects.
<li>Fixed optimization of unnecessary variable initializations.
<li>Fixed optimization of code involving NaN.
<li>Fixed inlining of methods that are supposed to be kept.
<li>Fixed preverification of artificially convoluted dup constructs.
<li>Fixed quotes for java commands in .bat scripts.
<li>Improved handling of non-sequential line number information.
<li>Now requiring Java 5 or higher for running ProGuard.
<li>Updated build files.
<li>Updated documentation and examples.
</ul>

<h3><div>May 2012</div> Version 4.8</h3>
<ul>
<li>Added more peephole optimizations for strings.
<li>Added support for multiple external configuration files in Ant
    configurations.
<li>Added support for Ant properties in external configuration files.
<li>Fixed parsing of empty file filters on input and output.
<li>Fixed parsing of '*' wildcard for file filters and name filters.
<li>Fixed obfuscation of private methods that are overridden in concrete
    classes with intermediary abstract classes and interfaces (workaround
    for Oracle bugs #6691741 and #6684387).
<li>Fixed optimization of complex finally blocks, compiled with JDK 1.4 or
    earlier.
<li>Fixed optimizing signatures of methods that are marked as not having
    side effects.
<li>Fixed optimization of long local variables possibly causing verification
    error for register pairs.
<li>Fixed merging of classes defined inside methods.
<li>Fixed stack consistency in optimization step.
<li>No longer removing debug information about unused parameters, for
    <code>-keepparameternames</code> or <code>-keepattributes</code>.
<li>Fixed updating manifest files with carriage return characters.
<li>Now removing unreachable code in preverification step.
<li>Improved default regular expression for stack traces in ReTrace.
<li>Updated documentation and examples.
</ul>

<h3><div>Dec 2011</div> Version 4.7</h3>
<ul>
<li>Added support for Java 7.
<li>Parsing unquoted file names with special characters more leniently.
<li>Added support for instance methods overriding class methods.
<li>Added removal of unused parameterless constructors.
<li>Added removal of empty class initializers.
<li>Added peephole optimizations for constant strings.
<li>Avoiding idle optimization passes.
<li>Improved removal of unused constants after obfuscation.
<li>Fixed removal of unused classes referenced by annotations.
<li>Fixed simplifying parameters of constructors that should actually be
    preserved.
<li>Fixed simplifying parameters of large numbers of similar constructors.
<li>Fixed exceptions in optimization of unusual obfuscated code.
<li>Fixed NullPointerException when specifying <code>-keepclassmembers</code>
    without specific class or class members.
<li>Fixed potential problems with mixed-case class name dictionaries when not
    allowing mixed-case class names.
<li>Fixed obfuscation of classes with EnclosingMethod attributes that don't
    specify methods.
<li>Fixed preverification of returning try blocks with finally blocks, inside
    try blocks, when compiled with JDK 1.4.
<li>Fixed sorting of interfaces containing generics.
<li>Fixed paths in shell scripts.
<li>Fixed filling in of text fields showing class obfuscation dictionary and
    package obfuscation dictionary from configuration in GUI.
<li>Worked around Oracle Java 6/7 bug #7027598 that locked the GUI on Linux.
<li>Updated documentation and examples.
</ul>

<h3><div>Feb 2011</div> Version 4.6</h3>
<ul>
<li>Added support for synthetic, bridge, and varargs modifiers in configuration.
<li>Added detection of atomic updater construction with constant arguments.
<li>Fixed merging of package visible classes.
<li>Fixed optimization of fields that are only accessed by reflection.
<li>Fixed optimization of read-only or write-only fields that are volatile.
<li>Fixed handling of side-effects due to static initializers.
<li>Fixed handling of bridge flags in obfuscation step.
<li>Fixed handling of super flag when merging classes.
<li>Fixed updating of variable tables when optimizing variables.
<li>Fixed removal of unused parameters with 32 or more parameters.
<li>Fixed incorrect removal of exception handler for instanceof instruction.
<li>Fixed inlining of methods with unusual exception handlers.
<li>Fixed optimization of unusual code causing stack underflow.
<li>Fixed keeping of constructor parameter names.
<li>Fixed unwanted wrapping of non-standard META-INF files.
<li>Fixed filtering of warnings about references to array types.
<li>Fixed overriding of warning option and note option in Ant task.
<li>Improved detection of file name extensions for canonical paths.
<li>Improved printing of seeds specified by <code>-keep</code> options.
<li>Improved printing of notes about unkept classes.
<li>Improved checking whether output is up to date.
<li>Updated documentation and examples.
</ul>

<h3><div>Jun 2010</div> Version 4.5</h3>
<ul>
<li>Added option <code>-keepparameternames</code>.
<li><code>-dontskipnonpubliclibraryclasses</code> is now set by default. Added
    <code>-skipnonpubliclibraryclasses</code> as an option.
<li>Made processing independent of order of input classes to get even more
    deterministic output.
<li>Improved constant field propagation.
<li>Improved renaming of resource files in subdirectories of packages.
<li>Avoiding making fields in interfaces private.
<li>Optimizing exception handlers for monitorexit instruction.
<li>Reduced maximum allowed code length after inlining from 8000 bytes to
    7000 bytes.
<li>Fixed missing warnings about missing library classes.
<li>Fixed shrinking of annotations with arrays of length 0.
<li>Fixed handling of -0.0 and NaN values when simplifying expressions.
<li>Fixed copying of exception handlers when simplifying tail recursion calls.
<li>Fixed optimization of introspected fields.
<li>Fixed simplification of unnecessary variable initializations.
<li>Fixed evaluation of subroutines in pre-JDK 1.5 code.
<li>Fixed updating of access flags in inner classes information.
<li>Fixed disabling of field privatization.
<li>Fixed invocations of privatized methods.
<li>Fixed updating of local variable debug information in optimization step.
<li>Fixed print settings without file name in GUI.
<li>Fixed field privatization setting in GUI.
<li>Fixed saving incorrectly quoted arguments in GUI.
<li>Fixed handling of regular expressions with only negators.
<li>Fixed unwanted wrapping of non-standard META-INF files.
<li>Fixed regular expression pattern for constructors in ReTrace.
<li>Updated documentation and examples.
</ul>

<h3><div>Jul 2009</div> Version 4.4</h3>
<ul>
<li>Added new peephole optimizations.
<li>Added option <code>-optimizations</code> for fine-grained configuration of
    optimizations.
<li>Added option <code>-adaptclassstrings</code> for adapting string constants
    that correspond to obfuscated classes.
<li>Added option <code>-keeppackagenames</code> for keeping specified package
    names from being obfuscated.
<li>Added option <code>-keepdirectories</code> for keeping specified directory
    entries in output jars.
<li>Extended options <code>-dontnote</code> and <code>-dontwarn</code> for
    fine-grained configuration of notes and warnings. 
<li>Added option <code>-regex</code> in ReTrace, for specifying alternative
    regular expressions to parse stack traces.
<li>Extended renaming of resource files based on obfuscation.
<li>Improved inlining of constant parameters and removal of unused parameters.
<li>Avoiding bug in IBM's JVM for JSE, in optimization step.
<li>Avoiding ArrayIndexOutOfBoundsException in optimization step.
<li>Fixed configuration with annotations that are not preserved themselves.
<li>Fixed preverification of invocations of super constructors with arguments
    containing ternary operators.
<li>Fixed processing of unreachable exception handlers.
<li>Fixed merging of exception classes.
<li>Fixed repeated method inlining.
<li>Fixed inlining of finally blocks surrounded by large try blocks, compiled
    with JDK 1.4 or earlier.
<li>Fixed optimization of complex finally blocks, compiled with JDK 1.4 or
    earlier.
<li>Fixed obfuscation of anonymous class names, if <code>EnclosingMethod</code>
    attributes are being kept.
<li>Fixed obfuscation of inner class names in generic types.
<li>Fixed decoding of UTF-8 strings containing special characters.
<li>Fixed copying of debug information and annotations when merging classes.
<li>Fixed writing out of unknown attributes.
<li>Fixed updating manifest files with split lines.
<li>Updated documentation and examples.
</ul>

<h3><div>Dec 2008</div> Version 4.3</h3>
<ul>
<li>Added class merging.
<li>Added static single assignment analysis.
<li>Added support for annotation and enumeration class types in configuration.
<li>Refined shrinking of fields in case of unusual
    <code>-keepclassmembers</code> options.
<li>Added simplification of tail recursion calls.
<li>Added new peephole optimizations.
<li>Fixed optimization of unused variable initializations causing negative
    stack sizes.
<li>Fixed optimization of unusual initialization code causing
    NullPointerExceptions.
<li>Fixed optimization of half-used long and double parameters.
<li>Fixed processing of complex generics signatures.
<li>Working around suspected java compiler bug with parameter annotations on
    constructors of non-static inner classes.
<li>Fixed obfuscation of classes with inner classes whose names are preserved.
<li>Fixed access of protected methods in repackaged classes.
<li>Added options <code>-classobfuscationdictionary</code> and
    <code>-packageobfuscationdictionary</code>.
<li>Adapting more types of resource file names based on obfuscation.
<li>Extended warnings about incorrect dependencies.
<li>Added start-up scripts and build scripts.
<li>Updated documentation and examples.
</ul>

<h3><div>Mar 2008</div> Version 4.2</h3>
<ul>
<li>Refined data flow analysis in optimization step.
<li>Fixed handling of exceptions when inlining subroutines.
<li>Fixed inlining of incompatible code constructs between different java
    versions.
<li>Fixed computation of local variable frame size.
<li>Fixed optimization of infinite loops.
<li>Fixed optimization of subroutine invocations.
<li>Fixed optimization of floating point remainder computations.
<li>Fixed removal of unused parameters in method descriptors containing arrays
    of longs or doubles.
<li>Added undocumented java system properties
    <code>maximum.inlined.code.length</code> (default is 8) and
    <code>maximum.resulting.code.length</code> (defaults are 8000 for JSE and
    2000 for JME), for expert users who read release notes.
<li>Fixed processing of generic types in Signature attributes in shrinking and
    optimization steps.
<li>Fixed processing of inner class names in Signature attributes in obfuscation
    step.
<li>Improved adapting resource file names following obfuscated class names.
<li>Fixed interpretation of package names in GUI.
<li>Fixed default settings for Xlets in GUI.
<li>Updated documentation and examples.
</ul>

<h3><div>Dec 2007</div> Version 4.1</h3>
<ul>
<li>Fixed shrinking of default annotation element values.
<li>Fixed optimization of invocations of methods in same class that are
    accessed through extensions.
<li>Fixed optimization of invocations of synchronized methods without other
    side-effects.
<li>Fixed optimization of some non-returning subroutines.
<li>Fixed handling of local variable debug information when inlining methods.
<li>Avoiding StackOverflowErrors during optimization of complex methods.
<li>Fixed obfuscation of potentially ambiguous non-primitive constants in
    interfaces.
<li>Fixed preverification of some code constructs involving String, Class, and
    exception types.
<li>The Ant task now allows empty <code>&lt;injars&gt;</code> and
    <code>&lt;libraryjars&gt;</code> elements.
<li>Updated documentation and examples.
</ul>

<h3><div>Sep 2007</div> Version 4.0</h3>
<ul>
<li>Added preverifier for Java 6 and Java Micro Edition, with new options
    <code>-microedition</code> and <code>-dontpreverify</code>.
<li>Added new option <code>-target</code> to modify java version of processed
    class files.
<li>Made <code>-keep</code> options more orthogonal and flexible, with option
    modifiers <code>allowshrinking</code>, <code>allowoptimization</code>, and
    <code>allowobfuscation</code>.
<li>Added new wildcards for class member descriptors: "<code>***</code>",
    matching any type, and "<code>...</code>", matching any number of
    arguments.
<li>Added support for configuration by means of annotations.
<li>Improved shrinking of unused annotations.
<li>Added check on modification times of input and output, to avoid unnecessary
    processing, with new option <code>-forceprocessing</code>.
<li>Added new options <code>-flattenpackagehierarchy</code> and
    <code>-repackageclasses</code> (replacing <code>-defaultpackage</code>) to
    control obfuscation of package names.
<li>Added new options <code>-adaptresourcefilenames</code> and
    <code>-adaptresourcefilecontents</code>, with file filters, to update
    resource files corresponding to obfuscated class names.
<li>Added detection of dynamically accessed fields and methods.
<li>Now treating <code>Exceptions</code> attributes as optional.
<li>Now respecting naming rule for nested class names
    (<code>EnclosingClass$InnerClass</code>) in obfuscation step, if
    <code>InnerClasses</code> attributes or <code>EnclosingMethod</code>
    attributes are being kept.
<li>Added new inter-procedural optimizations: method inlining and propagation
    of constant fields, constant arguments, and constant return values.
<li>Added optimized local variable allocation.
<li>Added more than 250 new peephole optimizations.
<li>Improved making classes and class members public or protected.
<li>Now printing notes on suspiciously unkept classes in parameters of
    specified methods.
<li>Now printing notes for class names that don't seem to be fully qualified.
<li>Added support for uppercase filename extensions.
<li>Added tool tips to the GUI.
<li>Rewritten class file I/O code.
<li>Updated documentation and examples.
</ul>
Upgrade considerations:
<ul>

<li>Since ProGuard now treats the <code>Exceptions</code> attribute as
    optional, you may have to specify <code>-keepattributes Exceptions</code>,
    notably when processing code that is to be used as a library.

<li>ProGuard now preverifies code for Java Micro Edition, if you specify the
    option <code>-microedition</code>. You then no longer need to process the
    code with an external preverifier.

<li>You should preferably specify <code>-repackageclasses</code> instead of the
    old option name <code>-defaultpackage</code>.
</ul>

<h3><div>Dec 2007</div> Version 3.11</h3>
<ul>
<li>Fixed optimization of invocations of methods in same class that are
    accessed through extensions.
<li>Fixed optimization of invocations of synchronized methods without other
    side-effects.
<li>Updated documentation and examples.
</ul>

<h3><div>Aug 2007</div> Version 3.10</h3>
<ul>
<li>Now handling mixed-case input class names when
    <code>-dontusemixedcaseclassnames</code> is specified.
<li>Fixed optimization of synchronization on classes, as compiled by Eclipse
    and Jikes.
<li>Fixed optimization of switch statements with unreachable cases.
<li>Avoiding merging subsequent identically named files.
<li>Updated documentation and examples.
</ul>

<h3><div>Jun 2007</div> Version 3.9</h3>
<ul>
<li>Fixed processing of .class constructs in Java 6.
<li>Fixed repeated processing of .class constructs.
<li>Fixed possible division by 0 in optimization step.
<li>Fixed handling of variable instructions with variable indices larger than
    255.
<li>Updated documentation and examples.
</ul>

<h3><div>Mar 2007</div> Version 3.8</h3>
<ul>
<li>Fixed optimization of parameters used as local variables.
<li>Fixed obfuscation with conflicting class member names.
<li>Fixed incremental obfuscation with incomplete mapping file for library jars.
<li>Updated documentation and examples.
</ul>

<h3><div>Dec 2006</div> Version 3.7</h3>
<ul>
<li>Now accepting Java 6 class files.
<li>Fixed shrinking of partially used annotations.
<li>Improved incremental obfuscation, with new option
    <code>-useuniqueclassmembernames</code>.
<li>Printing more information in case of conflicting configuration and input.
<li>Fixed optimization of repeated array length instruction.
<li>Fixed optimization of subsequent try/catch/finally blocks with return
    statements.
<li>Fixed optimization of complex stack operations.
<li>Fixed optimization of simple infinite loops.
<li>Fixed optimization of expressions with constant doubles.
<li>Tuned optimization to improve size reduction after preverification.
<li>Fixed overflows of offsets in long code blocks.
<li>Now allowing class names containing dashes.
<li>Updated documentation and examples.
</ul>

<h3><div>May 2006</div> Version 3.6</h3>
<ul>
<li>No longer automatically keeping classes in parameters of specified methods
    from obfuscation and optimization (introduced in version 3.4).
<li>Fixed inlining of interfaces that are used in .class constructs.
<li>Fixed removal of busy-waiting loops reading volatile fields.
<li>Fixed optimization of comparisons of known integers.
<li>Fixed optimization of known branches.
<li>Fixed optimization of method calls on arrays of interfaces.
<li>Fixed optimization of method calls without side-effects.
<li>Fixed optimization of nested try/catch/finally blocks with return
    statements.
<li>Fixed initialization of library classes that only appear in descriptors.
<li>Fixed matching of primitive type wildcards in configuration.
<li>Fixed the boilerplate specification for enumerations in the GUI.
<li>Updated documentation and examples.
</ul>

<h3><div>Jan 2006</div> Version 3.5</h3>
<ul>
<li>Fixed obfuscation of class members with complex visibility.
<li>Fixed optimization bugs causing stack verification errors.
<li>Fixed optimization bug causing overridden methods to be finalized.
<li>Fixed optimization bug causing abstract method errors for retro-fitted
    library methods.
<li>Fixed optimization bug evaluating code with constant long values.
<li>Fixed bug in updating of optional local variable table attributes and local
    variable type table attributes after optimization.
<li>Fixed interpretation of comma-separated class names without wildcards.
<li>Updated documentation and examples.
</ul>

<h3><div>Oct 2005</div> Version 3.4</h3>
<ul>
<li>Extended optimizations: removing duplicate code within methods.
<li>Extended regular expressions for class names to comma-separated lists.
<li>Now automatically keeping classes in descriptors of kept class members.
<li>Added verbose statistics for optimizations.
<li>Added boilerplate Number optimizations in GUI.
<li>Fixed <code>Class.forName</code> detection.
<li>Fixed incremental obfuscation bug.
<li>Fixed optimization bug causing stack verification errors.
<li>Fixed optimization bugs related to removal of unused parameters.
<li>Fixed exception when optimizing code with many local variables.
<li>Fixed exception when saving configuration with initializers in GUI.
<li>Updated documentation and examples.
</ul>

<h3><div>Jun 2005</div> Version 3.3</h3>
<ul>
<li>Extended optimizations: making methods private and static when possible,
    making classes static when possible, removing unused parameters.
<li>Made file names relative to the configuration files in which they are
    specified. Added <code>-basedirectory</code> option.
<li>Added <code>-whyareyoukeeping</code> option to get details on why given
    classes and class members are being kept.
<li>Added warnings for misplaced class files.
<li>Improved printing of notes for <code>Class.forName</code> constructs.
<li>Implemented '<code>assumenosideeffects</code>' nested element in Ant task.
<li>Improved processing of annotations.
<li>Fixed reading and writing of parameter annotations.
<li>Fixed various optimization bugs.
<li>Fixed wildcards not matching '-' character.
<li>Fixed wildcard bug and checkbox bugs in GUI.
<li>Setting file chooser defaults in GUI.
<li>Leaving room for growBox in GUI on Mac OS X.
<li>Properly closing configuration files.
<li>Updated documentation and examples.
</ul>

<h3><div>Dec 2004</div> Version 3.2</h3>
<ul>
<li>Fixed JDK5.0 processing bugs.
<li>Fixed optimization bugs.
<li>Fixed relative paths in Ant task.
<li>Improved speed of shrinking step.
<li>Updated documentation and examples.
</ul>

<h3><div>Nov 2004</div> Version 3.1</h3>
<ul>
<li>Improved obfuscation and shrinking of private class members.
<li>Added inlining of interfaces with single implementations.
<li>Added option to specify obfuscation dictionary.
<li>Added option to read package visible library class members.
<li>Extended support for JDK5.0 attributes.
<li>Fixed various optimization bugs.
<li>Modified Ant task to accept paths instead of filesets.
<li>Fixed two Ant task bugs.
<li>Updated documentation and examples.
</ul>

<h3><div>Aug 2004</div> Version 3.0</h3>
<ul>
<li>Added bytecode optimization step, between shrinking step and obfuscation
    step.
<li>Generalized filtered recursive reading and writing of jars, wars, ears,
    zips, and directories.
<li>Added support for grouping input and output jars, wars, ears, zips, and
    directories.
<li>Added support for applying mapping files to library classes.
<li>Removed <code>-resourcejars</code> option. Resources should now be read
    using regular <code>-injars</code> options, using filters if necessary.
<li>Rewrote Ant task. Input and output modification dates are not checked at
    the moment. Minor changes in XML schema:
    <ul>
    <li>Filters now specified using attributes.
    <li>'<code>outjars</code>' now nested element instead of attribute.
    <li>'<code>type</code>' attribute of <code>&lt;method&gt;</code> element no
        longer defaults to '<code>void</code>'.
    <li><code>&lt;</code> and <code>&gt;</code> characters now have to be
        encoded in embedded configurations.
    <li><code>&lt;proguardconfiguration&gt;</code> task no longer accepts
        attributes.
    </ul>
<li>Updated J2ME WTK plugin, now customizable through configuration file.
<li>Updated GUI.
<li>Fixed various processing bugs.
<li>Fixed ReTrace parsing bugs.
<li>Improved jar compression.
<li>Updated documentation and examples.
</ul>

<h3><div>Mar 2004</div> Version 2.1</h3>
<ul>
<li>Added support for JDK1.5 classes.
<li>Added additional wildcard for matching primitive types.
<li>Added possibility to switch off notes about duplicate class definitions.
<li>Fixed use of multiple filters on output jars.
<li>Fixed option to keep all attributes.
<li>Fixed various Ant task bugs.
<li>Updated documentation and examples.
</ul>

<h3><div>Dec 2003</div> Version 2.0</h3>
<ul>
<li>Added a graphical user interface for ProGuard and ReTrace.
<li>Added <code>-applymapping</code> option for incremental obfuscation.
<li>Added support for filtering input and output files.
<li>Added support for the J++ <code>SourceDir</code> attribute.
<li>Improved detection of <code>.class</code> constructs.
<li>Improved handling of misplaced manifest files.
<li>Improved implementation of ReTrace.
<li>Worked around String UTF-8 encoding bug affecting foreign characters.
<li>Fixed exception when ignoring warnings.
<li>Fixed various Ant task bugs.
<li>Updated documentation and examples.
</ul>

<h3><div>Aug 2003</div> Version 1.7</h3>
<ul>
<li>Fixed various Ant task bugs.
<li>Fixed ClassCastException due to explicitly used abstract classes with
    implicitly used interfaces targeted at JRE1.2 (the default in JDK1.4).
<li>Fixed <code>-defaultpackage</code> bug for protected classes and class
    members.
<li>Fixed ReTrace bug when retracing without line number tables.
<li>Worked around zip package problems with duplicate out entries and rogue
    manifest files.
<li>Added work-around for handling malformed legacy interface class files.
<li>Updated documentation and examples.
</ul>

<h3><div>May 2003</div> Version 1.6</h3>
<ul>
<li>Added support for Ant.
<li>Added support for the J2ME Wireless Toolkit.
<li>Added support for reading and writing directory hierarchies.
<li>Added option for specifying resource jars and directories.
<li>Added support for wildcards in class member specifications.
<li>Improved handling of the <code>-defaultpackage</code> option.
<li>Improved stack trace parsing in ReTrace tool.
<li>Fixed processing of libraries containing public as well as non-public
    extensions of non-public classes.
<li>Fixed examples for processing libraries, midlets, and serializable code.
<li>Updated documentation and examples.
</ul>

<h3><div>Jan 2003</div> Version 1.5</h3>
<ul>
<li>Fixed processing of retrofitted library interfaces.
<li>Fixed processing of <code>.class</code> constructs in internal classes
    targeted at JRE1.2 (the default in JDK1.4).
<li>Fixed <code>-dump</code> option when <code>-outjar</code> option is not
    present.
<li>Updated documentation and examples.
</ul>

<h3><div>Nov 2002</div> Version 1.4</h3>
<ul>
<li>Now copying resource files over from the input jars to the output jar.
<li>Added option to obfuscate using lower-case class names only.
<li>Added better option for obfuscating native methods.
<li>Added option not to ignore non-public library classes.
<li>Added automatic <code>.class</code> detection for classes compiled with
    Jikes.
<li>Updated documentation and examples.
</ul>

<h3><div>Sep 2002</div> Version 1.3</h3>
<ul>
<li>Added support for wildcards in class names.
<li>Added tool to de-obfuscate stack traces.
<li>Added options to print processing information to files.
<li>Added option to rename source file attributes.
<li>Fixed processing of implicitly used interfaces targeted at JRE1.2 (the
    default in JDK1.4)
<li>Fixed processing of configurations with negated access modifiers.
<li>Fixed duplicate class entry bug.
<li>Updated documentation and examples.
</ul>

<h3><div>Aug 2002</div> Version 1.2</h3>
<ul>
<li>Improved speed.
<li>Fixed processing of classes targeted at JRE1.2 (the default in JDK1.4)
    with references to their own subclasses.
<li>Fixed processing of static initializers in J2ME MIDP applications.
<li>Fixed processing of retrofitted interfaces (again).
<li>Added more flexible handling of white space in configuration.
<li>Updated documentation.
</ul>

<h3><div>Jul 2002</div> Version 1.1</h3>
<ul>
<li>Added automatic detection of <code>Class.forName("MyClass")</code>,
    <code>MyClass.class</code>, and
    <code>(MyClass)Class.forName(variable).newInstance()</code> constructs.
    This greatly simplifies configuration.
<li>Added options to keep class names and class member names without affecting
    any shrinking. They are mostly useful for native methods and serializable
    classes.
<li>Fixed processing of retrofitted interfaces.
<li>Added handling of missing/invalid manifest file in input jar.
<li>Updated documentation and examples.
</ul>

<h3><div>Jun 2002</div> Version 1.0</h3>
<ul>
<li>First public release, based on class parsing code from Mark Welsh's
    <b>RetroGuard</b>.
</ul>

<hr />
<address>
Copyright &copy; 2002-2014
<a target="other" href="http://www.lafortune.eu/">Eric Lafortune</a> @ <a target="top" href="http://www.saikoa.com/">Saikoa</a>.
</address>

</body>
</html>
