Join the tetro.dev
Discord server (and use the #steplo
channel) to chat or get updates about Steplo:
👉 https://discord.tetro.dev/
A dedicated Discord server for Steplo will be created if enough interest is found!
Want to jump straight into using Steplo? Check out the Steplo book for a guide to installing the compiler and the language's syntax and features 👉 https://steplo.tetro.dev/
Steplo is a text-based esolang designed specifically for Scratch, bringing advanced programming features like memory management and type systems to the Scratch environment.
Its goals include:
- Adding new syntax and control flows not already existing as Scratch blocks
- Using stack-based memory as the primary memory model
- Compiling into custom "bytecode", designed specifically to integrate with Scratch’s native primitive types and features (sprites, sounds, costumes, pen, etc.)
- A 1:1 syntax of Scratch blocks as text
- An emulator for existing CPU architectures
- A programming language made using scratch
✅ = Implemented |
Status | Feature |
---|---|
✅ | Printing / stdout Manipulation |
✅ | Stack Memory |
✅ | Memory Pointers / References |
✅ | In-Memory Arrays |
✅ | Functions |
✅ | Branching / Control Flow |
✅ | Recursion |
✅ | Structs |
✅ | Enums |
✅ | Optimizer |
✅ | Static Typing |
✅ | Typecasting & Transmutations |
✅ | Typechecker |
✅ | Native Scratch Functionality (e.g. RNG, user input, waiting, timer) |
✅ | Helpful Compiler Errors |
✅ | TurboWarp-specific optimizations |
Function Inlining | |
🚧 | Tuples |
🚧 | Discriminated/Tagged Unions |
🚧 | Module System |
🚧 | External Linking / Libraries |
🚧 | More Scratch Native Features (e.g., sprites, key events, sounds, pen) |
🚧 | Language Server |
🚧 | Standard Formatter |
🚧 | VS Code (and possibly other IDEs) Extension |
🚧 | Standard Library |
🚧 | Built-in Heap Memory Support |
🚧 | Smart Pointers |
Steplo is still in early development, and it's currently not stable: Features, syntax, and internals are subject to breaking changes at any time.
The upside to this is that core functionality is still up for design changes. Your feedback is welcome and encouraged to help shape the future of the language!
# Clone the repo
git clone https://github.com/tetrogem/steplo.git
cd steplo
# (Optional) Create an output folder, or use an already existing folder
# Note: The local output folder named `out` is .gitignored, so it's safe to create/use!
mkdir out
# Compile a Steplo program
cargo run examples/hel.lo out --target scratch
This will generate a .sb3
file in the out/
directory.
You can now open the .sb3
in the Scratch editor and run your Steplo-compiled project!
Run the following to see all CLI options:
cargo run -- -h
See additional documentation on all of Steplo's language features in the Steplo book 👉 https://steplo.tetro.dev/