v1.6.20
Release Notes: IDL Generator & Errata Extensions
This release introduces extensions to the errata.yaml overlay schema, updates to IDL generation and sorting correctness, fixes for parser regressions, and compiler performance optimizations.
Features
1. Errata Overlay Support
- Added support for defining and injecting new events, and overriding event priorities, conformance, and fields via
errata.yaml. - Added support for appending fields (
extraFields) directly to existing structs, commands, and events. - Added support for declaring list (array) fields and custom fabric scoping for errata-defined structs.
2. IDL Rendering Updates
- Placed the
optionalkeyword modifier directly beforecommandandeventkeywords for elements with optional conformance. - Sorted client-side request commands and server-side response commands continuously in
.matteroutput files. - Changed the default value of the
--suppress-provisionalcommand line flag toall.
Bug Fixes
1. Compiler Type Resolution
- Added a second type-resolution pass to resolve data types added via errata overlays.
- Mapped ZAP-specific data types (such as
int8uandint16u) to standard Matter types to resolve compiler errors during type resolution. - Fixed reference loss on inherited structs during cloning passes.
- Fixed parent AST linkages when cloning bitmaps.
- Copied the base
LabelStructdefinition to theUser Labelcluster to match ZAP schema requirements.
2. IDL Parser & Renderer
- Corrected parsing of
.matterfiles to supportkeep-existingbehavior when lines contain inline access control modifiers or complex event definitions. - Ensured lines containing
"attribute "or"command "are not falsely classified as event declarations by the IDL parser. - Bypassed provisional checking for the global
Featurebitmap to prevent it from being stripped when individual feature bits are provisional.
Performance Optimizations
- Precomputed server command IDs to optimize command grouping operations, reducing sorting complexity.
- Precomputed names of referenced entities during the IDL rendering phase to eliminate linear search scans, reducing complexity.