aboutsummaryrefslogtreecommitdiff
path: root/annotation-file-utilities/changelog.html
blob: 201d689fe406bc74a6e57b1069376bd1f7eb5316 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
<!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.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
 -->