v1.15.0-rc1
Breaking Changes📦 terraformView on GitHub →
⚠ 1 breaking✨ 6 features🐛 13 fixes🔧 19 symbols
Summary
This release introduces Windows ARM64 builds, support for deprecation attributes on variables/outputs, and the new `convert` function. It also enhances configuration validation and fixes several bugs related to CLI output, state handling, and backend operations.
⚠️ Breaking Changes
- The `AWS_USE_FIPS_ENDPOINT` and `AWS_USE_DUALSTACK_ENDPOINT` environment variables for the S3 backend now only respect explicit "true" or "false" string values. Previously, any non-empty value was treated as true. Users relying on non-boolean truthy values must update their environment variable settings to use "true" explicitly.
Migration Steps
- If using `AWS_USE_FIPS_ENDPOINT` or `AWS_USE_DUALSTACK_ENDPOINT` environment variables for the S3 backend, ensure their values are explicitly set to "true" or "false" if they were previously set to any non-empty string.
✨ New Features
- Production builds are now available for Windows ARM64.
- Introduced the ability to set a `deprecated` attribute on variable and output blocks, which generates warnings when deprecated variables are used or outputs are referenced.
- S3 backend now supports authentication via `aws login`.
- The `validate` command now checks the `backend` block for type existence, required attributes, and backend-specific validation.
- Added the `convert` function for precise inline type conversions.
- Terraform now supports using variables and locals within module source and version attributes.
🐛 Bug Fixes
- File-level error diagnostics are now included in JUnit XML skipped test elements during testing, improving CI/CD pipeline visibility for validation failures.
- Fixed an issue where a refresh-only plan could incorrectly result in a non-zero exit code when no changes were present.
- Fixed a crash in `terraform show -json` when the plan contained ephemeral resources with preconditions or postconditions.
- Fixed `terraform init -json` to correctly format all backend configuration messages as JSON instead of plain text.
- The `state show` command now explicitly fails with exit code 1 if it cannot render the named resource's state.
- Terraform now raises an explicit error if a plan file generated for one workspace is applied against a different workspace.
- The `replace_triggered_by` lifecycle argument now correctly reports an error if given an invalid attribute reference that does not exist in the target resource.
- Fixed a nil pointer dereference crash during `terraform init` when the destination backend returns an error.
- Stacks now send progress events if the plan fails, improving UI integration.
- Stacks component instances now correctly report no-op plan/apply status, resolving a UI inconsistency with convergence destroy plans.
- The HTTP backend now returns conflicting lock information instead of the lock that failed to be acquired.
- Fixed a bug where Terraform failed to identify differences between two states that had different output values, potentially affecting backend migrations.
- Cloud and registry discovery network requests are now more resilient against temporary network or service errors.
Affected Symbols
backend/s3validate commandconvert functionmodule source attributemodule version attributeoutput blocksssh-based provisioner (file + remote-exec)terraform init loginit commandterraform test mock blocksresource deprecation logiclist_start JSON logsinput variable validation for Stackscontainer value comparison to nullterraform applyreplace_triggered_bybackend/httpstate show commandterraform cloud discovery requests