Change8

v1.15.0-alpha20251203

Breaking Changes
📦 terraform
1 breaking7 features🐛 4 fixes🔧 11 symbols

Summary

This alpha release introduces Windows ARM64 support and several experimental testing enhancements, including persistent backends for tests and a new test cleanup command. It also includes various CLI bug fixes and improved JSON output consistency.

⚠️ Breaking Changes

  • The 'state show' command now returns exit code 1 and explicitly fails when it cannot render the named resource state, which may break scripts relying on previous exit behavior.

Migration Steps

  1. Update CI/CD scripts that use 'terraform state show' to handle the new exit code 1 on rendering failures.
  2. If using experimental testing features, ensure the .terraform directory is preserved to utilize the new 'test cleanup' command.

✨ New Features

  • Added official builds for Windows ARM64 architecture.
  • Re-enabled PowerShell support for ssh-based provisioners (file and remote-exec).
  • Added millisecond precision to terraform init log timestamps.
  • Modified terraform init to skip dependencies declared in development overrides.
  • Experimental: Added 'deferred actions' via -allow-deferral to permit unknown values in count and for_each.
  • Experimental: Added 'terraform test cleanup' command to manage local state files from failed tests.
  • Experimental: Added support for 'backend' blocks and 'skip_cleanup' attributes within terraform test files.

🐛 Bug Fixes

  • Included file-level error diagnostics in JUnit XML skipped test elements for better CI/CD visibility.
  • Fixed issue where refresh-only plans could return a non-zero exit code despite no changes.
  • Fixed crash in 'terraform show -json' when plans contained ephemeral resources with pre/postconditions.
  • Fixed 'terraform init -json' to ensure backend configuration messages are correctly formatted as JSON.

🔧 Affected Symbols

terraform state showterraform show -jsonterraform init -jsonterraform testterraform test cleanupprovisioner.fileprovisioner.remote-execmodule.countmodule.for_eachresource.countresource.for_each