Releases: stackql/stackql-deploy-rs
v2.0.7
stackql-deploy v2.0.7
Fixes
- Fixed post-deploy failure for
createorupdateresources whoseexportsanchor is a literalSELECTwith noFROMclause (a supported and common pattern when the values to export are already known and an extra API round-trip is wasteful). Previously the exports query was executed as a statecheck proxy, and a FROM-less result caused the proxy check to report the resource was not in the desired state, aborting the run. Withcreateorupdate, the DML is authoritative, so the exports-as-statecheck proxy is now skipped entirely -exportsstill runs to populate the global context for downstream resources. - Fixed
stackql-deploy upgradedownloading the stackql binary twice when the binary was missing: the pre-command binary check triggered a download, and the subcommand dispatch then triggered a second download.upgradeis now exempt from the pre-command binary check. - Server-side notices from provider HTTP 4xx/5xx responses are now detected even when stackql wraps them as a generic
a notice level event has occurredmessage with the real status code in theDETAIL:payload. Previously these escaped the error check and thecreate/update/deleteoperation silently appeared to succeed while the post-deployexistscheck spun through its retries. - Collapsed duplicate lines within a single notice's
DETAIL:payload so repeated provider error bodies are printed once. - Teardown now tolerates resources with unresolved template variables. If an
exists,exports, ordeletequery references a variable that was never populated (because an upstream resource doesn't exist), the resource is treated as already torn down and skipped, instead of aborting the run. Stacks in a half-baked state can now be torn down cleanly. - During teardown,
RETURNINGclauses are stripped from rendereddeleteDML whenreturn_vals.deleteis not configured for the resource. Some providers rejectRETURNING *onDELETE, and teardown has no consumer for the returned data unless the manifest explicitly opts in viareturn_vals.delete. Whenreturn_vals.deleteis configured theRETURNINGclause is preserved and mapped fields are captured asthis.*with non-fatal warnings if a mapping cannot be satisfied. - Stale provider notices are no longer re-surfaced on subsequent queries. stackql emits a cumulative
NoticeResponseon every query that includes every provider notice observed earlier in the session; the pgwire client now tracks each notice line already surfaced and drops byte-identical re-emissions. Dedup is exact-match (no canonicalization) so two distinct provider errors — which always differ in their embedded request/serving IDs — are never conflated. Fixes spuriouscreate/update/deletefailures where a 4xx provider response from an earlierexistsSELECT was attributed to a later DML.
Features
- When retries are exhausted on a
statecheck,exportsproxy, or post-deployexistscheck, the last rendered query is now logged atwarnlevel so the failing SQL is visible without needing--show-queriesor--log-level debug. Pre-create exists checks (which fast-fail by design) stay silent.
Download
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | stackql-deploy-linux-x86_64.tar.gz |
| Linux | arm64 | stackql-deploy-linux-arm64.tar.gz |
| macOS | Universal (Apple Silicon + Intel) | stackql-deploy-macos-universal.tar.gz |
| Windows | x86_64 | stackql-deploy-windows-x86_64.zip |
Each archive contains a single binary named stackql-deploy (or stackql-deploy.exe on Windows). Verify your download with SHA256SUMS.
Install (quick)
Linux / macOS:
curl -L https://get-stackql-deploy.rs -o stackql-deploy.tar.gz && tar xz stackql-deploy.tar.gzWindows (PowerShell):
Invoke-WebRequest -Uri https://get-stackql-deploy.rs -OutFile stackql-deploy.zip
Expand-Archive stackql-deploy.zip -DestinationPath .cargo:
cargo install stackql-deployFull documentation: stackql-deploy.io - Source: github.com/stackql/stackql-deploy
v2.0.6
stackql-deploy v2.0.6
Fixes
- Fixed eager rendering of
statecheckqueries that caused hard failures whenthis.*variables were not yet available (e.g. post-create exists re-run fails due to eventual consistency).statechecknow uses JIT rendering likeexports, deferring gracefully when template variables are unresolved. - When a deferred
statecheckcannot be rendered post-deploy, the build falls through toexports-as-proxy validation or accepts the create/update based on successful execution. - Applied the same fix to
teardown, wherestatecheckused as an exists fallback would crash on unresolved variables instead of skipping the resource. - Fixed
--dry-runfailures for resources that depend on exports from upstream resources.createandupdatequery rendering now defers gracefully in dry-run mode when upstream exports are unavailable, and placeholder (<evaluated>) values are injected for unresolved exports so downstream resources can still render. - When a post-create exists re-run fails to find a newly created resource (eventual consistency), the exists query is automatically retried using the
statecheckretry settings if available, giving async providers time to make the resource discoverable.
Features
- New optional
troubleshootIQL anchor for post-failure diagnostics. When abuildpost-deploy check fails or ateardowndelete cannot be confirmed, a user-defined diagnostic query is automatically rendered and executed, with results logged as pretty-printed JSON. Supports operation-specific variants (troubleshoot:create,troubleshoot:update,troubleshoot:delete) with fallback to a generictroubleshootanchor. Typically used withreturn_valsto capture an async operation handle (e.g.RequestToken) fromRETURNING *and query its status via{{ this.<field> }}. See resource query files documentation for details. - The
RETURNING *log message (storing RETURNING * result...) is now logged atdebuglevel instead ofinfo.
Download
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | stackql-deploy-linux-x86_64.tar.gz |
| Linux | arm64 | stackql-deploy-linux-arm64.tar.gz |
| macOS | Universal (Apple Silicon + Intel) | stackql-deploy-macos-universal.tar.gz |
| Windows | x86_64 | stackql-deploy-windows-x86_64.zip |
Each archive contains a single binary named stackql-deploy (or stackql-deploy.exe on Windows). Verify your download with SHA256SUMS.
Install (quick)
Linux / macOS:
curl -L https://get-stackql-deploy.rs -o stackql-deploy.tar.gz && tar xz stackql-deploy.tar.gzWindows (PowerShell):
Invoke-WebRequest -Uri https://get-stackql-deploy.rs -OutFile stackql-deploy.zip
Expand-Archive stackql-deploy.zip -DestinationPath .cargo:
cargo install stackql-deployFull documentation: stackql-deploy.io - Source: github.com/stackql/stackql-deploy
v2.0.5
stackql-deploy v2.0.5
Download
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | stackql-deploy-linux-x86_64.tar.gz |
| Linux | arm64 | stackql-deploy-linux-arm64.tar.gz |
| macOS | Universal (Apple Silicon + Intel) | stackql-deploy-macos-universal.tar.gz |
| Windows | x86_64 | stackql-deploy-windows-x86_64.zip |
Each archive contains a single binary named stackql-deploy (or stackql-deploy.exe on Windows). Verify your download with SHA256SUMS.
Install (quick)
Linux / macOS:
curl -L https://get-stackql-deploy.rs -o stackql-deploy.tar.gz && tar xz stackql-deploy.tar.gzWindows (PowerShell):
Invoke-WebRequest -Uri https://get-stackql-deploy.rs -OutFile stackql-deploy.zip
Expand-Archive stackql-deploy.zip -DestinationPath .cargo:
cargo install stackql-deployFull documentation: stackql-deploy.io - Source: github.com/stackql/stackql-deploy
v2.0.4
stackql-deploy v2.0.4
Identifier capture from exists queries
The exists query can now return a named field (e.g. vpc_id) instead of count. The returned value is automatically captured as a resource-scoped variable ({{ this.<field> }}) and made available to all subsequent queries (statecheck, exports, delete) for that resource. This enables a two-step workflow where exists discovers the resource identifier and statecheck verifies its properties.
- When
existsreturnsnullor empty for the captured field, the resource is treated as non-existent - Multiple rows from an
exists(identifier pattern) orexportsquery is now a fatal error - After a
create, theexistsquery is automatically re-run to capture the identifier for use in post-deploystatecheckandexportsqueries
RETURNING * identifier capture
When a create statement includes RETURNING * and the response contains an Identifier field, it is automatically injected as this.identifier — skipping the post-create exists re-run and saving an API call per resource.
return_vals manifest field
New optional return_vals field on resources to explicitly map fields from RETURNING * responses to resource-scoped variables:
return_vals:
create:
- Identifier: identifier # rename pattern
- ErrorCode # direct captureIf return_vals is specified but the field is missing from the response, the build fails.
to_aws_tag_filters template filter
New AWS-specific Tera filter that converts global_tags (list of Key/Value pairs) to the AWS Resource Groups Tagging API TagFilters format:
AND TagFilters = '{{ global_tags | to_aws_tag_filters }}'YAML type preservation fix
Fixed an issue where YAML string values that look like numbers (e.g. IpProtocol: "-1") were being coerced to integers during JSON serialization. String types declared in YAML are now preserved through to the rendered query.
Teardown improvements
- Teardown no longer retries exports queries that return empty results — missing exports are set to
<unknown>and teardown continues best-effort - Post-delete existence checks accept the first empty response instead of retrying, reducing teardown time significantly
AWS starter template updated
The stackql-deploy init --provider aws starter template now uses:
awscc(Cloud Control) provider instead ofaws- CTE + INNER JOIN exists pattern with
to_aws_tag_filters AWS_POLICY_EQUALfor statecheck tag comparisonthis.<field>identifier capture patternRETURNING *on create statementsstackql:stack-name/stackql:stack-env/stackql:resource-nametag taxonomy
AWS VPC Web Server example
Complete rewrite of the examples/aws/aws-vpc-webserver stack (renamed from aws-stack) using the awscc provider exclusively. Includes 10 resources demonstrating all query patterns: tag-based discovery, identifier capture, property-level statechecks, PatchDocument updates, and the to_aws_tag_filters filter.
Patch Document Test example
New examples/aws/patch-doc-test example demonstrating the Cloud Control API UPDATE workflow with PatchDocument — deploy an S3 bucket, modify its versioning config in the manifest, and re-deploy to apply the update.
Other changes
- Fixed
initcommand missing--envargument (defaulting todev) - Added
debuglog import to build command - Debug logging now shows full
RETURNING *payloads - Documentation updates:
resource-query-files.md,template-filters.md,manifest-file.md, and AWS template library
Download
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | stackql-deploy-linux-x86_64.tar.gz |
| Linux | arm64 | stackql-deploy-linux-arm64.tar.gz |
| macOS | Universal (Apple Silicon + Intel) | stackql-deploy-macos-universal.tar.gz |
| Windows | x86_64 | stackql-deploy-windows-x86_64.zip |
Each archive contains a single binary named stackql-deploy (or stackql-deploy.exe on Windows). Verify your download with SHA256SUMS.
Install (quick)
Linux / macOS:
curl -L https://get-stackql-deploy.rs -o stackql-deploy.tar.gz && tar xz stackql-deploy.tar.gzWindows (PowerShell):
Invoke-WebRequest -Uri https://get-stackql-deploy.rs -OutFile stackql-deploy.zip
Expand-Archive stackql-deploy.zip -DestinationPath .cargo:
cargo install stackql-deployFull documentation: stackql-deploy.io - Source: github.com/stackql/stackql-deploy
v2.0.3
stackql-deploy v2.0.3
What's new
This release ships the Rust rewrite of stackql-deploy — a complete
ground-up reimplementation that replaces the original Python package.
Key improvements over the Python version:
- Single self-contained binary — no Python runtime, pip, or virtualenv required.
Drop the binary on any supported platform and run. - Faster startup and execution — Rust compile-time optimisations mean commands
that previously took seconds to initialise now start instantly. - Smaller install footprint — the stripped Linux x86_64 binary is under 10 MB;
no transitive Python dependencies to manage. - Statically linked on Linux — works on any glibc >= 2.17 distro without
installing extra system libraries. - Native Windows and macOS ARM64 support — pre-built for all five major targets
(see assets below).
Download
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | stackql-deploy-linux-x86_64.tar.gz |
| Linux | arm64 | stackql-deploy-linux-arm64.tar.gz |
| macOS | Apple Silicon (arm64) | stackql-deploy-macos-arm64.tar.gz |
| macOS | Intel (x86_64) | stackql-deploy-macos-x86_64.tar.gz |
| Windows | x86_64 | stackql-deploy-windows-x86_64.zip |
Each archive contains a single binary named stackql-deploy (or
stackql-deploy.exe on Windows). Verify your download with SHA256SUMS.
Migrating from the Python package
If you are currently using the Python package on PyPI, please migrate to this
release. The Python package is now deprecated and will no longer receive updates:
https://pypi.org/project/stackql-deploy/
The CLI interface is fully compatible — existing stackql_manifest.yml files and
project layouts work without modification.
Install (quick)
Linux / macOS:
curl -sSL https://github.com/stackql/stackql-deploy/releases/download/v2.0.3/stackql-deploy-linux-x86_64.tar.gz \
| tar -xz -C /usr/local/binWindows (PowerShell):
Invoke-WebRequest -Uri https://github.com/stackql/stackql-deploy/releases/download/v2.0.3/stackql-deploy-windows-x86_64.zip `
-OutFile stackql-deploy.zip
Expand-Archive stackql-deploy.zip -DestinationPath $env:LOCALAPPDATA\stackql-deployOr install via cargo:
cargo install stackql-deployv2.0.2
stackql-deploy v2.0.2
What's new
This release ships the Rust rewrite of stackql-deploy — a complete
ground-up reimplementation that replaces the original Python package.
Key improvements over the Python version:
- Single self-contained binary — no Python runtime, pip, or virtualenv required.
Drop the binary on any supported platform and run. - Faster startup and execution — Rust compile-time optimisations mean commands
that previously took seconds to initialise now start instantly. - Smaller install footprint — the stripped Linux x86_64 binary is under 10 MB;
no transitive Python dependencies to manage. - Statically linked on Linux — works on any glibc >= 2.17 distro without
installing extra system libraries. - Native Windows and macOS ARM64 support — pre-built for all five major targets
(see assets below).
Download
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | stackql-deploy-linux-x86_64.tar.gz |
| Linux | arm64 | stackql-deploy-linux-arm64.tar.gz |
| macOS | Apple Silicon (arm64) | stackql-deploy-macos-arm64.tar.gz |
| macOS | Intel (x86_64) | stackql-deploy-macos-x86_64.tar.gz |
| Windows | x86_64 | stackql-deploy-windows-x86_64.zip |
Each archive contains a single binary named stackql-deploy (or
stackql-deploy.exe on Windows). Verify your download with SHA256SUMS.
Migrating from the Python package
If you are currently using the Python package on PyPI, please migrate to this
release. The Python package is now deprecated and will no longer receive updates:
https://pypi.org/project/stackql-deploy/
The CLI interface is fully compatible — existing stackql_manifest.yml files and
project layouts work without modification.
Install (quick)
Linux / macOS:
curl -sSL https://github.com/stackql/stackql-deploy/releases/download/v2.0.2/stackql-deploy-linux-x86_64.tar.gz \
| tar -xz -C /usr/local/binWindows (PowerShell):
Invoke-WebRequest -Uri https://github.com/stackql/stackql-deploy/releases/download/v2.0.2/stackql-deploy-windows-x86_64.zip `
-OutFile stackql-deploy.zip
Expand-Archive stackql-deploy.zip -DestinationPath $env:LOCALAPPDATA\stackql-deployOr install via cargo:
cargo install stackql-deployv2.0.1
stackql-deploy v2.0.1
What's new
This release ships the Rust rewrite of stackql-deploy — a complete
ground-up reimplementation that replaces the original Python package.
Key improvements over the Python version:
- Single self-contained binary — no Python runtime, pip, or virtualenv required.
Drop the binary on any supported platform and run. - Faster startup and execution — Rust compile-time optimisations mean commands
that previously took seconds to initialise now start instantly. - Smaller install footprint — the stripped Linux x86_64 binary is under 10 MB;
no transitive Python dependencies to manage. - Statically linked on Linux — works on any glibc ≥ 2.17 distro without
installing extra system libraries. - Native Windows and macOS ARM64 support — pre-built for all five major targets
(see assets below).
Download
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | stackql-deploy-linux-x86_64.tar.gz |
| Linux | arm64 | stackql-deploy-linux-arm64.tar.gz |
| macOS | Apple Silicon (arm64) | stackql-deploy-macos-arm64.tar.gz |
| macOS | Intel (x86_64) | stackql-deploy-macos-x86_64.tar.gz |
| Windows | x86_64 | stackql-deploy-windows-x86_64.zip |
Each archive contains a single binary named stackql-deploy (or
stackql-deploy.exe on Windows). Verify your download with SHA256SUMS.
Migrating from the Python package
If you are currently using the Python package on PyPI, please migrate to this
release. The Python package is now deprecated and will no longer receive updates:
https://pypi.org/project/stackql-deploy/
The CLI interface is fully compatible — existing stackql_manifest.yml files and
project layouts work without modification.
Install (quick)
Linux / macOS:
curl -sSL https://github.com/stackql/stackql-deploy/releases/download/v2.0.1/stackql-deploy-linux-x86_64.tar.gz \
| tar -xz -C /usr/local/binWindows (PowerShell):
Invoke-WebRequest -Uri https://github.com/stackql/stackql-deploy/releases/download/v2.0.1/stackql-deploy-windows-x86_64.zip `
-OutFile stackql-deploy.zip
Expand-Archive stackql-deploy.zip -DestinationPath $env:LOCALAPPDATA\stackql-deployOr install via cargo:
cargo install stackql-deployv2.0.0
stackql-deploy v2.0.0
What's new
This release ships the Rust rewrite of stackql-deploy — a complete
ground-up reimplementation that replaces the original Python package.
Key improvements over the Python version:
- Single self-contained binary — no Python runtime, pip, or virtualenv required.
Drop the binary on any supported platform and run. - Faster startup and execution — Rust compile-time optimisations mean commands
that previously took seconds to initialise now start instantly. - Smaller install footprint — the stripped Linux x86_64 binary is under 10 MB;
no transitive Python dependencies to manage. - Statically linked on Linux — works on any glibc ≥ 2.17 distro without
installing extra system libraries. - Native Windows and macOS ARM64 support — pre-built for all five major targets
(see assets below).
Download
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | stackql-deploy-linux-x86_64.tar.gz |
| Linux | arm64 | stackql-deploy-linux-arm64.tar.gz |
| macOS | Apple Silicon (arm64) | stackql-deploy-macos-arm64.tar.gz |
| macOS | Intel (x86_64) | stackql-deploy-macos-x86_64.tar.gz |
| Windows | x86_64 | stackql-deploy-windows-x86_64.zip |
Each archive contains a single binary named stackql-deploy (or
stackql-deploy.exe on Windows). Verify your download with SHA256SUMS.
Migrating from the Python package
If you are currently using the Python package on PyPI, please migrate to this
release. The Python package is now deprecated and will no longer receive updates:
https://pypi.org/project/stackql-deploy/
The CLI interface is fully compatible — existing stackql_manifest.yml files and
project layouts work without modification.
Install (quick)
Linux / macOS:
curl -sSL https://github.com/stackql/stackql-deploy/releases/download/v2.0.0/stackql-deploy-linux-x86_64.tar.gz \
| tar -xz -C /usr/local/binWindows (PowerShell):
Invoke-WebRequest -Uri https://github.com/stackql/stackql-deploy/releases/download/v2.0.0/stackql-deploy-windows-x86_64.zip `
-OutFile stackql-deploy.zip
Expand-Archive stackql-deploy.zip -DestinationPath $env:LOCALAPPDATA\stackql-deployOr install via cargo:
cargo install stackql-deploy