Avro Change Log

Trunk (not yet released)

  INCOMPATIBLE CHANGES

  NEW FEATURES

  OPTIMIZATIONS

  IMPROVEMENTS

    AVRO-1793. Python2: Retain stack trace and original exception when failing
    to parse schemas. Contributed by Jakob Homan (jghoman).

    AVRO-1778: JavaScript: Add IPC/RPC support. (mtth)

    AVRO-1824: C++: Fix docs for building Avro C++. (William S. Fulton via blue)

    AVRO-1701: Fix for "warning: comparison between 'const enum testgen_r::ExampleEnum' and 'const enum testgen::ExampleEnum'" (peter liu via thiru)

    AVRO-1823: Java: Do not swallow IOException while reading magic bytes.
    (Koji Noguchi via blue)

    AVRO-1825: Allow running build.sh dist under git (nielsbasjes)

    AVRO-1819, AVRO-1820: Java: Add aliases, custom properties to Protocol.
    (Konstantin Usachev via blue)

    AVRO-1834: Lower the Javadoc warnings on the generated code. (nielsbasjes)

    AVRO-1835: Running tests using JDK 1.8 complains about MaxPermSize (nielsbasjes)

    AVRO-1828: Add EditorConfig file and cleanup of whitespace violations (nielsbasjes)

    AVRO-1839: Update the gitignore files to hide generated files (nielsbasjes)

    AVRO-1838: Java: Update checkstyle to catch trailing whitespace.
    (nielsbasjes via blue)

    AVRO-1840: Ensure that build.sh clean really cleans all generated files (nielsbasjes)

  BUG FIXES

    AVRO-1493. Java: Avoid the "Turkish Locale Problem". Schema fingerprints are
    now consistent regardless of the environment's locale.

    AVRO-1799: Fix GenericRecord#toString ByteBuffer handling. (blue)

    AVRO-1667: Fix parser grammar flattening for recursive cases.
    (Zoltan Farkas via blue)

    AVRO-1829. C++ documentation improvements (William S Fulton via thiru)

    AVRO-1821: Java: Fix possible memory leak in ReflectData accessor cache.
    (Bryan Harclerode via blue)

    AVRO-1642: Java: Do not generate invalid all-args constructor.
    (Prateek Rungta and Barry Jones via blue)

    AVRO-1826: build.sh rat fails over extra license files and many others (nielsbasjes).

    AVRO-1814: Generated java code fails on variables with a TLD name like 'org' (nielsbasjes)

    AVRO-1711: Java: Fix JsonParser#skipChildren to implement its defined contract.
    (Zoltan Farkas and Thiruvalluvan M. G. via blue)

