Avro Change Log

Avro 1.8.2 (10 April 2017)

  INCOMPATIBLE CHANGES

  NEW FEATURES

    AVRO-1704: Java: Add support for single-message encoding. (blue)

    AVRO-1704: Spec: Add single-message encoding format. (Niels Basjes via blue)

    AVRO-1884: Java: Add method to set the compiler output suffix.
    (shijinkui via blue)

    AVRO-1932: Java: Allow setting the SchemaStore on generated classes. 
    (Niels Basjes)

  OPTIMIZATIONS

  IMPROVEMENTS

    AVRO-1889: Update maven-shade-plugin to enable building in Java 8 on Mac.
    (Sachin Goyal via blue)

    AVRO-1895. Java: Fix GenericData#deepCopy() to support logical types.
    (cutting)

    AVRO-1719: C++: Fix tests with Boost >= 1.59. (Romain Geissler via blue)

    AVRO-1879: Make conversions field static. (Michael Wong via blue)

    AVRO-1919: Formalize the presence of build.sh. (Suraj Acharya via cutting)

    AVRO-1918: Improve logical type documentation. (Gabor Szadovszky via cutting)

    AVRO-1907: Java: Add debug logging for invalid logical types.
    (Gabor Szadovszky via blue)

    AVRO-1897: Fix build issues due to VERSION.txt newline, avro-tools.
    (Suraj Acharya via blue)

  BUG FIXES

    AVRO-1741: Python3: Fix error when codec is not in the header.
    (Matthew Hayes via blue)

    AVRO-1869: Java: Fix Decimal conversion from ByteBuffer. (blue)

    AVRO-607: Java: Make SpecificData schema cache thread-safe.
    (Andrius Druzinis-Vitkus via blue)

    AVRO-1888: Java: Fix single-record encoding marker check. (blue)

    AVRO-1848: Ruby: Fix handling of falsey default values.
    (Brian McKelvey via blue)

    AVRO-1874: Py3: Use recommended module-level logging.
    (Torgeir Børresen via blue)

    AVRO-1883: Java: Fix incompatible schema detection nested in unions.
    (Yibing Shi via blue)

    AVRO-1908: Fix TestSpecificCompiler reference to private method.
    (blue)

    AVRO-1873: Ruby: Add CRC32 checksum to Snappy-compressed blocks.
    (blue)

    AVRO-1900: Java: Remove dev-tools to fix Java build. (blue)

    AVRO-1913: No warnings in the generated Java code. (Niels Basjes)

    AVRO-1914: Fix licencing errors reported by rat. (Niels Basjes)

    AVRO-1901: Record named "Exception" generated bad code.
    (Radai Rosenblatt via Niels Basjes)

    AVRO-1849: C++: printJson fails on record with no fields.
    (Simon Woodford vai tomwhite)

    AVRO-1853: C++: Compiler::toBin crashes on empty string.
    (Zoltan Ivanfi via tomwhite)

    AVRO-1923, AVRO-1944: Stop infinite recursion in GenericData.toString. (Niels Basjes)

    AVRO-1860: Java: Field#DefaultVal() returns Ints for Long fields.
    (Gabor Szadovszky via cutting)

    AVRO-1929: Java: SchemaCompatibility fails to recognize
    string<->bytes promotion.  (Anders Sundelin via cutting)

    AVRO-1882: Java: Fix ConcurrentHashMap with non-string keys.
    (Sachin Goyal via blue)

    AVRO-1943: Java: Flaky test:
    TestNettyServerWithCompression.testConnectionsCount
    (Gabor Szadovszky via tomwhite)

    AVRO-1947: Java: Inconsistent maven profile activation
    (Gabor Szadovszky via tomwhite)

    AVRO-1951: Python: Fix ipc_test.py with a valid DNS name. (blue)

    AVRO-1987: Add @deprecated tag to getConverion method
    (Suraj Acharya via gabor)

    AVRO-1813: Incorrect link to build instructions in Java Getting Started (Pietro Menna via gabor)

Avro 1.8.1 (14 May 2016)

  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-1840: Ensure that build.sh clean really cleans all generated files (nielsbasjes)

    AVRO-1841: Add clientside githooks to do basic commit validation (nielsbasjes) 

    AVRO-1807: Java/JSON: Throw for unsupported objects rather than ignoring. (blue)

  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)
