# Gradle Release Notes

We are excited to announce Gradle 9.5.0-20260307090105+0000 (released 2026-03-07).

This release features 1, 2, ... n, and more.

We would like to thank the following community members for their contributions to this release of Gradle: Ujwal Suresh Vanjare, Suvrat Acharya

Be sure to check out the public roadmap for insight into what's planned for future releases.

## Table Of Contents

## Upgrade instructions

Switch your build to use Gradle 9.5.0-20260307090105+0000 by updating the wrapper in your project:

    ./gradlew wrapper --gradle-version=9.5.0-20260307090105+0000 && ./gradlew wrapper

See the Gradle 9.x upgrade guide to learn about deprecations, breaking changes, and other considerations when upgrading to Gradle 9.5.0-20260307090105+0000.

For Java, Groovy, Kotlin, and Android compatibility, see the full compatibility notes.

## New features and usability improvements

### Type-safe Accessors for Precompiled Kotlin Settings Plugins

Gradle now generates type-safe Kotlin accessors for precompiled convention Settings plugins (`*.settings.gradle.kts`). Previously, when writing a convention plugin for `settings.gradle.kts`, you often had to use string-based APIs to configure extensions or plugins. Now, as long as the `kotlin-dsl` plugin is applied, Gradle generates accessors that provide IDE autocompletion and compile-time checking for your settings scripts, matching the experience already available for Project-level convention plugins.

To enable these accessors, ensure your convention plugin build includes the `kotlin-dsl` plugin:

    // build-logic/build.gradle.kts
    plugins {
        `kotlin-dsl`
    }

### Domain Object Collections can be made immutable

Plugin and build authors can now lock domain object collections to prevent further modifications using the new `disallowChanges()` method.

- Once `disallowChanges()` is called, elements can no longer be added to or removed from the collection.
- Invoking this method does not force the realization of lazy items previously added to the collection.
- This lock applies only to the collection itself. Individual objects within the collection can still be modified.

    val myCollection = objects.domainObjectContainer(MyType::class)
    val main = MyType("main")

    myCollection.add(main)
    myCollection.add(MyType("test"))

    myCollection.disallowChanges()    // the collection is now immutable
    main.setFoo("bar")                // individual elements can still be modified
    myCollection.add(MyType("other")) // this will fail
    myCollection.remove(main)         // this will fail

## Tooling integration improvements

Tooling API clients can now directly access Gradle help and version information the same way as the Gradle CLI. This allows IDEs and other tools to provide a more consistent user experience when interacting with Gradle. For example, In IntelliJ IDEA users will be able to run `--help` and `--version` via the `Execute Gradle task` toolbar action.

## Promoted features

Promoted features are features that were incubating in previous versions of Gradle but are now supported and subject to backward compatibility. See the User Manual section on the "Feature Lifecycle" for more information.

The following are the features that have been promoted in this Gradle release.

## Fixed issues

## Known issues

Known issues are problems that were discovered post-release that are directly related to changes made in this release.

## External contributions

We love getting contributions from the Gradle community. For information on contributing, please see gradle.org/contribute.

## Reporting problems

If you find a problem with this release, please file a bug on GitHub Issues adhering to our issue guidelines. If you're not sure if you're encountering a bug, please use the forum.

We hope you will build happiness with Gradle, and we look forward to your feedback via Twitter or on GitHub.