All Versions
25
Latest Version
Avg Release Cycle
154 days
Latest Release
58 days ago

Changelog History
Page 1

  • v1.4.2 Changes

    April 18, 2026

    ✨ Enhancements

    Core

    • DescribedPredicate#negate() returns a DescribedPredicate (#1484)
    • 🆕 New JavaCodeUnit.Predicates.anyParameterThat and JavaCodeUnit.Predicates.allParameters (#1498; thanks to @mkhl 👏)
    • 👌 Support Java 26 / class file major version 70 (#1544)
  • v1.4.1 Changes

    May 07, 2025

    ✨ Enhancements

    Core

    • 👌 Support Java 25 / class file major version 69 (#1440)

    Library

    • 👌 Support priorities in SlicesRuleDefinition (#1436; thanks to @guesshe 👏)
    • Ignore synthetic bridge methods in ProxyRules (#1443)

    📚 Documentation

    • 👌 Improve documentation of slices rule (#1454)

    Internal improvements

    • ⬇️ Reduce memory footprint of ClassFileImporterSlowTest (#1446 / #1440)
  • v1.4.0 Changes

    February 10, 2025

    ✨ Enhancements

    Core

    • 👌 Support Java 24 / class file major version 68 (#1364)

    Lang

    • 👌 Improve performance for transitive dependency checks (#1381; thanks to @To6i 👏)

    Library

    • New GeneralCodingRules.OLD_DATE_AND_TIME_CLASSES_SHOULD_NOT_BE_USED (#1385; thanks to @Bukama 👏)
    • 👌 Improve GeneralCodingRules.testClassesShouldResideInTheSamePackageAsImplementation to not fail for classes with no tests in their packages (#1368; thanks to @krzysztof-owczarek 👏)

    JUnit

    • 🛠 Fix failure when junit.testFilter is used (#1361; thanks to @Sparkymann 👏)
    • Enable @AnalyzeClasses annotation to be used as meta annotation (#1300; thanks to @mathze 👏)

    📚 Documentation

    • 🛠 Fix user guide describing wrong default behavior of @AnalyzeClasses (#1406)
    • 📚 Clarify Slices documentation (#1366; thanks to @mipo256 👏)

    Internal improvements

    • ✅ Run tests with JUnit Platform to pave the way to migrate to JUnit 5 (#1294)
    • ⚡️ Update Gradle Wrapper from 7.6 to 8.12 (#1392)
    • 👷 Extend CI to run tests with JDK 21 (#1408)
  • v1.3.2 Changes

    May 10, 2025

    ✨ Enhancements

    🚀 (backported from ArchUnit 1.4.1)

    Core

    • 👌 Support Java 25 / class file major version 69 (backported from #1440)
    • 🗄 Avoid deprecated sun.misc.Unsafe::objectFieldOffset from (relocated) com.google.guava:guava (backported from #1440)
  • v1.3.1 Changes

    March 19, 2025

    ✨ Enhancements

    🚀 (backported from ArchUnit 1.4.0)

    Core

    • 👌 Support Java 24 / class file major version 68 (backported from #1364)
  • v1.3.0 Changes

    April 11, 2024

    🐛 Bug Fixes

    • 🛠 Fix ArchUnit importer being unable to import classes from Spring Boot Nested jars (see #1224)
    • 🛠 Fix OnionArchitecture losing withOptionalLayers() on description override (see #1185)
    • 🛠 Fix JavaType.getAllInvolvedRawTypes() recursing infinitely for recursive type definitions (see #1237)
    • 🛠 Fix @ArchTest fields in base classes of @ArchIgnored classes not being ignored (see #1277)

    ✨ Enhancements

    Core

    • ➕ Add support for Java 23 (see #1275; thanks a lot to @hankem)
    • 🆕 New method JavaType.traverseSignature(..) to examine parts of a type signature more conveniently (see 8456198 of #1276)

    Lang

    • 👀 Make handling specific violating object types with ViolationHandler more convenient (see #1251)

    Library

    • Jakarta EE annotations are now considered in GeneralCodingRules.NO_CLASSES_SHOULD_USE_FIELD_INJECTION (see #1285; thanks a lot to @hankem)
    • 👀 PlantUML rules now ignore dependencies between unparsable objects (e.g. a database instead of a regular component) (see #1132; thanks a lot to @tfij)
    • 👀 PlantUML rules now optionally support the component keyword in component [Example] <<..example..>> (see #1223; thanks a lot to @tfij)

    JUnit

    • 👀 @ArchTests included via ArchTests.in(..) now report their full "inclusion path" in the test report (see #452, #1279)
    • Specific @ArchTest rules can now be executed by setting the ArchUnit property junit.testFilter=rule_field_name / setting the system property -Darchunit.junit.testFilter=... (compare the user guide; see #1280)

    Further Acknowledgement

    • 👀 Thanks a lot to @hankem for improving the user guide (see #1221)
  • v1.2.2 Changes

    April 23, 2024

    🐛 Bug Fixes

    • 🛠 Fix ArchUnit importer being unable to import classes from Spring Boot Nested jars (see #1224)
  • v1.2.1 Changes

    December 03, 2023

    🐛 Bug Fixes

    • 🛠 Fix crash on importing inner classes that use += string concatenation on outer class private field (see #1146, #1194)
  • v1.2.0 Changes

    November 06, 2023

    ✨ Enhancements

    Core

    • ➕ Add support for Java 22 (see #1172; thanks a lot to @hankem)
    • 🆕 New methods {JavaType/JavaMember}.getAllInvolvedRawTypes() to quickly detect all raw types contributing to a type (e.g. List<? extends Serializable>) or member (e.g. List<? extends Serializable> method(Set<String> args) {..}) (see #723; thanks a lot to @leonardhusmann)

    Lang

    • 🆕 New rules API FieldsShould.{be/notBe}AccessedByMethodsThat(predicate) to prevent fields from being accessed by certain methods (see #857; thanks a lot to @leonardhusmann)

    Library

    • New extensive modules rule syntax to support easier checks for modularization (dependency direction, API surface, ...) (compare the user guide; see #1078)

    JUnit

    Further Acknowledgement

  • v1.1.1 Changes

    April 25, 2024

    🐛 Bug Fixes

    • 🛠 Fix ArchUnit importer being unable to import classes from Spring Boot Nested jars (see #1224)