<!DOCTYPE html>
<html>
<head>
  <title>Annotation File Utilities Changelog</title>
</head>
<body>
<h1>Annotation File Utilities Changelog</h1>

<p>
This is the changelog for the
<a href="./">Annotation File Utilities</a>.
</p>

<ul>
  <li>
    Version 3.6.45 (released September 5, 2017):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
  <li>
    Version 3.6.44 (released August 3, 2017):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
  <li>
    Version 3.6.43 (released July 3, 2017):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
  <li>
    Version 3.6.42 (released June 1, 2017):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
  <li>
    Version 3.6.41 (released May 1, 2017):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
  <li>
    Version 3.6.40 (released April 3, 2017):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
  <li>
    Version 3.6.39 (released March 1, 2017):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
  <li>
    Version 3.6.38 (released Jan 20, 2017):
    <ul>
        <li> The Annotation File Utilities webpage has moved to
	<a href="https://checkerframework.org/annotation-file-utilities/">https://checkerframework.org/annotation-file-utilities/</a>.
             Old URLs should redirect to the new one, but please update your links
             and let us know if any old links are broken rather than redirecting.</li>
    </ul>
  </li>
    <li>
    Version 3.6.37 (released Jan 3, 2017):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
    <li>
    Version 3.6.36 (released Dec 1, 2016):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
    <li>
    Version 3.6.35 (released Nov 2, 2016):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
    <li>
    Version 3.6.34 (released Oct 3, 2016):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
    <li>
    Version 3.6.33 (released Sep 16, 2016):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
    <li>
    Version 3.6.32 (released Sep 1, 2016):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
  <li>
    Version 3.6.31 (released August 1, 2016):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
  <li>
    Version 3.6.30 (released July 1, 2016):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
  <li>
    Version 3.6.29 (released Jun 1, 2016):
    <ul>
      <li>
        extract-annotations no longer puts package annotations on non-existent class,
        fixing Issue <a href="https://github.com/typetools/annotation-tools/issues/117">#117</a>.
      </li>
      <li>
        Closes issue <a href="https://github.com/typetools/annotation-tools/issues/120">#120</a>.
      </li>
    </ul>
    Version 3.6.28 (released May 1, 2016):
    <ul>
      <li>
	<code>AScene</code> now has a copy constructor and implements
	<code>Cloneable</code>.
      </li>
    </ul>
  </li>
  <li>
    Version 3.6.27 (released Apr 1, 2016):
    <ul>
      <li>
	The annotation file format permits use of a class name, in addition to
	<code>&lt;init&gt;</code>, to specify a constructor.
      </li>
      <li>
	Closes issues
	<a href="https://github.com/typetools/annotation-tools/issues/70">#70</a>
	and
	<a href="https://github.com/typetools/annotation-tools/issues/88">#88</a>.
      </li>
    </ul>
  </li>
  <li>
    Version 3.6.26 (released Mar 1, 2016):
    <ul>
        <li>Avoids reinserting an annotation that already exists in comments, fixing Issue
          <a href="https://github.com/typetools/annotation-tools/issues/114">#114</a>.</li>
    </ul>
  </li>
  <li>
    Version 3.6.25 (released Feb 1, 2016):
    <ul>
        <li>Uses system javac to compile the executable program, thus enabling Java 7 execution.</li>
        <li>Clears set of required imports after processing each source file, fixing Issue
          <a href="https://github.com/typetools/annotation-tools/issues/111">#111</a>.</li>
        <li>Escapes String fields of annotations, fixing Issue
          <a href="https://github.com/typetools/annotation-tools/issues/112">#112</a>.</li>
    </ul>
  </li>
  <li>
    Version 3.6.24 (released Jan 4, 2016):
    <ul>
        <li>Fixes Issue
          <a href="https://github.com/typetools/annotation-tools/issues/108">#108</a>
          by adding a <code>LICENSE.txt</code> file.</li>
        <li>Fixes offset calculation for wide JVM instructions.</li>
        <li>Makes minor improvements to build process.</li>
    </ul>
  </li>
  <li>
    Version 3.6.23 (released Dec 1, 2015):
    <ul>
        <li>Fixes Issue
        <a href="https://github.com/typetools/annotation-tools/issues/106">#106</a>.</li>
        <li>Makes minor improvements to documentation and build process.</li>
    </ul>
  </li>
  <li>
    Version 3.6.22 (released Nov 9, 2015):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
  <li>
    Version 3.6.21 (released Oct 24, 2015):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
  <li>
    Version 3.6.20 (released Oct 8, 2015):
    <ul>
        <li>Minor bug fixes and improvements.</li>
    </ul>
  </li>
  <li>
    Version 3.6.19 (released Sep 1, 2015):
    <ul>
        <li>Avoids importing the same annotation name from multiple packages (Issue
        <a href="https://github.com/typetools/annotation-tools/issues/101">#101</a>).</li>
        <li>Fixes some bugs (including Issues
        <a href="https://github.com/typetools/annotation-tools/issues/100">#100</a> and
        <a href="https://github.com/typetools/annotation-tools/issues/102">#102</a>)
        pertaining to <code>extends</code> clause generation.</li>
    </ul>
  </li>
  <li>
    Version 3.6.18 (released Aug 4, 2015):
    <ul>
        <li>
	  Moved the Annotation Tools version control repository from Google Code
	  to GitHub, and from the Mercurial version control system to Git.
          If you have cloned the version control repository, then discard your
          old clone and create a new one using this command:
	  <pre>  git clone https://github.com/typetools/annotation-tools.git</pre>
        </li>
        <li>Fixes some errors involving default class and method bound insertion.</li>
    </ul>
  </li>
  <li>
    Version 3.6.17 (released July 1, 2015):
    <ul>
        <li>
          Minor bug fixes and improvements.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.16 (released June 1, 2015):
    <ul>
        <li>
          Fixes multiple crash-causing bugs in <code>insert-annotations-to-source</code>.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.15 (released May 1, 2015):
    <ul>
        <li>
          Allows annotations on constituents of an intersection type cast without the use of the AST path format.
        </li>
        <li>
          Fixes assorted bugs in <code>insert-annotations</code>.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.14 (released April 17, 2015):
    <ul>
        <li>
          Fixes numerous minor bugs in <code>insert-annotations</code> and <code>insert-annotations-to-source</code>.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.13 (released March 2, 2015):
    <ul>
        <li>
          Extends support for lambda expressions, member references, and type arguments of static method calls and member references to <code>extract-annotations</code> and <code>insert-annotations</code>.
        </li>
        <li>
          Slightly changes JAIF format for the new features.  (See file format documentation for details.)
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.12 (released January 30, 2015):
    <ul>
        <li>
          Adds support for lambda expressions, member references, and type arguments of static method calls and member references to <code>insert-annotations-to-source</code>.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.11 (released December 19, 2014):
    <ul>
        <li>
          Fixes more insertion logic bugs, including errors in handling generic arrays.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.10 (released November 26, 2014):
    <ul>
        <li>
          Fixes many bugs, mostly in AST path-based insertion logic.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.9 (released October 30, 2014):
    <ul>
        <li>
          Minor bug fixes and improvements.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.8 (released September 24, 2014):
    <ul>
        <li>
          Fixes numerous bugs in AST path-based insertion logic.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.7 (released August 1, 2014):
    <ul>
        <li>
          Improves Java 9 support.
        </li>
        <li>
          Fills in some previously missing cases for AST path-based insertion specifications.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.6 (released July 1, 2014):
    <ul>
        <li>
          Fixes bug affecting inner array types of new[] expressions in the AST path-based insertion logic.
        </li>
        <li>
          Fixes JAIF generation bugs involving insert-annotation and insert typecast within methods and fields.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.5 (released June 2, 2014):
    <ul>
        <li>
          Generates extends bounds when necessary for annotation insertion.
        </li>
        <li>
          Fixes assorted bugs in the AST path-based insertion logic.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.4 (released May 1, 2014):
    <ul>
        <li>
          Expands AST path support to cover every AST node within a class declaration.
        </li>
        <li>
          Abbreviates enum tags for annotations if <code>--abbreviate</code> is selected.
        </li>
        <li>
          Generates explicit default constructors when necessary for annotation insertion.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.3 (released Apr 2, 2014):
    <ul>
        <li>
          Eliminates insert-annotation problems with handling Java 8 class files.
        </li>
        <li>
          Corrects annotation placement within a qualified type name.
        </li>
        <li>
          Fills in gaps in AST Path API.  All (Java 7) non-declaration nodes can now be identified by a path from an enclosing declaration.
        </li>
        <li>
          Expands scene-lib API with visitor framework and new class <code>APIIndex</code>, which provides a cache that maps Java abstract syntax tree nodes to AST paths as defined in the annotation file format specification.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.2 (released Mar 5, 2014):
    <ul>
        <li>
          Expands scene-lib API with visitor framework and new class <code>APIIndex</code>, which provides a cache that maps Java abstract syntax tree nodes to AST paths as defined in the annotation file format specification.
        </li>
    </ul>
  </li>
  <li>
    Version 3.6.1 (released Feb 19, 2014):
    <ul>
        <li>
          Adds missing cases for AST path-based annotation/cast insertion.
        </li>
    </ul>
  </li>
  <li>
    Version 3.5.9 (released Jan 2, 2014):
    <ul>
        <li>
          Fixes assorted minor bugs.
        </li>
    </ul>
  </li>
  <li>
    Version 3.5.8 (released Dec 9, 2013):
    <ul>
        <li>
          Creates output directory in current working directory (by default), rather than relative to input pathname.
        </li>
        <li>
          Recognizes "instanceinit" keyword in JAIF for adding annotations inside instance initializers.
        </li>
        <li>
          Corrects syntax of results of inserting annotations on bare array literals.
        </li>
        <li>
          More fully treats enum, interface, and annotation declarations in accordance with the rules for class declarations.
        </li>
    </ul>
  </li>
  <li>
    Version 3.5.7 (released Nov 15, 2013):
    <ul>
        <li>
          Handles type paths with INNER_TYPE.
        </li>
        <li>
          Disallows annotations on generic array type bounds and on wildcard bounds in "instanceof" expressions, since Java 8 prohibits type bounds in those locations.
        </li>
        <li>
          Vastly improves performance when index file covers numerous source files, by filtering out irrelevant insertions at an earlier stage.
        </li>
        <li>
          Avoids stack overflow during regex matching.
        </li>
    </ul>
  </li>
  <li>
    Version 3.5.6 (released Oct 23, 2013):
    <ul>
        <li>
          Adds "insert-annotation" to JAIF format, allowing the use of AST paths to specify source locations for annotation insertion (which previously was possible only for typecast insertions).
        </li>
        <li>
          For consistency with <code>extract-annotations</code>, <code>insert-annotations-to-source</code> now matches generic method types in the source with JAIF specifications for their least upper bounds.
        </li>
        <li>
          Allows annotations on inner type declarations of parameterized types.
        </li>
        <li>
          Avoids spurious code location matches on anonymous inner subclasses of an outer class.
        </li>
        <li>
          Works around Java regex bug that on some input causes an infinite loop in the Matcher.
        </li>
        <li>
          Fixes many other bugs, most involving receiver insertions.
        </li>
        <li>
          No longer aborts on (non-fatal) warnings found during the <code>javac</code> type-checking phase of <code>insert-annotations-to-source</code>.
        </li>
    </ul>
  </li>
  <li>
    Version 3.5.5 (released Aug 28, 2013):
    <ul>
        <li>
          Allows annotation insertion at constructor "return type" as per the specification.
        </li>
        <li>
          Fixes assorted bugs dealing with type qualification, inner classes, and receiver insertion.
        </li>
    </ul>
  </li>
  <li>
    Version 3.5.4 (released Aug 1, 2013):
    <ul>
        <li>
          Allow the use of command-line argument files.  Argument file rules are identical to those of javac.
        </li>
        <li>
          The Annotation File Utilities now appropriately handles vararg parameters.
        </li>
        <li>
          Minor documentation improvements.
        </li>
    </ul>
  </li>
  <li>
    Version 3.5.3 (released May 1, 2013):
    <ul>
      <li>
        Don't depend on bootstrap javac files.
      </li>
      <li>
        Other minor improvements.
      </li>
    </ul>
  </li>
  <li>
    Version 3.5.2 (released April 4, 2013):
    <ul>
      <li>
        Allow annotations on compound types of a cast insertion.
      </li>
      <li>
        Added <code>--print_error_stack</code> command-line option to
        <code>insert-annotations-to-source</code> tool to print a stack trace on
        an error.
      </li>
      <li>
        Various bug fixes.
      </li>
      <li>
        Improvements to the Annotation File Format manual.
        <ul>
          <li>
            Clarified "Grammar" section by reordering and adding more details.
          </li>
          <li>
            Added "Design and Implementation Details" section.
          </li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    Version 3.5.1 (released March 1, 2013):
    <ul>
      <li>
        Small improvements to error messages when parsing JAIF files and for
        illegal source code insertions.
      </li>
      <li>
        Installation instruction and manual improvements.
      </li>
      <li>
        Better handling of source code insertions in anonymous and local
        classes.
        <ul>
          <li>
            Allow source code insertions in a local class (a class defined
            within a method).
          </li>
          <li>
            Bug fixes for anonymous and local class indexes.
          </li>
          <li>
            Don't traverse into nested classes when calculating a source code
            index.
          </li>
        </ul>
      </li>
      <li>
        Improved support for source code method declaration receiver parameter
        insertions.
        <ul>
          <li>
            Use the full type name (Outer.Inner1.Inner2) for receiver insertions
            in inner classes.
          </li>
          <li>
            Allow annotation insertions on compound types of method declaration
            receiver parameters.
          </li>
        </ul>
      </li>
      <li>
        Insert source code annotations in the semantically correct place for
        qualified types.
      </li>
      <li>
        For bytecode annotation extraction and insertion read and put "local"
        type annotations in the Code attribute, not the Method attribute.
      </li>
    </ul>
  </li>

  <li>
    Version 3.5 (released February 1, 2013):
    <ul>
      <li>
        Updated to JSR308 bytecode representation and receiver parameter syntax.
      </li>
      <li>
        Support source code insertion of annotated casts.
      </li>
      <li>
        Support adding annotations to bytecode for type casts with intersection
        types.
      </li>
    </ul>
  </li>

  <li>
    Version 3.4 (released September 11, 2012):
    <ul>
      <li>
	Adapted to underlying changes in JSR 308.
      </li>
      <li>
	Support .class literals as annotation attributes.
      </li>
    </ul>
  </li>

  <li>
    Version 3.3 (released September 20, 2011):
    <ul>
      <li>
	Improved support for annotations on array creation expressions.
      </li>
      <li>
	Small tweaks to the code and documentation.
      </li>
    </ul>
  </li>

  <li>
  Version 3.2 (released June 18, 2011):
    <ul>
      <li>
	Support source code indexes, in contrast to the bytecode
	centric indexes supported so far, which makes it easier for
	source code centric tools to emit AFU files.
	See Section "Support for source code indexes" in the
	<a href="annotation-file-format.html">manual</a>.
      </li>
      <li>
	Support annotating the bounds of class and method type
	parameters and of wildcards, in particular also support
	implicit bounds and make them explicit.
	Also support adding declaration annotations on type parameters.
      </li>
      <li>
	Better support for anonymous inner classes.
      </li>
      <li>
	Improve handling of already existing annotations, in
	particular for generic types.
      </li>
      <li>
	Consistently do matching on methods using the erased signature.
      </li>
      <li>
	Specify annotations on extends and implements clauses.
      </li>
      <li>
	Handle interfaces, enums, etc. like classes.
      </li>
      <li>
	Numerous small bug fixes and improvements.
      </li>
    </ul>
  </li>

  <li>
  Version 3.1 (released September 18, 2010):
    <ul>
      <li>
        Don't duplicate annotations that are in the source already.
      </li>
      <li>
        Add <code>--omit-annotation</code> option to omit a given annotation
        (example: <code>@ThisMutable</code>, which is the default and need not be
        inserted in source files).
      </li>
      <li>
        Bug fixes related to inner classes, array levels, multiple methods
        with same signature but different return type (impossible in Java
        code, but can occur in class files), parameter indices.
      </li>
      <li>
        Switch from utilMDE library to
        <a href="https://github.com/mernst/plume-lib">plume-lib</a>.
      </li>
    </ul>
  </li>

  <li>
  Version 3.0 (released December 21, 2009):
    <ul>
      <li>
      Handle meta-annotations.
      Previously, the Annotation File Utilities didn't handle meta-annotations
      (annotations that are written on an annotation type declaration); in fact,
      AFU simply fabricated retention information.  Now, meta-annotations are
      handled uniformly with other annotations.
      </li>

      <li>
      Distinguish type annotations from declaration annotations.
      Previously, AFU assumed that all annotations were type annotations.  Now,
      this information is looked up from the meta-annotations and is
      distinguished in the file format (see below).
      </li>

      <li>
      Read annotations from classfiles.
      Previously, AFU created partial information for annotations in an ad hoc
      way, and classfile reading did not work.  (The focus was on inserting
      annotations in class files, not reading annotations from class files.)
      Now, classfile reading is operational, and it is often not necessary to
      declare annotations in an annotation file.  However, if the annotation is
      declared in the annotation file, it should be consistent with its
      declaration in the class file.
      </li>

      <li>Changes to annotation file format.

	<ul>
	  <li>Indicating meta-annotations

	    <pre>  annotation visible @Nullable:</pre>

	      becomes

	    <pre>  annotation @Nullable: @Retention(value=RUNTIME)</pre>

	      and if it's a type annotation, it should be

	    <pre>  annotation @Nullable: @Retention(value=RUNTIME) @java.lang.annotation.Target(value={TYPE_USE})</pre>
	  </li>
	  <li>Locations for type and declaration annotations.

	If p2.B is a declaration annotation on a method, it is written as before:

	    <pre>  method foo(Ljava/util/Set;)V: @p2.B</pre>

	If p2.B is a type annotation on a method return type, it is written in a
	new location:

	    <pre>  method foo(Ljava/util/Set;)V:
    return: @p2.B</pre>

	Fields and method parameters are treated similarly, but with
	<code>type</code> marker instead of <code>return</code>.  So if p2.A is a
	declaration annotation targeting the field, while p2.B is a type
	annotation on the field, the field would be declared as:

    <pre> field s: @p2.A
   type: @p2.B</pre>

	Furthermore, <code>inner-type:</code> is permitted only after a keyword
	that introduces a type, such as <code>type</code>, <code>return</code>, and
	<code>receiver</code>, to prevent confusion (though the file format
	becomes slightly more verbose).

	  </li>
	  <li>Permit qualified names in several places that only identifiers were
	permitted before.  This enables use of names that contain periods, such
	as inner classes, and also fully-qualified names.

	  </li>
	  <li>Permit two shorthands in annotation uses, as in Java.  If there is a
	single field named "value", then its name may be omitted: @A(1) instead
	of @A(value=1).  If an array has only one element, the braces may be
	omitted:  @B(value=1) instead of @B(value={1}).  Both
	shorthands may be combined:  @B(1) instead of @B(value={1}).
	  </li>
        </ul>
      </li>
    </ul>
  </li>

  <li>
  Version 2.3.3 (released August 18, 2009):
    <ul>
      <li>Fix a few bugs.</li>
    </ul>
  </li>

  <li>
  Version 2.3.2 (released August 14, 2009):
    <ul>
      <li>Relax file format:  receiver may precede parameters (in spec &amp;
          implementation), parameters may omit "#" (in implementation only)</li>
    </ul>
  </li>

  <li>
  Version 2.3.1 (released August 12, 2009):
    <ul>
      <li>Fix many bugs.</li>
    </ul>
  </li>

  <li>
  Version 2.3 (released July 29, 2009):
    <ul>
      <li>Support <code>-i --in-place</code> argument.</li>
      <li>Fix incorrect array brackets in tests.</li>
      <li>Fix inserting annotations on receivers.</li>
      <li>Improve documentation.</li>
      <li>Improve error handling.</li>
    </ul>
  </li>

  <li>
  Version 2.2 (released December 7, 2008):
    <ul>
      <li>Permit Main to process multiple files at a time.</li>
      <li>Don't re-insert annotations that are already present.</li>
      <li>Add a space before annotation if there isn't one there.</li>
      <li>Fix problems with array syntax; now adheres to the current JSR
          308 syntax.</li>
      <li>Improve error handling.</li>
      <li>Code reorganization:  remove subdirectories and classes that
          added complexity without commensurate functionality.</li>
    </ul>
  </li>

  <li>
  Version 2.1.2 (released April 28, 2008):
  Minor updates to the &ldquo;Annotation File Format Specification&rdquo; (<a
    href="https://checkerframework.org/annotation-file-utilities/annotation-file-format.pdf">PDF</a>, <a
    href="https://checkerframework.org/annotation-file-utilities/annotation-file-format.html">HTML</a>).
  </li>

  <li>
  Version 2.1.1 (released May 31, 2007):
  Added support for two new annotation target_types; consult the
  classfile specification (<a
  href="https://checkerframework.org/jsr308/specification/java-annotation-design.pdf">PDF</a>,
  <a href="https://checkerframework.org/jsr308/specification/java-annotation-design.html">HTML</a>).
  </li>

  <li>
  Version 2.1 (released May 4, 2007):
  Modified overall setup of distribution to be easier to understand.
  </li>

  <li>
  Version 2.0 (released May 1, 2007):
  Initial public release.
  </li>

  <li>
  Version 1.0 (released March 19, 2007):
  Preliminary release.
  The <code>insert-to-annotations-source</code> tool only
  operates on class, field and method signatures.
  </li>

</ul>

<p>
The original developer (through version 2.1.2) was Jaime Quinonez.
</p>


</body>
</html>


<!--  LocalWords:  utils bashrc tcsh tcshrc cshrc classpath AFU Ljava
 -->
