Terry... There is nothing in the core that is LUA. The core has no knowledge of LUA. The GUI has LUA. And the macros can be scripted in LUA via the mcLua plugin. When the core executes a macro script, all it does is hand it off to a plugin. If someone wrote a VB script plugin, the scripts could be in VB. If someone wrote a GUI, then they could use VB in that GUI.
GUI --| (LUA for the screen)
Core ---|
Plugins. (LUA for the macro scripts)
The GUI is the HMI (Human Machine Interface). It is where the rubber meets the road for the operator. How the interface operates is up to the user/operator/integrator. The Core is like an operating system. In fact, I used to write operating systems so the Core modeled very closely to that of an operating system kernel. It's sole purpose in life is to provide services to the application layer (GUI) and to interface with hardware via the plugins. The plugins could be considered something analogous to operating system device drivers. The core can be extended via plugins too. This provides future flexibility.
The LUA scripting uses the EXACT same API that we use in C++. It IS the API. It controls the core. Not the other way around. When you hit the Cycle start button, mc.mcCntlCycleStart() is used to tell the core to start executing. So please tell me how LUA that controls the core should be controlled by the core? How could the core ever have dominion over what the M code script wants to tell the core to do? What if the core just said no? That would be useless. Your arguments are circular.
What keeps you from messing up when writing G code? What protects you from yourself? If you tell the spindle to plunge through your workpiece or the the table, what do you expect to happen? It is up to you to write a good G ode program. It is also up to you to write a good script program.
One of the needs that kept popping up for Mach 3 was increased flexibility. Therefore, that was a design goal for Mach 4. I'll say it again. There is nothing wrong with it. There is no design flaw. You can use it. Or not. Your choice. You will be waiting a very long time for someone to make a system like you are wanting. Maybe forever.
And waiting for what? You make the machine do what you want ONE time. Then, you use it! I am an operator. I did this very stuff on my very own machine. It wasn't hard. And I haven't touched it since I did all of the screen and scripts. Not once! All I do is go downstairs, turn the machine on, and run parts. The machine is working for me, as you like to say. The same way every time. Just like I want it to.
Steve