My apologies for the empty mail, it would seem that my client somehow did not send my reply.
It is no longer necessary to load a module immediately after saving it. saveModule puts the saved module into the same storage as loaded modules.
When a module is saved it is only dependent on other modules if it actually uses something from them. This needs a bit more work since it is currently possible for a module to inadvertently share immutable data particularly if PolyML.shareCommonData has been called.
The signature for a module is now derived from a hash of the contents itself rather than a time-stamp.
Thank you, this is great! I have indeed met some extra dependencies, particularly when strings are involved, but it can be fixed by a copying the strings, though I am not sure how that holds if a gc happens at the same time. (By the way, is there a more efficient way than CharVector.tabulate?)
It may be a good idea to combine the two to ensure that the the signatures are properly unique.
I think this is needed. Most signature collisions I've found happened with very small exports, though those have been fixed since copying strings, but I'm still finding a few for completely unrelated values.