Uploaded image for project: 'Avro'
  1. Avro
  2. AVRO-344

Complete rewrite of C implementation


    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.3.0
    • Component/s: c
    • Labels:


      This JIRA is for tracking what I hope will be the last C rewrite.

      This rewrite

      • removes all dependencies on APR and APR-util. Memory is managed now using reference counting. Hashes implemented using public domain code from Berkeley. List implemented using BSD license queue.h
      • uses the jansson JSON parser for parsing schemas. The Jansson parser is a high-quality JSON parser in C with an Apache-friendly MIT license
      • there is a well-defined object framework that serves both datum and schema datatypes and provides reference counting. Schemas and datum/values are no longer part of a single monolithic structure now.
      • you can now create a schema from json or by hand in code
      • updated to support the new AVRO-163 build layout
      • properly checks avro identifiers
      • probes for the endianness of the architecture in order to optimize endianness flipping, e.g. only on big-endian machines are little-endian conversions done.
      • documentation is now handled by asciidoc instead of doxygen.
      • increased number of schema unit tests
      • provides much more schema processing functionality like recursively checking for equality, checking for matches with promotion, and recursive schema copy.
      • lots of bug fixes

      This code is by no means complete. Most of the schema processing code is finished along with the primitive encoders for the binary format but I still need to complete the read/write path for complex types.

      I'm submitting this Jira to make the work public and to solicit feedback in prep for the 1.3 release.


        1. avro-c-1.2.0-dev.tar.gz
          692 kB
          Matt Massie
        2. AVRO-344.patch
          1.04 MB
          Matt Massie



            • Assignee:
              massie Matt Massie
              massie Matt Massie
            • Votes:
              0 Vote for this issue
              2 Start watching this issue


              • Created: