Home | History | Annotate | Download | only in annotation-file-utilities
      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4   <title>Annotation File Utilities Changelog</title>
      5 </head>
      6 <body>
      7 <h1>Annotation File Utilities Changelog</h1>
      8 
      9 <p>
     10 This is the changelog for the
     11 <a href="./">Annotation File Utilities</a>.
     12 </p>
     13 
     14 <ul>
     15   <li>
     16     Version 3.6.45 (released September 5, 2017):
     17     <ul>
     18         <li>Minor bug fixes and improvements.</li>
     19     </ul>
     20   </li>
     21   <li>
     22     Version 3.6.44 (released August 3, 2017):
     23     <ul>
     24         <li>Minor bug fixes and improvements.</li>
     25     </ul>
     26   </li>
     27   <li>
     28     Version 3.6.43 (released July 3, 2017):
     29     <ul>
     30         <li>Minor bug fixes and improvements.</li>
     31     </ul>
     32   </li>
     33   <li>
     34     Version 3.6.42 (released June 1, 2017):
     35     <ul>
     36         <li>Minor bug fixes and improvements.</li>
     37     </ul>
     38   </li>
     39   <li>
     40     Version 3.6.41 (released May 1, 2017):
     41     <ul>
     42         <li>Minor bug fixes and improvements.</li>
     43     </ul>
     44   </li>
     45   <li>
     46     Version 3.6.40 (released April 3, 2017):
     47     <ul>
     48         <li>Minor bug fixes and improvements.</li>
     49     </ul>
     50   </li>
     51   <li>
     52     Version 3.6.39 (released March 1, 2017):
     53     <ul>
     54         <li>Minor bug fixes and improvements.</li>
     55     </ul>
     56   </li>
     57   <li>
     58     Version 3.6.38 (released Jan 20, 2017):
     59     <ul>
     60         <li> The Annotation File Utilities webpage has moved to
     61 	<a href="https://checkerframework.org/annotation-file-utilities/">https://checkerframework.org/annotation-file-utilities/</a>.
     62              Old URLs should redirect to the new one, but please update your links
     63              and let us know if any old links are broken rather than redirecting.</li>
     64     </ul>
     65   </li>
     66     <li>
     67     Version 3.6.37 (released Jan 3, 2017):
     68     <ul>
     69         <li>Minor bug fixes and improvements.</li>
     70     </ul>
     71   </li>
     72     <li>
     73     Version 3.6.36 (released Dec 1, 2016):
     74     <ul>
     75         <li>Minor bug fixes and improvements.</li>
     76     </ul>
     77   </li>
     78     <li>
     79     Version 3.6.35 (released Nov 2, 2016):
     80     <ul>
     81         <li>Minor bug fixes and improvements.</li>
     82     </ul>
     83   </li>
     84     <li>
     85     Version 3.6.34 (released Oct 3, 2016):
     86     <ul>
     87         <li>Minor bug fixes and improvements.</li>
     88     </ul>
     89   </li>
     90     <li>
     91     Version 3.6.33 (released Sep 16, 2016):
     92     <ul>
     93         <li>Minor bug fixes and improvements.</li>
     94     </ul>
     95   </li>
     96     <li>
     97     Version 3.6.32 (released Sep 1, 2016):
     98     <ul>
     99         <li>Minor bug fixes and improvements.</li>
    100     </ul>
    101   </li>
    102   <li>
    103     Version 3.6.31 (released August 1, 2016):
    104     <ul>
    105         <li>Minor bug fixes and improvements.</li>
    106     </ul>
    107   </li>
    108   <li>
    109     Version 3.6.30 (released July 1, 2016):
    110     <ul>
    111         <li>Minor bug fixes and improvements.</li>
    112     </ul>
    113   </li>
    114   <li>
    115     Version 3.6.29 (released Jun 1, 2016):
    116     <ul>
    117       <li>
    118         extract-annotations no longer puts package annotations on non-existent class,
    119         fixing Issue <a href="https://github.com/typetools/annotation-tools/issues/117">#117</a>.
    120       </li>
    121       <li>
    122         Closes issue <a href="https://github.com/typetools/annotation-tools/issues/120">#120</a>.
    123       </li>
    124     </ul>
    125     Version 3.6.28 (released May 1, 2016):
    126     <ul>
    127       <li>
    128 	<code>AScene</code> now has a copy constructor and implements
    129 	<code>Cloneable</code>.
    130       </li>
    131     </ul>
    132   </li>
    133   <li>
    134     Version 3.6.27 (released Apr 1, 2016):
    135     <ul>
    136       <li>
    137 	The annotation file format permits use of a class name, in addition to
    138 	<code>&lt;init&gt;</code>, to specify a constructor.
    139       </li>
    140       <li>
    141 	Closes issues
    142 	<a href="https://github.com/typetools/annotation-tools/issues/70">#70</a>
    143 	and
    144 	<a href="https://github.com/typetools/annotation-tools/issues/88">#88</a>.
    145       </li>
    146     </ul>
    147   </li>
    148   <li>
    149     Version 3.6.26 (released Mar 1, 2016):
    150     <ul>
    151         <li>Avoids reinserting an annotation that already exists in comments, fixing Issue
    152           <a href="https://github.com/typetools/annotation-tools/issues/114">#114</a>.</li>
    153     </ul>
    154   </li>
    155   <li>
    156     Version 3.6.25 (released Feb 1, 2016):
    157     <ul>
    158         <li>Uses system javac to compile the executable program, thus enabling Java 7 execution.</li>
    159         <li>Clears set of required imports after processing each source file, fixing Issue
    160           <a href="https://github.com/typetools/annotation-tools/issues/111">#111</a>.</li>
    161         <li>Escapes String fields of annotations, fixing Issue
    162           <a href="https://github.com/typetools/annotation-tools/issues/112">#112</a>.</li>
    163     </ul>
    164   </li>
    165   <li>
    166     Version 3.6.24 (released Jan 4, 2016):
    167     <ul>
    168         <li>Fixes Issue
    169           <a href="https://github.com/typetools/annotation-tools/issues/108">#108</a>
    170           by adding a <code>LICENSE.txt</code> file.</li>
    171         <li>Fixes offset calculation for wide JVM instructions.</li>
    172         <li>Makes minor improvements to build process.</li>
    173     </ul>
    174   </li>
    175   <li>
    176     Version 3.6.23 (released Dec 1, 2015):
    177     <ul>
    178         <li>Fixes Issue
    179         <a href="https://github.com/typetools/annotation-tools/issues/106">#106</a>.</li>
    180         <li>Makes minor improvements to documentation and build process.</li>
    181     </ul>
    182   </li>
    183   <li>
    184     Version 3.6.22 (released Nov 9, 2015):
    185     <ul>
    186         <li>Minor bug fixes and improvements.</li>
    187     </ul>
    188   </li>
    189   <li>
    190     Version 3.6.21 (released Oct 24, 2015):
    191     <ul>
    192         <li>Minor bug fixes and improvements.</li>
    193     </ul>
    194   </li>
    195   <li>
    196     Version 3.6.20 (released Oct 8, 2015):
    197     <ul>
    198         <li>Minor bug fixes and improvements.</li>
    199     </ul>
    200   </li>
    201   <li>
    202     Version 3.6.19 (released Sep 1, 2015):
    203     <ul>
    204         <li>Avoids importing the same annotation name from multiple packages (Issue
    205         <a href="https://github.com/typetools/annotation-tools/issues/101">#101</a>).</li>
    206         <li>Fixes some bugs (including Issues
    207         <a href="https://github.com/typetools/annotation-tools/issues/100">#100</a> and
    208         <a href="https://github.com/typetools/annotation-tools/issues/102">#102</a>)
    209         pertaining to <code>extends</code> clause generation.</li>
    210     </ul>
    211   </li>
    212   <li>
    213     Version 3.6.18 (released Aug 4, 2015):
    214     <ul>
    215         <li>
    216 	  Moved the Annotation Tools version control repository from Google Code
    217 	  to GitHub, and from the Mercurial version control system to Git.
    218           If you have cloned the version control repository, then discard your
    219           old clone and create a new one using this command:
    220 	  <pre>  git clone https://github.com/typetools/annotation-tools.git</pre>
    221         </li>
    222         <li>Fixes some errors involving default class and method bound insertion.</li>
    223     </ul>
    224   </li>
    225   <li>
    226     Version 3.6.17 (released July 1, 2015):
    227     <ul>
    228         <li>
    229           Minor bug fixes and improvements.
    230         </li>
    231     </ul>
    232   </li>
    233   <li>
    234     Version 3.6.16 (released June 1, 2015):
    235     <ul>
    236         <li>
    237           Fixes multiple crash-causing bugs in <code>insert-annotations-to-source</code>.
    238         </li>
    239     </ul>
    240   </li>
    241   <li>
    242     Version 3.6.15 (released May 1, 2015):
    243     <ul>
    244         <li>
    245           Allows annotations on constituents of an intersection type cast without the use of the AST path format.
    246         </li>
    247         <li>
    248           Fixes assorted bugs in <code>insert-annotations</code>.
    249         </li>
    250     </ul>
    251   </li>
    252   <li>
    253     Version 3.6.14 (released April 17, 2015):
    254     <ul>
    255         <li>
    256           Fixes numerous minor bugs in <code>insert-annotations</code> and <code>insert-annotations-to-source</code>.
    257         </li>
    258     </ul>
    259   </li>
    260   <li>
    261     Version 3.6.13 (released March 2, 2015):
    262     <ul>
    263         <li>
    264           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>.
    265         </li>
    266         <li>
    267           Slightly changes JAIF format for the new features.  (See file format documentation for details.)
    268         </li>
    269     </ul>
    270   </li>
    271   <li>
    272     Version 3.6.12 (released January 30, 2015):
    273     <ul>
    274         <li>
    275           Adds support for lambda expressions, member references, and type arguments of static method calls and member references to <code>insert-annotations-to-source</code>.
    276         </li>
    277     </ul>
    278   </li>
    279   <li>
    280     Version 3.6.11 (released December 19, 2014):
    281     <ul>
    282         <li>
    283           Fixes more insertion logic bugs, including errors in handling generic arrays.
    284         </li>
    285     </ul>
    286   </li>
    287   <li>
    288     Version 3.6.10 (released November 26, 2014):
    289     <ul>
    290         <li>
    291           Fixes many bugs, mostly in AST path-based insertion logic.
    292         </li>
    293     </ul>
    294   </li>
    295   <li>
    296     Version 3.6.9 (released October 30, 2014):
    297     <ul>
    298         <li>
    299           Minor bug fixes and improvements.
    300         </li>
    301     </ul>
    302   </li>
    303   <li>
    304     Version 3.6.8 (released September 24, 2014):
    305     <ul>
    306         <li>
    307           Fixes numerous bugs in AST path-based insertion logic.
    308         </li>
    309     </ul>
    310   </li>
    311   <li>
    312     Version 3.6.7 (released August 1, 2014):
    313     <ul>
    314         <li>
    315           Improves Java 9 support.
    316         </li>
    317         <li>
    318           Fills in some previously missing cases for AST path-based insertion specifications.
    319         </li>
    320     </ul>
    321   </li>
    322   <li>
    323     Version 3.6.6 (released July 1, 2014):
    324     <ul>
    325         <li>
    326           Fixes bug affecting inner array types of new[] expressions in the AST path-based insertion logic.
    327         </li>
    328         <li>
    329           Fixes JAIF generation bugs involving insert-annotation and insert typecast within methods and fields.
    330         </li>
    331     </ul>
    332   </li>
    333   <li>
    334     Version 3.6.5 (released June 2, 2014):
    335     <ul>
    336         <li>
    337           Generates extends bounds when necessary for annotation insertion.
    338         </li>
    339         <li>
    340           Fixes assorted bugs in the AST path-based insertion logic.
    341         </li>
    342     </ul>
    343   </li>
    344   <li>
    345     Version 3.6.4 (released May 1, 2014):
    346     <ul>
    347         <li>
    348           Expands AST path support to cover every AST node within a class declaration.
    349         </li>
    350         <li>
    351           Abbreviates enum tags for annotations if <code>--abbreviate</code> is selected.
    352         </li>
    353         <li>
    354           Generates explicit default constructors when necessary for annotation insertion.
    355         </li>
    356     </ul>
    357   </li>
    358   <li>
    359     Version 3.6.3 (released Apr 2, 2014):
    360     <ul>
    361         <li>
    362           Eliminates insert-annotation problems with handling Java 8 class files.
    363         </li>
    364         <li>
    365           Corrects annotation placement within a qualified type name.
    366         </li>
    367         <li>
    368           Fills in gaps in AST Path API.  All (Java 7) non-declaration nodes can now be identified by a path from an enclosing declaration.
    369         </li>
    370         <li>
    371           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.
    372         </li>
    373     </ul>
    374   </li>
    375   <li>
    376     Version 3.6.2 (released Mar 5, 2014):
    377     <ul>
    378         <li>
    379           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.
    380         </li>
    381     </ul>
    382   </li>
    383   <li>
    384     Version 3.6.1 (released Feb 19, 2014):
    385     <ul>
    386         <li>
    387           Adds missing cases for AST path-based annotation/cast insertion.
    388         </li>
    389     </ul>
    390   </li>
    391   <li>
    392     Version 3.5.9 (released Jan 2, 2014):
    393     <ul>
    394         <li>
    395           Fixes assorted minor bugs.
    396         </li>
    397     </ul>
    398   </li>
    399   <li>
    400     Version 3.5.8 (released Dec 9, 2013):
    401     <ul>
    402         <li>
    403           Creates output directory in current working directory (by default), rather than relative to input pathname.
    404         </li>
    405         <li>
    406           Recognizes "instanceinit" keyword in JAIF for adding annotations inside instance initializers.
    407         </li>
    408         <li>
    409           Corrects syntax of results of inserting annotations on bare array literals.
    410         </li>
    411         <li>
    412           More fully treats enum, interface, and annotation declarations in accordance with the rules for class declarations.
    413         </li>
    414     </ul>
    415   </li>
    416   <li>
    417     Version 3.5.7 (released Nov 15, 2013):
    418     <ul>
    419         <li>
    420           Handles type paths with INNER_TYPE.
    421         </li>
    422         <li>
    423           Disallows annotations on generic array type bounds and on wildcard bounds in "instanceof" expressions, since Java 8 prohibits type bounds in those locations.
    424         </li>
    425         <li>
    426           Vastly improves performance when index file covers numerous source files, by filtering out irrelevant insertions at an earlier stage.
    427         </li>
    428         <li>
    429           Avoids stack overflow during regex matching.
    430         </li>
    431     </ul>
    432   </li>
    433   <li>
    434     Version 3.5.6 (released Oct 23, 2013):
    435     <ul>
    436         <li>
    437           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).
    438         </li>
    439         <li>
    440           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.
    441         </li>
    442         <li>
    443           Allows annotations on inner type declarations of parameterized types.
    444         </li>
    445         <li>
    446           Avoids spurious code location matches on anonymous inner subclasses of an outer class.
    447         </li>
    448         <li>
    449           Works around Java regex bug that on some input causes an infinite loop in the Matcher.
    450         </li>
    451         <li>
    452           Fixes many other bugs, most involving receiver insertions.
    453         </li>
    454         <li>
    455           No longer aborts on (non-fatal) warnings found during the <code>javac</code> type-checking phase of <code>insert-annotations-to-source</code>.
    456         </li>
    457     </ul>
    458   </li>
    459   <li>
    460     Version 3.5.5 (released Aug 28, 2013):
    461     <ul>
    462         <li>
    463           Allows annotation insertion at constructor "return type" as per the specification.
    464         </li>
    465         <li>
    466           Fixes assorted bugs dealing with type qualification, inner classes, and receiver insertion.
    467         </li>
    468     </ul>
    469   </li>
    470   <li>
    471     Version 3.5.4 (released Aug 1, 2013):
    472     <ul>
    473         <li>
    474           Allow the use of command-line argument files.  Argument file rules are identical to those of javac.
    475         </li>
    476         <li>
    477           The Annotation File Utilities now appropriately handles vararg parameters.
    478         </li>
    479         <li>
    480           Minor documentation improvements.
    481         </li>
    482     </ul>
    483   </li>
    484   <li>
    485     Version 3.5.3 (released May 1, 2013):
    486     <ul>
    487       <li>
    488         Don't depend on bootstrap javac files.
    489       </li>
    490       <li>
    491         Other minor improvements.
    492       </li>
    493     </ul>
    494   </li>
    495   <li>
    496     Version 3.5.2 (released April 4, 2013):
    497     <ul>
    498       <li>
    499         Allow annotations on compound types of a cast insertion.
    500       </li>
    501       <li>
    502         Added <code>--print_error_stack</code> command-line option to
    503         <code>insert-annotations-to-source</code> tool to print a stack trace on
    504         an error.
    505       </li>
    506       <li>
    507         Various bug fixes.
    508       </li>
    509       <li>
    510         Improvements to the Annotation File Format manual.
    511         <ul>
    512           <li>
    513             Clarified "Grammar" section by reordering and adding more details.
    514           </li>
    515           <li>
    516             Added "Design and Implementation Details" section.
    517           </li>
    518         </ul>
    519       </li>
    520     </ul>
    521   </li>
    522   <li>
    523     Version 3.5.1 (released March 1, 2013):
    524     <ul>
    525       <li>
    526         Small improvements to error messages when parsing JAIF files and for
    527         illegal source code insertions.
    528       </li>
    529       <li>
    530         Installation instruction and manual improvements.
    531       </li>
    532       <li>
    533         Better handling of source code insertions in anonymous and local
    534         classes.
    535         <ul>
    536           <li>
    537             Allow source code insertions in a local class (a class defined
    538             within a method).
    539           </li>
    540           <li>
    541             Bug fixes for anonymous and local class indexes.
    542           </li>
    543           <li>
    544             Don't traverse into nested classes when calculating a source code
    545             index.
    546           </li>
    547         </ul>
    548       </li>
    549       <li>
    550         Improved support for source code method declaration receiver parameter
    551         insertions.
    552         <ul>
    553           <li>
    554             Use the full type name (Outer.Inner1.Inner2) for receiver insertions
    555             in inner classes.
    556           </li>
    557           <li>
    558             Allow annotation insertions on compound types of method declaration
    559             receiver parameters.
    560           </li>
    561         </ul>
    562       </li>
    563       <li>
    564         Insert source code annotations in the semantically correct place for
    565         qualified types.
    566       </li>
    567       <li>
    568         For bytecode annotation extraction and insertion read and put "local"
    569         type annotations in the Code attribute, not the Method attribute.
    570       </li>
    571     </ul>
    572   </li>
    573 
    574   <li>
    575     Version 3.5 (released February 1, 2013):
    576     <ul>
    577       <li>
    578         Updated to JSR308 bytecode representation and receiver parameter syntax.
    579       </li>
    580       <li>
    581         Support source code insertion of annotated casts.
    582       </li>
    583       <li>
    584         Support adding annotations to bytecode for type casts with intersection
    585         types.
    586       </li>
    587     </ul>
    588   </li>
    589 
    590   <li>
    591     Version 3.4 (released September 11, 2012):
    592     <ul>
    593       <li>
    594 	Adapted to underlying changes in JSR 308.
    595       </li>
    596       <li>
    597 	Support .class literals as annotation attributes.
    598       </li>
    599     </ul>
    600   </li>
    601 
    602   <li>
    603     Version 3.3 (released September 20, 2011):
    604     <ul>
    605       <li>
    606 	Improved support for annotations on array creation expressions.
    607       </li>
    608       <li>
    609 	Small tweaks to the code and documentation.
    610       </li>
    611     </ul>
    612   </li>
    613 
    614   <li>
    615   Version 3.2 (released June 18, 2011):
    616     <ul>
    617       <li>
    618 	Support source code indexes, in contrast to the bytecode
    619 	centric indexes supported so far, which makes it easier for
    620 	source code centric tools to emit AFU files.
    621 	See Section "Support for source code indexes" in the
    622 	<a href="annotation-file-format.html">manual</a>.
    623       </li>
    624       <li>
    625 	Support annotating the bounds of class and method type
    626 	parameters and of wildcards, in particular also support
    627 	implicit bounds and make them explicit.
    628 	Also support adding declaration annotations on type parameters.
    629       </li>
    630       <li>
    631 	Better support for anonymous inner classes.
    632       </li>
    633       <li>
    634 	Improve handling of already existing annotations, in
    635 	particular for generic types.
    636       </li>
    637       <li>
    638 	Consistently do matching on methods using the erased signature.
    639       </li>
    640       <li>
    641 	Specify annotations on extends and implements clauses.
    642       </li>
    643       <li>
    644 	Handle interfaces, enums, etc. like classes.
    645       </li>
    646       <li>
    647 	Numerous small bug fixes and improvements.
    648       </li>
    649     </ul>
    650   </li>
    651 
    652   <li>
    653   Version 3.1 (released September 18, 2010):
    654     <ul>
    655       <li>
    656         Don't duplicate annotations that are in the source already.
    657       </li>
    658       <li>
    659         Add <code>--omit-annotation</code> option to omit a given annotation
    660         (example: <code>@ThisMutable</code>, which is the default and need not be
    661         inserted in source files).
    662       </li>
    663       <li>
    664         Bug fixes related to inner classes, array levels, multiple methods
    665         with same signature but different return type (impossible in Java
    666         code, but can occur in class files), parameter indices.
    667       </li>
    668       <li>
    669         Switch from utilMDE library to
    670         <a href="https://github.com/mernst/plume-lib">plume-lib</a>.
    671       </li>
    672     </ul>
    673   </li>
    674 
    675   <li>
    676   Version 3.0 (released December 21, 2009):
    677     <ul>
    678       <li>
    679       Handle meta-annotations.
    680       Previously, the Annotation File Utilities didn't handle meta-annotations
    681       (annotations that are written on an annotation type declaration); in fact,
    682       AFU simply fabricated retention information.  Now, meta-annotations are
    683       handled uniformly with other annotations.
    684       </li>
    685 
    686       <li>
    687       Distinguish type annotations from declaration annotations.
    688       Previously, AFU assumed that all annotations were type annotations.  Now,
    689       this information is looked up from the meta-annotations and is
    690       distinguished in the file format (see below).
    691       </li>
    692 
    693       <li>
    694       Read annotations from classfiles.
    695       Previously, AFU created partial information for annotations in an ad hoc
    696       way, and classfile reading did not work.  (The focus was on inserting
    697       annotations in class files, not reading annotations from class files.)
    698       Now, classfile reading is operational, and it is often not necessary to
    699       declare annotations in an annotation file.  However, if the annotation is
    700       declared in the annotation file, it should be consistent with its
    701       declaration in the class file.
    702       </li>
    703 
    704       <li>Changes to annotation file format.
    705 
    706 	<ul>
    707 	  <li>Indicating meta-annotations
    708 
    709 	    <pre>  annotation visible @Nullable:</pre>
    710 
    711 	      becomes
    712 
    713 	    <pre>  annotation @Nullable: @Retention(value=RUNTIME)</pre>
    714 
    715 	      and if it's a type annotation, it should be
    716 
    717 	    <pre>  annotation @Nullable: @Retention(value=RUNTIME) @java.lang.annotation.Target(value={TYPE_USE})</pre>
    718 	  </li>
    719 	  <li>Locations for type and declaration annotations.
    720 
    721 	If p2.B is a declaration annotation on a method, it is written as before:
    722 
    723 	    <pre>  method foo(Ljava/util/Set;)V: @p2.B</pre>
    724 
    725 	If p2.B is a type annotation on a method return type, it is written in a
    726 	new location:
    727 
    728 	    <pre>  method foo(Ljava/util/Set;)V:
    729     return: @p2.B</pre>
    730 
    731 	Fields and method parameters are treated similarly, but with
    732 	<code>type</code> marker instead of <code>return</code>.  So if p2.A is a
    733 	declaration annotation targeting the field, while p2.B is a type
    734 	annotation on the field, the field would be declared as:
    735 
    736     <pre> field s: @p2.A
    737    type: @p2.B</pre>
    738 
    739 	Furthermore, <code>inner-type:</code> is permitted only after a keyword
    740 	that introduces a type, such as <code>type</code>, <code>return</code>, and
    741 	<code>receiver</code>, to prevent confusion (though the file format
    742 	becomes slightly more verbose).
    743 
    744 	  </li>
    745 	  <li>Permit qualified names in several places that only identifiers were
    746 	permitted before.  This enables use of names that contain periods, such
    747 	as inner classes, and also fully-qualified names.
    748 
    749 	  </li>
    750 	  <li>Permit two shorthands in annotation uses, as in Java.  If there is a
    751 	single field named "value", then its name may be omitted: @A(1) instead
    752 	of @A(value=1).  If an array has only one element, the braces may be
    753 	omitted:  @B(value=1) instead of @B(value={1}).  Both
    754 	shorthands may be combined:  @B(1) instead of @B(value={1}).
    755 	  </li>
    756         </ul>
    757       </li>
    758     </ul>
    759   </li>
    760 
    761   <li>
    762   Version 2.3.3 (released August 18, 2009):
    763     <ul>
    764       <li>Fix a few bugs.</li>
    765     </ul>
    766   </li>
    767 
    768   <li>
    769   Version 2.3.2 (released August 14, 2009):
    770     <ul>
    771       <li>Relax file format:  receiver may precede parameters (in spec &amp;
    772           implementation), parameters may omit "#" (in implementation only)</li>
    773     </ul>
    774   </li>
    775 
    776   <li>
    777   Version 2.3.1 (released August 12, 2009):
    778     <ul>
    779       <li>Fix many bugs.</li>
    780     </ul>
    781   </li>
    782 
    783   <li>
    784   Version 2.3 (released July 29, 2009):
    785     <ul>
    786       <li>Support <code>-i --in-place</code> argument.</li>
    787       <li>Fix incorrect array brackets in tests.</li>
    788       <li>Fix inserting annotations on receivers.</li>
    789       <li>Improve documentation.</li>
    790       <li>Improve error handling.</li>
    791     </ul>
    792   </li>
    793 
    794   <li>
    795   Version 2.2 (released December 7, 2008):
    796     <ul>
    797       <li>Permit Main to process multiple files at a time.</li>
    798       <li>Don't re-insert annotations that are already present.</li>
    799       <li>Add a space before annotation if there isn't one there.</li>
    800       <li>Fix problems with array syntax; now adheres to the current JSR
    801           308 syntax.</li>
    802       <li>Improve error handling.</li>
    803       <li>Code reorganization:  remove subdirectories and classes that
    804           added complexity without commensurate functionality.</li>
    805     </ul>
    806   </li>
    807 
    808   <li>
    809   Version 2.1.2 (released April 28, 2008):
    810   Minor updates to the &ldquo;Annotation File Format Specification&rdquo; (<a
    811     href="https://checkerframework.org/annotation-file-utilities/annotation-file-format.pdf">PDF</a>, <a
    812     href="https://checkerframework.org/annotation-file-utilities/annotation-file-format.html">HTML</a>).
    813   </li>
    814 
    815   <li>
    816   Version 2.1.1 (released May 31, 2007):
    817   Added support for two new annotation target_types; consult the
    818   classfile specification (<a
    819   href="https://checkerframework.org/jsr308/specification/java-annotation-design.pdf">PDF</a>,
    820   <a href="https://checkerframework.org/jsr308/specification/java-annotation-design.html">HTML</a>).
    821   </li>
    822 
    823   <li>
    824   Version 2.1 (released May 4, 2007):
    825   Modified overall setup of distribution to be easier to understand.
    826   </li>
    827 
    828   <li>
    829   Version 2.0 (released May 1, 2007):
    830   Initial public release.
    831   </li>
    832 
    833   <li>
    834   Version 1.0 (released March 19, 2007):
    835   Preliminary release.
    836   The <code>insert-to-annotations-source</code> tool only
    837   operates on class, field and method signatures.
    838   </li>
    839 
    840 </ul>
    841 
    842 <p>
    843 The original developer (through version 2.1.2) was Jaime Quinonez.
    844 </p>
    845 
    846 
    847 </body>
    848 </html>
    849 
    850 
    851 <!--  LocalWords:  utils bashrc tcsh tcshrc cshrc classpath AFU Ljava
    852  -->
    853