blob: a0377362162a53c7be807af83a42cd29c0067978 [file] [log] [blame]
Avro Change Log
Avro 1.2.0 (14 October 2009)
INCOMPATIBLE CHANGES
AVRO-115. Remove RPC's session notion to facilliate the use of
stateless transports like UDP and HTTP. Add a UDP transport.
(cutting)
AVRO-120. Improved package and namespace handling, including:
* Removed explicit package-name specification from specific and
reflect public APIs. Package names are now determined either
by namespace declarations or by a Java classes, as appropriate.
* Changed the specific compiler to generate separate java files
per class, rather than nested classes. This permits generated
classes to be in packages declared in their schema namespaces.
* Fix namespace defaulting. The default namespace is declared in
the outermost schema or protocol. Nested schemas can now
declare different namespaces than the default.
* Names may now be specified with a dotted notation, e.g.,
"foo.bar.Baz", to indicate the name "Baz" in namespace
"foo.bar". This permits one to refer to schemas in a namespace
other than the default.
NEW FEATURES
AVRO-121. Permit reflect and specific datum readers to read data
written with a different version of the schema than is current.
(cutting)
AVRO-129. Add HTTP-based RPC client and server. (cutting)
AVRO-24. Add a simple bulk-data benchmark. (cutting)
AVRO-139. Refactor HTTP servlet to separate, public class. (cutting)
IMPROVEMENTS
AVRO-99. Use Boost framework for C++ unit tests.
(Scott Banachowski via cutting)
AVRO-116. Make C++ compatible with Boost 1.32.
(Scott Banachowski via cutting)
AVRO-119. Add Java GenericData.Array#toString() implementation,
to facillitate debugging. (cutting)
AVRO-118. JSON encoder and decoder now permit one to write
multiple instances without flushing or explicitly resetting the
codec between each instance. (Thiruvalluvan M. G. via cutting)
AVRO-133. Update version number in specification document and
documentation tab automatically from build version. (cutting)
AVRO-131. Permit specification of JUnit test output format.
(Giridharan Kesavan via cutting)
AVRO-134. Update data file format specification to include
reserved metadata keys "codec" and "sync". The only codec
currently defined is "null". (Thiruvalluvan M. G. via cutting)
AVRO-138. Add a "unit-test-java" Ant target that runs tests
without running checkstyle or javadoc. (Thiruvalluvan M. G. via
cutting)
AVRO-140. Add javadoc to public classes with none. (cutting)
OPTIMIZATIONS
BUG FIXES
AVRO-132. Fix multi-threading race condition when threads share schema objects.
(sbanacho)
AVRO-113. Fix endian bug with C++ integer/long varint codec.
(Scott Banachowski via cutting)
AVRO-117. Fix memory leak in C++ JSON parser.
(Scott Banachowski via cutting)
AVRO-122. Fix so that, when multiple Ant targets are specified on
the command line that depend on ivy, ivy does not fail. (phunt
via cutting)
AVRO-123. Fix Java's specific protocol compiler so that
parameters and return types are unboxed. (cutting)
AVRO-125. Fix sample protocol in specification document to use
the correct syntax. (cutting)
AVRO-101. Add Java reflect API test case using nested classes.
(Eelco Hillenius via cutting)
AVRO-124. Remove Ivy's jar from distributions. (cutting)
AVRO-137. Suppress warnings in generated java code. (cutting via sharad)
Avro 1.1.0 (8 September 2009)
INCOMPATIBLE CHANGES
AVRO-110. GenericData and ReflectData have been converted to use a
singleton pattern. Calls to static methods on these classes must
be replaced with calls on the singleton instance. (cutting)
AVRO-41. GenericArray's constructor now requires a Schema, so that
it may implement Comparable consistently with AVRO-108. (cutting)
AVRO-41. Several GenericDatumWriter methods (instanceOf(),
isRecord(), etc.) have been moved to GenericData, where they can
better be shared with comparators. Applications which subclassed
GenericDatumWriter overriding these methods must now instead
subclass GenericData and pass their subclass to
GenericDatumWriter. (cutting)
AVRO-41. SpecificRecord's schema() method has been renamed
getSchema(), since it now implements the new GenericContainer
interface shared with GenericRecord. (cutting)
NEW FEATURES
AVRO-50. Implmenent JSON data codec in Java. (Thiruvalluvan
M. G. & cutting)
AVRO-76. Add Java RPC plugin framework. (George Porter)
AVRO-104. Permit null fields in Java reflection.
(Eelco Hillenius via cutting)
AVRO-92. Describe JSON data encoding in specification
document. (cutting)
AVRO-108. Add Java implementation of binary comparator.
(cutting)
AVRO-41. Java generic and specific data instances now implement
Comparable. The implementation is consistent with the binary
comparator added in AVRO-108. (cutting)
AVRO-109. Add Java support for controlling sort order via schema
annotations. Record fields now support an "order" attribute whose
possible values are "increasing" (the default), "decreasing", and
"ignore". (cutting)
AVRO-111. Document sort ordering in the specification. (cutting)
IMPROVEMENTS
AVRO-71. C++: make deserializer more generic. (Scott Banachowski
via cutting)
AVRO-60. Fix C JSON parser to correctly handle escapes and
multi-byte characters. Add tests. (Matt Massie via cutting)
AVRO-54. Re-upgrade to testng 5.9 and re-enable listeners. (cutting)
AVRO-82. Add checkstyle to java compilation. (Thiruvalluvan
M. G. via cutting)
AVRO-81. Switch back from TestNG to JUnit. (Konstantin Boudnik via
cutting)
AVRO-84, AVRO-85. Clarify a few things in the specification
document. (Thiruvalluvan M. G. and cutting)
AVRO-89. In fields of Java generated classes, use unboxed numeric
types. (cutting)
AVRO-83. In generated Java code, elide unions with null. (cutting)
AVRO-98. Fix C++ schema parser to permit JSON attributes in any
order and to ignore extra attributes. (Scott Banachowski via cutting)
OPTIMIZATIONS
BUG FIXES
AVRO-78. Fix Java reflect to work on non-public fields. (cutting)
AVRO-79. Specify format for default fixed values, and implement
correctly in Java. (Thiruvalluvan M. G. via cutting)
AVRO-87. Fix broken links in javadoc introduced by AVRO-82. Also
change test-java build target to fail on javadoc warnings.
(Thiruvalluvan M. G. and cutting)
AVRO-90. Fix Java's JSON codec to correctly encode unions. (cutting)
AVRO-95. Fix writing of Java reflect-based unions. Also extend
DataFileWriter to permit adding branches to a union schema while
writing.
AVRO-88. Fix Java's BlockingBinaryEncoder to correctly override
writeEnum(). (Ravi Gummadi via cutting)
AVRO-61. Add Python support for reading blocked data.
(Ravi Gummadi via cutting)
AVRO-97. Fix various C++ bugs. (Scott Banachowski via cutting)
AVRO-100. In spec, remove warning about blocking being draft. (cutting)
AVRO-107. Fix Protocol#equals() and Protocol#hashCode() to
consider the protocol's types, and also fix Schema#equals() to not
throw ClassCastException when a fixed schema is compared to
non-fixed. (cutting)
AVRO-112. Turn off C++ debug output. (Scott Banachowski via cutting)
AVRO-114. Fix "cdoc" Ant target to correctly run doxygen.
(Matt Massie via cutting)
Avro 1.0.0 -- 9 July 2009
INCOMPATIBLE CHANGES
AVRO-1. Record fields are now defined with JSON arrays, rather
than JSON objects, since fields are ordered. (cutting & sharad)
AVRO-9. Restrict map keys to strings. (cutting & sharad)
AVRO-2. Optimized RPC handshake protocol for Java. (cutting)
AVRO-57. Make ValueWriter an abstract class named Encoder and make
ValueReader an abstract class named Decoder, and add concrete
implementations named BinaryEncoder and BinaryDecoder. (cutting)
AVRO-46. Optimized RPC handshake protocol for Python. (sharad)
AVRO-66. Add per-call RPC metadata to Java and Python. (George
Porter & cutting)
NEW FEATURES
AVRO-6. Permit easier implementation of alternate generic data
representations, especially records with integer-indexed fields.
(Hong Tang via cutting)
AVRO-8. Add Java support for default values. (cutting)
AVRO-33. C support for primitive types. (Matt Massie via cutting)
AVRO-18. Add support for enum types. (cutting & sharad)
AVRO-10. Add Java support for fixed-sized types. (cutting)
AVRO-38. Add Python support for fixed-sized types. (sharad)
AVRO-42. Add partial C++ implementation. (Scott Banachowski via cutting)
AVRO-25. Add blocking value writer that permits arbitrarily long
arrays and maps to be efficiently written as sequences of blocks.
(Thiruvalluvan M. G. via cutting)
AVRO-48. Add JSON parser for C. (Matt Massie via cutting)
AVRO-29. Add to Java a validating encoder & decoder, and a
resolving decoder. (Thiruvalluvan M. G. & Raymie Stata)
AVRO-67. Add per-call RPC metadata to spec. (George Porter via cutting)
AVRO-28. Add Python support for default values. (sharad via cutting)
IMPROVEMENTS
AVRO-11. Re-implement specific and reflect datum readers and
writers to leverage AVRO-6. (cutting)
AVRO-13. Use dictionary instead of if-else in validate. (sharad)
AVRO-5. Add java versus python RPC interoperability tests.
(sharad)
AVRO-16. Minor documentation improvements. (cutting)
AVRO-15. Override __eq__() and __hash__() in Schema classes.
(sharad)
AVRO-26. Switch tests from JUnit to TestNG. (Konstantin Boudnik
via cutting)
AVRO-34. Upgrade to Jackson version 1.0.0. (cutting)
AVRO-37. Add C api docs. Also link to py docs. (Matt Massie & cutting)
AVRO-32. Java specific generated record classes now implement
equals() and hashCode(). (cutting)
AVRO-48. Remove unused imports and annotations.
(Thiruvalluvan M. G. via cutting)
AVRO-53. Use Ivy to retrieve Java dependencies. (cutting)
AVRO-56. Use Jackson to generate JSON from Java. (cutting)
AVRO-36. Correctly encode and decode binary default values.
(cutting)
AVRO-59. C++: make serializer more generic. (Scott Banachowski
via cutting)
AVRO-68. Add license headers to C sources and improve C packaging.
(Matt Massie via cutting)
OPTIMIZATIONS
BUG FIXES
AVRO-3. Fix ValueReader to throw an exception at EOF.
(Pat Hunt via cutting)
AVRO-4. Fix so that specific code generation works under Eclipse.
(Pat Hunt via cutting)
AVRO-14. Fix so that EOF is not thrown when one attempts to read
an empty buffer. (sharad via cutting)
AVRO-31. Fix Java package imports in generated specific classes.
(sharad via cutting)
AVRO-21. Default Java namespace from containing definition. (cutting)
AVRO-12. Fix recursive schemas in Java so that equals() and
hashCode() do not cause a stack overflow. (cutting)
AVRO-22. When parsing schemas in Java, do not permit anonymous.
(cutting)
AVRO-39. Fix bug in Java record schema toString(). (sharad)
AVRO-40. Fix typo in specfication, where 'unsigned' was used where
'signed' was intended. (cutting)
AVRO-44. Fix so that 'ant clean' works even if C has not been
built. (Matt Massie via cutting)
AVRO-45. Fix c++ compliation so that python script need not be
made executable. (Scott Banachowski via cutting)
AVRO-51. Fix testio.py to exit correctly. (Philip Zeyliger
via sharad)
AVRO-55. Fix two spec document typos. (cutting)
AVRO-69. Make C's install-sh script executable. (Matt Massie via cutting)
AVRO-70. Add license header to json_schema.y. (Matt Massie via cutting)
AVRO-74. Add missing license headers in C++. (cutting)
AVRO-73. Workaround in python to fix simplejson bug on Mac OS. (sharad)
AVRO-64. Fix socket and parser issue on Mac OS. (sharad)
AVRO-77. Fix C unit tests on Mac OS. (Matt Massie via cutting)