xref: /llvm-project/mlir/docs/ReleaseNotes.md (revision eb206e9ea84eff0a0596fed2de8316d924f946d1)
1# MLIR Release Notes
2
3This document tries to provide some context about MLIR important changes in the
4context of LLVM releases. It is updated on a best effort basis.
5
6At the moment the MLIR community does not qualify the LLVM release branch
7specifically, it is a snapshot of the MLIR development at the time of the release.
8
9[TOC]
10
11## LLVM 20
12
13All the MLIR runners other than `mlir-cpu-runner` have been removed, as their functionality has been merged into it, and it has been renamed to `mlir-runner`.
14
15## LLVM 18
16
17### Properties: beyond attributes
18
19See LLVM 17 notes below. The Dialect option `let usePropertiesForAttributes = 1;` is
20now the default. You can set it to 0 to revert to the previous behavior. This will be
21removed in LLVM 19.
22
23## LLVM 17
24
25See also the [deprecations and refactoring](https://mlir.llvm.org/deprecation/) doc.
26
27### Bytecode
28
29MLIR now support a [bytecode serialization](https://mlir.llvm.org/docs/BytecodeFormat/)
30with versionning compatibility allowing 2 ways compatibility scheme, and lazy-loading
31capabilities.
32
33### Properties: beyond attributes
34
35This is a new mechanism to implement storage for operations without having to
36use attributes. You can opt-in to use Properties for ODS inherent attributes
37using `let usePropertiesForAttributes = 1;` in your dialect definition (the flag
38will be default in the next release). See
39[slides](https://mlir.llvm.org/OpenMeetings/2023-02-09-Properties.pdf) and
40[recording](https://youtu.be/7ofnlCFzlqg) of the open meeting presentation for
41details.
42
43### Action: Tracing and Debugging MLIR-based Compilers
44
45[Action](https://mlir.llvm.org/docs/ActionTracing/) is a new mechanism to
46encapsulate any transformation of any granularity in a way that can be
47intercepted by the framework for debugging or tracing purposes, including
48skipping a transformation programmatically (think about “compiler fuel” or
49“debug counters” in LLVM). As such, “executing a pass” is an Action, so is “try
50to apply one canonicalization pattern”, or “tile this loop”.
51
52[slides](https://mlir.llvm.org/OpenMeetings/2023-02-23-Actions.pdf) and
53[recording](https://youtu.be/ayQSyekVa3c) of the open meeting presentation for
54details.
55
56### Transform Dialect
57
58See this [EuroLLVM talk](https://www.youtube.com/watch?v=P4gUj3QtH_Y&t=1s) and
59[the online tutorial](https://mlir.llvm.org/docs/Tutorials/transform/).
60
61### Others
62
63- There is now support for
64  "[distinct attributes](https://mlir.llvm.org/docs/Dialects/Builtin/#distinctattribute)".
65- "Resources" (a way to store data outside the MLIR context) and "configuration"
66  can now be serialized alongside the IR.
67