bpo-40286: Makes simpler the relation between randbytes() and getrandbits()#19574
Conversation
ca69ca5 to
210abfe
Compare
April 17, 2020 19:17
SystemRandom.random(), SystemRandom.getrandbits() and random.Random.seed(bytes) all use big endian. I don't have a strong preference about the endian. I chose big endian since it's the "network endian" and so commonly used in the wild. |
Sorry, something went wrong.
pitrou
left a comment
There was a problem hiding this comment.
Can you post benchmark numbers?
Sorry, something went wrong.
|
SystemRandom is not deterministic, so we can use any endianess with it and change it without breaking compatibility. seed() is unrelated too. The little endian is used because |
Sorry, something went wrong.
|
FYI test_random passed with my randbytes() change on this PPC64 buildbot which is big endian: |
Sorry, something went wrong.
|
Another example of big endian buildbot, PPC64 Fedora 3.x: |
Sorry, something went wrong.
There is no consistent difference. |
Sorry, something went wrong.
* master: (1985 commits) bpo-40179: Fix translation of #elif in Argument Clinic (pythonGH-19364) bpo-35967: Skip test with `uname -p` on Android (pythonGH-19577) bpo-40257: Improve help for the typing module (pythonGH-19546) Fix two typos in multiprocessing (pythonGH-19571) bpo-40286: Use random.randbytes() in tests (pythonGH-19575) bpo-40286: Makes simpler the relation between randbytes() and getrandbits() (pythonGH-19574) bpo-39894: Route calls from pathlib.Path.samefile() to os.stat() via the path accessor (pythonGH-18836) bpo-39897: Remove needless `Path(self.parent)` call, which makes `is_mount()` misbehave in `Path` subclasses. (pythonGH-18839) bpo-40282: Allow random.getrandbits(0) (pythonGH-19539) bpo-40302: UTF-32 encoder SWAB4() macro use a|b rather than a+b (pythonGH-19572) bpo-40302: Replace PY_INT64_T with int64_t (pythonGH-19573) bpo-40286: Add randbytes() method to random.Random (pythonGH-19527) bpo-39901: Move `pathlib.Path.owner()` and `group()` implementations into the path accessor. (pythonGH-18844) bpo-40300: Allow empty logging.Formatter.default_msec_format. (pythonGH-19551) bpo-40302: Add pycore_byteswap.h header file (pythonGH-19552) bpo-40287: Fix SpooledTemporaryFile.seek() return value (pythonGH-19540) Minor modernization and readability improvement to the tokenizer example (pythonGH-19558) bpo-40294: Fix _asyncio when module is loaded/unloaded multiple times (pythonGH-19542) Fix parameter names in assertIn() docs (pythonGH-18829) bpo-39793: use the same domain on make_msgid tests (python#18698) ...
It may also make
randbytes()faster on littleendian platforms.https://bugs.python.org/issue40286