Avro 1.8.0 (22 January 2016)

  INCOMPATIBLE CHANGES

    AVRO-1334. Java: Update versions of many dependencies. (scottcarey, cutting)

    AVRO-997. Java: For enum values, no longer sometimes permit any
    Object whose toString() names an enum symbol, but rather always
    require use of distinct enum types. (Sean Busbey via cutting)

    AVRO-1602. Java: Remove Dapper-style RPC trace facility.  This
    seems unused and has been a source of build problems.  (cutting)

    AVRO-1586. Build against Hadoop 2. With this change the avro-mapred and
    trevni-avro JARs without a hadoop1 or hadoop2 Maven classifier are Hadoop 2
    artifacts. To use with Hadoop 1, set the classifier to hadoop1.
    (tomwhite)

    AVRO-1502. Java: Generated classes now implement Serializable.
    Generated classes need to be regenerated to use this release. (cutting)

  NEW FEATURES

    AVRO-1555.  C#: Add support for RPC over HTTP. (Dmitry Kovalev via cutting)

    AVRO-739. Add date, time, timestamp, and duration binary types to
    specification. (Dmitry Kovalev and Ryan Blue via tomwhite)

    AVRO-1590. Java: In resolving records in unions, permit structural
    and shortname matches when fullname matching fails.
    (Ryan Blue via cutting)

    AVRO-570. Python: Add connector for tethered mapreduce.
    (Jeremy Lewi and Steven Willis via cutting)

    AVRO-834. Java: Data File corruption recovery tool.
    (scottcarey and tomwhite)

    AVRO-1614. Java: In generated builder classes, add accessors to
    field sub-builders, permitting easier creation of nested, optional
    structures. (Niels Basjes via cutting)

    AVRO-1537. Make it easier to set up a multi-language build environment.
    Support for running a Docker container with all build dependencies.
    (tomwhite)

    AVRO-680. Java: Support non-string map keys. (Sachin Goyal via Ryan Blue).

    AVRO-1497. Java: Add support for logical types. (blue)

    AVRO-1685. Java: Allow specifying sync in DataFileWriter.create
    (Sehrope Sarkuni via tomwhite)

    AVRO-1683. Add microsecond time and timestamp logical types to the
    specification. (blue)

    AVRO-1672. Java: Add date/time logical types and conversions. (blue)

    AVRO-1747. JS: Add Javascript IO implementation. (Matthieu Monsch via blue)

    AVRO-1767. JS: Fall back to unwrapped union values. (Matthieu Monsch via blue)

    AVRO-1784. C++: Should have a json encoder that pretty prints. (John McClean via thiru)

  OPTIMIZATIONS

    AVRO-1760. Java: Thread scalability problem with the use of SynchronizedMap
    (tomwhite)

  IMPROVEMENTS

    AVRO-843. C#: Change Visual Studio project files to specify .NET 3.5.
    (Dmitry Kovalev via cutting)

    AVRO-1583. Java: Add stdin support to the tojson tool.
    (Clément Mahtieu via cutting)

    AVRO-1551. Java: Add an output encoding option to the compiler
    command line tool. (Keegan Witt via cutting)

    AVRO-1585. Java: Deprecate Jackson classes in public API. (tomwhite)

    AVRO-1619. Java: Improve javadoc comments in generated code.
    (Niels Basjes via cutting)

    AVRO-1616. Add IntelliJ files to .gitignore. (Niels Basjes via cutting)

    AVRO-1539. Java: Add FileSystem based FsInput constructor.
    (Allan Shoup via cutting)

    AVRO-1628. Java: Add Schema#createUnion(Schema ...) convenience method.
    (Clément Mahtieu via cutting)

    AVRO-1655. Java: Add Schema.createRecord with field list.
    (Lars Francke via blue)

    AVRO-1681. Improve generated JavaDocs.
    (Charles Gariépy-Ikeson via tomwhite)

    AVRO-1645. Ruby: Improved handling of missing named types.
    (Daniel Schierbeck via tomwhite)

    AVRO-1693. Ruby: Allow writing arbitrary metadata to data files.
    (Daniel Schierbeck via tomwhite)

    AVRO-1692. Allow more than one logical type for a Java class. (blue via
    tomwhite)

    AVRO-1697. Ruby: Add support for the Snappy codec to the Ruby library.
    (Daniel Schierbeck via tomwhite)

    AVRO-1739. Update Avro URLs and mailing lists. (Gabor Liptak via blue)

    AVRO-1765: JS: Update node.js version in docker to 4.x. (blue)

  BUG FIXES

    AVRO-1553. Java: MapReduce never uses MapOutputValueSchema (tomwhite)

    AVRO-1544. Java: Fix GenericData#validate for unions with null.
    (Matthew Hayes via cutting)

    AVRO-1589. Java: Fix ReflectData.AllowNulls to not create unions
    for primitive types. (Ryan Blue via cutting)

    AVRO-1591. Java: Fix specific RPC so that proxies implement hashCode(),
    equals() and toString(). (Mark Spadoni via cutting)

    AVRO-1489. Java: Avro fails to build with OpenJDK 8. (Ricardo Arguello via
    tomwhite)

    AVRO-1302. Python: Update documentation to open files as binary to
    prevent EOL substitution. (Lars Francke via cutting)

    AVRO-1598. Java: Fix flakiness in TestFileSpanStorage.
    (Ryan Blue via cutting)

    AVRO-1592. Java: Fix handling of Java reserved words as enum
    constants in generated code. (Lukas Steiblys via cutting)

    AVRO-1597. Java: Random data tool writes corrupt files to standard out.
    (cutting)

    AVRO-1596. Java: Cannot read past corrupted block in Avro data file.
    (tomwhite)

    AVRO-1564. Java: Fix handling of optional byte field in Thrift.
    (Michael Pershyn via cutting)

    AVRO-1407: Java: Fix infinite loop on slow connect in NettyTransceiver.
    (Gareth Davis via cutting)

    AVRO-1604. Java: Fix ReflectData.AllowNull to work with @Nullable
    annotations. (Ryan Blue via cutting)

    AVRO-1545. Python. Fix to retain schema properties on primitive types.
    (Dustin Spicuzza via cutting)

    AVRO-1623. Java: Fix GenericData#validate to correctly resolve unions.
    (Jeffrey Mullins via cutting)

    AVRO-1621. PHP: FloatIntEncodingTest fails for NAN. (tomwhite)

    AVRO-1573. Javascript. Upgrade to Grunt 0.4 for testing. (tomwhite)

    AVRO-1624. Java. Surefire forkMode is deprecated. (Niels Basjes via
    tomwhite)

    AVRO-1630. Java: Creating Builder from instance loses data. (Niels Basjes
    via tomwhite)

    AVRO-1653. Fix typo in spec (lenghted => length). (Sehrope Sarkuni via blue)

    AVRO-1656. Fix 'How to Contribute' link. (Benjamin Clauss via blue)

    AVRO-1652. Java: Do not warn or validate defaults if validation is off.
    (Michael D'Angelo via blue)

    AVRO-1655. Java: Fix NPE in RecordSchema#toString when fields are null.
    (Lars Francke via blue)

    AVRO-1689. Update Dockerfile to use official Java repository. (tomwhite)

    AVRO-1576. TestSchemaCompatibility is platform dependant.
    (Stevo Slavic via tomwhite)

    AVRO-1688. Ruby test_union(TestIO) is failing. (tomwhite)

    AVRO-1673. Python 3 EnumSchema changes the order of symbols.
    (Marcin Białoń via tomwhite)

    AVRO-1491. Avro.ipc.dll not included in release zip/build file.
    (Dmitry Kovalev via tomwhite)

    AVRO-1676. Java: Do not treat enum symbols as immutable when deep copying.
    (Mike Rodriguez via tomwhite)

    AVRO-1593. C++: Use classic locale to escape control chars.
    (Hatem Helal via blue)

    AVRO-1700. C++: Fix avro_BufferStreambuf_hh__ header guard.
    (Liu Yanbo via blue)

    AVRO-1715. Java: Close files opened by the Schema parser.
    (Pavel Safrata via blue)

    AVRO-1729: Ruby: Add LICENSE and NOTICE to ruby gems. (blue)

    AVRO-1732: C++: Add LICENSE and NOTICE to binary distribution. (blue)

    AVRO-1733: C#: Add LICENSE and NOTICE to binary distribution. (blue)

    AVRO-1755. Java: avro-mapred should not depend on avro-ipc:test.
    (Clément MAHTIEU via tomwhite)

    AVRO-1754. C++ ValiditingDecoder handles null incorrectly. (John McClean via thiru)

    AVRO-1731: C: Add LICENSE and NOTICE to binary distribution. (blue)

    AVRO-1735: Perl: Add LICENSE and NOTICE to distribution. (blue)

    AVRO-1736: PHP: Add LICENSE and NOTICE to distribution. (blue)

    AVRO-1730: Python 2, 3: Add LICENSE and NOTICE to distribution. (blue)

    AVRO-1722: Update root LICENSE.txt and NOTICE.txt. (blue)

    AVRO-1584: Java: Escape characters not allowed in JSON in toString. (blue)

    AVRO-1728: Java: Add LICENSE and NOTICE files to jars. (blue)

    AVRO-1572: C: Fix EOF handling on data files that are multiples of
    4096 bytes. (Ben Walsh via martinkl)

    AVRO-1617: C: Fix equality checking of record schemas. (Skye
    Wanderman-Milne via martinkl)

    AVRO-1560: C: Fix build for custom libsnappy location. (Ujjwal via martinkl)

    AVRO-1770. Python 3 overwrites custom README.txt (blue via tomwhite)

    AVRO-1771. Add LICENSE and NOTICE to avro-doc artifact. (blue via tomwhite)

    AVRO-1772. Ruby: load error in rubygem when loading schema normalization.
    (blue and martinkl via tomwhite)

    AVRO-1725. Docs: clarify restrictions on enum symbols. (martinkl)

    AVRO-1779. Avro docs convenience artifact missing LICENSE/NOTICE.
    (blue via tomwhite)

    AVRO-1781. Java: Fix Schema.parse thread safety bug introduced by logical
    types. (blue)

    AVRO-1782. Ruby: Fix unit test failures in new versions of Ruby. (martinkl)

    AVRO-1769. C: Use operating system's libjansson instead of bundling
    it with Avro. (Magnus Edenhill via martinkl)

    AVRO-1691. C: Allow schemas consisting only of a primitive type.
    (Magnus Edenhill via martinkl)

    AVRO-1663. C: Fix handling of namespaces for enum and fixed types.
    (martinkl)

    AVRO-1775. Ruby: Use test-unit gem for running tests. (martinkl)

    AVRO-1783. Ruby: Ensure correct binary encoding for byte strings.
    (martinkl)

Avro 1.7.7 (23 July 2014)

  NEW FEATURES

    AVRO-1315. Java: Schema Validation utilities. (scottcarey and tomwhite)

    AVRO-1439. Java: Add AvroMultipleInputs for mapred. (Harsh J via cutting)

    AVRO-974. Add a Perl implementation of Avro. (Yann Kerhervé & John Karp)

    AVRO-1471. Java: Permit writing generated code in different
    character encodings. (Eugene Mustaphin via cutting)

    AVRO-1402. Add optional subtypes to specification, initially
    including a subtype of bytes and fixed for decimal values.
    (tomwhite & Ryan Blue via cutting)

    AVRO-1522. Java: Add support for compression codecs to SortedKeyValueFile.
    (Steven Willis via cutting)

    AVRO-1474. C++ resolvind decoder doesn't work when reader schema
    has more fields than writer schema. (thiru with help from Ramana
    Suvarapu)

    AVRO-1352. Schema for fixed types corrupted when writing out in
    JSON format (Steve Roehrs via thiru)

    AVRO-1533. Java: In schema resolution, permit conversion between
    bytes and string. (cutting)

  OPTIMIZATIONS

    AVRO-1455. Deep copy does not need to create new instances for primitives.
    (tomwhite)

  IMPROVEMENTS

    AVRO-1441. Java: Improve documentation for Maven configuration.
    (Jesse Anderson via cutting)

    AVRO-1447. Java: Remove dead code from example in documentation.
    (Jesse Anderson via cutting)

    AVRO-1449. Java: Optionally validate default values while reading schemas.
    (cutting)

    AVRO-1472. Java: Clarify parse method in getting started guide.
    (Michael Knapp via cutting)

    AVRO-1465. Java: Improve the error message when union dispatch fails.
    (Gabriel Reid via cutting)

    AVRO-1482. In specification, place "null" first in unions as best practice.
    (cutting)

    AVRO-1476. Java: Remove transient declaration from Schema.Field#position.
    (Robert Chu via cutting)

    AVRO-1512. Java: Support Thrift unions. (cutting)

    AVRO-1535. Java: Make the name .X to refer to X in the null namespace.
    This permits aliases to names in the null namespace. (cutting)

    AVRO-1536. Ruby: Remove monkeypatching of Enumerable.
    (Willem van Bergen via martinkl)

    AVRO-1546. Java: Change GenericData.Record#toString() to not
    escape forward slashes. (Brandon Forehand via cutting)

  BUG FIXES

    AVRO-1446. C#: Correctly handle system errors in RPC.
    (David Taylor via cutting)

    AVRO-1445. Java: Fix protobuf support to correctly handle enums
    with default values.  (cutting)

    AVRO-1436. C#: Fix tests to run multiple times. (David Taylor via cutting)

    AVRO-1458. Java: Setting char record field via reflection affects other
    fields. (tomwhite)

    AVRO-1454. Java: Fix GenericData#toString and AvroAsTextRecordReader
    to generate valid Json for NaN and infinities.  (cutting)

    AVRO-1473. Java: Fix references to names in the empty namespace.
    (Gabriel Reid via cutting)

    AVRO-1459. Ruby: Fix a typo in Rakefile that breaks 'gem install'.
    (Tomas Svarovsky via cutting)

    AVRO-1457. Java: Fix Encoder so that offset in non-array-backed
    ByteBuffers is not altered when written. (Rob Turner via cutting)

    AVRO-1442. Java: Fix ResolvingGrammarGenerator to work with fixed type.
    (Jim Pivarski via cutting)

    AVRO-1500. Java: Fix bug in handling of Thrift shorts in unions.
    (Michael Pershyn via cutting)

    AVRO-1513. Perl: Remove test plans from unit test files.
    (John Karp via cutting)

    AVRO-1462. Perl: Stop spurious serializer warnings about Non-ASCII
    decimal characters.  (John Karp via cutting)

    AVRO-1470. Perl: Fix encoding of boolean values. (John Karp via cutting)

    AVRO-1525. Java: ReflectData cannot resolve union with fixed. (tomwhite)

    AVRO-1499. Ruby: Fix encoding issue that caused corrupted data files
    to be written under Ruby 2.0+. (Willem van Bergen and martinkl)

    AVRO-1498. Java: Fix custom encodings to work in reflect without
    Unsafe access. (Christopher Mann via cutting)

    AVRO-1448. Python3: Fix setup.py installation through PyPI. (taton)

    AVRO-1540. C++ doesn't build in Ubuntu. (thiru)

Avro 1.7.6 (15 January 2014)

  NEW FEATURES

    AVRO-975. C#: Add RPC support. (Mark Lamley via cutting)

    AVRO-1388. Java: Add fsync support to DataFileWriter.
    (Hari Shreedharan via cutting)

    AVRO-1373. Java: Add support for "xz" compresssion codec, using LZMA2.
    (Nick White via cutting)

    AVRO-1400. Java: Add AvroDefault reflect annotation to specify
    default values. (cutting)

    AVRO-1397. Java: Binary fragment tools can now read multiple
    objects from their input.  (Rob Turner via cutting)

    AVRO-1396. Java: Enable tojson command-line tool to pretty print output.
    (Rob Turner via cutting)

    AVRO-1409. Java: Add an API for testing schema compatibility.
    (Christophe Taton via cutting)

    AVRO-1379. C: avro_file_writer_append_encoded() function.
    (Mark Teodoro via dcreager)

    AVRO-1414. C++: Add support for deflate-compressed data files.
    (Daniel Russel via cutting)

    AVRO-1418. Java: Add sync support to AvroMultipleOutputs.
    (Deepak Kumar V via cutting)

    AVRO-1421. Java: Add an @AvroSchema annotation to reflect. (cutting)

    AVRO-1382. Add support for Python3. (Christophe Taton via cutting)

  OPTIMIZATIONS

    AVRO-1348. Java: Improve UTF-8 to String conversion performance in
    Java 6. (cutting)

  IMPROVEMENTS

    AVRO-1355. Java: Reject schemas with duplicate field
    names. (Christophe Taton via cutting)

    AVRO-1332. C#: Improve DatumReader performance.
    (David McIntosh via cutting)

    AVRO-1387. Java: Add DataFileWriter option to inhibit flush per block.
    (Hari Shreedharan via cutting)

    AVRO-1384. Java: Permit Maven to find imports within project.
    (Alexandre Normand via cutting)

    AVRO-1397. Java: Improve error message when missing field has no default.
    (David Carr via cutting)

    AVRO-1398. Increase default sync interval from 16k to 64k.
    (Rob Turner via cutting)

    AVRO-1234. Java: Permit AvroInputFormat to process files whose
    names don't end in .avro.  (Dave Beech & Sandy Ryza via cutting)

    AVRO-1344. Java: Expose sync interval configuration in mapreduce API.
    (Rob Turner via cutting)

    AVRO-1406. C++. GenericRecord (GenericDatum, etc.) doesn't support
    getters and setters with field name argument.
    (Iaroslav Zeigerman via thiru)

    AVRO-1063. Ruby: Use multi_json instead of requiring yajl.
    (Duke via cutting)

    AVRO-1225. Java: Add guide for MapReduce API. (Brock Noland via cutting)

    AVRO-1426. Java: Add mapreduce word count example.
    (Jesse Anderson via cutting)

    AVRO-987. Java: Make Avro OSGI-ready. (Ioannis Canellos via cutting)

    AVRO-1427. Java: Improve ResolvingDecoder tests. (Rob Turner via cutting)

    AVRO-1432. Java: Reduce javadoc warnings. (cutting)

    AVRO-1415. C++ binary encoder and decoder doesn't handle
    uninitialzed enums (Ramana Suvarapu via thiru)

    AVRO-1434. C#: Fix ObjectCreator to be thread safe.
    (David Taylor via cutting)

  BUG FIXES

    AVRO-1368. Fix SpecificDatumWriter to, when writing a string
    schema, not silently convert any object to a string.
    (Christophe Taton via cutting)

    AVRO-1374. Java: Fix compilation against Hadoop 2.1.
    (Julian Zhou via cutting)

    AVRO-1366. Fix specification's description of metadata format.
    (cutting)

    AVRO-1377. Java: Fix a bug in Schema#toString() when a namespaced
    enum or fixed is defined within an un-namespaced record.
    (Graham Sanderson via cutting)

    AVRO-1399. Java: Fix a test within TestAvroKeyOutputFormat.
    (Rob Turner via cutting)

    AVRO-1410. Explicit version specification in pom prevents dependency
    management. (Eric Sammer via tomwhite)

    AVRO-1358. C: Hide symbols that aren't in the public API. (dcreager)

    AVRO-1237. C: Bounds-check union discriminant when reading a data file.
    (Michael Cooper via dcreager)

    AVRO-1369. C: Use correct byte-swapping functions on Mac OS X.
    (thinker0 via dcreager)

    AVRO-1405. C: Check for end-of-file correctly.
    (Mika Ristimaki via dcreager)

    AVRO-1424. ValidatingDecoder hangs on large schema (thiru)

    AVRO-1433. Java: Fix compiler to not drop aliases when StringType
    is String. (cutting)

Avro 1.7.5 (12 August 2013)

  NEW FEATURES

    AVRO-1307. Java: Add 'cat' tool to append and sample data files.
    (Vincenz Priesnitz via cutting)

    AVRO-1274. Java: Add a schema builder API. (tomwhite)

    AVRO-1319. Java: Add command line tools to generate random data
    files and to convert Avro to Trevni.  (cutting)

    AVRO-823: C#: Add data file support. (David McIntosh via cutting)

    AVRO-896. C: Snappy compression codec. (Grisha Trubetskoy via dcreager)

    AVRO-1337. Java: Add a command line tool to generate schema files
    from a protocol. (Bertrand Dechoux via cutting)

    AVRO-1341. Java: Add reflection annotations @AvroName, @AvroIgnore,
    @AvroMeta, @AvroAlias and @AvroEncode. (Vincenz Priesnitz via cutting)

    AVRO-1353. Java: Permit specification of data model (generic,
    specific, reflect, or other) in mapreduce job configuration.
    (Marshall Bockrath-Vandegrift via cutting)

  IMPROVEMENTS

    AVRO-1260. Ruby: Improve read performance. (Martin Kleppmann via cutting)

    AVRO-1267. Java: Permit dashes in IDL property names. (cutting)

    AVRO-1272. Ruby: Improve schema namespace handling.
    (Martin Kleppmann via cutting)

    AVRO-1268. Java: Extend support for stringables from reflect to
    specific.  String schemas in generated classes now support the
    "java-class" and "java-key-class" properties.  The built-in Java
    types BigDecimal, BigInteger, URI, URL, and File can now be fields
    in generated classes. (Alexandre Normand and cutting)

    AVRO-1259. Java: Improve Trevni's encoding of sparse columns.
    (cutting)

    AVRO-1287. Add data file with deflate codec to the interoperability
    test suite. (martinkl)

    AVRO-1288. Ruby: Add support for deflate codec in data files.
    (martinkl)

    AVRO-867. Java: Enable command-line tools to read data files from
    any Hadoop FileSystem implementation. (Vincenz Priesnitz via cutting)

    AVRO-1299. Java: SpecificRecordBase implements GenericRecord.
    (Christophe Taton via cutting)

    AVRO-1282. Java: Use sun.misc.Unsafe to improve Reflect API Performance.
    (Leo Romanoff via scottcarey)

    AVRO-1313. Java: Add system property avro.disable.unsafe for disabling
    use of sun.misc.Unsafe. (scottcarey)

    AVRO-1327. Java: Make GenericEnumSymbol implement Comparable. (cutting)

    AVRO-1314. Java: add @threadSafe annotation to maven plugins.
    (scottcarey)

    AVRO-1334. Java: Upgrade snappy-java dependency to 1.0.5
    (scottcarey)

    AVRO-1238. C: EOF detection in avro_file_reader_read_value.
    (Michael Cooper via dcreager)

    AVRO-1324. C: Handle namespaces in schema parsing.
    (Ben Walsh via dcreager)

    AVRO-1290. Handling NaN and positive and negative infinities in
    C++ Json (Daniel Russel via thiru)

    AVRO-1351. Extend SortedKeyValueFile to support data models
    besides generic. (cutting)

    AVRO-1261. Clarify in documentation that generated no-arg
    constructors do not use default values from schema. (cutting)

    AVRO-1297. NettyTransceiver: Provide overloaded
    close(boolean awaitCompletion). (jbaldassari)

    AVRO-1279. C: Treat missing codec in data files as null codec.
    (Carl Steinbach via dcreager)

    AVRO-1325. Java: Enhanced Schema Builder API. (scottcarey)

  BUG FIXES

    AVRO-1296. Python: Fix schemas retrieved from protocol types
    to not ignore namespaces. (Jeremy Kahn via philz)

    AVRO-1266. Java: Fix mapred.AvroMultipleOutputs to support multiple
    different schemas.  (Ashish Nagavaram via martinkl)

    AVRO-1295. Java: Fix printing of a non-null namespace within a
    null namespace. (cutting)

    AVRO-1300. Java: Fix generated copy constructors to copy field
    values. (Christophe Taton via cutting)

    AVRO-1309. Java: Fix nested protobuf enums. (cutting)

    AVRO-1308. Java: Fix repeated protobuf messages & enums.
    (Steve Zesch & cutting)

    AVRO-1306. Java mapred: Fix incorrect documentation for combiners.
    (Mina Naguib via martinkl)

    AVRO-1320. Java: Fix Trevni to correctly read unions and specific enums.
    (cutting)

    AVRO-1326. Java: Fix bug in BZip2 codec. (cutting)

    AVRO-1322. Java: Add Hadoop version classifier to trevni-avro
    Maven artifacts.  (massie)

    AVRO-1316. Java: Fix compiler to split long schema string
    constants so javac can compile them. (Jeremy Kahn via cutting)

    AVRO-1331. Java: Fix schema-parsing incompatibility from AVRO-1295.
    (cutting)

    AVRO-1181. compileJsonSchemaFromString(std::string) declared in
    Compiler.hh but not defined (Daniel Russel via thiru)

    AVRO-1346. C++: schema parser cannot parse verbose primitive types
    (Skye Wanderman-Milne via thiru)

    AVRO-1171. Avro C++ Json Decoder: Double cannot be decoded (Sam
    Overend via thiru)

    AVRO-1293. Java: Fix potential deadlock in NettyTransceiver.
    (James Baldassari via cutting)

    AVRO-1292. Java: Fix potential client blocking in NettyTransceiver.
    (James Baldassari via cutting)

    AVRO-1144. Java: Deadlock with FSInput and Hadoop NativeS3FileSystem.
    (scottcarey)

    AVRO-1356. Java: Fix AvroMultipleOutputs for map-only jobs.
    (Alan Paulsen via cutting)

Avro 1.7.4 (22 February 2013)

  NEW FEATURES

    AVRO-1248. Avro Tool to dump protocol of a remote RPC Service
    (Gareth Davis via philz)

    AVRO-1229. Add support for booleans to Trevni. (cutting)

    AVRO-1250. Add a command-line tool to concatenate data files.
    (Nick White via cutting)

    AVRO-1243. Java: Add support for bzip2 file compression and
    translate Hadoop job compression options. (Ted Malaska via cutting)

    AVRO-1253. Java: Add support for bzip2 file compression to Trevni.
    (Ted Malaska via cutting)

    AVRO-1254. Java: Add support for new mapreduce APIs to Trevni.
    (Ted Malaska via cutting)

  IMPROVEMENTS

    AVRO-1211. Add MR guide to documentation. (Skye Wanderman-Milne via
    tomwhite)

    AVRO-1221. Java: Fix TestSaslDigestMd5 to pass on IBM JVM.
    (Rodrigo Trujillo via cutting)

    AVRO-1008. Java: Improve support for forcing connection
    handshakes. (jbaldassari & cutting)

    AVRO-970. Java: Make Codec API public. (Rui Pereira via cutting)

    AVRO-1223. Java: Add a static method to generated classes that
    returns its schema, getClassSchema().  (cutting)

    AVRO-1232. Java: Add a toString() method to AvroWrapper so that it
    works with TextOutputFormat.  (Garrett Wu via cutting)

    AVRO-1241. Java: Optimize Trevni string input. (Joseph Adler via cutting)

    AVRO-1198. Java: Improve error message for malformed data. (cutting)

    AVRO-1252. Java: Add a '-string' option to compiler command line
    to cause java.lang.String to be used instead of Utf8. (cutting)

    AVRO-1255. Python: Make 'names' parameter optional in to_json methods.
    (Jeremy Kahn via cutting)

    AVRO-1251. Java: Add TestNettyServerWithCompression, illustrating
    how one can add compression to Avro Netty-based RPC.
    (Ted Malaska via cutting)

  BUG FIXES

    AVRO-1231. Java: Fix Trevni shredder to work on non-recursive
    schemas with multiple references. (Mark Wagner via cutting)

    AVRO-1230. avro-mapred-1.7.3-hadoop1.jar does not work with
    Hadoop 1. (tomwhite)

    AVRO-1233. Java: Fix InputBuffer's constructor to use the
    specified initial position. (Mark Wagner via cutting)

    AVRO-1227. Java: Large ByteBuffers can corrupt output. (cutting)

    AVRO-1228. Java: Fix Trevni to use default values for missing Avro fields.
    (cutting)

    AVRO-1240. Java: Fix SpecificDatumReader(Class) constructor to use
    correct ClassLoader. (cutting)

    AVRO-1242. Java: Fix AvroTrevniOutputFormat to correctly get file
    metadata from JobConf. (Ted Malaska via cutting)

    AVRO-1220. Java: Fix a deadlock when reading by replacing parser
    symbol constructors with factory methods. (cutting)

    AVRO-1249. Java: Fix DataFileWriter#close() to not throw an
    exception when called twice.  (E. Sammer via cutting)

    AVRO-1247. Java: Fix Requestor and Responder implementations to
    use correct ClassLoader. (cutting)

    AVRO-1215. Java: Fix AvroMultipleOutputs when specifying baseOutputPath.
    (Ashish Nagavaram via cutting)

    AVRO-1257. Ruby: Fix UTF-8 encoding in Ruby 1.9.
    (Martin Kleppmann via cutting)

    AVRO-1258. Ruby: Fix handing of RPC errors.  (Martin Kleppmann via cutting)

Avro 1.7.3 (6 December 2012)

  NEW FEATURES

    AVRO-485.  JavaScript: Add validator. (Quinn Slack via cutting)

    AVRO-1157. Java: Extend schema and protocol property support from
    string-only to full JSON. (cutting)

    AVRO-1186. Java: Extend specific compiler to emit Java annotations
    on interfaces, classes, fields and methods for the property
    "javaAnnotation".  The value of the property may either be a
    string or a JSON array of strings in order to emit multiple
    annotations. (cutting)

    AVRO-1188. Java: Permit external schema imports for schemas in
    Maven plugin. (Sharmarke Aden via tomwhite)

    AVRO-1202. Java & Python: Add "Getting Started" guides.
    (Skye Wanderman-Milne via cutting)

    AVRO-1205. Java: Add stereotype annotation to generated classes.
    All classes generated by the specific compiler now have the
    annotation org.apache.avro.specific.AvroGenerated.
    (Sharmarke Aden via cutting)

    AVRO-988. Java: Add option to make fields in generated classes
    private, public, or public & deprecated.  This is specified with
    the "fieldVisibility" option in Maven and is public_deprecated by
    default for compatibility. (Jeff Kolesky via cutting)

    AVRO-1209. Java: Add option to generate immutable classes, without
    setter methods.  This is specified with the "createSetters"
    boolean option in Maven and is true by default for compatibility.
    (Jeff Kolesky via cutting)

  IMPROVEMENTS

    AVRO-1169. Java: Reduce memory footprint of resolver.
    (Hernan Otero via cutting)

    AVRO-1183. Java: Provide a better error message when the schema
    for a Pair cannot be inferred. (cutting)

    AVRO-1207. Java: Add tests for Maven plugins. (Sharmarke Aden via cutting)

    AVRO-1210. Java: Fix mistakes in AvroMultipleOutputs error messages.
    (Dave Beech via cutting)

    AVRO-1178. Java: Fix typos in parsing document.
    (Martin Kleppmann via cutting)

    AVRO-1089. C: Remove performance penalty when using resolved writer with
    arrays.  (dcreager)

  BUG FIXES

    AVRO-1171. Java: Don't call configure() twice on mappers & reducers.
    (Dave Beech via cutting)

    AVRO-1170. Java: Avro's new mapreduce APIs don't work with Hadoop 2.
    (tomwhite)

    AVRO-1197. Java: Expose mapreduce tests so that 'maven install'
    works correctly.  (Mike Percy via cutting)

    AVRO-1200. DatumWriter can write malformed data if collection is
    modified during write. (tomwhite)

    AVRO-1199. Java: Fix SortedKeyValueFile to copy the key used to
    compare against next.  Also improve GenericData#deepCopy() to be
    generic, so that its return type matches its parameter type. (cutting)

    AVRO-1201. Java: Fix GenericData#toString() to generate valid JSON for
    enum values. (Sharmarke Aden via cutting)

    AVRO-1206. Ruby: Fix UTF-8 handling in Ruby 1.9.
    (Nicolas Fouché via cutting)

    AVRO-1177. Ruby: Fix RPC to only send handshake for first request
    over a connection.  (Georg Franz via cutting)

    AVRO-1175. Java: Clear thread local reference in BinaryData#compare().
    (cutting)

    AVRO-1163. C: Fix a memory leak in avro_fixed_private(). (Maxim
    Pugachev via brucem)

    AVRO-1174. C: Fix Windows build. (Stefan Langer via brucem)

Avro 1.7.2 (20 October 2012)

  NEW FEATURES

    AVRO-806.  Add specification of the Trevni columnar file format
    and a Java implementation of it. (cutting)

  IMPROVEMENTS

    AVRO-1146. Java: Serialize several built-in Java classes as
    strings, including BigDecimal, BigInteger, URI, URL, Date and
    File.  (Alexandre Normand and cutting)

    AVRO-1147. Java: Permit stringable map keys in reflect.
    (Alexandre Normand)

    AVRO-1151. Netty Avro server should expose the number of connections
    currently open. (Hari Shreedharan via tomwhite)

    AVRO-1149. Java: Add a constructor to generated classes with all
    fields as parameters. (Gabriel Reid via cutting)

    AVRO-1138. C: Add function for opening existing data file with non-default
    block size.  (Maxim Pugachev via dcreager)

    AVRO-1129. C: Detect when avro_schema_decref frees schema.
    (Maxim Pugachev via dcreager)

    AVRO-1162. Java: Extend AvroKeyValueOutputFormat to support
    reflection.  (Alexandre Normand via cutting)

    AVRO-1142. Clarify Snappy block compression in specification. (cutting)

  BUG FIXES

    AVRO-1128. Java: Fix SpecificRecordBase#equals() to work for
    records that contain maps.  (cutting)

    AVRO-1131. Generated build makefiles for MSYS/MinGW use Visual
    Studio compiler flags (Laurent Moss via thiru)

    AVRO-1103. Java: Fix SpecificData and mapreduce to use correct
    classloader. (cutting)

    AVRO-1135. Avro C++ fails to build on Mac. (thiru)

    AVRO-1140. Buffer.hh includes Config.hh without "../" (Jan van der
    Lugt via thiru)

    AVRO-1141. Avro data files are created without O_TRUNC (Martin
    Nagy via thiru)

    AVRO-1143. avrogencpp generates $Undefined$ for some union types (thiru)

    AVRO-1152. Java: Fix TestTraceSingletons for Java 7. (cutting)

    AVRO-1111. Malformed data can cause OutOfMemoryError in Avro IPC.
    (Mike Percy via tomwhite)

    AVRO-1155. Stringable Date test in TestReflect fails if timezone doesn't
    match locale's default. Removed Date from built-in stringables. (tomwhite)

    AVRO-851. Java: Fix a bug in GenericData#toString() when escaping
    characters. (Jeff Mesnil via cutting)

    AVRO-1154. Java: Fix NettyTransciever to not hang when the server
    is stopped. (Karel Vervaeke & Bruno Dumon via cutting)

    AVRO-1158. C: Fixed infinite loop in deflate decompression codec.
    (Lucas Martin-King via dcreager)

    AVRO-1159. C: Check union discriminants in avro_value_read.
    (Lucas Martin-King via dcreager)

    AVRO-1160. C: Better error reporting in avrocat.  (Lucas Martin-King
    via dcreager)

    AVRO-1166. Java: Fix bug in SpecificData.getSchema(Map). (George
    Fletcher via cutting)

    AVRO-1150. Java: Fix tests to create all temporary files in target
    directories.  (Gabriel Reid via cutting)

    AVRO-1164. C: Clean up valgrind warnings in test_avro_schema test case.
    (Vivek Nadkarni via dcreager)

    AVRO-1165. C: Fix memory leak in generic value implementations involving
    LINK schemas.  (Vivek Nadkarni via dcreager)

    AVRO-1161. C: Fix memory leak in avro{append,cat,mod,pipe} (dcreager)

Avro 1.7.1 (16 July 2012)

  NEW FEATURES

    AVRO-1106. Java: Add AvroMultipleOutputs for newer mapreduce API.
    (Ashish Nagavaram via cutting)

    AVRO-1112. Java: Add support for Snappy codec to newer mapreduce API.
    (Matt Mead via cutting)

    AVRO-1108. Java: Add support for reflect API to newer mapreduce API.
    (cutting)

    AVRO-1104. C: avroappend utility. (Lucas Martin-King via dcreager)

    AVRO-1117. C: avro_file_writer_create_with_codec_fp and
    avro_file_writer_create_with_fp functions, with should_close parameter.
    (Lucas Martin-King via dcreager)

  IMPROVEMENTS

    AVRO-1120. Let AvroMultipleOutput jobs use multiple schemas with
    map-only jobs. (Ashish Nagavaram via cutting)

    AVRO-1119. Java: Permit NettyServer to be used with SSL.
    (Sebastian Ortega via cutting)

    AVRO-1125. Java: Remove un-needed warning about reflect API. (cutting)

  BUG FIXES

    AVRO-1114. Java: Update license headers for new mapreduce code.  (cutting)

    AVRO-1069. Java: Fix HttpTransceiver to close streams. (cutting)

    AVRO-1115. C: Fix crash error in codec cleanup code. (Maxim Pugachev via
    dcreager)

    AVRO-1116. C++ code crashes on Data files with no data. (thiru)

    AVRO-1109. CSharp specific fails on multidimensional arrays.
    (Mark Farnan via thiru)

    AVRO-1153. Java: Fix reflect to be able to write unions that
    contain stringable schemas. (Alexandre Normand via cutting)

Avro 1.7.0 (11 June 2012)

  NEW FEATURES

    AVRO-301. Handle non-reserved properties appropriately in the Python
    implementation. (Macrio Silva via tebeka)

    AVRO-300. Support "doc" field in schemas in Python implementation.
    (Harsh J via tebeka)

    AVRO-1006.  Add schema fingerprinting to specification and Java.
    (Raymie Stata via cutting)

    AVRO-593. Java: Add support for Hadoop's newer mapreduce API.
    (Garrett Wu via cutting)

    AVRO-1052. Java: Add AvroMultipleOutputFormat, to permit splitting
    mapreduce output to multiple locations.  (Ashish Nagavaram via cutting)

  IMPROVEMENTS

    AVRO-1060. Java: Upgrade Netty to version 3.4.0.  (Karthik K via cutting)

    AVRO-1068. Avro Java does not build on recent Eclipse versions
    with m2eclipse (thiru)

    AVRO-551. C: Now compiles on Win32, using Visual Studio C++ 2008.
    (Vivek Nadkarni via dcreager)

    AVRO-1075. Add some Eclipse stuff to .gitignore.  (Karthik K via cutting)

    AVRO-1085. Fingerprinting for C#. (Eric Hauser via thiru)

    AVRO-1079. C++ Generator, improve include guard generation. (thiru)

    AVRO-1062. Java: Remove use of java.rmi.server.UID so things work
    on Android.  (Kevin Zhao via cutting)

    AVRO-1090. Java: Permit appending to files besides java.io.File,
    e.g., files in HDFS. (cutting)

    AVRO-1074. Java: Optimize Utf8#length() and #toString() to not
    allocate a String when the length is zero.  (cutting)

    AVRO-1050. PHP: Optimize memory use by string append. (A B via cutting)

    AVRO-1095. C++ compiler warns about control reaching end of
    doAdavance (in JsonIO.cc) which returns something other than
    void. (thiru)

    AVRO-1026. Add namespace support to C++. (Keh-Li Sheng via thiru)

    AVRO-1097. Fix BinaryDecoder so that EOFException is thrown
    instead of a generic IOException when reading ints and longs past
    the end of file.  (thiru & cutting)

    AVRO-1098: CSharp: Fix compilation to work under older versions of Mono.
    (cutting)

  BUG FIXES

    AVRO-1045. Java: Fix a bug in GenericData#deepCopy() of ByteBuffer values.
    (cutting)

    AVRO-1055. Race condition in Java fingerprinting code (thiru)

    AVRO-954. Typo in JsonCodec.cc (Nebojsa Sabovic via thiru)

    AVRO-1045. C: Use less stack space in avro_file_writer_create (dcreager)

    AVRO-1070. AvroSequenceFileOutputFormat is in wrong package. (thiru)

    AVRO-1080. JsonIO.cc should allow \u escape sequence in
    string. (Keh-Li Sheng via thiru)

    AVRO-1066. ArrayIndexOutOfBoundsException in ParsingEncoder when
    trying to use a json encoder to serialize a deep object
    graph. (thiru)

    AVRO-1065. NodeRecord::isValid() treats records with no fields as
    invalid. (thiru)

    AVRO-1081. Java: Fix to be able to write ByteBuffers that have no
    backing array.  Also fix reflection to correctly read ByteBuffer
    fields.  (cutting)

    AVRO-1046. Java: Fix ReflectDatumReader to be able to read generic
    or specific arrays. (cutting)

    AVRO-1056. Java: Fix reflect to correctly handle unions containing
    maps.  (Kevin Zhao via cutting)

    AVRO-1076. Java: Fix Protocol#equals() to consider
    properties. (Karthik K via cutting)

    AVRO-1094. Java: Fix specific compiler to better support
    non-default templates.  (Ed Kohlwey via cutting)

    AVRO-1082. C: Avoid leaking open FILE objects.
    (Pugachev Maxim via dcreager)

    AVRO-1096. C: Don't set default CMAKE_OSX_ARCHITECTURES. (dcreager)

    AVRO-1084. C: Fix reference counting in file_reader and file_writer.
    (Pugachev Maxim via dcreager)

    AVRO-1083. C: Fix multiple memory leaks.  (Pugachev Maxim via dcreager)

    AVRO-1086. C: Fix possible crash bug in default codec initialization.
    (Pugachev Maxim via dcreager)

    AVRO-1096. C: Describe CMAKE_OSX_ARCHITECTURES in installation
    instructions.  (dcreager)

    AVRO-1088. C: Performance tests for arrays and schema resolution.
    (Vivek Nadkarni via dcreager)

    AVRO-1092. C: Error management code can be defined in a thread-safe
    manner.  (Pugachev Maxim and Vivek Nadkarni via dcreager)

    AVRO-1091. C: Helper scripts for calling CMake.
    (Vivek Nadkarni via dcreager)

    AVRO-1087. C: avro_file_writer_open() and appending Avro values
    works correctly.  (Pugachev Maxim via dcreager)

    AVRO-1102. C: Remove memory leak in avro_string().  (Maxim Pugachev via
    dcreager)

    AVRO-1099. Java: Fix JsonDecoder to permit floats and doubles to
    be read from JSON values without decimal points, and for ints and
    longs to be read from JSON values with decimal points. (cutting)

Avro 1.6.3 (5 March 2012)

    AVRO-1077. Missing 'inline' for union set function. (thiru)

    AVRO-1078. ostreamOutputStream declaration missing in C++ API (thiru)

    AVRO-1051. Java: Fix specific RPC so that method is found when
    parameters are a union of a primitive and null.
    (Hamed Asghari via cutting)

    AVRO-1049. Java: Fix GenericData.Record#equals() to correctly
    compare schemas and fix Schema#equals() to consider order. (cutting)

  IMPROVEMENTS

    AVRO-1030. Fix a broken link in the documentation.

  BUG FIXES

    AVRO-1037. Problems using Avro 1.6.2 with Hadoop (CDH3 or 1.0) (scottcarey)

    AVRO-1036. Fix a regression in IDL imports created by AVRO-971.
    (George Fletcher & cutting)

    AVRO-1031. C: Test cases made too many assumptions about memcmp
    result. (dcreager)

    AVRO-1033. C: Fixed x86 assembly implementation of atomic reference
    counting primitives. (Vivek Nadkarni via dcreager)

    AVRO-1034. C: Resolved readers initialize complex array values
    correctly. (Vivek Nadkarni via dcreager)

    AVRO-1038. C: Require GCC 4.5.0 to use GCC atomic instrinsics.
    (Vivek Nadkarni via dcreager)

    AVRO-1039. C: Don't use nonexistent codecs in test cases. (dcreager)

    AVRO-1041. Java: Fix Utf8 to reuse array in more cases.
    (Dave Irving via cutting)

    AVRO-1027. Java: Fix deadlock in NettyTransceiver.
    (Simon Wilkinson via cutting)

Avro 1.6.2 (13 February 2012)

  NEW FEATURES

    AVRO-854.  Python: Permit DataFileWriter and DataFileReader to be
    used as context managers in "with" statements. (Harsh J via cutting)

    AVRO-986. C: avromod utility for modifying structural properties of
    an Avro data file. (dcreager)

  IMPROVEMENTS

    AVRO-963. Java: Permit compiler template directory to be
    overridden by Maven plugins.  (George Fletcher via cutting)

    AVRO-953. Python: Permit users to override HTTP path in RPC.
    (Craig Landry via cutting)

    AVRO-972. Java: Add support for Infinity and NaN as default values
    for float and double.  Since JSON does not permit these as numeric
    types, we use the strings "NaN", "Infinity" and "-Infinity" in
    schemas.  These are also permitted in IDL.  (cutting)

    AVRO-965. Java: Enhance IDL to support properties for protocols
    and messages. (George Fletcher via cutting)

    AVRO-976. Java: Extend NettyServer to permit specification of an
    ExecutionHandler, to handle multiple requests simultaneously.
    (Bruno Dumon via cutting)

    AVRO-960. C: avro_value_set_string and avro_value_set_string_len
    input parameters are now "const char *" instead of "char *".
    (Lucas Martin-King via dcreager)

    AVRO-961. C: avrocat/avropipe can now read from stdin.
    (Michael Cooper via dcreager)

    AVRO-957. C: Codec support in C library.  (Michael Cooper and Lucas
    Martin-King via dcreager)

    AVRO-926. Java: Fix tests to pass under JDK 7.  (cutting)

    AVRO-956. Remove dependency on Flex/Bison. (thiru)

    AVRO-1011. Improve POM structure. (Lars Francke via scottcarey)

    AVRO-1016. Java: Add Field#getAliases() method to better permit
    copying of schemas. (cutting)

    AVRO-1005. Java: Extend HttpTransceiver to permit specification of
    a Proxy. (Craig Landry via cutting)

    AVRO-1010. Java: Improve codec javadoc. (Lars Francke via cutting)

    AVRO-1018. Java: add svn:ignore to eclipse generated files for
    protobuf, thrift, and archetype modules (scottcarey)

    AVRO-1019. Java: Add unit test for Netty server concurrent
    execution. (jbaldassari)

    AVRO-995. Java: Update Dependencies for 1.6.2. (scottcarey)

    AVRO-1012. Java: Improve avro-service-archetype: POM and IT
    changes. (Lars Francke via scottcarey)

    AVRO-971. Java: Permit IDL imports from classpath in Maven.
    (Victor Chau via cutting)

    AVRO-1007. Java: Enhance builder API's validity checks.
    (jbaldassari & cutting)

    AVRO-1015. Support for C++ build using Micrsoft Visual Studio on Windows.
    (thiru)

    AVRO-1021. Clarify some naming issues in the specification.
    (Raymie Stata via cutting)

    AVRO-980. C: avro_schema_from_json ignores length parameter.  Add
    avro_schema_from_json_length that doesn't.
    (Michael Cooper and dcreager)

  BUG FIXES

    AVRO-962. Java: Fix Maven plugin to support string type override.
    (George Fletcher via cutting)

    AVRO-835. C#: Fix codgen for protocols to not fail.
    (Dona Alvarez via cutting)

    AVRO-966. Java: Fix ReflectDatumWriter to be able to correctly
    write unions containing Collection and/or ByteBuffer. (cutting)

    AVRO-977. Java: Fix codegen to not generate deprecated code.
    (Hamed Asghari via cutting)

    AVRO-978. Java: Fix reflect to better handle Byte type.  (cutting)

    AVRO-968. C: Fixed avro_value_cmp and avro_value_cmp_fast for string
    values. (Vivek Nadkarni via dcreager)

    AVRO-982. Java: Fix NettyTransceiver to not hang when server stops.
    (Bruno Dumon via cutting)

    AVRO-984. C: Resolved writers initialize complex array values
    correctly. (Vivek Nadkarni via dcreager)

    AVRO-994. Java: TestFileSpanStorage.testTonsOfSpans() fails on my
    slow VM. (jbaldassari)

    AVRO-993. Java: Add methods back to GenericDatumReader that were
    removed in AVRO-839. (jbaldassari)

    AVRO-1000. Java: Remove incompatible implementations of equals()
    and hashCode() from GenericData.Array.  (cutting)

    AVRO-1002. Fix a broken link in the specification. (cutting)

    AVRO-1003. C: Fix pkg-config file when codecs are missing.
    (dcreager)

    AVRO-1004. C: avropipe no longer displays NUL terminator for string
    values. (dcreager)

    AVRO-986. C: File headers no longer contain sync marker. (Michael
    Cooper via dcreager)

    AVRO-986. Java: DataFileReader correctly handles sync marker
    appearing within file header. (cutting via dcreager)

    AVRO-1014. C: Check for errors producing JSON output in avrocat.
    (Lucas Martin-King via dcreager)

    AVRO-996. Java: SpecificRecord builder pattern object copy fails
    with unions in some cases. (scottcarey and jbaldassari)

    AVRO-1020. Java: Fix builder API to correctly handle default
    values for enums.  (cutting)

    AVRO-1013. Java: NettyTransceiver can hang after server
    restart. (jbaldassari)

Avro 1.6.1 (8 November 2011)

  INCOMPATIBLE CHANGES

    AVRO-951. Java: Fix generated code to not conflict with fields
    named 'data'.  Code generated by the 1.6.0 compiler must be
    re-generated to work correctly with the 1.6.1 runtime. (cutting)

  NEW FEATURES

    AVRO-821. PHP: Add support for parsing protocols. (Andy Wick,
    Saleem Shafi and A B via cutting)

  OPTIMIZATIONS

    AVRO-946. Java: Optimize union resolution when writing. (cutting)

  IMPROVEMENTS

  BUG FIXES

    AVRO-943. Java: Fix an intermittent deadlock in
    TestNettyServerWithCallbacks.  (James Baldassari via cutting)

    AVRO-950. C: Fix source tarball to include VERSION.txt. (dcreager)

Avro 1.6.0 (2 November 2011)

  NEW FEATURES

    AVRO-839. Java: Add accessor methods and builders to generated
    Java classes.  Builders use default values from schemas for fields
    that are not explicitly set.  Direct use of public fields is now
    deprecated and may be removed in a future release.  (James
    Baldassari via cutting)

    AVRO-805: Java: Add support for reading and writing instances of
    Protocol Buffer (protobuf) generated classes.  This permits
    protobuf-defined data structures to be written and read from
    Avro-format data files.  (cutting)

    AVRO-881. Java: Add a 'getmeta' tool that lists a file's metadata.
    (Tom White via cutting)

    AVRO-863. C: Schema resolution using new value interface. (dcreager)

    AVRO-893. C: Avro data file functions using new value interface.
    (dcreager)

    AVRO-919. C: Produce JSON encoding of Avro values using new value
    interface. (dcreager)

    AVRO-920. C: Memory readers and writers are now reusable. (dcreager)

    AVRO-921. C: Default wrapped buffer implementation is zero-copy.
    (dcreager)

    AVRO-922. C: Comparison function for new value interface. (dcreager)

    AVRO-929. C: Set install_name in shared library on Mac OS OX.
    (dcreager)

    AVRO-468. C: Document CMake build scripts. (dcreager)

    AVRO-474. C: Added source package target to CMake build scripts.
    (dcreager)

    AVRO-467. C: Change build system to CMake. (dcreager)

    AVRO-890: Java: Add Maven archetype for creating Avro service
    projects.  (Stephen Gargan via cutting)

    AVRO-804. Java: Add support for reading and writing instances of
    Thrift generated classes.  This permits Thrift-defined data
    structures to be written and read from Avro-format data files.
    (cutting)

    AVRO-908. Add an option to build avrocpp as a static library.
    (Nebojsa Sabovic via thiru)

    AVRO-803. Java: Optionally change string types in generated code
    to java.lang.String instead of java.lang.CharSequence.  This is
    achived by specifying <stringType>String</stringType> in
    avro-maven-plugin's pom.xml configuration. (cutting)

    AVRO-924. Java: Support reading & writing arbitrary JSON data
    using an efficient Avro binary representation.  (cutting)

  OPTIMIZATIONS

    AVRO-853: Java: Cache Schema hash codes. (cutting)

    AVRO-907. Java: Optimize access to protobuf message fields. (cutting)

    AVRO-934. PHP: Remove quadratic performance bug. (abawany via cutting)

  IMPROVEMENTS

    AVRO-836. Python "avro" commandline utility to display and write Avro files.
    (Miki Tebeka via philz)

    AVRO-841. Java: Implement insertion in GenericData.Array.
    (Nick Palmer via cutting)

    AVRO-847. Java: Add a unit test for Java MapReduce tether. (Jeremy Lewi)

    AVRO-844. Java: Provide better errors for null or missing record fields.
    (Bill Graham via cutting)

    AVRO-746. C: Atomic reference counts. (dcreager)

    AVRO-837. C: New Avro value interface. (dcreager)
    Documented in lang/c/docs/index.html.

    AVRO-861. C: Remove dependency on stdbool.h. (dcreager)

    AVRO-396. C: avrocat and avropipe commands (dcreager)

    AVRO-857. Add mailing lists, scm and issue management to Maven
    metadata.  Also link top-level pom.xml to lang/java.
    (Jan Prach via cutting)

    AVRO-873. Java: Permit passing classloader to SpecificDatumReader.
    (Michael Armbrust via cutting)

    AVRO-889. Java: Change lang/java/pom.xml to use project's
    top-level pom.xml as parent, permitting use of Maven versions
    plugin.  (cutting)

    AVRO-858. Python: Add --fields option to 'avro cat' command.
    (Miki Tebeka via cutting)

    AVRO-866. Java: Add support in IDL for documentation in protocols
    and messages.  (George Fletcher via cutting)

    AVRO-888. Java: Add SeekableByteArrayInput, a utility to permit
    use of memory-based AvroDataFiles.  (Saleem Shafi via cutting)

    AVRO-887. Java: Improve reflection error message when a field is
    not found in a class.  (cutting)

    AVRO-874. Remove experimental disclaimer from IDL documentation. (cutting)

    AVRO-891. Java: In SpecificDatumReader, when no reader schema is
    specified, use schema of currently loaded class.  (cutting)

    AVRO-865. C: Upgrade Jansson to 2.1. (dcreager)

    AVRO-899. C#: Include binary artifacts and documentation in
    releases.  (cutting)

    AVRO-898. Java: Extend NettyServer to support SSL.
    (Vadim Tsarik via cutting)

    AVRO-905. Java: Change JsonEncoder to write objects on separate
    lines.  (cutting)

    AVRO-910. Java: Add generated protobuf test code to subversion.  (cutting)

    AVRO-917. Avrogencpp does not insert avro prefix for avro headers in the
    generated files. (thiru)

    AVRO-840. C++ generate nullable types for optional fields int the schema.
    (thiru)

    AVRO-915. Large number of warnings in C++ builds. (thiru)

    AVRO-913. CMake/C++ build should work for out-of-tree builds.
    (Nebojsa Sabovic via thiru)

    AVRO-925. CMake/C++ Unable to build debug version of libavrocpp.
    (Nebojsa Sabovic via thiru)

    AVRO-932. C++ build.sh should have an option to install the built software.
    (thiru)

    AVRO-931. Avro C++ "make install" does not install the code generator.
    (thiru)

    AVRO-918. Avro C++ documentation is very old. (thiru)

    AVRO-938. Some more warning when built on RHEL. (thiru)

    AVRO-937. C++ CMake keeps generating code even when there is no change.
    (thiru)

    AVRO-940. C++ design for generic datum could be better. (thiru)

    AVRO-935. Java: Update dependency versions for 1.6.0. (scottcarey)

    AVRO-941. Java: Make generated specific classes to work in some
    cases after Maven shade plugin is used on them.  (cutting)

  BUG FIXES

    AVRO-824. Java: Fix usage message of BinaryFragmentToJsonTool.
    (Jakob Homan via cutting)

    AVRO-894. C: cmake build now works on Mac OS X Lion. (dcreager)

    AVRO-895. JsonDecoder does not tolerate JSON records with
    different field order. (thiru)

    AVRO-906. Java: Fix so that ordering of schema properties is
    consistent. (cutting)

    AVRO-901, Java tools unit tests fail in Windows due to line
    termination and filenaming conventions. (thiru)

    AVRO-900. On slower machines Java unit test TestFileSpanStorage
    fails. (thiru)

    AVRO-912. Mapreduce tether test fails on Windows. (thiru)

    AVRO-903. C++/Cmake build fails to find Boost libraries. (Nebojsa
    Sabovic via thiru)

    AVRO-904. C++/CMake build should fail if Boost libraries are not
    present. (Nebojsa Sabovic via thiru)

    AVRO-902. C++/CMake installs into /usr/local/local/.  (Nebojsa
    Sabovic via thiru)

    AVRO-914. Java: Fix SpecificResponder to better handle
    non-Exception Throwables. (philz via cutting)

    AVRO-871. Fix specification to state that enum symbol names must
    follow the same rules as record and field names.  (cutting)

    AVRO-916. 0xff in binary stream is interpreted as end-of-stream. (thiru)

    AVRO-869. Lifetimes of streams and encoder/decoders not managed propertly.
    (thiru)

    AVRO-928. Debug statement no longer reports garbage value from
    stack. (Vivek Nadkarni via dcreager)

    AVRO-933. On latest Ubuntu AvrogencppTests.cc does not compile. (thiru)

    AVRO-927. Java: Fix Pair#equals() to better compare
    schemas. (Brock Noland via cutting)

    AVRO-936. Avro Java does not build with Maven 2. (thiru)

    AVRO-930. C: Fixed memory lead in resolved writer class. (Vivek
    Nadkarni via dcreager)

    AVRO-942. Java: Fix reflect so that @Nullable fields have a
    default value of null. (Binglin Chang via cutting)

    AVRO-945. C# port does not build under Ubuntu 11.10. (thiru)

    AVRO-948. Java: Fix to more correctly handle Thrift optional and
    nullable fields.  (cutting)

    AVRO-944. Java: Fix mapred so that reduce-side combines use
    correct serializer. (cutting)

Avro 1.5.4 (12 September 2011)

  IMPROVEMENTS

    AVRO-866. Python: Add support for snappy compression codec.
    (Tom White via cutting)

  BUG FIXES

    AVRO-884.  Java: Fix a regression in RPC so that one-way messages
    fail when the transciever cannot connect. (Tom White via cutting)

    AVRO-892. Python: Fix an "integer out of range" error with snappy
    compression.  (Michael Cooper via cutting)

Avro 1.5.3 (25 August 2011)

  IMPROVEMENTS

    AVRO-872. Java: Improved Schema parsing API and permit IDL imports
    to depend on names defined in prior imports. (cutting)

    AVRO-877. Java: Add support for compiling multiple, dependent
    schemas. (Bill Graham via cutting)

    AVRO-880. Java: Upgrade snappy-java to 1.0.3.2.
    (Alejandro Abdelnur via cutting)

Avro 1.5.2 (12 August 2011)

  NEW FEATURES

    AVRO-830. Java: Add AvroTextOutputFormat to permit Hadoop
    streaming jobs to easily write Avro format output with "bytes" as
    schema.  (Tom White via cutting)

    AVRO-539. Java: Add asynchronous RPC support, through either
    callbacks or futures.  (James Baldassari via cutting)

  IMPROVEMENTS

    AVRO-469. C: Set library's libtool-style soversion when using CMake
    build scripts. (dcreager)

    AVRO-470. C: Build asciidoc documentation when using CMake build
    scripts. (Daniel Lundin via dcreager)

    AVRO-820. Java: Permit applications to catch exceptions thrown
    while writing data to a file and then continue writing to that
    file.  (scottcarey & cutting)

    AVRO-826. C#: Add MD5 and hashcode functions to Protocol.
    (Dona Alvarez via cutting)

    AVRO-838. Java: Permit invalid characters in record and field
    names of schemas read from data files, for compatibility with
    1.4. (cutting)

    AVRO-810: C#: Add strong naming to assemblies. (Eric Hauser)

    AVRO-833. Python: Don't require simplejson for python >= 2.6.
    (Miki Tebeka via philz)

    AVRO-845. Python: setup.py uses Python2.7+ specific code
    (Miki Tebeka via philz)

    AVRO-856. Java: Update Snappy to 1.0.3-rc4. (cutting)

  BUG FIXES

    AVRO-818. C: Fix data file corruption bug in C library (dcreager)

    AVRO-819. C: Fix file reader EOF detection (dcreager)

    AVRO-809. Java: Fix reflect for classes that have no package. (cutting)

    AVRO-832. Java: Fix RPC client to correctly perform schema
    resolution on message responses.  (cutting)

    AVRO-815. Java: Netty Transceiver fails processing one-way messages.
    Implemented writeBuffers for the NettyTransceiver to allow it to
    process one-way messages. (sgargan)

    AVRO-776. Java: Fix SocketServer to close socket. (scottcarey)

    AVRO-842. Java: Fix Netty-based IPC client to provide better
    errors when attempting to use a closed connection.
    (James Baldassari via cutting)

    AVRO-825: C++: Fix bugs in codegen with recursive schemas. (thiru)

    AVRO-864. Java: Fix reflect to be able to write unions containing
    generic and/or specific records.  (Isabel Drost & cutting)

Avro 1.5.1 (3 May 2011)

  NEW FEATURES

    AVRO-533. Add a C# implementation.
    (Jeremy Custenborder, Dona Alvarez and thiru)

    AVRO-788. Java: Add Snappy compression for data files, including
    MapReduce API support. (cutting)

    AVRO-808. Java: Add AvroAsTextInputFormat for use with streaming.
    (Tom White via cutting)

  IMPROVEMENTS

    AVRO-785. Java: Squash a Velocity warning by upgrading to Velocity 1.7.
    (cutting)

    AVRO-781. Generic data support in C++. (thiru)

    AVRO-783. Specific object support in C++. (thiru)

    AVRO-789. Datafile support in C++. (thiru)

    AVRO-787. Ruby: Make compatible with Ruby 1.9. (Michael L. Artz via cutting)

    AVRO-296. IDL: Use double-asterisk comments for schema documentation.
    (cutting)

    AVRO-709. Python: Optimize property lookup. (Justin Azoff via cutting)

    AVRO-794. Makefile.am is no longer required in C++. (thiru)

    AVRO-795. C++ Datafile reader makes it hard to build adaptive
    clients. (thiru)

    AVRO-802. Java: Add documentation for non-Avro input, map-only
    jobs. (cutting)

    AVRO-799. Java: Add support for --codec parameter to the
    'fromtext' command.  Also made some performance improvements, bug
    fixes and added tests for this command. (cutting)

    AVRO-798. Add checksum to Snappy compressed blocks. (cutting)

    AVRO-763. Java MapReduce API: add support for configure() and
    close() methods to mappers and reducers. (Marshall Pierce via cutting)

    AVRO-807. C#: Some improvements and bugfixes, including making AvroGen
    extensible and changing ISpecificRecord to an interface.
    (Dona Alvarez via cutting)

    AVRO-791. Java: Add avro-tools-nodeps jar.  Also change 'mvn
    install' to not GPG sign things by default.  (scottcarey via cutting)

    AVRO-812. Java: Implement help goal for Maven plugin.
    (Holger Hoffstätte via cutting)

  BUG FIXES

    AVRO-786. Java: Fix equals() to work on objects containing maps. (cutting)

    AVRO-780. Java: Fix a NullPointerException with reflect data when
    a union contains an array and null. (cutting)

    AVRO-790. Java: GenericDatumReader can fail when reusing objects with unions
    containing 'bytes' fields. (scottcarey)

    AVRO-801. Java: Fix a bug in SaslSocketTransceiver where large
    messages were truncated on write. (cutting)

    AVRO-793. Java: Fix a bug in the resolver when skipping an array
    within a record. (thiru via cutting)

Avro 1.5.0 (10 March 2011)

  INCOMPATIBLE CHANGES

    AVRO-751. C: Each avro_datum_t instance now contains a reference to
    the schema that the datum is an instance of.  As a result, the
    signatures of several of the functions that operate on avro_datum_t
    instances have changed.

    AVRO-647. Java: Break avro.jar up into multiple parts: avro.jar,
    avro-compiler.jar, avro-ipc.jar, avro-mapred.jar, avro-tools.jar,
    and avro-maven-plugin.jar.

    Summary of artifacts:
    * avro.jar
      Contains 'core' avro features:  schemas, data files,
      specific, generic, and reflect APIs.
      Dependencies: slf4j, Paranamer, Jackson.
    * avro-ipc.jar
      Contains Trancievers, Requestors, and Responders.
      Dependencies:  avro.jar, Jetty, Netty, and Velocity
    * avro-compiler.jar
      Contains SpecificCompiler, IDL compiler and Ant tasks.
      Dependencies: avro.jar, commmons-lang, and Velocity.
    * avro-maven-plugin.jar
      A Maven plugin for Avro's compiler.
      Dependencies: avro-compiler.jar
    * avro-mapred.jar
      API for Hadoop MapReduce with Avro data.
      Dependencies: avro-ipc.jar, hadoop-core, and jopt-simple.
    * avro-tools.jar
      Avro command-line tools stand-alone jar.
      Dependencies are contained within the jar.
      Dependencies: all of the above.

    (scottcarey)

    AVRO-737. Java: Improve correlation between packages and modules.
    Each module introduced by AVRO-647 now exclusively provides
    different java packages.  This required moving several classes
    around into new packages and will therefore require users to
    change their package imports when upgrading to Avro 1.5.0.
    Summary of changes:
    * AvroRemoteException has moved to org.apache.avro
    * ByteBufferInputStream and ByteBufferInputStream have moved
      to org.apache.avro.util
    * InduceSchemaTool has moved to org.apache.avro.tools
    * SpecificCompiler, SchemaTask, and ProtocolTask have moved
      to org.apache.avro.compiler.specific
    * The Idl compiler has moved to org.apache.avro.compiler.idl
    * ReflectRequestor and ReflectResponder have moved to
      org.apache.avro.ipc.reflect
    * GenericRequestor and GenericResponder have moved to
      org.apache.avro.ipc.generic
    * SpecificRequestor and SpecificResponder have moved to
      org.apache.avro.ipc.specific
    (scottcarey)

    AVRO-753. Java: Improve BinaryEncoder Performance.
    The Encoder API has several resulting changes:
    * Construction and configuration is handled by EncoderFactory.  All
      Constructors are hidden, and Encoder.init(OutputStream) is removed.
    * Some Encoders previously did not buffer output.  Users must call
      Encoder.flush() to ensure output is written unless the EncoderFactory
      method used to construct an instance explicitly states that the Encoder
      does not buffer output.
    (scottcarey)

    AVRO-769. Java: Align Decoder/Encoder APIs for consistency and long term
    stability.  Avro's Decoder and Encoder APIs are aligned and now consist of
    only read and write operations.  EncoderFactory and DecoderFactory handle
    all construction and common configuration.  Some specialized implementations
    have separate configuration APIs.

    (scottcarey)

    AVRO-670. Allow DataFileWriteTool to accept schema files as input with new
    --schema-file and --schema command-line flags. (Ron Bodkin via philz)

    AVRO-671. Java: Check that type and field names conform to
    specified requirements. (cutting)

    AVRO-678. Java: Implement ReflectData#compare().  Incompatibly
    moves some protected GenericDatumReader/Writer methods to
    GenericData, potentially breaking subclasses. (cutting)

    AVRO-696. Java: Make DataFileWriter.setMetaInternal(String,String)
    private. (Patrick Linehan via cutting)

    AVRO-741. C: Minor API change to handling of bytes data.
    (Douglas Creager via brucem)

    AVRO-656. Java: Add required Schema parameter to GenericData.Fixed
    and GenericData.EnumSymbol constructors.  Also fix union dispatch
    to conform to specification, using full schema name for records,
    enums and fixed.

  NEW FEATURES

    AVRO-762. C: New and improved schema resolution API.  The new API
    correctly handles all of the schema resolution rules listed in the
    spec.  It performs resolution against two schemas separately from
    reading in any data, so that we don't have to re-resolve for each
    data record.  Please see the avro/consumer.h header file for
    details. (dcreager)

    AVRO-463. C: Error message API.  The new avro_strerror() function
    can be used to get a textual description of the error codes returned
    by the other C API functions.  In particular, this includes any JSON
    parse errors that occur while trying to load a schema. (dcreager)

    AVRO-684. Java: Add command-line "recodec" tool to change file
    compression codecs.  (Patrick Linehan via cutting)

    AVRO-689. Java: Permit setting timeout of HttpTransceiver. (cutting)

    AVRO-687. Java: Permit RPC applications to view remote protocol. (cutting)

    AVRO-159 Java: Allow maven builds to use avro: avro-maven-plugin
    (Hiram Chirino, Patrick Hunt via Scott Carey)

    AVRO-549. C: Route all memory allocations through an interface. (Douglas
    Creager via brucem)

    AVRO-729. C: JSON encoded Avro values. (Douglas Creager via brucem)

    AVRO-757. Java: Permit data files to be re-opened without
    re-reading the header. (Stu Hood via cutting)

    AVRO-750. C: Install a pkg-config file
    (dcreager)

    AVRO-730. Java: Add set() and remove() methods to GenericData.Array.
    (Chase Bradford via cutting)

    AVRO-711. JSON encoder and decoder for C++.

    AVRO-701 and AVRO-772. Java: Add new constructors for HttpServer
    and an example of using SSL for the HTTP RPC. (brucem)

  IMPROVEMENTS

    AVRO-771. Java: Update dependency versions
    (scottcarey)

    AVRO-726. Java: Make GenericDatum{Reader,Writer} easier to extend.
    (scottcarey)

    AVRO-765. Java: Improvement to BinaryDecoder readLong performance
    (scottcarey)

    AVRO-716. Java: integrate AVRO-647 changes with top level build
    (scottcarey)

    AVRO-752. Java: Enhanced Performance Test Suite
    (scottcarey)

    AVRO-682. Java: Add method DataFileStream.getMetaKeys().
    (Harsh J Chouraria via cutting)

    AVRO-683. Java: Fix RPC proxy factories to not require casting.
    (Stephen Gargan via cutting)

    AVRO-642. Java, Python: Pretty-print schemas in some validation
    error messages.  (Harsh J Chouraria via cutting)

    AVRO-648. Java: Use Velocity templates to generate specific code.
    (philz via cutting)

    AVRO-698. Java: Add MapReduce tests and documentation for jobs
    that mix Avro and non-Avro data. (cutting)

    AVRO-692. Java: Permit Avro 1.2 format files to be read. (cutting)

    AVRO-707. Java: Promote SASL-based RPC. (cutting)

    AVRO-714. Fix Forrest to work with Java 6. (Carl Steinbach via cutting)

    AVRO-669. Java: Make MapReduce to work with reflection-based data.
    (cutting)

    AVRO-723. Java: Pass error messages for unexpected RPC exceptions
    through to client. (Stephen Gargan via cutting)

    AVRO-719. Java: Permit MapReduce programs to alter output file
    sync interval.  (Joe Crobak via cutting)

    AVRO-725. C: avro_schema_get_subschema function. (Douglas Creager via
    brucem)

    AVRO-630. C: Add size accessors for map and list data. (Douglas Creager
    via brucem)

    AVRO-727. C: Add many new accessor and mutator functions. (Douglas Creager
    via brucem)

    AVRO-729. C: avro_schema_to_json can take const schema. (Douglas Creager
    via brucem)

    AVRO-729. C: Update to Jansson 1.3. (Douglas Creager via brucem)

    AVRO-731. Documentation: Improve identification of Apache
    trademarks. (cutting)

    AVRO-734. Java: Update maven build plugin versions. (Holger Hoffstätte
    via scottcarey)

    AVRO-700. Change C++ build system to CMake (thiru)

    AVRO-749. Don't install Jansson build artifacts. (Douglas Creager via
    brucem)

    AVRO-744. C: Helper macros for extracting and setting record field
    values (dcreager)

    AVRO-773. Java: Add no-arg constructor to AvroWrapper.
    (Jan Prach via cutting)

    AVRO-774. Java: Clean up repositories in pom.xml. (Lars Francke via cutting)

    AVRO-754. Java: Permit passing custom channel factory to NettyTransceiver.
    (Bruno Dumon via cutting)

  BUG FIXES

    AVRO-764. Java: Bug in BinaryData.compare() with offset comparison.
    (Harsh J Chouraria via scottcarey)

    AVRO-743. Java: Performance Regression and memory pressure with
    GenericDatumReader. (scottcarey)

    AVRO-675. C: Bytes and fixed setters don't update datum size.
    (Douglas Creager via massie)

    AVRO-681. IDL: Fix documentation example with illegal syntax.
    (Jingguo Yao via cutting)

    AVRO-685. Java: Fix Schema#equals() and hashCode() to not require
    exponential time for some recursive schemas.
    (Richard Ahrens via cutting)

    AVRO-693. Java: Configure Velocity to use null logger, removing a
    dependency that was breaking the build.  (Stephen Gargan via cutting)

    AVRO-702. Java: Fix a bug printing nested record namespaces. (cutting)

    AVRO-706. Java: Type promotion not succeeding for long -> float. (thiru)

    AVRO-704. Java: Fix SocketServer connection threads to exit rather
    than busywait when client closes connection. (cutting)

    AVRO-705. Java: Fix DirectBinaryDecoder to correctly reinitialize.
    (thiru via cutting)

    AVRO-710. Java: Add bounds checking to GenericData.Array#get(int).
    (Bo Shi via cutting)

    AVRO-713. Java: Fix GenericData.Record#toString() to produce valid
    JSON for enum symbols. (Jay Kreps via cutting)

    AVRO-643. Java: Fix intermittent failures in TestTraceCollection. (cutting)

    AVRO-722. Java: Fix ordering of calls to RPC plugins.
    (Stephen Gargan via cutting)

    AVRO-708. Java: Fix Netty-based RPC to keep connection open.
    (Stephen Gargan via cutting)

    AVRO-694. Python: Fix schema parse error for maps of records.
    (hammer via cutting)

    AVRO-663. Java: avro-tools.jar does not meet maven2 layout standard.
    (scottcarey)

    AVRO-688. Java: Only require that one-way'ness of messages match
    over stateful connections, permitting interoperability with
    Python and Ruby, which drop the one-way message attribute. (cutting)

    AVRO-759. Java: Fix NullPointerException when some but not all
    fields are aliased. (Xiaolu Ye via cutting)

    AVRO-755. Java: Fix SpecificResponder to correctly handle message
    parameter lists that differ between client and server.  (cutting)

    AVRO-775. Java: Fix a file handle leak in DataFileReader. (cutting)

    AVRO-761. Java: Fix Requestor to not send client's protocol on
    each handshake with stateless (HTTP) transport when protocol
    differs from server's. (cutting)

