use Sereal qw( get_sereal_decoder get_sereal_encoder clear_sereal_object_cache encode_sereal decode_sereal write_sereal read_sereal looks_like_sereal sereal_encode_with_object sereal_decode_with_object decode_sereal_with_header_data scalar_looks_like_sereal sereal_decode_with_header_with_object sereal_decode_only_header_with_object sereal_decode_only_header_with_offset_with_object sereal_decode_with_header_and_offset_with_object sereal_decode_with_offset_with_object ); # Note: For performance reasons, you should prefer the OO interface, # or sereal_(en|de)code_with_object over the stateless # encode_sereal/decode_sereal functions. # See the Sereal::Performance documentation for details.
This "Sereal" module is a very thin wrapper around both "Sereal::Encoder" and "Sereal::Decoder". It depends on both and loads both. So if you have a user of both encoder and decoder, it is enough to depend on a particular version of "Sereal" and you'll get the most recent released versions of "Sereal::Encoder" and "Sereal::Decoder" whose version is smaller than or equal to the version of "Sereal" you depend on.
The protocol specification and many other bits of documentation can be found in the github repository. Right now, the specification is at <https://github.com/Sereal/Sereal/blob/master/sereal_spec.pod>, there is a discussion of the design objectives in <https://github.com/Sereal/Sereal/blob/master/README.pod>, and the output of our benchmarks can be seen at <https://github.com/Sereal/Sereal/wiki/Sereal-Comparison-Graphs>.
You can optionally import five functions from "Sereal". "encode_sereal" is the same function as Sereal::Encoder's "encode_sereal" function. "decode_sereal" and "looks_like_sereal" are the same as Sereal::Decoder's functions of the same names. Finally, you can import the advanced functional interface "sereal_encode_with_object" and "sereal_decode_with_object". Again, see Sereal::Performance for information about those.
After loading the "Sereal" module, both "Sereal::Encoder" and "Sereal::Decoder" are guaranteed to be loaded, so you can use their object-oriented interface.
For support and discussion of Sereal, there are two Google Groups:
Announcements around Sereal (extremely low volume): <https://groups.google.com/forum/?fromgroups#!forum/sereal-announce>
Sereal development list: <https://groups.google.com/forum/?fromgroups#!forum/sereal-dev>