Compatibility of persistent models across different python versions
We have already two compatibility layers - for grammar version and for data serialization schema version. Another aspect is the serialization of the compiled functions using the dill package. There seems to be incompatibility across different Python versions. The pickle serialization is guaranteed to be backwards compatible to older Python versions and dill also attempts to ensure this compatibility but there seem to be issues with serialized functions with dill. This prevents persistent variables in relevant states (WAITING, READY, RESERVED) from being evaluated with an incompatible Python version. Variables that have been completed (state COMPLETED) are not affected.
There should be some guard to prevent the error that occurs in case of incompatibility: SystemError: unknown opcode. The exception should be caught to prevent the statement state to become FIZZLED. Moreover, there should be a local metadata tag to indicate the original Python version with which the function has been compiled so that the user can try to switch to that version for evaluation. If switching to the original Python version is not possible or not wanted then one can use the variable update mechanism with the := operator to enforce re-interpreting the variable parameter and recompiling the function.