github Azure/bicep v0.40.2

5 hours ago

Highlights

  • Multi-line interpolated strings GA! (#18666)

    Basic example:

    var s = $'''
    this is ${interpolated}'''

    With multiple $ characters:

    var s = $$'''
    this is $${interpolated}
    this is not ${interpolated}'''
  • [Experimental] New this.exists() and this.existingResource() functions for resource existence checks (#17727)

    Example usage:

    resource storageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' = {
      name: 'mystorageaccount'
      location: 'eastus'
      sku: {
        name: 'Standard_LRS'
      }
      kind: 'StorageV2'
      properties: {
        minimumTlsVersion: 'TLS1_2'
        publicNetworkAccess: this.exists() ? 'Enabled' : 'Disabled'
      }
    }
  • New MCP Server tools (#18707, #18826)

    • decompile_arm_parameters_file: Converts ARM template parameter JSON files into Bicep parameters format (.bicepparam).
    • decompile_arm_template_file: Converts ARM template JSON files into Bicep syntax (.bicep).
    • format_bicep_file: Applies consistent formatting (indentation, spacing, line breaks) to Bicep files.
    • get_bicep_file_diagnostics: Analyzes a Bicep file and returns all compilation diagnostics.
    • get_file_references: Analyzes a Bicep file and returns a list of all referenced files including modules, parameter files, and other dependencies.
    • get_deployment_snapshot: Creates a deployment snapshot from a .bicepparam file by compiling and pre-expanding the ARM template, allowing you to preview predicted resources and perform semantic diffs between Bicep implementations.
  • Publish Bicep MCP server as a nuget package (#18709)

    Example mcp.json configuration:

    {
      "servers": {
        "Bicep": {
          "type": "stdio",
          "command": "dnx",
          "args": [ "Azure.Bicep.McpServer", "--yes" ]
        }
      }
    }
  • bicep console: Support piping and stdin/out redirection (#18762)

    Example with piping:

    echo "parseCidr('10.144.0.0/20')" | bicep console

    Example with input redirection:

    echo "parseCidr('10.144.0.0/20')" > test.txt
    bicep console < test.txt

    Example with output redirection:

    echo "parseCidr('10.144.0.0/20')" | bicep console > output.json
  • Extendable Parameter Files Improvements:

    • Enable parameter files to evaluate variables from extended base parameters (#18626)
    • Add support for loadTextContent function in extendable parameter files (#18424)
  • Multiline diagnostic pragmas (#18622)

    Disable a specific diagnostic for a whole file:

    #disable-diagnostics BCP422
    
    ...
    
    resource foo 'type@version' = if (condition) {}
    
    output bar string = foo.properties.bar // <-- would normally raise BCP422 as a warning, but will not due to pragma at top of file

    Disable specific diagnostics for a span:

    resource foo 'type@version' = if (condition) {}
    
    #disable-diagnostics BCP422
    output bar string = foo.properties.bar // <-- would normally raise BCP422 as a warning, but will not due to pragma at top of file
    #restore-diagnostics BCP422
    
    output baz string = foo.properties.baz // <-- will raise BCP422 warning because it's outside of the pragma fence
  • Migrate to .NET 10 (#18458)

Bug Fixes and Features

  • Use integer and boolean literal types when deriving return type for loadJsonContent (#18466)
  • Update deployment() return type signature to add conditional metadata property (#18468)
  • Recognize <collection module>[<index>]! as a direct module reference for secure outputs check (#18522)
  • Extension config default values constraint fixes (#18606)
  • Update lv 2.0 triggers to take syntactically nested resources into account (#18607)
  • Making the scope property a fully qualified resource Id (#18165)
  • Expand support for types in local extension (#18662)
  • Improved extension configuration experience (#18828)
  • Fix handling registry module resource derived types in params file (#18661)
  • Fix completion to correctly suggest imported types in bicepparam files (#18523)
  • Fix quoted property names and enhance symbol resolution (#18509)
  • Fix nested function calls losing bindings when using extendable parameters (#18876)
  • Always use named pipes on Windows for gRPC (#18712)
  • Remove DSC experimental feature (#18821)
  • Simplify YAML/JSON parser code path with Result pattern (#18713)
  • Refactor external inputs processing logic to use InlineDependencyVisitor and dedicated FunctionFlag (#18740)
  • Update CSAT survey to be always on instead of annual (#18657)

Documentation

  • Add troubleshooting steps for MCP tools not showing (#18563)
  • Revise Bicep MCP Server Docs (#18699)
  • Revise local deploy debugging guide for Bicep extensions (#18701)
  • Add unit testing guide for Bicep extensions (#18702)
  • Add beginner tip to Bicep getting started section (#18706)
  • Improve documentation for extendable parameter files (#18656)
  • Add bicep local-deploy arguments table docs (#18788)

Community Contributions

Don't miss a new bicep release

NewReleases is sending notifications on new releases.