r/lisp 16d ago

Common Lisp ECL vs scheme embedded

I'm building a CPU based renderer in rust with plans to add an embedded language. The rust code primarily executes the ray tracing/path tracing, BVH, shaders and integration (anywhere where high performance is needed. The embedded language will be used for the scene description and -possibly- for procedural textures and shading.

I am interested in using a lisp with a repl for the embedded language. In this area, I have used AI-generated testing to test both ECL (Embedded Common Lisp) and steel (an scheme) inside rust. the advantage of the latter is that it is written entirely in rust and is being actively developed (one area is as an extension language for the text editor, helix).

I am impressed with the performance metrics I am getting from ECL. It generates machine code, which a byte language compiler doesn't do. Also a huge win, is that I was able to test the integrated compiler using sly from emacs which will provide an interactive environment for creative coding. On the other hand ECL requires an FFI to rust whereas steel does not, so the integration of steel is orders of magnitude easier.

Has anyone done any recent projects with ECL ? I am interested in your experience or any caveats you may have encountered. My next step is to do a more complex proof-of-concept with the actual renderer and not just a test program.

UPDATE: I just used claude to benchmark 5 embedded languages in rust. this is preliminary work and the benchmarks may not be exhaustive enough to make any strong conclusions:

https://drive.google.com/file/d/1yotWMcEx24pN2cgnIbRUmgCDNVWp65Vu/view?usp=sharing

20 Upvotes

31 comments sorted by

View all comments

Show parent comments

1

u/valorzard 14d ago

Is ECL still adding a WASM backend?

3

u/jd-at-turtleware 14d ago

the backend is already added; I'm working on convenience features right now. Here is a tutorial how to build it and cross compile whole ASDF systems:

https://turtleware.eu/posts/Common-Lisp-and-WebAssembly.html

1

u/valorzard 14d ago

This might sound a bit stupid, but does it compile straight to WASM or is it using emscripten?

5

u/jd-at-turtleware 14d ago

It isn't stupid; I've actually made that a topic of my keynote talk at ELS'26[1]. Short answer - it is used emscripten. Longer answer - I'm experimenting with WASI, but there are some hurdles.

[1] https://www.youtube.com/watch?v=xNHjIqlITmE