TulipScript is a lightweight, expressive scripting language inspired by JavaScript β but more fun. It supports Unicode and emoji identifiers, functional programming, file I/O, and is embeddable as a shared C library. Whether you're scripting a game or experimenting with creative code, TulipScript makes it joyful.
let hello = "Hello, World!"
println(hello) // Outputs: Hello, World!
π Explore language features in the Usage Guide β
- π Unicode & Emoji Identifiers β Name your variables
πΈ
,Ο
, or anything you love. - π§ Familiar JavaScript-like Syntax β Use
let
,const
,if
,for
, and more. - βοΈ Builtβin Functions β
clock()
,shuffle()
,random_between()
and others built-in. - π File I/O β
read_file()
andwrite_file()
to handle files natively. - π§± Structs & Closures β Define custom types and encapsulate behavior.
- π§ Linux-Only β Works out of the box on most Linux distributions.
- 𧬠Embeddable VM β Integrate TulipScript with C, Go, Rust, or C++ applications.
Get the latest prebuilt binaries and development files from the Releases β:
- π· VM Executable: Download
tulip
- π§ Development Files:
- π¦ Full Release Bundle (VM + Libs + Headers):
tulip-release.zip
- OS: Linux
- Tools:
gcc
,make
,pkg-config
,libffi
,readline
- Go (Golang)
System-wide:
curl -sL https://github.com/cryptrunner49/tulipscript/raw/refs/heads/main/install.sh | bash -s -- install --system
User-only:
curl -sL https://github.com/cryptrunner49/tulipscript/raw/refs/heads/main/install.sh | bash -s -- install --user
git clone https://github.com/cryptrunner49/tulipscript.git
cd tulipscript
make vm
./bin/tulip samples/scripts/rpg_game.tlp
TulipScript is easy to embed in other languages like C, Go, C++, and Rust.
#include "libtulip.h"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
Tulip_Init(argc, argv);
if (argc > 1) {
Tulip_RunFile(argv[1]);
} else {
int exitCode;
char* result = Tulip_InterpretWithResult("1 + 2;", "<script>", &exitCode);
if (exitCode == 0) printf("Last value: %s\n", result);
else printf("Execution failed with code %d\n", exitCode);
free(result);
}
Tulip_Free();
return 0;
}
make lib
gcc -o run_sample samples/lib/c/sample.c -Lbin -ltulip -Ibin
LD_LIBRARY_PATH=bin ./run_sample
Find ready-to-run embedding samples in:
These show how to use TulipScript with FFI across different ecosystems.
sudo apt update
sudo apt install gcc pkg-config make golang libffi-dev libreadline-dev
Whatβs next for TulipScript?
- Elif
- Pattern Matching
- Switch Statement
- Enums
- Error Handling
- Standard Library
β¨ Track progress or suggest features via Issues β
Weβd love your help! Whether it's fixing bugs, improving docs, or proposing featuresβyour contributions matter.
π See the Contributing Guide β to get started.
TulipScript is licensed under the GNU GPL-3.0.
See the LICENSE for details.