Highlights
[Experimenta] Bicep module documentation generation (#20183)
Adds the experimental bicep docs generate command, which renders module documentation to a Markdown file. Formatting can be customized using a Scriban template.
# Generate README.md beside one module
bicep docs generate .\main.bicep
# Render one module to stdout
bicep docs generate .\main.bicep --stdout
# Generate documentation for matched modules
bicep docs generate --pattern '.\modules\**\main.bicep'See https://github.com/Azure/bicep/blob/main/docs/experimental/docs-commands.md for more details.
Bicep Configuration Inheritance (#20176, #20181, #20198)
This feature adds an extends property to bicepconfig.json, letting a config inherit from another config file and override only the settings it needs to change. Everything not explicitly overridden falls through from the base config.
Example: a company-wide bicepconfig.corp.json sets strict linter rules for everyone. This team's config inherits the base's no-unused-params rule as-is, while overriding no-hardcoded-env-urls from warning to error.
Bicep Playground interface redesign (#20225)
Main Changes:
- Redesign the Bicep Playground with a responsive islands-style interface and native, accessible controls
- Moved Bicep WASM compilation to a web worker to prevent the UI from freezing during compilation
- Add compilation freshness, diagnostics, ARM output actions, light/dark themes, and in-place sample loading
- Fix a regression for ARM template decompilation
Try out the new Bicep Playground and see it in action.
New linter rules to enforce descriptions (#20036)
Thanks @johnlokerse for implementing this!
The following linter rules are defaulted to off, but can be enabled, to flag missing or empty @description decorators.
use-description-params- flag missing or empty descriptions on parametersuse-description-vars- flag missing or empty descriptions on variablesuse-description-outputs- flag missing or empty descriptions on outputsuse-description-types- flag missing or empty descriptions on type declarationsuse-description-type-properties- flag missing or empty descriptions on type properties
Performance improvements
We optimized the startup path of the Bicep CLI to significantly reduce cold-start times and address a performance regression introduced by the move to .NET 10. The optimization includes enabling ReadyToRun (R2R) to reduce startup overhead, making common CLI operations more responsive, particularly in automation and short-lived execution scenarios. To preserve the existing distribution footprint, we also enabled single-file compression, keeping the binary size roughly unchanged from previous releases while delivering faster startup performance. (#20255)
Other improvements to VSCode extension responsiveness & CLI compilation speed:
- Avoid re-initializing ApiVersionProvider on multiple requests (#20133)
- Cache regex pattern validation results (#20143)
- Cache configuration source directories (#20146)
- Ensure Configuration and Features are cached in SemanticModel (#20152)
Features and Bug Fixes
- Fix Bicep console rendering for wrapped input (#20154)
- Fix resource ID imports in parameter files (#20142)
- Add "placement" top-level property to fallback Az resource type (#20172)
- Fix scalar YAML aliases in
loadYamlContent(#20151) - Add RPC client support for management group snapshots (#20170)
- Add "placement" top-level property to fallback Az resource type (#20172)
- fix: skip secure params lint for type aliases (#19796)
- Refactor visual designer architecture and graph coordination (#20249)
- Add resource creation to the visual designer (#20221)
- Emit GA Language Version for NullableExisting and ThisNamespace (#20258)
Community Contributions!
- Stop recording npm registry URLs in lockfiles (#20224) - thanks @JamieMagee!
- Add MegaLinter to community Bicep projects list (#20157) - thanks @nvuillam!