Skip to content

Releases: uber/NullAway

NullAway 0.12.2

13 Dec 16:04
Compare
Choose a tag to compare
  • Fix reading of JSpecify @nullable annotations from varargs parameter in bytecode (#1089)
  • Fix JarInfer handling of generic types (#1078)
  • Fix another JSpecify mode crash involving raw types (#1086)
  • Fix bugs in handling of valueOf calls for map keys (#1085)
  • Suggest correct fix when array component of non-nullable array is made null. (#1087)
  • Substitute type arguments when checking type parameter nullability at call site (#1070)
  • Fix JarInfer parameter indexes for instance methods (#1071)
  • JSpecify mode: initial support for generic methods (with explicit type arguments at calls) (#1053)
  • Maintenance
    • Update to latest Error Prone and Error Prone Gradle plugin (#1064)
    • Refactor serialization adapter retrieval by version (#1066)
    • Remove fixes.tsv serialization from NullAway serialization service (#1063)
    • Enable javac -parameters flag (#1069)
    • Update to Gradle 8.11 (#1073)
    • Add test for issue 1035 (#1074)
    • remove use of deprecated Gradle API (#1076)
    • Update to Error Prone 2.36.0 (#1077)

NullAway 0.12.1

28 Oct 16:32
Compare
Choose a tag to compare
  • Add library model for Apache Commons CollectionUtils.isNotEmpty (#932) (#1062)
  • Handle records in targetTypeMatches (#1061)

NullAway 0.12.0

18 Oct 16:24
Compare
Choose a tag to compare

IMPORTANT:

  • We now by default check/enforce that pure type-use annotations from JSpecify are written in the "right place" on array types, varargs types, and nested types. More details can be found in the wiki. We also expose -XepOpt:NullAway:LegacyAnnotationLocations flag to disable this new
    behavior for now to ease the migration. We expect to remove this flag in a future version
    of NullAway.
  • We now support writing @EnsuresNonNullIf on methods to capture cases where a method conditionally ensures that a field is @nonnull. Thanks @mauricioaniche for the contributions!

(The changelog below contains all changes from version 0.11.2, since version 0.11.3 contains only one cherry-picked PR from master).

  • Enforce Strict Interpretation Of Type Use Annotation Locations Outside of JSpecify mode (#1010)
  • Update handling of annotations on varargs argument (#1025)
  • Create basic unit tests for library model generation (#1031)
  • Partial handling for restrictive annotations on varargs in unannotated code (#1029)
  • Add missing source files in android-jarinfer-models-sdk modules (#1033)
  • External Library Models: Adding support for @nullable Method parameters (#1006)
  • JDK 23 support (#1034)
  • Support @EnsuresNonNullIf (#1044)
  • Update some Android astubx models (#1052)
  • Remove unused or unneeded JarInfer flags (#1050)
  • Enforce correct type-use annotation locations for nested types (#1045)
  • Update Android SDK 31 astubx models (#1054)
  • Fix bugs in reading varargs annotations from bytecodes (#1055)
  • General maintenance:
    • Update to Gradle 8.10 (#1023)
    • Update to Gradle 8.10.1 (#1036)
    • Update to Error Prone 2.32.0 (#1037)
    • Typo fix in README.md (#1041)
    • Fix Gradle config instructions (#1039)
    • Update to v4 of setup-gradle GitHub action (#1043)
    • Add extra JVM args needed for JMH on recent JDK versions (#1049)
    • Use HTTP instead of SSH for cloning repo for JMH Benchmarks (#1056)
    • Various version updates (#1051)
    • Update to Checker Framework 3.48.0 (#1030)

NullAway 0.11.3

16 Sep 14:45
Compare
Choose a tag to compare

IMPORTANT: We have cherry-picked one PR in master since 0.11.2 for this release, it
does not contain all changes in master!

  • Add missing source files in android-jarinfer-models-sdk modules (#1033)

NullAway 0.11.2

19 Aug 17:57
Compare
Choose a tag to compare
  • JSpecify: add another bailout check for raw types (#1021)
  • JSpecify: handle intersection type in one place (#1015)
  • JSpecify: fix for crash with wildcard types (#1020)
  • Maintenance:

NullAway 0.11.1

29 Jul 19:51
Compare
Choose a tag to compare
  • Fix issue 1008 (#1009)
  • JSpecify: read upper bound annotations from bytecode and add tests (#1004)
  • Fix crash with suggested suppressions in JSpecify mode (#1001)
  • Update to JSpecify 1.0 and use JSpecify annotations in NullAway code (#1000)
  • Expose @EnsuresNonNull and @RequiresNonNull in annotations package (#999)
  • Don't report initializer warnings on @NullUnmarked constructors / methods (#997)
  • Strip annotations from MethodSymbol strings (#993)
  • JSpecify: fix crashes where declared parameter / return types were raw (#989)
  • JSpecify: Handle @nullable elements for enhanced-for-loops on arrays (#986)
  • Features/944 tidy stream nullability propagator (#985)
  • Tests for loops over arrays (#982)
  • Bug fixes for array subtyping at returns / parameter passing (#980)
  • JSpecify: Handle @nonnull elements in @nullable content arrays (#963)
  • Don't report @nullable type argument errors for unmarked classes (#958)
  • External Library Models: Adding support for Nullable upper bounds of Generic Type parameters (#949)
  • Refactoring / code cleanups:
    • Test on JDK 22 (#992)
    • Add test case for @nullable Void with override in JSpecify mode (#990)
    • Enable UnnecessaryFinal and PreferredInterfaceType EP checks (#991)
    • Add missing @test annotation (#988)
    • Fix typo in variable name (#987)
    • Remove AbstractConfig class (#974)
    • Fix Javadoc for MethodRef (#973)
    • Refactored data clumps with the help of LLMs (research project) (#960)
  • Build / CI tooling maintenance:
    • Various cleanups enabled by bumping minimum Java and Error Prone versions (#962)
    • Disable publishing of snapshot builds from CI (#967)
    • Update Gradle action usage in CI workflow (#969)
    • Update Gradle config to always compile Java code using JDK 17 (#971)
    • Update JavaParser to 3.26.0 (#970)
    • Reenable JMH benchmarking in a safer manner (#975)
    • Updated JMH Benchmark Comment Action (#976)
    • Update to Gradle 8.8 (#981)
    • Update to Error Prone 2.28.0 (#984)
    • Update to Gradle 8.9 (#998)
    • Update to WALA 1.6.6 (#1003)

NullAway 0.11.0

01 Jun 01:49
Compare
Choose a tag to compare

IMPORTANT: Support for JDK 8 is dropped and NullAway now requires ErrorProne 2.14.0 or higher.

  • Delete OptionalEmptinessHandler method that is no longer needed (#954)
  • Refactor PreservedAnnotationTreeVisitor (#955)
  • Update to Error Prone 2.27.1 (#957)
  • JSpecify subtyping checks for arrays (#956)
  • Bump to Checker Framework 3.43.0 (#959)
  • Drop Java 8 support (#961)

NullAway 0.10.26

03 May 13:17
Compare
Choose a tag to compare
  • External Library Models Integration (#922)
  • Rename test classes (#951)
  • Propagate more nullability info to lambdas known to be invoked synchronously (#952)

NullAway 0.10.25

29 Mar 15:05
Compare
Choose a tag to compare
  • JSpecify: Handle @nullable assignments to @nonnull arrays (#929)
  • Handle JDK 21 case operands in type refinement (#928)
  • Track access paths of the form Foo.this.bar (#937)
  • Add test for boolean contract with extra message argument (#945)
  • Collectors.toMap handling for streams (#938)
  • Handle methods that fail unconditionally in ContractHandler (#946)
  • Build / CI tooling upgrades:
    • Update various dependencies (#939)

NullAway 0.10.24

04 Mar 17:59
Compare
Choose a tag to compare
  • Add library model for Files.isDirectory (#913)
  • JSpecify test case for generic methods (#918)
  • Check dereference of qualifier expression in method reference (#920)
  • JSpecify: skip checking when type is primitive (#924)
  • Fix another JSpecify raw type issue (#925)
  • Fix handling of references to methods of array types and type variables (#926)
  • Build / CI / Documentation upgrades/fixes:
    • Fix lombok config example more correctly on README (#911)
    • Update to Gradle 8.6 (#914)
    • Update to Error Prone 2.25.0 (#916)
    • Add codecov token (#921)