Hello,
On Wed, 2 Dec 2020 09:16:56 +1100
Chris Angelico
On Wed, Dec 2, 2020 at 9:10 AM Paul Sokolovsky
wrote: On Wed, 2 Dec 2020 03:02:26 +1100 Chris Angelico
wrote: If there are special-purpose cut-down implementations that provide a more restricted environment in return for some other feature (say, "being able to run in a web browser", or "being able to run on a microcontroller"), then that's fine,
Kinda yes, except not as vulgar as examples above. More like "being able to develop a JIT which doesn't cost million dollars" (extra points if that still can run on a microcontroller!).
That's completely the opposite of what I was talking about, then. If the goal is to develop a JIT compiler, then it should surely be part of the main implementations of the language - the ones that are broadly compatible with each other. Cut-down Python implementations are NOT fully compliant with the language spec, and that's okay, because nobody expects them to be.
If the restricted execution model is incompatible with most Python scripts, why would anyone bother to use it?
E.g. because someone who would want to experiment with JIT, would need to apply similar restrictions anyway.
Does it actually offer performance advantages better than PyPy, which JIT-compiles and is able to run normal Python scripts?
As I mentioned in another response, it's all contrarian approach, right from the start. It's not whether PyPy offers performance advantages, it's whether it runs in the target environments I consider interesting at all. The answer is NO. I then consider what it does to NOT run in the environments I find interesting. It runs unmodified scripts, and throws unlimited amounts of memory at that. So, I see how to modify scripts in such a way to NOT throw unneeded memory at trivial things, while only improving the code hygiene. I get that it's hard to get ;-). Besides that, it also implements runtime support for "const" variables, which is closer to matters of CPython level. (E.g., if there's support for constants, CPython's pattern matching doesn't need to go for ugly workarounds of forcing to use "case Somewhere.SOMETHING", it can be just "case SOMETHING:").
ChrisA
-- Best regards, Paul mailto:pmiscml@gmail.com