Splice is an Open-Source, high-level, Dynamic Programming language developed by Open-Splice, A Sinha Group organisation, to make writing code for embedded systems easier. This is the main Github repo where all source code of Splice remains. Installation of Splice can be found below.
Programming embedded systems today is dominated by C and C++, which offer excellent performance but come with a steep learning curve and complex memory management.
Higher-level languages such as Lua aim to simplify development, but VM complexity and bytecode handling can become challenging on constrained systems.
Splice explores an alternative design that prioritizes clarity, simplicity, and inspectable execution while remaining suitable for embedded environments.
Splice is designed to:
- Reduce VM complexity
- Keep execution transparent and debuggable
- Maintain a small, understandable core
- Make embedded-focused language tooling easier to reason about
This project is early-stage and experimental, focused on validating design decisions before expanding features.
Splice does not use traditional numeric opcode-based bytecode
(e.g. 0xA1 → LOAD).
Instead, it uses KAB (Keyword Assigned Bytecode):
- Bytecode instructions are represented using readable keywords
- The VM directly interprets these semantic instructions
- This simplifies debugging and tooling around bytecode
This design reduces interpreter complexity and makes the bytecode easier to inspect and understand.
The current SPVM runtime has been tested on desktop platforms and is designed with microcontrollers such as the ESP32 in mind.
It is recomended to use our build.sh and not any third party build.sh as they could cause harm to your system.
To run Build.sh run
./build.sh.
If you have a corrupted version of Splice run ./build.sh --force to forcefully rewrite the corrupted version with the right one.
Splice is orginized in this manner
| Directory | Contents |
|---|---|
src/ |
Code to run the SPVM (Splice Virtual Machine) onto systems like Microcontrollers |
examples/ |
Example code that works with Splice |
test/ |
A Directory for Where CodeQL and Github CI Test Splice |
bin/ |
A Directory where compiled versions of Splice stay. Contents only exist when you install Splice for your system |
