As a part of a larger research project, we want to build a custom compiler based on MLIR. We will most likely not change the MLIR source code, but implement our own dialect(s), types, operations, transformations etc. in our own codebase using MLIR, as outlined in the tutorials. I’m still relatively new to MLIR and LLVM, and I’m wondering which version of MLIR we should use.
Question 1) It might make sense to use an official release of the LLVM monorepo. However, since the release notes do not mention MLIR, I would like to ask what is the relation between LLVM releases and MLIR. Does a release of the monorepo contain an especially stable, consistently documented, etc. version of MLIR?
Question 2) Given that MLIR still seems to be a young and quickly evolving project, would you rather encourage using the latest commit on the main branch of the LLVM monorepo and upgrade to the new latest commit from time to time, e.g. when there are helpful new features or important bug fixes?
I see that this is generally a trade-off between (a) version stability and frequency of changes required to our code to reconcile it with breaking changes in MLIR, and (b) access to the latest improvements in MLIR. Thus, I do not expect a solution for my concrete case. However, if there are any best practices (e.g. to reduce the amount of work to adapt to breaking changes), it would be great if you could share them!