GeezerVison is showing github.com — Deliver LPython MVP · Issue #1704 · lcompilers/lpython
Deliver LPython MVP #1704DescriptionTo 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)
Reacted by Thirumalai Shaktivel, Sarthak Gupta, Smit Lunagariya, Brian Beckman, Anurag Bhat, Ubaid Shaikh, czgdp1807, Anutosh Bhat and Harsh Singh Jadon Activitycertik commented on Jun 27, 2023 ContributorAuthor More actions 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 commented on Aug 2, 2023 ContributorAuthor More actions
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|