Why not for 3 eur buy some basic arduino or other tiny hardware to tinker with and for another few eur, tiny i2c/oled display, wires and set of basic switches? You start programming with option to expand to the larger project in the future. You have constraints of real device, community is much larger and there are more learning resources.
Looks cool. I most enjoyed the zombies game someone uploaded on itch.io. One thing to note is that game speeds feel very fast to me. I barely did anything in the asteroids game and the others also seem to run quite fast. It could be just me.
I wonder how hard it would be translate this to Dutch. I would like my kids to start experimenting but that’s a bit impractical if they need to learn English first..
I’d love to see something like this but designed to run on esp32 or raspberry pi 2530. Either can handle basic HDMI and USB. Or a little <$100 laptop with a 7” display.
Easy to think raspberry pi, but with a full Linux you won’t get that intrinsic understanding that you fully control the hardware, you never control the “bare metal” unless you are a much more advanced user.
IMHO the feeling of not being in full control of your computing device is not a good starting point. I’m very fortunate to have started out on my 8kb BASIC machine.
“A class or object is a map with a special __isa entry that points to the parent. This is set automatically when you use the new operator.
Shape = {"sides":0}
Square = new Shape
Square.sides = 4
x = new Square
x.sides // 4
”
So
- Shape is a map (it is created using the syntax defined earlier, using a literal string as key)
- Square is a class?
- x is an object?
Or is this language prototype based? If so, why mention the word “class”? If not, isn’t it confusing to use “new someMap” to create a class and “new someClass” to create an object?
I also find it curious to see that division is defined on lists and strings. What would that mean?
It's so odd that the only nontrivial example code in the paper is completely buggy. The find longest common prefix function of a list of strings fails (try ["a", "bc", "ade"]).
This looks interesting, and it’s good to have alternatives to Lua in the embedded space, although MiniScript is an awful lot like Lua on first glance (e.g. using keywords instead of brackets to end loops and conditionals).
The things which slightly rub me the wrong way:
• C++ instead of C. There’s still places where one has a pure C language project.
• cmake instead of Posix-compatible make. This makes the project depend on a non-standardized tool with only one implementation.
I’m curious what advantages MiniScript has over Lua, though—when I had the problem of “let’s use a tiny embedded language” [1], Lua5.1 made the most sense to me:
• No need to worry about a Javascript, Moonscript, Kotlin, or Go language port—people have already made all of those. [2]
• People already made libraries I needed (e.g. a “spawner” library so I could run Stockfish from my Lua script)
• It’s a standard embedded scripting language which people are more likely to already know (e.g. people making Roblox games already know Lua)
22 comments
[ 2.4 ms ] story [ 39.8 ms ] threadEasy to think raspberry pi, but with a full Linux you won’t get that intrinsic understanding that you fully control the hardware, you never control the “bare metal” unless you are a much more advanced user.
IMHO the feeling of not being in full control of your computing device is not a good starting point. I’m very fortunate to have started out on my 8kb BASIC machine.
https://www.lexaloffle.com/
“A class or object is a map with a special __isa entry that points to the parent. This is set automatically when you use the new operator.
”So
- Shape is a map (it is created using the syntax defined earlier, using a literal string as key)
- Square is a class?
- x is an object?
Or is this language prototype based? If so, why mention the word “class”? If not, isn’t it confusing to use “new someMap” to create a class and “new someClass” to create an object?
I also find it curious to see that division is defined on lists and strings. What would that mean?
Edit: reading https://miniscript.org/files/Strout_iSTEM-Ed2021.pdf, it is prototype based. That’s interesting for a teaching language.
- a manual
- an installer
when you have Web pages can now
- be offline (PWA)
- be responsive and run on pretty much any device
- run pretty much anything thanks to WASM but anyway already have JS/HTML/CSS as bare minimum
- can have the instructions AND the runtime on the same page, on any device, instantly
- can connect with physical hardware, see recent https://hacks.mozilla.org/2026/05/web-serial-support-in-fire... or even with APIs.
The things which slightly rub me the wrong way:
• C++ instead of C. There’s still places where one has a pure C language project.
• cmake instead of Posix-compatible make. This makes the project depend on a non-standardized tool with only one implementation.
I’m curious what advantages MiniScript has over Lua, though—when I had the problem of “let’s use a tiny embedded language” [1], Lua5.1 made the most sense to me:
• No need to worry about a Javascript, Moonscript, Kotlin, or Go language port—people have already made all of those. [2]
• People already made libraries I needed (e.g. a “spawner” library so I could run Stockfish from my Lua script)
• It’s a standard embedded scripting language which people are more likely to already know (e.g. people making Roblox games already know Lua)
• It compiles in a pure C environment.
[1] https://samboy.github.io/MaraDNS/coLunacyDNS/
[2] It would be nice to have a Rust port of Lua