During 2022, the Power Query M Language Specification received seven substantiative revisions (beyond typo fixes, formatting tweaks, and the such). Each brought clarification to ambiguous points or corrected cases where the specification did not align with actual mashup engine behavior. None of the revisions added new language functionality or otherwise resulted in the mashup engine changing.
Interestingly, while the M language gained two new features last year (try
‘s catch
and structured error messages), neither of these has yet to make it into the language spec.
Specification Revisions
Basic Concepts: Identifier references
Correction [2022-08-19] – Change Diff
Previously incorrectly implied that an inclusive identifier reference (@identifierName) was required to reference the current section member. Revised to reflect that actually normal (exclusive) references (identifierName) are acceptable.
Sections: #shared
Correction [2022-09-21] – Change Diff
Expanded the description of #shared
to reflect that it contains both shared section members (as previously stated) and any identifiers directly added to the global environment by the mashup engine (existing behavior, but previously not reflected in the spec).
Types: Ascribed type of a value
Correction [2022-11-03] – Change Diff
Previously stated that, during ascription, only the nullable primitive type was checked. Revised to reflect the actual conformance rules used.
Types: Type equivalence and compatibility
Clarification [2022-12-16] – Change Diff
Prior wording made it sound like using the equality operator (=
) between type values could produce random results. Actually, an M implementation may return false
for all type equality comparisons, or may choose to use its own rules to decide whether the two values are equivalent, returning true
or false
as it deems appropriate.
Types: Type anynonnull and nullable primitive types
Correction [2022-09-21] – Change Diff
anynonnull
is actually an abstract type. The nullable counterpart of a primitive-type is not a custom type. Operators is
and as
work with nullable primitive types (not just primitive types).
Consolidated Grammar: Type expressions
Corrections.
- Type time was missing from list of primitive types. [2022-08-26] – Change Diff
- A table’s row type can actually be empty. [2022-09-01] – Change Diff
- Syntax for defining types using expressions was more limited than what is actually supported. [2022-11-22] – Change Diff