So far have considered MicroPython [0] [1] and Lua [2] [3], but open for suggestions for others.
What are experiences?
[0] https://micropython.org/ [1] https://learn.adafruit.com/category/micropython [2] https://www.lua.org/home.html [3] https://news.ycombinator.com/item?id=8537895
On the downside, the FORTH community seems to be shrinking and many people find postfix notation a bit of a brain-twister. While it's "kind of" portable, it's probably not as portable MicroPython. Both FORTH and Lisp "allow" you to build programming constructs other languages provide out of the box. This is a blessing and a curse. If you ever wanted to change the way a for(){} loop worked, it's not uncommon in these languages. If you just want for(){} loops to work out of the box, you may be annoyed by having to check whether the person who wrote the for(){} keyword in your language is doing what you want. (Forth has the LOOP keyword and lisps like fe or micro-lisp have various flavours of if you use to build your own control structures with macros.) I also imagine you may have to write your own drivers for anything more complex than a UART.
I've recently gone back to some of this as I'm working again with old controllers whose dev tools have atrophied. I spent quite a bit of time in the 80s building commercial products with FORTH and Lisp, so I've already climbed up the learning curve. I'm not trying to convince you YOU MUST use FORTH or Lisp, but they're interesting language / environments from a simpler time. ( "This is the tool chain of the Jedi Developer; not as clumsy or random as C++, but an elegant environment for a more civilized age." )
Which is to say... there's still some benefit in learning a little bit about these old systems in that understanding what their constraints and objectives were might help you create evaluation criteria for modern systems.
Also for bit-banging speed is essential isn't it?