Avro 1.4.1 (13 October 2010)

  NEW FEATURES

    AVRO-674. Vim editor support for IDL files (Daniel Lundin via philz)

    AVRO-641. Java: Add SASL security for socket-based RPC. (cutting)

    AVRO-634. Java: Add support for reading Hadoop sequence files as
    Avro data to MapReduce API. (cutting)

  OPTIMIZATIONS

    AVRO-673. Python: Remove unneeded schema validations.
    (Erik Frey via cutting)

  IMPROVEMENTS

    AVRO-655. Change build so that 'dist' target no longer also runs C
    and C++ unit tests. (cutting)

    AVRO-634. IDL: Add support for aliases. (cutting)

    AVRO-668. Java: Reduce object allocations while writing strings.
    (scottcarey)

    AVRO-537. Ruby: Reuse client connection for multiple requests.
    (Gabor Torok via cutting)

  BUG FIXES

    AVRO-666. Remove an extraneous pdb.set_trace() that crept into schema.py
    (hammer)

    AVRO-657. Fix build so that md5 and sha1 checksum files contain
    only the file's basename without any directories. (cutting)

    AVRO-664. Ruby server takes a long time to start in interop tests. (thiru)

    AVRO-667. GenericArray fails to compare with List. SpecificRecord
    compare gets ClassCastException. (scottcarey & cutting)

    AVRO-717. Java: Fix SpecificDatumWriter default constructor to
    correctly reference SpecificData.  (Joe Crobak via cutting)

