06.04.20 06:48, Jonathan Goble пише:
My question is, are the opcodes guaranteed stable across the lifetime of a single 3.x release? In other words, are they guaranteed to not change values or semantics between 3.x.y and 3.x.(y+1)? Reading through the list of opcodes in the dis documentation, it seems that all changes have occurred in 3.x.0, so it seems the answer would be yes, but then the "CPython implementation detail" paragraph at the top doesn't specify that and is a little vague on whether that's true or not.
At least once it was changed in the bugfix release (3.5.2). It was minor change, and mostly compatible, but it changed the magic number, so all pyc files were needed to regenerate, and *that* caused problems for distributors. We no longer want to repeat this. But I do not know what we will do if a fatal flaw in the bytecode be found after release.