24. Separate interpreters for the different control types. Meaning the Mill interpreter is different than the Lathe interpreter. Mach 3's Lathe interpreter was the same as the Mill! This led to conflicts with canned cycles, among other things. There is a G76 cycle in a milling application AND a lathe application and they do not do the same thing.
25. Multiple planners. This allows stuff like Retract and Cut recovery to work. Plus there is a jog planner for every axis and all can be run with their own settings.
26. Out of band axes, aka non coordinated axes. This just didn't exist in Mach 3.
27. A customizable tool table. Add your own fields if you need them!!!
28. A proper reset function.
29. All of the motion is chained together better in Mach 4 vs. Mach 3. It makes it feel more smooth and graceful, and less clunky. Even if running in exact stop mode.
30. Real parameters that can be set with G10L50.
31. SETVN implementation.
32. M code scripts that can parse letter arguments.
33. Global data in the script environment (big on the mach 3 wish list)!
34. DRO update and modify scripts. You can do some wicked stuff with these.
35. #var expansion in comments for G code program debugging purposes. e.g. "#123 = 64 (#123 = #[123])" This will print "#123 = 64" in the status history.
36. Fully Fanuc compatible expression evaluation. e.g. "#100 = [#124 - #123] * [#124 - #123]" Try that one in Mach 3 and watch it bomb.
37. Set outputs and read inputs directly in G code.
Whew... I feel a bit like Bubba telling Forest what all you can do with shrimp.
Steve