Avro 1.4.0 (31 August 2010)

  INCOMPATIBLE CHANGES

    AVRO-372.  Rename GenAvro to be Avro IDL.  The tool name is now
    'idl'.  The file suffix is now '.avdl'.  (cutting)

    AVRO-544. Java: Change Server interface, adding start() and join()
    methods.  Servers are no longer started in their constructor.
    (hammer & cutting)

    AVRO-605. Java: Change Utf8 to implement CharSequence and change
    specific, generic & reflect APIs to accept any CharSequence
    implementation for string schemas, including java.lang.String.
    This incompatibly changes method signatures of generated protocol
    interfaces.  It also incompatibly changes the generic
    representation of enum symbols from java.lang.String to
    org.apache.avro.generic.GenericEnumSymbol.

    AVRO-637. Java: Change GenericArray to implement List.  Also
    incompatibly change generated array signatures to List.  The
    runtime will now accept any Collection implementation for array
    types.  (cutting)

  NEW FEATURES

    AVRO-627. Add PHP implementation. (Michael Glaesemann via cutting)

    AVRO-613. Create basic frontend to view trace results.
    (Patrick Wendell via philz)

    AVRO-606. Add File-Based Span Storage to TracePlugin
    (Patrick Wendell via philz)

    AVRO-595. Add Basic Trace Collection and Propagation.
    (Patrick Wendell via philz)

    AVRO-493. Add support for Hadoop Mapreduce with Avro data files. (cutting)

    AVRO-285: Specify one-way messages and implement in Java. (cutting)

    AVRO-512. Java: Define and implement MapReduce connector
    protocols. (cutting)

    AVRO-577. Java: Add MapReduce InputFormat for plain text files.
    (Tom White via cutting)

    AVRO-567. Add command-line tools for text file import & export.
    (Patrick Wendell via cutting)

    AVRO-578. Java: add payload data to RPC context for use by
    plugins.  (Patrick Wendell via cutting)

    AVRO-405: Java: Add Netty-based RPC transceiver and server
    implementation. (Harry Wang via cutting)

    AVRO-580. Permit intermixing of generic and specific data.
    SpecificDatumReader and SpecificDatumWriter will now use generic
    types when no specific class is available.  (cutting)

    AVRO-600. Add support for type and field name aliases,
    facilitating schema migration. (cutting)

    AVRO-495. IDL: Add support for file includes. (cutting)

    AVRO-611. IDL: Add support for one-way messages. (cutting)

    AVRO-528. Python: Add support for Twisted.  (Esteve Fernandez via cutting)

  IMPROVEMENTS

    AVRO-636. Expose Singleton Method for TracePlugin. (Patrick Wendell via
    philz)

    AVRO-614. Improve Trace frontend UI. (Patrick Wendell via philz)

    AVRO-629. Prefer the JSON module of python's stdlib over simplejson.
    (Harsh J Chouraria via philz)

    AVRO-587. Add Charts and Templating to Stats View
    (Patrick Wendell via philz)

    AVRO-584. Update Histogram for Stats Plugin
    (Patrick Wendell via philz)

    AVRO-501. missing function in C api to access array elements after
    decoding an array. (Bruce Mitchener via massie)

    AVRO-497. Minor changes to C++ autotools, makefiles, and code
    generator. (sbanacho)

    AVRO-508. Use page-backed buffers for C++ serialization input or
    output. (sbanacho)

    AVRO-520. Refactor C++ validation code. (sbanacho)

    AVRO-521. Out of memory and other issues with Junit tests for
    mapreduce (thiru)

    AVRO-540. Java: Make GenericArray reversible.  (Eric Evans via cutting)

    AVRO-284. Handle namespaces correctly in new Python implementation
    (Patrick Wendell via hammer)

    AVRO-331. Inline shared state during the Python build process
    (version, handshake schemas, and interop data directory)
    (Patrick Wendell via hammer)

    AVRO-447. Describe implicit protocol "system" error in spec. (cutting)

    AVRO-150. Java: fix compiler to not re-generate up-to-date code.
    (John Yu via cutting)

    AVRO-494. Add support for default values to IDL.  (cutting)

    AVRO-596. Start Netty server eagerly in constructor.
    (Patrick Linehan via cutting)

    AVRO-581. Java: Update MapReduce APIs to use key/value pairs for
    intermediate data.  (cutting)

    AVRO-582. Java: Add comment to generated code indicating that
    set() and get() are not for use by applications.  (cutting)

    AVRO-601. Java: Add per-field property support. (cutting)

    AVRO-583. Java: Improve error message when types not correctly
    nested. (cutting)

    AVRO-603. Java: Add a constructor for SpecificDatumReader that
    accepts both reader's and writer's schema.  Also improve javadoc
    for related constructors and setters.  (Stu Hood via cutting)

    AVRO-557. Java: Cache ResolvingDecoder instances, speeding
    DatumReader benchmarks by 5x to 9x.  (cutting & scotcarey)

    AVRO-586. Java: Permit specification of MapReduce output file
    metadata properties. (Ken Krugler via cutting)

    AVRO-616. Java: Add comment to generated source files noting that
    they should not be edited. (Patrick Wendell via cutting)

    AVRO-615. Java: Improve error message for NullPointerException
    when writing data.  (cutting)

    AVRO-534. Java: Permit mapred jobs to specify a different input
    schema from the input file.  (Harsh J Chouraria via cutting)

    AVRO-617. Java: Detect erroneous default field values. (cutting)

    AVRO-598. Java: Use generic data structures when reading with
    reflect API and classes are not defined. (cutting)

    AVRO-631. Java: Make RPC plugin payload reporting consistent.
    (Patrick Wendell via cutting)

    AVRO-632. Java: Change RPC responder to log stack traces for user
    exceptions. (cutting)

    AVRO-639. Python: Use namespace-unqualified names for references
    to schemas in the same namespace. (cutting)

    AVRO-644: PHP: Add requirements to README. (Michael Glaesemann via cutting)

    AVRO-652. Java: Expose sync points in DataFileReader.
    (Stu Hood via cutting)

  BUG FIXES

    AVRO-622. python avro.ipc doesn't work with python2.4 (philz)

    AVRO-620. Python implementation doesn't stringify sub-schemas
    correctly. (philz)

    AVRO-618. Avro doesn't work with python 2.4 (philz)

    AVRO-502. Memory leak from parsing JSON schema.
    (Robert G. Jakabosky via massie)

    AVRO-515. Fix build and compatibility problems. (sbanacho)

    AVRO-518. Add link to boost filesystem library.  (John Plevyak via sbanacho)

    AVRO-566. Java: fix so that JAVA_HOME is bound by build.xml for
    test_tools.sh.  (cutting)

    AVRO-571. Fix how we handle out-of-bounds indexes for union and
    enum parsing in Python (hammer)

    AVRO-589. ClassCastException:
    org.apache.avro.io.parsing.Symbol$Alternative cannot be cast to
    org.apache.avro.io.parsing.Symbol$UnionAdjustAction (thiru)

    AVRO-573. Java: Fix various bugs with undeclared RPC exceptions. (cutting)

    AVRO-604. Java: Fix missing build dependency for checkstyle target.
    (Patrick Wendell via cutting)

    AVRO-602. C++: Update documentation to match API.  (Jingguo Yao via cutting)

    AVRO-609. Java: Fix JsonToBinaryFragmentTool to flush output. (cutting)

    AVRO-612. Java: Preserve field documentation when writing schemas. (cutting)

    AVRO-590. IDL: Fix order specifications. (cutting)

    AVRO-541. Java: Fix sporadic corruption when appending a
    compressed file to an uncompressed file. (scottcarey via cutting)

    AVRO-86. Java: Fix NullPointerException when reflect API infers
    schema for a class without a package. (cutting)

    AVRO-510. C: Fix some memory leaks in datafile reader &
    writer. (Robert G. Jakabosky via cutting)

    AVRO-633. Ruby: Implement skip_union to correct issues with
    updating protocols

    AVRO-640. Python: Fix path to sources in RPC interop test.  (cutting)

    AVRO-653. Python: Fix so distribution contains correct files.
    (Eric Evans via cutting)

    AVRO-650. Java: Fix GenericDatumReader to be thread-safe. (cutting)

