Hi, On 05/12/2019 12:54 pm, Tal Einat wrote:
On Tue, Dec 3, 2019 at 6:23 PM Mark Shannon <mark@hotpy.org <mailto:mark@hotpy.org>> wrote:
Hi Everyone,
I am proposing a new PEP, still in draft form, to impose a limit of one million on various aspects of Python programs, such as the lines of code per module.
Any thoughts or feedback?
My two cents:
I find the arguments for security (malicious code) and ease of implementation compelling. I find the point about efficiency, on the other hand, to be almost a red herring in this case. In other words, there are great reasons to consider this regardless of efficiency, and IMO those should guide this.
I do find the 1 million limit low, especially for bytecode instructions and lines of code. I think 1 billion / 2^32 / 2^31 (we can choose the bikeshed color later) would be much more reasonable, and the effect on efficiency compared to 2^20 should be negligible.
The effect of changing the bytecode size limit from 2^20 to 2^31 would be significant. Bytecode must incorporate jumps and a lower limit for bytecode size means that a fixed size encoding is possible. A fixed size encoding simplifies and localizes opcode decoding, which impacts the critical path of the interpreter.
I like the idea of making these configurable, e.g. adding a compilation option to increase the limit to 10^18 / 2^64 / 2^63.
While theoretically possible, it would be awkward to implement and very hard to test effectively.
Mark, I say go for it, write the draft PEP, and try to get a wider audience to tell whether they know of cases where these limits would have been hit.
- Tal Einat