All Versions
Latest Version
Avg Release Cycle
109 days
Latest Release
23 days ago

Changelog History
Page 1

  • v1.7.2

    May 13, 2020

    🚀 Only one change in this release:

    • AutoValue is once again "isolating" for Gradle incremental compilation. (8e7515a)
  • v1.7.1

    May 01, 2020

    🆕 New features

    • 🔧 SerializableAutoValue extension. This can be used to serialize @AutoValue classes with properties of type java.util.Optional, even though java.util.Optional is not serializable, and it can also be configured to serialize other arbitrary types. Thanks to @alvinlao for this contribution! (f91d2fe)
    • 🏗 The logic for determining if we can make a BarBuilder out of a Bar has been generalized. For example, if your @AutoValue class Foo has a property IntList ints(), then your builder can have IntListBuilder intsBuilder(). Previously this worked if there was no Foo.toBuilder() method, or if IntList had its own toBuilder() method. Now it also works if it is possible to call IntListBuilder.addAll(IntList). (6aeb44f)
    • 👍 Allow boxed @autovalue properties to be set from the corresponding primitive type. (2bbe506)

    Behaviour changes

    • 🏗 AutoValue now gives a warning if the static builder() method is inside the @AutoValue.Builder class instead of directly in the @autovalue class. (fcccded)
    • AutoValue doesn't generate code or invoke extensions if it detects a problem, for example a mismatch between getters and setters. (ecb6032)
    • AutoOneOf factory methods for void values now have type parameters if the @AutoOneOf class does. (4ab1b53)
    • 🏗 It is now a compilation error if a setter method in a builder has a parameter marked @nullable when the corresponding property is not in fact @nullable. This already generated a NullPointerException at runtime. (bd7bed2)
    • The @memoized annotation now has class-level retention, rather than source-level. (107694b)

    🐛 Bug fixes

    • 🛠 We fixed an issue with type checking of setter parameters in the presence of inheritance and generics. (e97d1f0)
    • 👍 We now generate a better toString() for arrays in AutoOneOf (0a7c049)


    • ✅ We added CompileWithEclipseTest, which checks that AutoValue works with ecj, the Eclipse compiler. (05e983c)
  • v1.7

    October 10, 2019

    This is the same as 1.7rc1, with one small addition:

    • ➕ Add a way for extensions to retrieve the name of the final AutoValue_Foo class. (4543619)

    🏗 Thanks to @bryanstern for checking that the API changes for builder introspection do indeed work in a real extension.

  • v1.7.rc1

    October 01, 2019
    • ➕ Add an API to allow AutoValue extensions to find out about builders. (86f4563)
    • 🏗 The generated AutoValue builder class is no longer final if there are extensions generating code. This means that extensions can subclass Builder to modify or extend its functionality. (49fbf55)
    • 🏗 Property builders now work correctly when their actual return type is different from the corresponding property type because of type variable substitution. (7646889)
    • 👍 Allow @AutoValue getters to define properties that are not valid Java identifiers, for example get1st(). (6dfa04e)
    • ➕ Add a propertyTypes() method to AutoValueExtension.Context, to allow extensions to see the true type of every property. In preference to properties().get(p).getReturnType(), extensions should use propertyTypes().get(p). (99ae134)
  • v1.6.6

    August 19, 2019
    • 👍 Allow @AutoOneOf properties to be void. An abstract void method means that the associated kind has no value. The factory method has no parameter and calling the implementation of the void method does nothing unless the instance is of another kind. (48d6557)
    • Shade org.checkerframework in the auto-value jar. (f89da91)
    • Primitive arrays now work in @AutoOneOf classes. (81134b5)
    • In AutoValue code, include type annotations in bounds of type-parameter declarations. (ca013a2)
    • 🖐 Handle inner classes correctly when the outer class has a type parameter. (4259261)
    • ⚠ Use the short form of annotations in generated code. For example, instead of @SuppressWarnings(value = {"mutable"}), write @SuppressWarnings("mutable"). (b2eb535)
    • 👉 Use ImmutableSortedSet.copyOfSorted and .naturalOrder where appropriate. (a0de99b)
    • ↪ Work around an Eclipse compiler bug where static interface methods are incorrectly shown as being inherited. (3854a65)
    • 🏗 Handle GWT serialization when some of the properties use property builders. (445b9ed)
  • v1.6.5

    April 10, 2019

    This is identical to 1.6.4 except for the following:

    • 🛠 Fix an intermittent issue with AutoValue extensions and Gradle. (0cced0d)
  • v1.6.4

    April 05, 2019
    • 👻 More detailed exception information if AutoValue extensions cannot be loaded. (67e172e)
    • ↪ Expand the exceptions covered by the workaround for a JDK8 jar bug. (f17d298)
    • 👌 Support @CopyAnnotations in classes generated by MemoizeExtension. (bf27cab)
    • 👌 Improved type checking for builder setter parameters. (8d6111d, efd48fd)
    • ➕ Added MoreTypes.asIntersection() (c16ef66)
    • It is a compilation error for an @AutoOneOf property to be @nullable since null values are not in fact accepted. (9cf9999)
    • 👍 AutoValue extensions can now declare supported options. (175e323)
    • In AutoValue, @CopyAnnotations.exclude now affects type annotations. (3ee205b)
  • v1.6.3

    December 11, 2018
    • 🏗 Make AutoValue and AutoService support Gradle incremental build. Thanks to Thomas Broyer for this work. (a5673d0)
    • ⚡️ When hashCode() is @Memoized, equals() will be optimized to check hash codes first before other properies (34a6a03)
    • 📝 MemoizeExtension recognises @Nullable type annotations, not just method annotations. (66a57ec)
    • ✂ Remove unnecessary parentheses from the generated equals(Object) method in @AutoValue classes. (a5387a6)
    • 📚 Clarify the AutoValueExtension documentation to explain how subclassing works in the code generated by extensions. (73e848a)
    • 👍 GwtSerialization support now works in the presence of AutoValue extensions. (9cc04ec)
    • ✂ Remove the need for the java.desktop module on Java 9+. (f878642)
  • v1.6.3.rc2

    December 04, 2018
  • v1.0

    July 16, 2019
    • 👍 Actually support Gradle's incremental annotation processing