Avro Change Log

Trunk (not yet released)

  INCOMPATIBLE CHANGES

  NEW FEATURES

  OPTIMIZATIONS

  IMPROVEMENTS

  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 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-1838: Java: Update checkstyle to catch trailing whitespace.
    (nielsbasjes via blue)

    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)
