Having slept on it and given the extra info you've provided I'm more comfortable with the proposed solution now. :)
So the result will be that on 32-bit architectures only 32-bit (signed) ints will be allowed through channels. On 64-bit platforms (and higher) it will still be 64-bit ints. That's a livable outcome, particularly since 32-bit platforms already have to deal with such variation already. :) Plus, the consistency with sys.maxsize makes sense.
The alternative (on 32-bit arch) would be to send through a struct containing the long long, similar to what we do for str and bytes. I don't think that's worth it. If it matters we can do something like that later (since it's an implementation detail).
Consequently, I've approved the PR. I'll merge it in a little while.
Thanks for working on this. |