Open
Description
The GRIN frontends should not depend on the built-in evaluation of the primitive operations. Currently we are able to define the ffi and primitive operations, but their interpretation are still tied to the Reducer.Eval, Reducer.LLVM.CodeGen modules.
The use case: I as a frontend developer, want to create my own primitive operations which suits the best to the compiler I work on. To do that, I have to define the set or primitives. Those primitives configured in the ffi/pure section in my GRIN prelude.
Stages:
- I would like to add their implementation to the Pure Evaluator to get the semantics right.
- Implement my primitive operations in the prim_ops.h / prim_ops.c which are linked during the executable generation phase
- Extend the LLVM codegen which my implementation for the primitives in a modular/pluginable way.