anchor.diff:  [[sec:what_is_new_task_configuration]]
   === What is the new API good for?
   
  -In a nutshell, the new API allows builds to avoid the cost of creating and configuring tasks during Gradle's configuration phase. Instead of immediately creating a task and running all configuration actions, Gradle exposes a api:org.gradle.api.provider.Provider[] to a task. We call these "lazy tasks". A task will only be created and configured when the task is required (usually execution). We identified task configuration as a contributor to overall configuration time, especially in large multi-project builds.
  -
  -This feature is designed to be backwards compatible when mixed with the old and new APIs, so you can gradually migrate your plugins and build scripts to the new API. If at any point, a task registered with the new API is accessed through the old API, the task will be created and configured just as if it had been created with the old API.
  +In a nutshell, the new API allows builds to avoid the cost of creating and configuring tasks during Gradle's configuration phase when those tasks will never be executed. We identified task configuration as a contributor to overall configuration time. Configuration time affects every build, so making it faster is good for everyone. For example, if you're only compiling, Gradle doesn't need to also configure code quality, testing and publishing tasks. For tasks that aren't used often by developers, configuration can be expensive (e.g., running `git status` or querying a webservice) and can slow down builds that do not need to execute them. This new API avoids configuring those tasks if they are not needed.
  +
  +This feature is designed to be backwards compatible when mixed with the old and new APIs, so you can gradually migrate your plugins and build scripts to the new API. Instead of immediately creating a task and running all configuration actions, Gradle exposes a api:org.gradle.api.provider.Provider[] to a task. A task will only be created and configured when the task is required. If at any point, a task registered with the new API is accessed through the old API, the task will be created and configured just as if it had been created with the old API.
   
   Many built-in Gradle plugins have been converted to use this new API already, so you may see some benefits without changing anything.
   
  
positive.code: - Try your build with the latest nightly (see the version number at the top of this page).
  - How many tasks do you see registered with the new API?  See <<sec:how_do_i_know_its_working>> for how to find this.
  - Which task types do you have a lot of? Which ones are created with the old API? Which ones are registered with the new API, but have been created/configured anyways?
  - Following <<sec:lazy_task_pitfalls>>, change your build scripts to use the new API to avoid creating/configuring tasks that are from the built-in Gradle plugins. Is there an impact to the number of lazy tasks that are created?
  - Convert some of your custom plugins/tasks to use the new API.  Is there an impact to the number of tasks using the new API and the number of new API tasks that are created?
  - Run the https://github.com/gradle/gradle-profiler[gradle-profiler] to measure the difference between a lazy build and a completely eager build. What do you see? Use <<sec:new_task_gradle_profiler_scenario,the scenario file below>>.
  
  [[sec:lazy_task_guidelines]]
  === Guidelines
  
  [[sec:how_do_i_defer_creation]]
  
negative.code: // See the License for the specific language governing permissions and
  // limitations under the License.
  
  [[task_configuration_avoidance]]
  == Task Configuration Avoidance
  
  We are asking early adopters to try out a new API for creating and configuring tasks to iron out any issues and gather feedback. This chapter provides a quick introduction to the feature and explains some guidelines for migrating your build to use the new API. We intend for this new API to eventually replace the existing API through our usual deprecation process over several major releases.
  
  [NOTE]
  ====
  