DWalsh62- We get that you think GRBL isn't adequate but much of what you are saying just isn't true. You need to check your facts before you go stating things a gospel. First of all the MAINTAINER (why caps by the way) is active and the project is actively being worked, it has been updated and the most recent commit was just 13 days ago, and the current maintainer has indicated that GRBL WILL be moving to an ARM platform in the future. The program is about maxed out in terms of features that can be supported on the Atmega 328P platforms due to limited memory available, but it isn't totally maxed out yet. That is why the current maintainer has stated that eventually a switch for the currently supported Atmega 328 to a 32-bit ARM core microcontroller will be happening. He has chosen to eek every bit of functionality from the 328P platform to support the many current users out there right now so as to not force them into the ARM platform if they don't want to. Also, the switch hasn't been made yet because he is working on the next release (1.0) WITH NEW NEEDED FEATURES and the memory hasn't been totally exhausted in the 328P yet. In order to make the switch he is working to make the code easier to port in terms of hardware calls and program layout. Also, being a free open source project, it is worked on for free by the maintainer and others and as such they have to have real jobs and work on GRBL in their spare time. Even so, functionality HAS been added since V0.6. Like probing, dynamic tool length offsets, and helical milling to name just a few. Also, the way GRBL operates it has to have another front end program to feed it commands. Those user interfaces are where much of the functionality can and should be added.
In a previous career, I programmed, set up, and operated vertical machining centers, so I do know about the benefits of the things that you mention like G41/G42 etc, and I do know about industry practices regarding work flow. But GRBL isn't intended to run a VMC, but rather is intended for hobby machines at an ultra low cost. Something that in my opinion it does very very well. I have since changed careers and no longer run CNC machines for a living. CNC is now a hobby for me, but I do have the background.
I have been using GRBL on my G0704 milling machine for coming up on a year now. Yes, GRBL only has a basic instruction set which, as stated, is due to the limited memory available on the Atmega 328P microcontroller that is used in the UNO. However,saying it isn't suitable for a milling machine because of the limited instruction set isn't really accurate. Sure it would be great to have all of the features of a commercial CNC machining center, but they aren't absolutely necessary, especially for a hobby machine. I'd venture a guess that most hobby users wouldn't know what G41/G42 is anyway.
What is missing in GRBL that really kept me from trying it for a long time is the lack of canned cycles, not the lack of CDC. There just isn't enough memory for either CDC or canned cycles. However, GRBL doesn't just work by itself. It needs an interface to feed it commands. In that vein, I have written a user interface for GRBL that incorporates the most used canned cycles (G81, G82, G83, G85, G86, G89). The interface reads line by line and when it encounters a canned cycle that isn't supported by GRBL natively, it converts the canned cycle into individual moves that GRBL can deal with. For example, a G81 drilling cycle is really just a combination of linear G00 and G01 moves put together in the right sequence., so the interface can do it and GRBL doesn't have to. My user interface doesn't have support for G41/G42, but it really depends on the parts being made anyway. For simple parts who cares. Most parts are over-toleranced anyway. For more complex parts, as was mentioned, a CAM program can regenerate the code by just changing the tool diameter in the CAM program. Sure this isn't industry standard, but as was said GRBL isn't for industry, it is for hobby. So what if you have to regenerate the code. It works!!! My somewhat low power laptop that I use for my machine is capable of generating a 50,000 line g-code file in just a matter of minutes. If it was a production part in a commercial shop then I agree that it would be unacceptable. For hobby, it really depends on the user if that is unacceptable. Obviously for you it isn't acceptable, but it doesn't really cause me any heartburn.
BTW, I originally built my machine and used LinuxCNC via parallel port as the G-code interpreter for it. As you know LinuxCNC supports G41/G42. The reason I switched to GRBL was due to LinuxCNC generating real time warnings which was a bit disconcerting. I admit I never had LinuxCNC ruin a part due to real time issues, but the warnings worried me. I had a choice to make which was to invest in in new hardware for LinuxCNC or try something else. New hardware for LinuxCNC would have been several hundred dollars from my hobby budget. I decided to give GRBL a try for $7 for an Arduino clone board and was thoroughly impressed. The thing that is most attractive to me about GRBL is that the microcontroller is doing nothing but g-code interpretation. It isn't running a full blown OS with all kinds of background tasks that can interrupt g-code interpretation. After switching, I don't really miss not having G41/G42.all that much. I seldom have parts that require tolerances that tight anyway. I may at some time go back to LinuxCNC if/when I decide that it is important enough for me to use several hundred dollars of my hobby budget for the hardware upgrades, but for now I am very happy with GRBL.
My GRBL interface is
here