v1.15.0-alpha20251203
Breaking Changes📦 terraform
⚠ 1 breaking✨ 7 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
- Update CI/CD scripts that use 'terraform state show' to handle the new exit code 1 on rendering failures.
- 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