Wow... Thanks guys!
I liked Mach 3, for sure. It was really good stuff. But as with anything, it can be improved upon with time. Whether Mach 4 is an improvement is probably a matter of opinion that can be debated, but we honestly did try to improve upon Mach 3. We had a list of items that users constantly asked to be added to Mach 3. But a lot of them simply could not be added to Mach 3 just because it simply would be incompatible with the way the internals of Mach 3 worked. I don't remember exactly how many items were on this list, but I seem to remember it being on the order of multiple of hundreds of items. This is what we started with when we endeavored upon creating Mach 4. We really did LISTEN to what our customers wanted and tried to give it to them if at all possible. I sometimes scratch my head at some of the resistance some people have to moving from Mach 3 to Mach 4. I guess even change for the better is sometimes hard to embrace.
Some of the big items in my mind were:
1. Always needing a custom CAM post processor made for Mach 3. We decided to make Mach 4 Fanuc compatible so that ANY already made Fanuc post processor could be used. This forced the more "particular" G code interpreter that Chad mentioned.
2. More I/O. Mach 3 could only access 53 inputs and 30 output via the ports and pins mechanism. For any extension beyond this, the aforementioned Brains and Mach 3 modbus had to be used. I was just speaking with someone about this today, actually.
3. Less delay in input detection. It could take up to 100 milliseconds for Mach 3 to "see" an input change state. It is as instant as it can be with Mach 4 and the given topology used. Modbus is still limited by its polling frequency, however.
4. I loved Klaus' screen editor for Mach 3. However, you had to restart Mach 3 after every screen edit. Having a built in screen editor makes on the fly screen edits possible and therefore can quicken development time. There are alignment feature in the Mach 4 screen editor, BTW. Layers just can't be done with the wxWidgets framework that we use. But still, I believe custom screen development is greatly sped up with Mach 4.
5. The C style programming API.
6. Compiler independence. You don't have to use the same development tools that we use.
7. Up level plugins can run with down level Mach 4 builds if programmed correctly.
8. We found the FASTEST scripting language and used it. This made tool change type script WAY less clunky.
9. GUI elements that can be enabled/disabled based on machine conditions. BIG ONE to me. I always hated that a Mach 3 button was always active, even thought pressing it in an invalid state wouldn't do anything.
10. Developing a Mach 4 plugin is WAY more streamlined as compared to Mach 3. However, people that developed Mach 3 plugins constantly try to use Mach 3-isms in their Mach 4 plugins.

It is better to forget everything you ever knew about Mach 3 plugin development if you endeavor to build a Mach 4 plugin.
I'm hungry now and I will will proabaly think of more after I eat.
Steve