Please explain how to deal with PicklerUnpicklerNotFound
I'm currently getting a runtime NotImplementedError from PicklerUnpicklerNotFound, and I'd like to know what the general strategies should be for working around it.
As this is the most common bug I've found while using pickling, maybe it deserves a section in the README.
I'm also wondering why it even exists; it seems to push detectable compile-time errors (no pickler found) into a runtime error.
I'm not sure what you mean by PicklerUnpicklerNotFound, as that may have changed in the 0.10.x branch.
HOwever: I'll talk about instances where we throw exceptions due to not finding expected tags/types at runtime. The issue comes into play because we DON'T have enough static information to make good decisions.
I've just recently taken a crack at redoing all the macros, which should dramatically improve the experience of using import static._ in pickling. However, here's an example where we cannot statically generate a correct pickler/unpickler:
case class Foo(x: Int)
PicklerUnpickler.generate[Foo]
Why? The class is not final, and therefore allows open extension. The PicklerUnpicklerNotFound exceptions will be thrown if you pass a subclass of Foo, but you're limiting the pickler to statically known types.
In the 0.11.x this should issue a warning/error if you're compiling in a staticOnly context. I'd encourage you to try out the branch and let us know if you see any issues.