Extend obj->iternext to handle not just __next__(), but also send() method
For generators (generalization of iterators), .__next__() method is defined as .send(None). It's only natural to extend C-level ->iternext() method to accept send argument, to allow implementation of C-level generators optimally. Caveat: so far, none of such exist. But work on optimizing uasyncio may lead to need for such. Or maybe not, maybe "virtual" awaitable methods will be used instead: https://github.com/micropython/micropython/issues/2622 .
This ticket is created to be referenced by in-code TODO comments (yes, I think we reached that code complexity that need to reference tickets straight from code).
RFC: Inheriting base class should copy "protocol" vtables to subclass
After long thinking how to approach issues like https://github.com/micropython/micropython/pull/2091#issuecomment-220724740 or subclassing stream classes in Python, I guess what we need is subj.
The idea (applied to Pin classes) would be: have unix modumachine implement PinBase class. It's Pin C-level pin protocol (which we again and again can't introduce and take adhoc hardware-specific shortcuts instead), would have implementation of looking up an calling Python-level methods. Then when Python code will inherit from such base class, "Pin" protocol vtable should be copied to it, so everything work as expected, as with minimal overhead to other classes.