Side is a modern, lightweight, and incredibly fast programming language.
The interpreter is only 450 KB, yet it can do more than some multi-gigabyte monsters.
📚 Documentation • Features • Installation • Quick Start • Story
| Feature | Description |
|---|---|
| ⚡ 450 KB | Interpreter lighter than a single photo |
| 🔌 Native Modules | Load .dll written in Rust for GUI, 3D, networking |
| 🎨 GUI with egui | Windows with buttons in 3 lines of code |
| 📦 .exe Builder | Encryption + ready .exe in 0.1 seconds |
| 🎯 Own Syntax | Simpler than Python, clearer than C++ |
| 🪟 Windows Icons | .sd and .spack files look stylish |
| 📚 Documentation | side-lang.netlify.app |
- Download
Side_Setup.exefrom the releases page - Run and follow the instructions
- Done! Side is already in your PATH
git clone https://github.com/VladislavPm/side.git
cd side
cargo build --release
target\release\side.exeCreate hello.sd:
log "Hello, world!"
Run it:
side.exe hello.sdOr using spack:
side.exe spack run hello.sdload_native("egui")
message_box("Side says:", "Hey bro!")
Create app.spack:
{
"name": "MyApp",
"version": "1.0",
"main": "hello.sd"
}Build:
side.exe spack build app.spackRun MyApp.exe — and you're done!
Full documentation is available at:
👉 side-lang.netlify.app
There you'll find:
- Complete language guide
- Code examples
- Description of all functions
- Native modules creation guide
- Spack build system documentation
set x = 10
fix PI = 3.14
set name = "Arthur"
set list = [1, 2, 3]
check x > 5 start
log "x is greater than 5"
end
loop i < 10 start
log i
set i = i + 1
end
proc add(a, b) start
give a + b
end
form Player start
set hp = 100
set name = ""
end
write_file("data.txt", "Secret data")
set text = read_file("data.txt")
copy_file("backup.txt", "data.txt")
delete_file("temp.txt")
// Rust module example
#[no_mangle]
pub static side_module_info: NativeModuleInfo = NativeModuleInfo {
name: b"mymodule\0" as *const u8 as *const c_char,
functions: FUNCTIONS.as_ptr(),
count: FUNCTIONS.len() as u32,
};load_native("mymodule")
hello("World!")
✅ Basic syntax (variables, conditions, loops)
✅ Functions and structures (proc, form)
✅ Lists and indexing
✅ File operations (reading, writing, deleting)
✅ REPL with commands
✅ Spack build system
✅ Icons and installer
✅ Documentation
✅ Loading .dll modules via load_native()
✅ GUI on egui (windows with buttons)
✅ Example message_box()
✅ Support for Rust modules
✅ Modules/ folder for storing .dll
✅ Automatic execution time measurement
✅ Statistics output after launch
✅ Reading/execution/total in microseconds
✅ random() - random fraction from 0 to 1
✅ randint(min, max) - random integer
✅ time() - Unix timestamp (seconds)
✅ now() - readable date/time
✅ Execution speed ~2ms per script
| Version | Main feature | Size |
|---|---|---|
| 1.2.0 | First release | 350 KB |
| 1.3.0 | Native modules | 450 KB |
| 1.3.1 | Timing | 450 KB |
| 1.4.0 | Randomness+time | 450 KB |
- Rust — interpreter, native modules
- libloading — DLL loading
- Inno Setup — installer
- HTML/CSS/JS — documentation website
MIT License — do whatever you want, but give us a shoutout if you can 😉