Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deliver LPython MVP #1704

Closed
9 tasks done
Tracked by #1600
certik opened this issue Apr 12, 2023 · 2 comments
Closed
9 tasks done
Tracked by #1600

Deliver LPython MVP #1704

certik opened this issue Apr 12, 2023 · 2 comments

Comments

@certik
Copy link
Contributor

certik commented Apr 12, 2023

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 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)
@certik
Copy link
Contributor Author

certik commented Jun 27, 2023

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.

@certik
Copy link
Contributor Author

certik commented 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!

@certik certik closed this as completed Aug 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant