Nogil signals + IO
Provide os/signal package so that signals could be received without any, potentially unbounded, delay even if main python thread is blocked in nogil code. See the last patch ("Nogil signals") for more details about this.
Implementing signal receiving, triggered the need for pygolang to also have cooperative IO because the goroutine, that implements low-level loop to receive signals from signal handler, uses pipe to block and to be woken-up through. The third patch ("Nogil IO") provides this facility.
The other patches complement and support those two main steps.