cl-autowrap
py4cl2
cl-autowrap | py4cl2 | |
---|---|---|
8 | 11 | |
208 | 40 | |
- | - | |
1.5 | 5.6 | |
15 days ago | 10 days ago | |
Python | Common Lisp | |
BSD 2-clause "Simplified" License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
cl-autowrap
-
Why Is Common Lisp Not the Most Popular Programming Language?
> Lack of access to the C libraries.
???
I recently started learning Common Lisp for fun (and fun it is!) and the ease of accessing C libraries was one of the things that surprised me in a positive way.
Using https://github.com/rpav/cl-autowrap one can simply write (c-include "file.h") and the API defined in "file.h" is accessible from Lisp. I can't think of a simpler way.
Even without cl-autowrap, FFI using https://cffi.common-lisp.dev/ seems simple enough.
-
An Idea for Piggybacking Python (language) ecosystem
I think the closest is cl-autowrap. I can imagine a higher level wrapper around it by which it can translate the python header file into the CL counterpart, although I'm not sure how much work the translation might entail. Also, because python and lisp semantics can differ considerably, the generated code might be trying to do weird things - again an issue of translation.
-
Why Functional Programming Should Be the Future of Software
Common lisp has a "pretty OK" story for calling C code whenever some speed is needed [0,1]. In my opinion, they suffer from some of the documentation/quick start problems that common lisp has, but they're otherwise usable.
Some of Naughty Dog's late 90's/early 2000's games (Jak and Daxter, Jak II) were written in a lisp called GOAL, Game Oriented Assembly Lisp [2]
[0] https://github.com/rpav/cl-autowrap
-
Common Lisp language extensions wish list?
The closest thing to what you request, that I'm aware of, is cl-autowrap (to use C code from Lisp) but it is not standard in any way. CFFI is the de facto standard for using C from Lisp across different implementations.
-
I have bolted together ECL and the Irrlicht game library
:claw tracks back to 2017 as a fork of cl-autowrap with cl-autowrap/pull/83 feature.
-
Common Lisp
If you're interested in FFI, then yeah CFFI is the standard. The other comments addressed speed, I also wanted to point out https://github.com/rpav/cl-autowrap which is built on top of CFFI and can help get a wrapper up and running faster. After using autowrap's c-include you can then use CFFI basically like normal or some useful autowrap/plus-c's helper functions -- e.g. in one project, I have an SDL_Event (https://wiki.libsdl.org/SDL_Event) and to access event.key.keysym.scancode I have a helper function that's just (plus-c:c-ref event sdl2-ffi:sdl-event :key :keysym :scancode). Last year I wanted to try out using FMOD, and even though it's closed source and has a (to me) "interesting" API things worked easily: https://gist.github.com/Jach/dc2ec7b9402d0ec5836a935384cacdc... More work would be needed to make a nice wrapper, type things more fully, etc. but depending on the C library you might find someone's already done that (or made a start) and made it available from quicklisp.
-
[Common Lisp] Best Libraries for Interfacing with UNIX-like Operating Systems?
In recent years there has also been cl-autowrap; caveats -
-
Alternative to ECL?
There is the cl-autowrap that can generate lisp packages from C header filesc- I am unsure if it sticks to ANSI C or goes beyond. It inturn depends on c2ffi for the first time around.
py4cl2
-
An Idea for Piggybacking Python (language) ecosystem
I... recently got that working: https://github.com/digikar99/py4cl2/tree/master/cffi - Yes, CFFI! Yes, passing CL array data by reference!
-
Plotting
I ended up using a fair bit of matplotlib through college and with colleagues. I too don't want to use python, but I also don't like throwing away its libraries, and I'm too lazy to invest in other* plotting ecosystems. In effect, I use up using matplotlib through py4cl/2.
-
numericals - Performance of NumPy with the goodness of Common Lisp
Note that it is not my aim to replace the python ecosystem; I think that is far too lofy a goal to be of any good. My original intention was to interoperate with python through py4cl/2 or the likes, but felt that one needs a Common Lisp library for "small" operations, while "large" operations can be offloaded to python libraries through py4cl/2.
-
interested in learning lisp, (specifically for games, but also for everything else including tui and gui applications for linux. currently have next to no programming knowledge, can i get forwarded some resources and some tips on what exactly i should do? any videos i should watch?
Python: Blender and Panda3D (game engine used for Disney's Toontown way back when) are both scriptable with Python. I've been able to successfully call Panda from Py4CL2 (thanks digikar for the help with that), but I have not tried with Blender yet. I think it's doable.
-
Rewrite Your Scripts In LISP - with Roswell
While you are at it I may as well mention https://github.com/digikar99/py4cl2
-
Good Lisp libraries for math
If performance is absolutely not a concern, then third option is using python libraries through py4cl/2. To put it differently, if calling python from lisp is not the bottleneck, then this is a feasible option.
- Using Lisp as a Dynamic Library
-
What are the advantages of Hy/Hissp over python bindings for CL/Clojure?
py4cl2 (not py4cl!) author here. From the v2.9.0 docs:
-
Design patterns for Lisp interop with other languages?
py4cl and py4cl2 represent a fairly pragmatic example of method 1, using an OS child process to communicate back and forth with your python code. Python is fairly popular and well-enabled with libraries, so you can delegate things to python that leverage those libraries.
-
Image classification in CL? Help with starting point
If you can structure your code so that data de/serialization is not a bottleneck, then you could access the python libraries using py4cl/2.
What are some alternatives?
c2ffi - Clang-based FFI wrapper generator
py4cl - Call python from Common Lisp
cffi - The Common Foreign Function Interface
cl-cuda - Cl-cuda is a library to use NVIDIA CUDA in Common Lisp programs.
chibi-scheme - Official chibi-scheme repository
numcl - Numpy clone in Common Lisp
cl-rashell - Resilient replicant Shell Programming Library for Common Lisp
farolero - Thread-safe Common Lisp style conditions and restarts for Clojure(Script) and Babashka.
mal - mal - Make a Lisp
vega-lite - A concise grammar of interactive graphics, built on Vega.
claw - Common Lisp autowrapping facility for C and C++ libraries
Petalisp - Elegant High Performance Computing