Closed
Description
To deliver LPython as an MVP, I think the bare minimum is:
- Create a few useful LPython packages, upload to PyPi and get working with pip and Conda naturally and easily (Compiling Python packages with LPython #992)
-
@lpython
decorator (Interface with Python (CPython) #703): get it working for arrays and simple types, and allow importing other LPython compiled packages from within it - Add the
@pythoncall
decorator to create an "interface" for any Python function (in some Python module), similar how@ccall
works, but for Python: Interface with Python (CPython) #703 (comment), Interface with Python (CPython) #703 (comment); this will be implemented by creatingBindPython
ABI (next to BindC), and then in the backends we implement the conversion; I would start with the C backend, where you add logic forBindPython
(in FunctionCall ASR node) and generate C code that calls the Python C/API to import a given module, find the function, convert all arguments and call it - Add
@pythoncallable
decorator which exposes an LPython function to CPython (similar to@ccallable
) - The demo using
@lpython
will be faster than other Python compilers (lists, dicts, some basic things like arrays and loops), this must be done via the C backend - some LLVM backend demos: lists, dicts and arrays, anything where we are fast
- Add demo of using
@pythoncall
and@pythoncallable
, via the C backend - Website with documentation
- Blog post(s)
Metadata
Metadata
Assignees
Labels
No labels