Apache Avro™, a data serialization software, is available. Avro offers rich data structures, a compact and fast binary data format, a container, to store persistent information, remote procedure calls (RPC), and more. It also allows for easy integration with dynamic languages. It is not necessary to generate code to read and write data files or to implement RPC protocols. Only statically typed languages can use code generation. Schemas are essential for Avro. The schema used to write Avro data is always available when Avro data are read. This allows each datum to be written quickly and without any per-value overheads. This allows for dynamic, scripting languages to be used. Data, along with its schema, are fully self-describing. If Avro data is saved in a file, the schema is also stored with it. This allows programs to later process files. This can be resolved if the program reading the data expects something different.