I’ve been testing Klipper and I am impressed of how quiet and fast it is. I would like to have support for CNC machines as also for Lasers. The actual state is not far from it.
First of all, it requires implementing a Hold/Continue and stop functionality that has immediate response. This is the only and most basic difference between Grbl and Marlin (Yet Marlin has it, because I coded it and made the PR, new bugfix versions include it).
GRBL Realtime commands:
Realtime commands are single control characters that may be sent to Grbl to
command and perform an action in real-time. This means that they can be sent at
anytime, anywhere, and Grbl will immediately respond, regardless of what it is doing
at the time. These commands include a reset, feed hold, resume, status report query,
and overrides (in v1.1).
-reset is already implemented as M112.
-feed hold should stop the machine with the maximum deceleration and turn off laser / spindle and temperatures optionally. In pause state it can be then reset, stopped or resumed.
-stop should just stop (but no reset or halting the machine as M112 does)
-resume should turn laser / spindle wait until is fully up to speed and proceed with the movement as originally planned . Finally, allow some macros to be executed as clean nozzle or park.
Notice these features not only add safety to the machine but allows you to restore the prints when the failures are not in the end-of a code.
Additionally, Laser etching change power inline as an extruder will extrude filament synchronized to the movement. It would be awesome to add this PWM capability to the kinematics.