Highlights
-
GA release for the
@secure()
decorator on module outputs! You can now output secure values from a child module and read them in a parent module. (#16796) -
Visual Studio Bicep extension support for
.bicepparam
files! (#16861) -
New functions for working with URIs -
parseUri()
andbuildUri()
(#16802)
Example usage:/* Returns { scheme: 'https' host: 'example.com' port: 1234 path: '/foo/bar' } */ output parsedUri object = parseUri('https://example.com:1234/foo/bar') /* Returns: 'https://example.com:1234/foo/bar' */ output builtUri string = buildUri({ scheme: 'https' host: 'example.com' port: 1234 path: 'foo/bar' })
-
New functions for working with Availaiblity Zones (#16985)
toLogicalZone()
- converts physical zones to logical zonestoPhysicalZone()
- converts logical zones to physical zones- Array versions for bulk conversions (toLogicalZones() & toPhysicalZones())
var subscriptionId = subscription().subscriptionId var location = 'westus2' /* Returns the physical AZ corresponding to the specified logical AZ in the specified subscription and location. For westus2 location, this will be one of 'westus2-az1', 'westus2-az2', 'westus2-az3' depending on the subscription. */ output singlePhysicalZone string = toPhysicalZone(subscriptionId, location, '1') /* Returns an array of physical AZs corresponding to the specified logical AZs in the specified subscription and location. */ output physicalZones string[] = toPhysicalZones(subscriptionId, location, ['1', '2']) /* Returns the logical AZ corresponding to the specified physical AZ in the specified subscription and location. Returns '1', '2', or '3' depending on the subscription. */ output singleLogicalZone string = toLogicalZone(subscriptionId, location, 'westus2-az2') /* Returns an array of logical AZs corresponding to the specified physical AZs in the specified subscription and location. */ output logicalZones string[] = toLogicalZones(subscriptionId, location, [ 'westus2-az1' 'westus2-az2' ])
-
use-secure-value-for-secure-inputs
linter rule: Use resource type information to catch more unsafe passing of non-secure values (#16873) -
[requires the
onlyIfNotExists
experimental feature] Resource Existence Checks using@onlyIfNotExists()
decorator (#16655)
Attaching this decorator to a resource declaration means deployment of the resource will only take place if it hasn't already been deployed. Example usage:@onlyIfNotExists() resource onlyDeployIfNotExists 'Microsoft...' = { name: 'example' location: 'eastus' properties: { ... } }
-
[requires the
typedVariables
experimental feature] Support importing and declaring types in .bicepparam files with typedVariables decorator (#16929)- Allow usage of the type keyword in .bicepparam files
- Allow importing types from .bicep files in .bicepparam files
- Allow usage of inline types in .bicepparam files
-
[requires the
externalInputFunction
experimental feature] External Input function -externalInput
function to allow reading input that will be resolved later by external tooling in order to inject values at deployment time. (#16726)
Bugs and Features
- Decompiler support for user-defined functions (#16883)
use-parent-property
linter rule: Fix incorrect warning with blobContainer and fileShare (#16738)- Raise diagnostic for unsupported usage of spread (#16739)
- Add friendly name to Playground link (#16803)
- Revert #16442 - Fixed bug VSCode extension does not read values from parameter file (#16789)
no-hardcoded-env-urls
linter rule: Remove URLs not present inenvironment()
function output (#16863)- Fix for intellisense of symbols inside import statement (#16936)
- fixing
dotnet format
issues, and addressingIDE0305: Collection initialization can be simplified
errors/warnings (#16808) - Use symbolic name for list function calls (#16862)
- Enhance
substring
type inference - updated parameter types for substring to infer acceptable ranges based on the other arguments provided to the function. (#16859) - Prevent infinite recursion during type narrowing (#17028)
- Fix command binding comment in bicepconfig.json (#16807)
use-resource-id-functions
linter rule: Set to off by default (#16869)
.bicepparam Bug Fixes
- Suggest the experimental feature on the extends keyword for extendableparamfiles (#16744)
- adding checks to ensure the given file exists before building the bicepparam file (#16742)
- Clarifying parameter file generation logic and error message (#16662)
Local Deploy
- Local Deploy: process kill should be best-effort only (#16786)
- Local Deploy: Support deploying Azure modules (#16752)
- Local Deploy: Support long-running operations for local and Azure modules (#16797)
- Documentation: Replace deploy pane content with link to MSDocs (#16736)
- Local deploy: ensure languageversion 2.2-experimental emitting is enabled (#16945)