A simple, expressive, and powerful interpreted language written in C.
Made by Brwolf (Banaolf)
Meaningful is a hand-crafted interpreted language built from scratch in C. It aims to be readable and expressive while giving the programmer real control — including optional pointer access, a garbage collector, type annotations, and more.
- Clean, readable syntax
- Dynamic typing with optional type annotations and conditions
- Functions, lambdas, closures
- Lists, dictionaries, strings, floats, booleans
forEach,while,repeatloops- File I/O (
readfile,overwrite,put,createfile,deletefile) - Import system
- Mark-and-sweep garbage collector
- Pointers — with automatic sibling invalidation and runtime warnings
- Type casting with
@ - Default function parameters
- Ternary operator
- Native functions:
input,random,sleep,length,clock, and more - Shell / REPL mode
- Cross-platform
Note: Only Linux and Windows are tested
| Platform | Supported |
|---|---|
| Windows (32/64, Cygwin) | ✅ |
| Linux | ✅ |
| macOS | ✅ |
| FreeBSD / NetBSD / OpenBSD / DragonFly | ✅ |
| Android | ✅ |
| Haiku | ✅ |
| Solaris | ✅ |
| AIX | ✅ |
| HP-UX / IRIX / Tru64 | ✅ |
| iOS |
Download the .deb file from the releases page and run:
sudo apt install ./meaningfulang-VERSION.debOr double click it
msi Installers dont come for every release, but I try to put installers like this whenever i can.
If there is an msi for that release, just download it and double click it, accept the licence and install. May prompt you for admin priviliges
rename the makefile.lin (or .win if you are in windows) and run makeif you have make installed, else
gcc interpreter.c lexer.c parser.c -o meaningful -lmmeaningful script.mean # Run a file
meaningful # Start the REPL shellprint "Hello, World!"
set greet(name@string:not_empty, greeting@string:not_empty = "Hello")
print greeting + ", " + name + "!"
end
greet("Brwolf") :: Hello, Brwolf!
greet("Brwolf", "Hey") :: Hey, Brwolf!
set x = 10
set y = ^x :: y points to x
set z = ^x :: z also points to x
print y^ :: 10
y^ = 20
print x :: 20 — x was changed through y
unset x :: frees x, y and z are automatically invalidated
:: Warning: pointer 'y' was invalidated because its target 'x' was freed.
:: Warning: pointer 'z' was invalidated because its target 'x' was freed.
Meaningful is one of the only languages that automatically invalidates and removes all pointers to a variable when it is freed, with runtime warnings — giving you C-like control with a safety net.
set myDict = {
"greet": do(name)
print "Hello, " + name
end
}
myDict.greet("Brwolf") :: Hello, Brwolf
set safeDivide(a@int:positive, b@int:positive)
return a / b
end
Licensed under BMLL2.0. See LICENSE for details.