Performance improvements
This release has a number of changes under the hood to make raveloxmidi more performant. Thanks go to karnevil9 for sticking with this one.
Firstly, there are is a new thread responsible for sending MIDI events out to listeners. Previously, data from ALSA devices was read into a buffer and then parsed down to each MIDI event. Once that data was parsed, the events were sent out. With this new thread, as each MIDI event is discovered, it will be written to a queue for the new thread to send immediately.
I've also rationalised the amount of thread locking to avoid contention.
Additionally, there are a couple of new configuration options:
journal.write
If set to yes it will enable the MIDI recovery journal. The default is no.
logging.hex_dump
If set to yes, data buffers are dumped out to the debug log. This can slow performance for large data buffers. The default is no.
Finally, for debugging, additional logging can be generated for each memory allocation and release. An environment variable RAVELOXMIDI_MEM_FILE can be set to the name of a file to log the extra information into. This should only be enabled on request.