Avro
  1. Avro
  2. AVRO-344

Complete rewrite of C implementation

    Details

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

      Description

      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-344.patch
        1.04 MB
        Matt Massie
      2. avro-c-1.2.0-dev.tar.gz
        692 kB
        Matt Massie

        Activity

        No work has yet been logged on this issue.

          People

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

            Dates

            • Created:
              Updated:
              Resolved:

              Development