Avro 1.3.3 (7 June 2010)

  IMPROVEMENTS

    AVRO-525. remove unused imports (Esteve Fernandez via hammer)

    AVRO-526. Fall back to pure Python StringIO if cStringIO is not available
    (Esteve Fernandez via hammer)

    AVRO-560. Python impl should include system errors in every protocol (hammer)

    AVRO-486. DataFile.open for the ruby side (jmhodges)

    AVRO-559. Handle read_union error where the list index of the union branch
    to follow exceeds the size of the union schema (hammer)

    AVRO-491. Doing doubles and floats better in the ruby impl. (jmhodges)

    AVRO-450. HTTP IPC for ruby. (jmhodges)

    AVRO-514. Removing unnecessary ruby StringIO calls. (jmhodges)

    AVRO-511. Ruby implementation passes the rpc interop tests.

    AVRO-543. Schema comparison is hella slow on the Ruby side. (jmhodges)

    AVRO-504. ruby impl could stand better error messages on schema parsing (jmhodges)

    AVRO-556. Poor performance for Reader::readBytes improved
    (Dave Wright via sbanacho)


  BUG FIXES
    AVRO-461. Skipping primitives in the ruby side (jmhodges)

    AVRO-496. python sample_http_client.py is broken (Jeff Hodges via hammer)

    AVRO-527. Undefined variable "schm" error (Esteve Fernandez via hammer)

    AVRO-548. Python client should handle CLIENT handshake match status
    correctly. (hammer)

    AVR0-555 Missing license headers in some ruby source
    files. (jmhodges)

    AVRO-554 Fixing syncing in ruby data file writing. (Grant Rodgers
    via jmhodges)

    AVRO-562 ruby side had busted client handshaking. (jmhodges)

    AVRO-517. Resolving Decoder fails in some cases. (thiru)

    AVRO-524. DataFileWriter.appendTo leads to intermittent IOException during write() (thiru)

    AVRO-499. Java: Fix protocol reflection to reject interfaces with
    multiple methods of the same name.  (cutting)

    AVRO-489. Skipping complex objects in the ruby impl. (jmhodges)

    AVR0-555 Missing license headers in some ruby source
    files. (jmhodges)

    AVRO-500. ruby side dev packaging (jmhodges)

    AVRO-516. ruby: buffer length should not be little-endian in socket rpc (jmhodges)

