I have just released a new prop loader:
The underlying Serial library is portable, so this loader should work on Mac, Linux, and Windows (I've only tested it on Mac).
I know that this is a solved problem but I wanted a loader with specific features for a project I have in mind. I also wanted an interesting project to work on as I learned C++. (My previous paid programming work was in Flash, which isn't that marketable these days.)
This loader is object based, asynchronous, multi-threading safe, and its operations are cancellable. It provides updates, including timing estimates, as it loads. When errors occur it provides (hopefully) useful information.
The intermediate layer between itself and the Serial library -- HSerial -- is something I wrote which allows coordinated serial port use. Serial port objects (controllers in HSerial terminology) can ask to use a serial port (be made active), and the currently active controller can accept the request, or refuse while providing useful information. A communications object can continue listening right up until the loader wants to use the port. Or a loader can refuse to relinquish the port until its task is done or is cancelled (as AsyncPropLoader does).
My ultimate goal is to use this work as part of a set of CPython extensions I have in mind. I am currently using the HSerial library to create an object for communicating with a prop using a command response model. This generic communications layer, PropCR, will then be used to build a python extension that will allow users to query and interact with a prop at a high level. A user will be able to read and write exposed properties of the prop as easily as working with a variable. More complicated objects -- queues, buffers, signals, watches, callbacks -- are also possible.
Python appeals to me because its read-eval-print loop invites play. With inexpensive computers such as the Raspberry PI it can be deployed anywhere. The propeller appeals to me because its cogs make it the ultimate real-time peripheral for such a computer. Combining the two just makes sense.
I don't know when I will have the time to see all of these ideas to completion, but I know that there's plenty left in the propeller to hold my interest for a long time.