Using ECL for cross-platform Godot Extensions

Steven Githens <[email protected]> Sun, 8 Feb 2026 14:56:58 -0800
Newsgroups gmane.lisp.ecl.general
Message-ID <[email protected]>
Hello ECL Devel!

I just wanted to write in and report on some nice success I've had over 
the past year, getting my project to run and compile with ECL such that 
I can use Godot to build a new front end for it.

My project is a nearly 40 year old project called Boxer [1] that has 
gone through numerous platform ports and rendering layer updates (all 
the way through symbolics machines up through macs/windows etc).  
Currently the stable build uses Lispworks and OpenGL on macOS, recently 
I had updated the rendering from using old school openGL to more modern 
shader based openGL.  However, I'm not really a professional graphics 
programmer and was looking for a way to get more multimedia things for 
free and as well and cross platform support.  After prototypes with lots 
of different toolkits, I've been using Godot to build the next visual 
frontend on the core functionality and it's been fun using ECL to do 
this, although it has been arduous getting here! :)

Part of the reason I chose both Godot and ECL as the lisp distribution 
to switch to, is that they both support WASM, which is incredibly 
important for me going forward, Kudos to all of Daniels work on the web 
assembly.

After copious refactoring and hacking, I've been able to build a shared 
library version of all my core functionality to use in a GDExtension 
with Godot, as well as a static library version to use in the WASM 
version with Godot (and my GDExtension hacked up a bit to be a core 
Godot module).  And it works! Pretty well, I have a number of rough 
edges to work out, but I'm very excited about this going forward.

I know the WASM stuff is still a moving target, and I'm interested in 
hearing about how the compiling mechanism will be standardized a bit 
more in core.  For building a shared library I'm using our 
asdf:make-build, and to build the static library targetting WASM I'm 
using the asdf-cc.lisp copied from Daniels wecl repo.  At the moment I 
have my Godot front end with ECL extension working on macOS, Linux, and 
Web.  At the moment trying to finagle the iOS version.

Let me know if anyone has any questions, comments.  Certain parts of 
this were quite difficult to wrangle so I am hoping to perhaps 
contribute back some documentation or something.

Thanks everyone for all your hardwork on ECL, and making it as 
mutliplatform as possible, especially including WASM, it's a real gem of 
a project! :)

Cheers,
Steve


[1] https://github.com/boxer-project/boxer-sunrise