Avro 1.3.2 (31 March 2010)

  IMPROVEMENTS

    AVRO-449. CMake-based build system for Avro/C (Bruce Mitchener via massie)

    AVRO-418. avro.h generates errors when included in C++ code
    (Bruce Mitchener via massie)

    AVRO-480. avro_flush() is in the header, but not implemented
    (Bruce Mitchener via massie)

    AVRO-481. Buildbot warning fixes (Bruce Mitchener via massie)

    AVRO-451. Try to use hashlib in Python implementation and fall
    back to md5 if we can't find it (Bruce Mitchener via hammer)

    AVRO-423. HTTPTransceiver does not reuse connections
    (Eric Evans via hammer)

    AVRO-490. Add Ant task to deploy Java artifacts to Maven repo. (cutting)

  BUG FIXES

    AVRO-479. Fix 'sign' target in top-level build.sh to generate md5
    checksums. (cutting)

    AVRO-487. Fix Java reflect protocols to transmit error messages. (cutting)

Avro 1.3.1 (16 March 2010)

  NEW FEATURES

    AVRO-432. Add @Nullable annotation to Java reflect API. (cutting)

  IMPROVEMENTS

    AVRO-426. Include a ruby gem in distributions.
    (Ryan King via cutting)

    AVRO-439. Remove unused headers from being checked in configure.in
    (Bruce Mitchener via massie)

    AVRO-438. Clarify spec.  (Amichai Rothman via cutting)

    AVRO-445. avro_size_data() to pre-calculate the size of an
    avro_datum_t in serialized form (Bruce Mitchener via massie)

    AVRO-443. Endianness is determined at configure time rather
    than compile time (Bruce Mitchener via massie)

    AVRO-448. encoding_binary.c doesn't build on big endian platforms
    (Bruce Mitchener via massie)

    AVRO-442. sizeof void* and sizeof long detected at configure time
    (Bruce Mitchener via massie)

    AVRO-444. Fix warnings (Bruce Mitchener via massie)

    AVRO-452. Include cleanup (Bruce Mitchener via massie)

    AVRO-453. More warning cleanup (Bruce Mitchener via massie)

    AVRO-440. config.h output not correctly used (Bruce Mitchener via massie)

    AVRO-460. Performance improvement to write_long() (Bruce Mitchener
    via massie)

    AVRO-455. Update Java dependencies. (David Dabbs via cutting)

    AVRO-446. Add a build.sh task that signs and checksums artifacts. (cutting)

    AVRO-454. Change DataFileStream to implement Closeable. (cutting)

  BUG FIXES

    AVRO-424. Fix the specification of the deflate codec.
    (Scott Carey via cutting)

    AVRO-431. Fix Java's mvn-install Ant target to work in clean build.
    (cutting)

    AVRO-437. Fix some typos in docs. (Amichai Rothman via cutting)

    AVRO-433. Fix exceptions in Java reflect RPC. (cutting)

