The big problem for contemporary hobby CNC is that the G-code interpreters for small single board computers such as Grbl running on an Arduino are extremely memory-constrained:
I don't understand this comment- gcode never had loops, branching, or variables. And most folks use more capable controllers now based on ESP32 or whatever.
Actually, in LinuxCNC dialect the gcode does have many features most machines will not understand.
This is why these machines can drill and helical-tap plates with thousands of holes with ease. Also, some folks will cut gear-profiles with a slitting saw, and 4th rotary axis...
To be fair those features are pretty irrelevant these days. They really are a relict of times when gcode was handwritten. A skill i learned not even 10 years ago in high school.
i mostly see it on the 'titans of cnc' channel on youtube, but i don't have any of their videos on the topic bookmarked. take a look if you can stomach the shouty macho. in less arrogant alternatives, here's an abom79 video i have bookmarked: https://www.youtube.com/watch?v=-EyAWZuY7I4
I used to have some machines with Fanuc 6 controllers circa 1981 - 1983. They had variables, macros, branching, etc. I haven't been able to find what processors were in those old controllers, but I'm certain the single board computers of the last decade have more ram, more flash, and way more processing power. If GRBL can't do it, it is a software issue, not hardware.
The Grbl/Arduino stuff seems most prevalent/commonly sold.
That said, I was remiss in not mentioning LinuxCNC, &c., and as you note, they do have a more traditional G-code implementation w/ loops and variables and branches.
But, I don't think that this simulator supports all of that --- could someone post a sample program which does that sort of thing and test it?
Yeah - I guess as a someone who considers my machining "non professional", I've never even really consider GRBL for a machine because "running G code" and "running a mill/router/lathe" feel like different categories. the lack of a reasonable GUI and access to the configurations and macros to handle things like tool changes etc. has never made me interested in GRBL. (I've only ever played with GRBL in the context of a router that needed to be run by UGS) and that felt so limited as to be useless.
That said, I'm on the brink of converting both my mill and router from UCCNC to Centroid just to be into some software that is more "machine operator aware" meaning that it offers more features targeting making my life easier as an operator, rather than simply running gcode in a machine-agnostic way.
G41,G68, S curve acceleration, and basic things for parking positions, pause, resume, single block, separate feed rate and rapid rate overrides, etc. Those would be pretty basic and important. Also, good gui driven probing routines, TLO calculators, and a sane tool library.