| <!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><init></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 & |
| 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 “Annotation File Format Specification” (<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 |
| --> |