Cameron Simpson added the comment:

I'd like speak my support for bitwise ops on bytes and bytearray (agree, on 
equal lengths only).

I've got 2 arguments here:

- readability: a ^ b, a | b and so forth are clear and direct

- all the various incantation presented must be _understood_, not to mention 
invented anew by anyone wanting to do they same, with the same burden of 
getting it correct; of course one can say the same of any feature not already 
present in a language but that is trite; there are several ways to say this and 
all have varying degrees of speed, obtuseness and verbosity. And they're all 
SLOW.

Regarding some of the counter arguments in the discussion:

- gregory.p.smith in reply to cowlicks: "Security claims?  Nonsense. This has 
nothing to do with security.  It is *fundamentally impossible* to write 
constant time side channel attack resistant algorithms [...]"

Maybe cowlicks should have said "reliable", though to my naive eye a normal 
implementation would be constant time for a given size. I would argue that the 
clarity and directness of just writing "a^b" immediately makes for trivially 
correct code, which itself is a necessary prerequisite for secure code.

- gregory.p.smith again: "Neither of the above "look as nice" as a simple 
operator would. But they are at least both understandable and frankly about the 
same as what you would naively write in C for the task."

This is not an argument against the feature. That one had to perform similar 
activitie in Python as in C merely reflects the present lack of these 
operators, not a preexisting gleaming sufficiency of operator richness.

- Terry J. Reddy: "'XOR of two bytes in one place' strikes me as a thin excuse 
for a new feature that abbreviates a simple, short, one-liner". Christian 
Heimes's code has this single example, but anyone wanting to work on chunks of 
bytes may find themselves here. Just because a lot of things can be 
written/constructed as one liners doesn't mean they should be operators when 
(a) the operator is available (==unused) for this type, (b) the meaning of the 
operator is straight forward and intuitive and (c) any pure Python construction 
is both wordier and much slower.

Anyway, I an for this feature, for the record.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue19251>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to