New proposed project: llvm-dsdl

llvm-dsdl

I’m proposing replacing pydsdl and nunavut both with a new project that does all code generation using MLIR and LLVM

I’ve code-generated a version that will generate c, c++, c++/pmr, Rust (std), Go, Python, Python w/ C bindings, and Typescript.

This is still a proof of concept but I’ve reached a level of comfort with the idea to propose it here. I’d like to move it into the garage and start maturing it. My plan, as the Nunavut maintainer, is to deprecate Nunavut as soon as I’ve insured llvm-dsdl has reached parity (and more) and has a release pipeline for windows, mac, and linux. This is a native compiler and will be released as binaries. It should perform significantly faster because of this.
The use of MLIR means there is a significant amount of shared structure in the compiler where adding new languages is no longer a major undertaking (It took codex about 22 minutes to add both pure Python and Python with C bindings to the project).

What’s left to do?

  1. Python testing wasn’t finished. Low-risk grunt work for the codegen
  2. release pipelines and CI
  3. Peer reviews of the design
  4. The frontend and CLI need more features
  5. documentation needs to be cleanedup
  6. Some hand-tuning of the generated types (cosmetic work)
  7. More verifications and fuzz testing