Mu meta-circular bundle building interface binding
Problem Description
The JIT back-end code are all written in RPython.
The current Mu API binding in rpython/rlib/rmu
is written in RPython and thus can be compiled.
But they are compiled as C function calls.
At runtime, when building a program bundle within a running Mu instance, the program should use the meta-circular bundle building interface as outlined here.
This raises the need for another implementation of the RPython Mu API binding for the bundle builder, so that the same RPython source code can be compiled differently depending on the binding it uses.
Task Description
Write an RPython Mu API binding translates API calls into llop.mu_comminst
instructions.
Some small objectives include:
- Define corresponding LLTypes of the Mu predefined types used in this area, and make sure those types are handled well in the Mu back-end;
- Write functions to convert values (e.g., name strings) in LLType to the right Mu predefined type;
- Write the Mu API binding;
- Test and make sure it works.