← Back to Main Site

About LispBM

LispBM (LBM) is a runtime system and language meant to be embedded into an application and add versatility by scripting to that application. LispBM is integrated into the VESC family firmware where it adds a layer of scriptability to motor controllers, displays, battery management systems and other peripherals. LispBM can be integrated into any platform that can link in a C library.

Under the hood, LispBM is a Lisp or Scheme-like programming language for microcontrollers. LispBM also borrows a couple of ideas from Erlang when it comes to concurrency, message passing, pattern matching and process monitoring. The LispBM runtime system can be compiled for either 32 or 64-bit platforms and runs on a wide range of hardware such as, for example, STM32, NRF52, ESP32 or X86. When running the LispBM runtime system on a microcontroller, it can be built on top of ChibiOS, FreeRTOS or ZephyrOS or, if you are adventurous, on bare-metal. LispBM can also be built to run on top of regular Linux (and now even Windows).

Who wouldn’t want a REPL (read eval print loop) on their embedded platform? This is what LispBM is for!

Why Lisp?

New to Lisp? The Why Lisp? page covers the personal motivation for making a Lisp, why Lisp is a good fit for embedded systems, and the story of how LispBM went from a hobby project to a production system.

About the author

Bo Joel Svensson (Joel Svensson) is a Swedish computer scientist with a Ph.D. from Chalmers University of Technology. Joel’s main research interest is focused on programming language and runtime system design for resource-constrained or otherwise “non-standard” computer systems — from microcontrollers on one end of the spectrum to GPUs on the other.

Joel is also a member of the team at VESC Labs.