cl-sdl2 VS c2ffi

Compare cl-sdl2 vs c2ffi and see what are their differences.

cl-sdl2

Common Lisp bindings for SDL2 using C2FFI. (by lispgames)

c2ffi

Clang-based FFI wrapper generator (by rpav)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
cl-sdl2 c2ffi
7 4
288 215
1.4% -
2.9 5.7
2 months ago 16 days ago
Common Lisp C++
MIT License GNU Lesser General Public License v3.0 only
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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-sdl2

Posts with mentions or reviews of cl-sdl2. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-06-10.
  • The Embeddable Common Lisp [pdf]
    2 projects | news.ycombinator.com | 10 Jun 2023
    I can build it in C with sdl2-config, or use cl-sdl2 with SBCL by following some steps I found online to fix macbook m1 quirks (see below), but I’m trying to load it from an ECL repl- not really knowledgeable enough about where sdl2-config would be used in that situation.

    https://github.com/lispgames/cl-sdl2/issues/154#issuecomment...

  • Dev on Windows
    2 projects | /r/Common_Lisp | 1 Apr 2023
    You can write SDL2 cffi interface files by hand but any package dependent on https://github.com/lispgames/cl-sdl2/ is going to be blocked by this on Windows.
  • History of Lisp Parentheses (2019)
    5 projects | news.ycombinator.com | 1 Feb 2023
    I dunno, my Lisp code comes back in pretty frequently, but I'm defining new functions, using CLOS, making use of let* or other nifty macros (uiop:nest is occasionally useful), and refactoring when a function gets too large. But compared to horrors I've frequently seen in JavaLand (especially in older code when the more modern practice of extract function refactoring was less common, more laborious, and not really automated), tons of Lisp code I come across from others has been pretty sane as far as indentation and spacing goes.

    It seems like a problem mostly handled by style, just because you can easily represent the whole expanded AST in one function definition doesn't mean you should. And sure there are plenty of (in my opinion) not so great examples out there, like it's rather unfortunate that this is the first example for the cl-sdl2 project: https://github.com/lispgames/cl-sdl2/blob/main/examples/basi... (Though on another metric, the longest line is only 96 characters; most of my lines happen to be under 80 but I don't hold myself to that limit, my screen and editor windows support wide lines by default, like >200 characters wide.) The huge nest of with-macros further impedes runtime redefinition and modification, because now sure you can change code and redefine the function, but your game loop isn't going to see any of that on further iterations. At least the other renderer.lisp example is moving in a better direction splitting the game loop up into several draw functions, and you see those have a normal pattern of going out and then back in.

    Urbit docs for its language Hoon once called the phenomenon something like "attacking the right margin". I recalled this fosdem paper describing it more https://archive.fosdem.org/2018/schedule/event/urbit/attachm... especially in 6.3.2:

    > There are two common syntactic problems in functional languages: closing terminator piles (eg, right parens in Lisp) and indentation creep. A complex function will have a deep AST; if every child node in that AST is indented past its parent, any interesting code tends to creep toward the right margin. To solve terminator piles, there are two forms of every Hoon twig: “tall” and “flat”, ie, multiline and single-line. Tall twigs can contain flat twigs, but not vice versa, mimicking the look of “statements” and “expressions” in an imperative language. Flat form is enclosed by parentheses and separated by a single space; tall form is separated by multiple spaces or a newline, and (in most cases) not enclosed at all. ...

    > Right-margin creep is prevented by backstep indentation; where a classical

  • sketch, sdl2, c2ffi on M1 Mac?
    6 projects | /r/Common_Lisp | 26 Nov 2022
    First thing, I followed the instructions here: https://github.com/lispgames/cl-sdl2/issues/154
    6 projects | /r/Common_Lisp | 26 Nov 2022
  • Using Common Lisp to do GPU accelerated animations
    2 projects | /r/Common_Lisp | 31 Mar 2022
    Use CL-SDL2 (https://github.com/lispgames/cl-sdl2) for simple 2d rendering. It's both GPU-accelerated and portable to many platforms. You can use CL-SDL2 along with CL-OPENGL (https://github.com/3b/cl-opengl) for OpenGL programming, provided you have knowledges about 2d/3d graphics programming.

c2ffi

Posts with mentions or reviews of c2ffi. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-11-26.
  • sketch, sdl2, c2ffi on M1 Mac?
    6 projects | /r/Common_Lisp | 26 Nov 2022
    Quickloading :sketch or :sdl2 wants the c2ffi library which seems to be available on neither Quicklisp nor Homebrew. Downloading that library from source and following the build instructions (and several alternative variants found by Googling ) leads to errors like:
  • C Isn't a Programming Language Anymore
    4 projects | news.ycombinator.com | 7 Nov 2022
    > C compiler based tool that outputs DWARF or DWARF-like debug output that actually lays out everything

    That sounds like C2FFI: https://github.com/rpav/c2ffi

    The only language ecosystem where I've seen it used is Common Lisp. But it emits plain JSON and depends only on LLVM (albeit a specific version thereof), and I don't see any reason why you couldn't build e.g. a Python auto-binding library on top of it.

  • Alternative to ECL?
    5 projects | /r/lisp | 27 Apr 2021
    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.
  • Installing c2ffi on Ubuntu
    2 projects | dev.to | 17 Feb 2021
    git clone https://github.com/rpav/c2ffi git checkout -b llvm-11.0.0 refs/remotes/origin/llvm-11.0.0 cd build cmake .. # -DBUILD_CONFIG=Release LIBRARY_PATH=/usr/lib/llvm-11/lib/ make # -j8 sudo checkinstall

What are some alternatives?

When comparing cl-sdl2 and c2ffi you can also consider the following projects:

cl-autowrap - (c-include "file.h") => complete FFI wrapper

c-mera - Next-level syntax for C-like languages :)

chibi-scheme - Official chibi-scheme repository

mal - mal - Make a Lisp

cl-opengl - cl-opengl is a set of CFFI bindings to the OpenGL, GLU and GLUT APIs.

CMake - Mirror of CMake upstream repository

cl-sdl2-ttf - A common lisp wrapper for SDL2_TTF used for loading fonts and creating text assets

cl-sdl2-image - SDL_image 2.0 wrapper

urbit - An operating function

history-of-lisp-parens - a history of Lisp's most notorious artifact, parentheses

static-vectors - Allocate SIMPLE-ARRAYs in static memory