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