Few comments:
Well, I'd leave that until later too. The whole idea is to just provide basic implementation, common ground for different people to start from or play with. It should be reusable (i.e. be able to use existing Python-level objects), not be super-efficient. Of course, unless it's just too slow (but then, how much speed you can expect from a serial connection? 115200 baud is 10KB/s. Bottleneck would be an I/O, not bufferbloat.)The SLIP interface with the UART module is inefficient. It would make more sense to have the UART receive interrupt copy data directly into the pbuf instead of going through an intermediary buffer in the heap. Doing that would require some work on the UART module, though.
As far as I saw, non-blocking mode is a bit easier to do than blocking, so I'm not sure why you got blocking implemented first. Anyway, it should be pretty simple to add basic non-blocking. Maybe you means all the corner cases and BSD sicket compliance as much as possible - that yes, may require more work.Next steps ... non-blocking mode
Thanks again, please keep us posted!