Releases: typetools/checker-framework
Checker Framework 2.1.2
Version 2.1.2, 1 September 2016
Closed issues:
182, 367, 712, 811, 846, 857, 858, 863, 870, 871, 878, 883, 888.
Checker Framework 2.1.1
Version 2.1.1, 1 August 2016
The codebase conforms to a consistent coding style, which is enforced by a git pre-commit hook.
AnnotatedTypeFactory#createSupportedTypeQualifiers() must now return a mutable list. Checkers that override this method will have to be changed.
Closed issues:
856, 850, 845, 838, 829, 826, 824, 820, 810, 809, 805, 790, 681, 590, 384
Checker Framework 2.1.0
Version 2.1.0, 1 July 2016
The new Signedness Checker prevents mixing of unsigned and signed values and prevents meaningless operations on unsigned values.
The Lock Checker expresses the annotated variable as <self>
; previously it used itself
, which may conflict with an identifier.
Closed issues:
166, 273, 358, 408, 471, 484, 594, 625, 692, 700, 701, 711, 717, 752, 756, 759, 763, 767, 779, 783, 794, 807, 808.
Checker Framework 2.0.1
Version 2.0.1, 1 June 2016
We renamed method annotateImplicit to addComputedTypeAnnotations. If you have implemented a checker, you need to change occurrences of annotateImplicit to addComputedTypeAnnotations.
The Checker Framework (checker.jar) is now placed on the processorpath during compilation. Previously, it was placed on the classpath. The qualifiers (checker-qual.jar) remain on the classpath. This change should reduce conflicts between your code and the Checker Framework. If your code depends on classes in the Checker Framework, then you should add those classes to the classpath when you run the compiler.
Closed issues:
738, 689, 720, 696, 707, 291, 740, 706, 705, 523, 736, 723, 698, 171, 250, 721, 577, 728, 688, 691, 704, 672, 702, 680, 695, 690
Checker Framework 2.0.0
Version 2.0.0, 2 May 2016
Inference:
- The infer-and-annotate.sh script infers annotations and inserts them in your source code. This can reduce the burden of writing annotations and let you get started using a type system more quickly. See the "Whole-program inference" section in the manual for details.
Type systems:
- The Lock Checker has been replaced by a new implementation that provides a stronger guarantee. The old Lock Checker prevented two threads from simultaneously using a given variable, but race conditions were still possible due to aliases. The new Lock Checker prevents two threads from simultaneously dereferencing a given value, and thus prevents race conditions. For details, see the "Lock Checker" chapter in the manual, which has been rewritten to describe the new semantics.
- The top type qualifier for the Signature String type system has been renamed from @UnannotatedString to @SignatureUnknown. You shouldn't ever write this annotation, but if you perform separate compilation (for instance, if you do type-checking with the Signature String Checker against a library that is annotated with Signature String annotations), then you need to re-compile the library.
- The IGJ, OIGJ, and Javari Checkers are no longer distributed with the Checker Framework. If you wish to use them, install version 1.9.13 of the Checker Framework. The implementations have been removed because they were not being maintained. The type systems are valuable, but the type-checkers should be rewritten from scratch.
Documentation improvements:
- New manual section "Tips for creating a checker" shows how to break down the implementation of a type system into small, manageable pieces.
- Improved instructions for using Maven and Gradle, including for Android code.
Tool changes:
- The Checker Framework Live Demo webpage lets you try the Checker Framework without installing it: http://eisop.uwaterloo.ca/live/
- New command-line arguments -Acfgviz and -Averbosecfg enable better debugging of the control-flow-graph generation step of type-checking.
- New command-line argument -Ainfer is used by the infer-and-annotate.sh script that performs type inference.
Closed issues:
69, 86, 199, 299, 329, 421, 428, 557, 564, 573, 579, 665, 668, 669, 670, 671.
Checker Framework 1.9.13
Version 1.9.13, 1 April 2016
Documentation:
- Clarified Maven documentation about use of annotations in comments.
- Added FAQ about annotating fully-qualified type names.
Closed issues: 438, 572, 579, 607, 624, 631.
Checker Framework 1.9.12
Version 1.9.12, 1 March 2016
The Checker Framework distribution contains annotated versions of libraries in directory checker-framework/checker/lib/. During type-checking, you should put these versions first on your classpath, to obtain more precise type-checking with fewer false positive warnings.
tools.jar is no longer required to be on the classpath when using checker-qual.jar
The Signature String Checker supports two new string representations of a Java type: @InternalForm and @ClassGetSimpleName.
The manual documents how to run a pluggable type-checker in IntelliJ IDEA.
The instructions on how to run a type-checker in Gradle have been updated to use the artifacts in Maven Central. Examples using the instructions have been added under checker-framework/checker/examples/GradleExamples/.
Renamed enum DefaultLocation to TypeUseLocation.
Closed issues: 130, 263, 345, 458, 559, 559, 574, 582, 596.
Checker Framework 1.9.11
Version 1.9.11, 1 February 2016
Renamed and merged -AuseSafeDefaultsForUnannotatedSourceCode and
-AsafeDefaultsForUnannotatedBytecode command-line options to
-AuseDefaultsForUncheckedCode that takes arguments source and bytecode.
For type-system developers:
- The previously deprecated
org.checkerframework.framework.qual.TypeQualifier{s} annotations
were removed. - Every type system uses the CLIMB-to-top defaulting scheme, unless it
explicitly specifies a different one. Previously a type system needed
to explicitly request CLIMB-to-top, but now it is the default.
Closed issues: 524, 563, 568.
Checker Framework 1.9.10
Version 1.9.10, 4 January 2016
The Checker Framework distribution files now contain a version number: for example, checker-framework-1.9.9.zip rather than checker-framework.zip.
Nullness Checker supports org.eclipse.jgit.annotations.Nullable and NonNull annotations.
Buildfiles do less unnecessary recomputation.
Documentation:
- Documented how to initialize circular data structures in the Initialization type system.
- Linked to David Bürgin's Nullness Checker tutorial at https://github.com/glts/safer-spring-petclinic/wiki
- Acknowledged more contributors in the manual.
For type-system developers:
- The org.checkerframework.framework.qual.TypeQualifier{s} annotations are now deprecated. To indicate which annotations a checker supports, see http://types.cs.washington.edu/checker-framework/current/checker-framework-manual.html#indicating-supported-annotations .
Support for TypeQualifier{s} will be removed in the next release. - Renamed org.checkerframework.framework.qual.Default{,Qualifier}ForUnannotatedCode to DefaultInUncheckedCodeFor and DefaultQualifierInHierarchyInUncheckedCode.
Closed issues: 169, 363, 448, 478, 496, 516, 529.
Checker Framework 1.9.9
Version 1.9.9, 1 December 2015
Fixed issues: 511, 513, 514, 455, 527.
Removed the javac_maven script and batch file,
which had been previously deprecated.