PlainScript
- 4 Devlogs
- 8 Total hours
A English based programming language
A English based programming language
Hey everyone. Yeah, it’s been a while. Don’t worry though, I didn’t abandon this thing. I’ve actually been working way harder than these 4 logged hours suggest. Major improvements happened. Also, I laid the groundwork for something kind of insane: PlainScript C++ for Arduino. You read that right. Arduino support is coming, and I’m maybe 12 hours of actual implementation away. (REAL UNDERSTATEMENT) 😭
Anyway, here’s what went down.
First hour was all about hardening the JS generation. I added what I’m calling “smart syntax.” Unlike Python, where a syntax error just kills your program, PlainScript will actually catch it, suggest a fix, and apply it automatically.
I also threw together a setup script for anyone who actually wants to use this, plus some compiler customization. You can tweak how aggressive the smart syntax correction is, or turn on auto-run after compilation if you’re into that.
Built in SQL database creation and management tools. Also gave it full local filesystem access, but I made sure it won’t destroy anything. Ran 15 different scenarios to test that and they all passed, so… it’s probably fine. Probably.
Also added support for both symbols and regular English in the syntax because honestly, sometimes you want to type fast and sometimes you want to actually read what you wrote. Both works.
The code was a mess. Like, genuinely unreadable. I split the original 5 files into around 15 separate ones so it’s actually maintainable now.
Also added color coded words (syntax highlighting, It’s syntax highlighting.) My brain is absolutely fried right now, sorry. It’s packaged as a VS Code extension too, though I still need to get it approved on the marketplace. That part’s pending.
This logged as one hour but it was really three hours of work. I have lost my sanity slightly but it’s fine. I planned out and wrote a chunk of the C++ and Arduino framework.
The plan is: PlainScript compiles to C++, which compiles to an Arduino binary, which you just flash. Simple. (Nope..)
The hard part is that I can’t just port every C++ library over manually. That would take forever. So instead of oversimplifying everything, I looked at how library calls actually work. A normal C++ line looks like this:
library.action(params);
If you break it down, you really only care about two things: the library name and the action. So in PlainScript, that becomes:
library do action on pin (whatever) with (x, y, whatever you need)
This feels solid. I’ll figure out the weirder libraries later, but this approach should cover most cases. I just need to pick a good prefix word for library calls, like cpp or something. I’ll sleep on it.
The JS side is basically done. All that’s left is finishing the Arduino implementation.
Wish me luck.
Oh, and here’s what the syntax highlighting looks like:
(quick edit, I spent wayyy too long writing this than I should have. I wanted it to look good since it’s a major achievement in development)
“Don’t spend 12 hours coding a day or you’ll end up insane like me” Quote of the day
Fixed a couple memory leaks today. The math functions were holding onto heap space longer than they needed to (I have no idea how but I believe it was due to some of the preset math variables I created like PI had wrong values) , so I cleaned that up. Also tightened the JS output pipeline, since the whole point is you write in plain English, the generated code needs to be locked down on both security and performance.
HTTP connections are in now. Requests looks like this:
make request <request name to store response> (get/post) "https://apiendpointhere"
Then you review it with:
review request <request name> (you can either make a if statement or if else statement here or you can store the response to a variable)
Networking still has some edge cases I want to handle before I call it done, but I’d say the JS transpiler is sitting at about 75% ready to ship.
Once the JS version is shipped, I’ll move on to the C and C++ transpilers. The dictionary is already mapped out, so the port should be fast. Python is on the list too, but I want C/C++ shipped first so I can demo it running on ESP32s and Arduinos.
Planning to open source after this JS release. Last time I initialized a git repo it completely split my projects and times, so I’m holding off until the codebase is stable.
That’s it for now. I’m home all day so I’ll keep working on this. No screenshots to share at the moment, so here’s a cat picture instead.
psst, I just found out markdown works in this devlog box, I think, we will find out.
I got significant progress done in this “one hour” period that was logged.
I actually worked for like 5 hours nonstop but most of the things I did was debugging so it really didn’t count the time I spent looking at logs.
Either way my language is basically a transpiler now. You can compile PlainScript to JS. It is a backend language as of now so you can do what you can expect from any other language like python and C++.
Using this for backend is just very limiting in my opinion and I am planning on a full Arduino Port which you can code simple projects like blinking LED’s or Wi-Fi communication. I am planning on making a very specific way to print graphics on a screen connected to the Arduino but you would need prebuilt graphic libraries to even do all that and it’s just a pain unless it dynamically generates the keywords for such headers. Right now PlainScript exists for JS and I’m proud of it, of course it needs some security tightening here and there to be actually usable which will be done in my 3rd hour. I will ship the PlainScript V1 after that and work on Arduino port. Right now I haven’t started the demo’s and such so those will come likely tomorrow morning. The rest is planning.
Alright I spent like 30 minutes writing this then realizing there’s a character limit so I can’t even type the capabilties of the language. Oh well.
Cya later tonight or tomorrow morning chat.
Devlog 1-
PS: I wrote this like a product pitch so bear with me.
Introducing PlainScript. It’s a programming language that uses English sentences instead of whatever alien syntax normal languages use.
Why am I making this? Because I spent 4 hours yesterday looking for a missing semicolon in my C++ project and I’m still PISSED about it. If I can write instructions in English and the computer understands it why isn’t it a thing yet? We live in 2026 no?
Here’s what it looks like:
Print colored magenta "Hello World!"
Right now it handles basic print, math, and variables. Still working on bools, typed variables (ints/strings), arrays, and more complex math stuff. It compiles to JavaScript under the hood, might add Python later if they are willing to behave.
Currently I don’t have any “usable” screenshots to share so maybe check again within the hour for my next devlog.
See you in an hour! (maybe.. no promises)