3 ms·
It’s about having a complete specification so that the compiler and VM can be correct. Correctness when you have arbitrarily long input gets complicated very e
by swiley 7y ago
It’s about having a complete specification so that the compiler and VM can be correct.
Correctness when you have arbitrarily long input gets complicated very easily. I was originally skeptical when reading, it seemed ridiculous and arbitrary, until I realized that’s what they were going for.
- sitkack 7y agoIt is not. Python already doesn't have a spec, it has the CPython interpreter. This is repainting the facade while you still have a sump pump that isn't working. There are a myriad of better ways to improve Python and this isn't it.
- matheusmoreira 7y ago> Correctness when you have arbitrarily long input gets complicated very easily. Indeed. Accepting arbitrary inputs frequently requires an arbitrary amount of resources. Even if there are no vulnerabilities to exploit, a denial of service attack may still be possible because processing untrusted input can result in massive memory allocations. A concrete example I've recently dealt with: https://github.com/multiformats/unsigned-varint/blob/master/README.md#practical-maximum-of-9-bytes-for-security https://github.com/multiformats/unsigned-varint/blob/master/... These variable length integers may consume an unbounded amount of memory when decoded. I think it's wise to constrain this by default and let the caller increase or turn off the limits if they want: decode(buffer) # max=9, per spec decode(buffer, max=64) decode(buffer, max=math.inf)