Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

svenssonjoel/lispBM

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Website Documentation Discord Gallery Contributors

lispBM (LBM)

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 a regular linux.

LispBM is an embeddable scripting language meant to be integrated into a larger application. Our goal is that LispBM is a suitably sandboxed scripting language to be used in just about any application domain.

LispBM mascot

The LispBM mascot, Lispy the llama, was created by PixiLadyArt. Thank you, Pixi!

Contribute to LispBM!

LispBM is an open source project and welcomes collaboration and contribution. Do you want to get involved and help out?

Getting started

The easiest way to get started with LispBM programming is to use VESC-Tool together with the VESC EXPRESS Firmware on an esp32c3.

VESC-Tool gives you access to a very capable IDE for lisp programming on embedded systems and the VESC Express firmware provides built in functionality to interface with CAN, WIFI, BLE and UART as well as GPIO and display drivers.

If you are looking for a more bare-bones way to add scripting capabilities to your embedded system, LispBM is quite platform independent and can be compiled for many different MCUs and systems. LispBM can tie into the rest of your application via what we call "extensions" which are C functions that can be called from your LispBM scripts.

Documentation

The LBM REPL

There is an example REPL implementation that runs on X86 32 or 64bit in the repl directory. The REPL depends on libreadline.

REPL Dependencies for 32Bit executable on 64Bit linux:

  • libreadline
  • lib32readline
  • gcc-multilib
  • libpng

On Ubuntu you can obtain the depencies by:

sudo apt-get install gcc-multilib libreadline-dev lib32readline-dev libpng-dev libpng-dev:i386

Then issue command make in the repl directory.

The REPL can be built with different feature-sets. features are selected as:

make FEATURES="alsa sdl"

which is an example of adding features for sound and graphics.

The total list of features is:

  • alsa - Sound on Linux.
  • sdl - Graphics on Linux.
  • freetype - Use libfreetype for font prepropressing.
  • 64 - 64Bit build.
  • coverage - Build with coverage collection.

Editor support

Morty Proxy This is a proxified and sanitized view of the page, visit original site.