You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@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 creating BindPython ABI (next to BindC), and then in the backends we implement the conversion; I would start with the C backend, where you add logic for BindPython (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)
Reacted by Thirumalai Shaktivel, Sarthak Gupta, Smit Lunagariya, Brian Beckman, Anurag Bhat, Ubaid Shaikh, czgdp1807, Anutosh Bhat and Harsh Singh Jadon
The next step is to lift the Python interoperability from C to ASR (see #1996) for both @pythoncall and @pythoncallable, this will make it work in all our backends. It should transform BindC functions into directly calls to Python C/API, by probably having some module with the C/API interfaces and then calling them appropriately, all in ASR.
Activity
certik commentedon Jun 27, 2023
The next step is to lift the Python interoperability from C to ASR (see #1996) for both
@pythoncalland@pythoncallable, this will make it work in all our backends. It should transform BindC functions into directly calls to Python C/API, by probably having some module with the C/API interfaces and then calling them appropriately, all in ASR.certik commentedon Aug 2, 2023
We have released LPython here: https://lpython.org/blog/2023/07/lpython-novel-fast-retargetable-python-compiler/, so this issue is now fixed!