Avro 1.3.0 (24 February 2010)

  INCOMPATIBLE CHANGES

    AVRO-185. Java's specific API no longer depends on reflection.
    This reverses the inheritance of most classes in the specific and
    reflect packages. (cutting)

    AVRO-201.  Move Python data file code into its own module.
    (Jeff Hammerbacher via cutting)

    AVRO-80.  Java reflect API no longer uses Avro-specific classes
    for string and array.  Instead now Java strings and arrays or
    Lists are used. (cutting)

    AVRO-237.  Reflect API now represents any Java Collection as an
    Avro array.  Also inherited fields are included in records, and
    inherited methods in protocols.  Finally, Java shorts are
    supported as integers.  (cutting)

    AVRO-160. Revised data file format and Java API.  Simplified
    format now permits streaming but no longer supports multiple
    schemas per file.  Java API for reading is iterator-based.

    AVRO-278. Changed GenericRecord API and implementation to be
    array-based rather than Map-based. (cutting)

    AVRO-163. Re-organized source tree into separate directories for
    each language.  (cutting)

    AVRO-344. Complete rewrite of C implementation (massie)

    AVRO-349. Fix C++ build for post-AVRO-163. (sbanacho)

    AVRO-374. Remove and ignore files that are created by autoreconf. (sbanacho)

    AVRO-387. Add IndexedRecord interface, common to both specific and
    generic records, so that toString() and hashCode() implementations
    can be shared.  Also fix toString() and hashCode() to not throw
    NPE for uninitialized records. (cutting)

  NEW FEATURES

    AVRO-151. Validating Avro schema parser for C (massie)

    AVRO-158. Permit appending to a data file from Java.  (cutting)

    AVRO-154. Add 'induce' sub-command to avroj command line tool.
    (Philip Zeyliger via cutting)

    AVRO-245. Add four new avroj commands:
      - fromjson Reads JSON records and writes to an Avro data file.
      - tojson  Dumps an Avro data file as JSON, one record per line.
      - fragtojson Renders a binary-encoded Avro datum as JSON.
      - jsontofrag Renders a JSON-encoded Avro datum as binary.
    (Philip Zeyliger via cutting)

    AVRO-272. Extend RPCContext to include message.
    (Philip Zeyliger via cutting)

    AVRO-258. Add GenAvro language tool.  (Todd Lipcon via cutting)

    AVRO-267. Add two new avroj commands: rpcsend and rpcreceive.
    (Philip Zeyliger via cutting)

    AVRO-271. Add a Java local RPC transceiver. (Philip Zeyliger via cutting)

    AVRO-273, AVRO-275, & AVRO-279. Add Java RPC statistics collection
    and display. (Philip Zeyliger via cutting)

    AVRO-152. Add support for documentation strings to schemas,
    protocols, and messages. (Philip Zeyliger via cutting)

    AVRO-274. Make Java's data file sync interval configurable.  (cutting)

    AVRO-346. Add function to validate a datum against a schema. (massie)

    AVRO-306. Add Ruby implementation. (Jeff Hodges via cutting)

    AVRO-135. Add compression to data files. (philz)

    AVRO-368. Reserve avro.* in object container files, and
    rename existing reserved words. (philz)

    AVRO-380. Avro Container File format change: add block size to block
    descriptor.  (Scott Carey via philz)

    AVRO-322. Add a working client and server to Python implementation
    using HTTP as a transport (hammer)

    AVRO-287. Make RPC interop tests work with new Python implementation
    (hammer)

    AVRO-136. Add support for building/releasing python eggs (hammer)

    AVRO-414. Add Java support for concatenating and appending data
    files. (Scott Carey via cutting)

  IMPROVEMENTS

    AVRO-157. Changes from code review comments for C++. (sbanacho)

    AVRO-168. Correct shared library versioning for C implementation (massie)

    AVRO-142. Remove some Java unused fields and imports.  Start
    running checkstyle on Java test code.  (Philip Zeyliger via cutting)

    AVRO-147. Use configure to create makefile for C++ builds. (sbanacho)

    AVRO-155. Make python avro.io.DataFileReader iterable.
    (Jeff Hammerbacher via sharad)

    AVRO-148. Add ant target to build C++ project.  (sbanacho)

    AVRO-166. Improve error checking in Java schema parser.
    (Philip Zeyliger via cutting)

    AVRO-167. Refactor Java SpecificCompiler to simplify testing, and
    add some tests. (Philip Zeyliger via cutting)

    AVRO-146. Add support for using Eclipse to develop Avro's Java.
    (Philip Zeyliger via cutting)

    AVRO-149. Add Java command-line executable, "avroj".
    (Philip Zeyliger via cutting)

    AVRO-175. Split the avro_io interface into two interfaces: avro_reader
    and avro_writer (massie)

    AVRO-179. Add units tests for all Avro C primitives (massie)

    AVRO-177. Upgrade Java dependencies to recent versions. (cutting)

    AVRO-180. Enhance code generator script and unit tests. (sbanacho)

    AVRO-186. Full read-path interoperability test (massie)

    AVRO-187. Move top-level source files into separate directories
    for easier maintenance (massie)

    AVRO-188. Need to update svn ignores (massie)

    AVRO-190. Use fixed size C++ types for Avro fixed types. (sbanacho)

    AVRO-192. Improved errors for Java schema parsing problems. (cutting)

    AVRO-195. Complex type support for write streams (massie)

    AVRO-197. Add mapping of name to index for records and enums. (sbanacho)

    AVRO-204. Change the way symbolic references are tracked. (sbanacho)

    AVRO-205. APIs for checking schema resolution. (sbanacho)

    AVRO-203. Reformat license in Python sources.
    (Jeff Hammerbacher via cutting)

    AVRO-199. Make Python test schemas more readable.
    (Jeff Hammerbacher via cutting)

    AVRO-216. Formatting cleanups to schema.py.
    (Jeff Hammerbacher via cutting)

    AVRO-202. Add __all__ listing to Python module, to ease import.
    (Jeff Hammerbacher via cutting)

    AVRO-229. Change Java to implement Flushable and Closeable
    interfaces where appropriate.  (tomwhite via cutting)

    AVRO-231. Tutorial added to C++ docs. (sbanacho)

    AVRO-220. Dynamic schema resolution from writer to reader. (sbanacho)

    AVRO-213. Add Apache RAT to tests, to validate licenses.  (cutting)

    AVRO-233. Elaborate Java tool API. (Philip Zeyliger via cutting)

    AVRO-236. Add protocol support to avroj induce tool.  (cutting)

    AVRO-234. C++ code cleanup. (sbanacho)

    AVRO-240. In Python, if simplejson is not available, try using
    2.6's built-in json module. (Jeff Hammerbacher via cutting)

    AVRO-242. In Java, add support for extensible string-valued
    properties to schemas.  (cutting)

    AVRO-241. In Java, add a union annotation for reflection. (cutting)

    AVRO-249. In reflection, implement Java short as an int whose
    "java-class" property is set to java.lang.Short. (cutting)

    AVRO-247. In reflection, add Stringable annotation to indicate
    classes that can be represented by an Avro string.  (cutting)

    AVRO-246 Java schema parser should take schema from InputStream
    in addition to file. (thiru)

    AVRO-250. Make reflect's Union annotation applicable to message
    parameters and return types too.  (cutting)

    AVRO-253. Improve documentation of schema names in specification. (cutting)

    AVRO-257. Remove some dead Java code and un-needed casts.
    (Kevin Oliver via cutting)

    AVRO-263. Change avroj command line tools to return exit codes.
    (Todd Lipcon via cutting)

    AVRO-260. Upgrade to Jackson 1.4.0. (cutting)

    AVRO-269. Use java compiler to validate specific compiler's output.
    (Philip Zeyliger via cutting)

    AVRO-219. Rework Python API.  (Jeff Hammerbacher via cutting)

    AVRO-264. Rework Python RPC.  (Jeff Hammerbacher via cutting)

    AVRO-75. Clarify that missing values with no default values cause
    errors, and fix Java implementation.  (cutting)

    AVRO-259. Add null schema check in GenericData.Record and
    GenericData.Array construtors. (Kevin Oliver via cutting)

    AVRO-294. Clarify that bytes and fixed are unsigned, and how their
    JSON default values are interpreted.  (Jeff Hammerbacher & cutting)

    AVRO-298. Fix Java's DatumReader and DatumWriter APIs to better
    use generics.  (philz via cutting)

    AVRO-288. Implement schema resolution for Python parameters.
    (Jeff Hammerbacher via cutting)

    AVRO-282. Improve avroj build to better specify dependencies.
    (philz via cutting)

    AVRO-309. Fix python build, post-AVRO-163. (cutting)

    AVRO-310. Improve top-level build.sh. (cutting)

    AVRO-317. Restore Java data interop tests. (cutting)

    AVRO-320. Rename avroj to be avro-tools.  Also add LICENSE.txt and
    NOTICE.txt to it, print the NOTICE.txt and version in help, and
    include the tools jar in distributions.  (cutting)

    AVRO-314. Add mvn-install ant task to publish jar to local Maven
    repository.  (Aaron Kimball via cutting)

    AVRO-243. Use automake generated Makefile.in. (sbanacho)

    AVRO-198. Fix specification of protocol name, also clarify which
    properties are required.  (cutting)

    AVRO-336. Check that appropriate schemas are passed to
    GenericData#Record and #Array.  (cutting)

    AVRO-353. Publish the C API to avro-doc package when 'dist' target
    run (massie)

    AVRO-359. Add support for encoding/decoding arrays and maps (massie)

    AVRO-360. Standardize on Linux coding style instead of GNU (massie)

    AVRO-362. Add test to ensure Python implementation handles Union schema
    with two fixed types of different names (hammer)

    AVRO-364. Add support for encoding/decoding records (massie)

    AVRO-367. Complete memory management for the C implementation (massie)

    AVRO-369. Add support for encoding/decoding enum values (massie)

    AVRO-370. Add support for encoding/decoding fixed data (massie)

    AVRO-371. Add support for encoding/decoding unions (massie)

    AVRO-377. Add getters and setters for all Avro datum types (massie)

    AVRO-378. Add example code to the C implementation and update
              documentation (massie)

    AVRO-379. Changed record getter/setter API to match other datatypes (massie)

    AVRO-381. Update documentation to talk about reference counting and
              memory management (massie)

    AVRO-384. Add schema projection to the C implementation (massie)

    AVRO-388. Using ResolvingDecoder in GenericDatumReader (thiru)

    AVRO-386. Python implementaiton of compression (philz)

    AVRO-394. Simplify and consolidate all data structures into hash
    tables (massie)

    AVRO-393.  Add a constructor for Utf8 that accepts byte[].
    (Jeff Hodges via cutting)

    AVRO-395. Add a cscope Makefile target (Eli Collins via massie)

    AVRO-397. Whitespace change and comment clarification in
    datafile.py (hammer)

    AVRO-340. Define usage of HTTP as RPC transport in spec.  (cutting)

    AVRO-342. Document that Java's socket and datagram RPC transports
    are non-standard.  (cutting)

    AVRO-208. Clarify that enum symbols must be unique.  (cutting)

    AVRO-321. Restore Java RPC interop tests. (cutting)

    AVRO-402. Add method for writing avro_schema_t structure to an
              avro_writer_t (massie)

    AVRO-398. avro_read_file doesn't detect eof (Eli Collins via massie)

    AVRO-403. Add file object container support to C implementation (massie)

    AVRO-400. Adding warning for unused parameters (Eli Collins via massie)

    AVRO-409. Update contact database example to use a file object
              container for C implementation (massie)

    AVRO-420. Add namespace support to C implementation (massie)

    AVRO-261. Allow Schemas to be immutable (thiru)

    AVRO-412. Allow schema validation to be optional (massie)

    AVRO-295. JsonEncoder is not flushed after writing using ReflectDatumWriter (thiru)

    AVRO-416. Produce Java source archive.  (Ryan Rawson via cutting)

    AVRO-417. Produce Java documentation archive.  (Scott Carey via cutting)

    AVRO-428. Improve file read performance by buffering data (massie)

    AVRO-430. Remove subversion directories from Avro C tarball (massie)

  OPTIMIZATIONS

    AVRO-172. More efficient schema processing (massie)

    AVRO-291. Set NODELAY in Java's SocketTransceiver.
    (Eric Evans via cutting)

    AVRO-315. Performance improvements to BinaryDecoder (thiru)

    AVRO-316. Optiminzing inner loop functions of Avro io (thiru)

    AVRO-328. Performance improvements Validating encoder/decoder for nested records (thiru)

    AVRO-345. Optimization for ResolvingDecoder (thiru)

    AVRO-363. estSchema had two tests disabled; new test for named schemas
    named after primitives. (philz)

    AVRO-354. Performance improvement to BinaryDecoder.readInt() (Kevin Oliver via thiru)

    AVRO-343. Minor fixes to Eclipse config after build re-org (philz)

    AVRO-383. Optimizing ResolvingDecoder for default values (thiru)

    AVRO-411, AVRO-413. Add Ruby data file interop tests. (Jeff Hodges
    via cutting)

    AVRO-399. Make data file interop tests work with the Python implementation (hammer)

    AVRO-392. Overhaul of Java binary decoder to significantly improve
    performance.  (Scott Carey via cutting)

  BUG FIXES

    AVRO-176. Safeguard against bad istreams before reading. (sbanacho)

    AVRO-141.  Fix a NullPointerException in ReflectData#isRecord().
    (Isabel Drost via cutting)

    AVRO-156.  Fix broken links to Wiki in documentation.
    (Jeff Hammerbacher via cutting)

    AVRO-165.  Fix an equals implementation in TestReflect.
    (Philip Zeyliger via cutting)

    AVRO-169.  Fix a typo in the spec. (Jeff Hammerbacher via cutting)

    AVRO-189. test-c target fails (massie)

    AVRO-182. Fix Java's generic and specific implementations of
    equals() and hashCode() to be consistent with compareTo().
    (cutting)

    AVRO-193. Fix 'ant test-avroj' on Ubuntu 9.10. (cutting)

    AVRO-171. Fix Java's Protocol#toString() to correctly handle
    forward-references. (cutting)

    AVRO-191. Explicitly include stdint.h for C++. (cutting via sbanacho)

    AVRO-194. C++ varint encoding buffer too small. (sbanacho)

    AVRO-210. Memory leak with recursive schemas when constructed
    by hand. (sbanacho)

    AVRO-211. Nested schema does not get parsed in C++. (sbanacho)

    AVRO-222. Fix Python interop tests broken by AVRO-201.
    (Jeff Hammerbacher via cutting)

    AVRO-223. Fix test-avroj on Mac OS X.  (Philip Zeyliger via cutting)

    AVRO-224. Code cleanup: cleaner distinction between public and private
    methods (massie)

    AVRO-221. Mangle Java reserved words in generated code to avoid
    name conflicts.  (Philip Zeyliger via cutting)

    AVRO-225. In generated Java, use dollar-sign, not underscore, to
    prevent name conflicts. (cutting)

    AVRO-227. Fix a typo in the spec document.  (Todd Lipcon via cutting)

    AVRO-232. Fix C++ build in cygwin. (sbanacho)

    AVRO-238. Fix so that slf4j-simple is only required by tests.  (cutting)

    AVRO-184. Better eclipse configuration support. (thiru)

    AVRO-256. Use fully-qualified class names in generated Java code
    to eliminate name conflicts. (cutting)

    AVRO-255. Fix Java so that, when parsing schemas, unspecified
    namespaces are defaulted to nearest enclosing namespace. (cutting)

    AVRO-262. Fix two typos in the spec.  (Jeff Hammerbacher via cutting)

    AVRO-276. Fix GenAvro to specify file encoding as UTF-8.
    (Philip Zeyliger via cutting)

    AVRO-280. Fix file header schema in specification.  Also fix
    "forrestdoc" build target to work on clean checkout.
    (Jeff Hammerbacher & cutting)

    AVRO-292. Fix Python skipping of ints and longs.
    (Jeff Hammerbacher via cutting)

    AVRO-289. Fix Python schema resolution.
    (Jeff Hammerbacher via cutting)

    AVRO-281. Symlink in build.xml does not work well with Cygwin (thiru)

    AVRO-299. Fix Python numeric promotion.  (Jeff Hammerbacher via cutting)

    AVRO-207. Fix Python to detect duplicate enum symbols and add
    tests for duplicates in unions.  (Jeff Hammerbacher via cutting)

    AVRO-313. Default values for fields or records and array (or map) don't work with ResolvingDecoder (thiru)

    AVRO-47. Use void* for byte sequences. (sbanacho)

    AVRO-337. ant test-java fails in Cygwin due to CRLF v LF problem (thiru)

    AVRO-347. Add the --unsafe flag to asciidoc in order to include source/header files (massie)

    AVRO-352. Incorrect binary encoding for strings and bytes (massie)

    AVRO-356. RAT fails with "Unknown license" error (massie)

    AVRO-355. io.Perf test harness uses different random number seeds for each run (Kevin Oliver via thiru)

    AVRO-375. Initializing uninizialized encoders fail (thiru)

    AVRO-373. EOF detection broken in JsonDecoder (thiru)

    AVRO-382. Avro hashCode throws a NullPointerException when fields are uninitialized (Michael Armbrust via philz)

    AVRO-385. Initializing uninizialized BlockingBinaryEncoder fails (thiru)

    AVRO-389. ResolvingDecoder does not resolve enum well (thiru)

    AVRO-390. ResolvingDecoder does not handle default values for records well (thiru)

    AVRO-361. Specific Compiler fails to handle union with two fixed branches (Scott Carey via philz)

    AVRO-350. Fix GenericData.Record#get(String) to return null rather than
    throw NPE when passed a field name that's not in the record.
    (Kevin Oliver via cutting)

    AVRO-401. Fix a typo in the specification.  (Tom White via cutting)

    AVRO-408. lang/c/build.sh 'dist' broken (massie)

    AVRO-407. Fix a bug in the Java data file reader. (Scott Carey via cutting)

    AVRO-415. Fix Ruby to work with Ruby 1.8.6.

    AVRO-421. Fix some dist target issues.  (cutting)

    AVRO-422. Build c++ docs in correct location. (sbanacho)

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)

  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)

    AVRO-351. Shorten induce tool description; add check to avoid overly verbose
    descriptions. (philz)

  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)
