You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by gi...@apache.org on 2024/08/22 10:35:57 UTC

(avro) branch asf-site updated (727df6284 -> ada661a3e)

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a change to branch asf-site
in repository https://gitbox.apache.org/repos/asf/avro.git


 discard 727df6284 Update docs
     new ada661a3e Update docs

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (727df6284)
            \
             N -- N -- N   refs/heads/asf-site (ada661a3e)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .asf.yaml | 3 +++
 1 file changed, 3 insertions(+)


(avro) 01/01: Update docs

Posted by gi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/avro.git

commit ada661a3e408980c380aa5b82e72dbe85b0ac9a6
Author: Github Actions <de...@avro.apache.org>
AuthorDate: Thu Aug 22 10:35:46 2024 +0000

    Update docs
---
 .asf.yaml                                          |   56 +
 .devcontainer/devcontainer.json                    |   36 +
 .editorconfig                                      |  227 +
 .gitattributes                                     |   11 +
 .github/PULL_REQUEST_TEMPLATE.md                   |   60 +
 .github/dependabot.yml                             |   92 +
 .github/labeler.yml                                |   56 +
 .github/workflows/codeql-csharp-analysis.yml       |   97 +
 .github/workflows/codeql-java-analysis.yml         |  103 +
 .github/workflows/codeql-js-analysis.yml           |   86 +
 .github/workflows/codeql-py-analysis.yml           |   86 +
 .github/workflows/deploy-docs.yml                  |   80 +
 .github/workflows/java-publish-snapshot.yml        |   67 +
 .github/workflows/labeler.yml                      |   32 +
 .github/workflows/maven4.yml                       |   69 +
 .github/workflows/rat.yml                          |   58 +
 .github/workflows/spotless.yml                     |   61 +
 .github/workflows/test-docker.yml                  |   38 +
 .github/workflows/test-lang-c++-ARM.yml            |   52 +
 .github/workflows/test-lang-c++.yml                |   63 +
 .github/workflows/test-lang-c-ARM.yml              |   52 +
 .github/workflows/test-lang-c.yml                  |  151 +
 .github/workflows/test-lang-csharp-ARM.yml         |  160 +
 .github/workflows/test-lang-csharp.yml             |  126 +
 .github/workflows/test-lang-java-ARM.yml           |   83 +
 .github/workflows/test-lang-java.yml               |  160 +
 .github/workflows/test-lang-js-ARM.yml             |   65 +
 .github/workflows/test-lang-js.yml                 |  114 +
 .github/workflows/test-lang-perl-ARM.yml           |  144 +
 .github/workflows/test-lang-perl.yml               |  143 +
 .github/workflows/test-lang-php-ARM.yml            |   58 +
 .github/workflows/test-lang-php.yml                |  164 +
 .github/workflows/test-lang-py-ARM.yml             |   53 +
 .github/workflows/test-lang-py.yml                 |  158 +
 .github/workflows/test-lang-ruby-ARM.yml           |   60 +
 .github/workflows/test-lang-ruby.yml               |  159 +
 .github/workflows/test-lang-rust-audit.yml         |   73 +
 .github/workflows/test-lang-rust-ci-ARM.yml        |   78 +
 .github/workflows/test-lang-rust-ci.yml            |  254 +
 .github/workflows/test-lang-rust-clippy.yml        |   57 +
 .gitignore                                         |   32 +
 .mvn/extensions.xml                                |   25 +
 .yamllint.yml                                      |   26 +
 BUILD.md                                           |   94 +
 DIST_README.txt                                    |   14 +
 LICENSE.txt                                        |  560 ++
 NOTICE.txt                                         |   56 +
 README.md                                          |  121 +
 build.sh                                           |  376 ++
 composer.json                                      |   18 +
 doc/.gitignore                                     |    4 +
 doc/LICENSE                                        |  324 +
 doc/NOTICE                                         |   44 +
 doc/README.md                                      |   71 +
 doc/assets/icons/logo-black-text.png               |  Bin 0 -> 2429 bytes
 doc/assets/icons/logo-text.svg                     |   38 +
 doc/assets/icons/logo-white-text.png               |  Bin 0 -> 2416 bytes
 doc/assets/icons/logo.png                          |  Bin 0 -> 1451 bytes
 doc/assets/icons/logo.svg                          |   27 +
 doc/assets/scss/PTMono-Regular.ttf                 |  Bin 0 -> 169480 bytes
 doc/assets/scss/_styles_project.scss               |   35 +
 doc/assets/scss/_variables_project.scss            |   21 +
 doc/config.toml                                    |  423 ++
 doc/content/en/_index.html                         |   72 +
 doc/content/en/_index.md                           |   40 +
 doc/content/en/blog/_index.md                      |   33 +
 doc/content/en/blog/news/_index.md                 |   26 +
 doc/content/en/blog/news/avro-joins-apache.md      |   28 +
 .../blog/news/new-committer-christophe-le-saec.md  |   41 +
 .../en/blog/news/new-committer-david-mollitor.md   |   41 +
 .../en/blog/news/new-committer-martin-grigorov.md  |   41 +
 .../new-committer-oscar-westra-van-holthe-kind.md  |   41 +
 .../en/blog/news/new-committer-zoltan-csizmadia.md |   47 +
 .../en/blog/news/new-pmc-martin-grigorov.md        |   30 +
 .../en/blog/news/new-pmc-michael-a-smith.md        |   34 +
 doc/content/en/blog/news/new-project-logo.md       |   50 +
 doc/content/en/blog/releases/_index.md             |   28 +
 .../en/blog/releases/avro-1.0.0-released.md        |   28 +
 .../en/blog/releases/avro-1.1.0-released.md        |   28 +
 .../en/blog/releases/avro-1.10.0-released.md       |   28 +
 .../en/blog/releases/avro-1.10.1-released.md       |   28 +
 .../en/blog/releases/avro-1.10.2-released.md       |   28 +
 .../en/blog/releases/avro-1.11.0-released.md       |   70 +
 .../en/blog/releases/avro-1.11.1-released.md       |  130 +
 .../en/blog/releases/avro-1.11.2-released.md       |   98 +
 .../en/blog/releases/avro-1.11.3-released.md       |   79 +
 .../en/blog/releases/avro-1.12.0-released.md       |  538 ++
 .../en/blog/releases/avro-1.2.0-released.md        |   28 +
 .../en/blog/releases/avro-1.3.0-released.md        |   28 +
 .../en/blog/releases/avro-1.3.1-released.md        |   28 +
 .../en/blog/releases/avro-1.3.2-released.md        |   28 +
 .../en/blog/releases/avro-1.3.3-released.md        |   28 +
 .../en/blog/releases/avro-1.4.0-released.md        |   28 +
 .../en/blog/releases/avro-1.4.1-released.md        |   28 +
 .../en/blog/releases/avro-1.5.0-released.md        |   28 +
 .../en/blog/releases/avro-1.5.1-released.md        |   28 +
 .../en/blog/releases/avro-1.5.2-released.md        |   28 +
 .../en/blog/releases/avro-1.5.3-released.md        |   28 +
 .../en/blog/releases/avro-1.5.4-released.md        |   28 +
 .../en/blog/releases/avro-1.6.0-released.md        |   28 +
 .../en/blog/releases/avro-1.6.1-released.md        |   28 +
 .../en/blog/releases/avro-1.6.2-released.md        |   28 +
 .../en/blog/releases/avro-1.6.3-released.md        |   28 +
 .../en/blog/releases/avro-1.7.0-released.md        |   28 +
 .../en/blog/releases/avro-1.7.1-released.md        |   28 +
 .../en/blog/releases/avro-1.7.2-released.md        |   28 +
 .../en/blog/releases/avro-1.7.3-released.md        |   28 +
 .../en/blog/releases/avro-1.7.4-released.md        |   28 +
 .../en/blog/releases/avro-1.7.5-released.md        |   28 +
 .../en/blog/releases/avro-1.7.6-released.md        |   28 +
 .../en/blog/releases/avro-1.7.7-released.md        |   28 +
 .../en/blog/releases/avro-1.8.0-released.md        |   28 +
 .../en/blog/releases/avro-1.8.1-released.md        |   28 +
 .../en/blog/releases/avro-1.8.2-released.md        |   28 +
 .../en/blog/releases/avro-1.9.0-released.md        |   28 +
 .../en/blog/releases/avro-1.9.1-released.md        |   28 +
 .../en/blog/releases/avro-1.9.2-released.md        |   28 +
 doc/content/en/blog/releases/avro-joins-apache.md  |   28 +
 doc/content/en/community/_index.md                 |   35 +
 .../++version++/Getting started (Java)/_index.md   |  289 +
 .../++version++/Getting started (Python)/_index.md |  147 +
 .../en/docs/++version++/IDL Language/_index.md     |  511 ++
 .../en/docs/++version++/MapReduce guide/_index.md  |  396 ++
 .../en/docs/++version++/SASL profile/_index.md     |   93 +
 .../en/docs/++version++/Specification/_index.md    |  896 +++
 doc/content/en/docs/++version++/_index.md          |   59 +
 doc/content/en/docs/++version++/api-c++.md         |   29 +
 doc/content/en/docs/++version++/api-c.md           |   29 +
 doc/content/en/docs/++version++/api-csharp.md      |   29 +
 doc/content/en/docs/++version++/api-java.md        |   29 +
 doc/content/en/docs/++version++/api-py.md          |   29 +
 .../docs/1.12.0/Getting started (Java)/_index.md   |  289 +
 .../docs/1.12.0/Getting started (Python)/_index.md |  147 +
 doc/content/en/docs/1.12.0/IDL Language/_index.md  |  511 ++
 .../en/docs/1.12.0/MapReduce guide/_index.md       |  396 ++
 doc/content/en/docs/1.12.0/SASL profile/_index.md  |   93 +
 doc/content/en/docs/1.12.0/Specification/_index.md |  896 +++
 doc/content/en/docs/1.12.0/_index.md               |   59 +
 doc/content/en/docs/1.12.0/api-c++.md              |   29 +
 doc/content/en/docs/1.12.0/api-c.md                |   29 +
 doc/content/en/docs/1.12.0/api-csharp.md           |   29 +
 doc/content/en/docs/1.12.0/api-java.md             |   29 +
 doc/content/en/docs/1.12.0/api-py.md               |   29 +
 .../en/docs/1.12.0/trevni/css/maven-base.css       |  168 +
 .../en/docs/1.12.0/trevni/css/maven-theme.css      |  161 +
 doc/content/en/docs/1.12.0/trevni/css/print.css    |   26 +
 doc/content/en/docs/1.12.0/trevni/css/site.css     |    1 +
 .../en/docs/1.12.0/trevni/dependencies.html        |  503 ++
 .../docs/1.12.0/trevni/dependency-convergence.html |  339 +
 .../en/docs/1.12.0/trevni/dependency-info.html     |  118 +
 .../docs/1.12.0/trevni/dependency-management.html  |  613 ++
 .../1.12.0/trevni/distribution-management.html     |   94 +
 doc/content/en/docs/1.12.0/trevni/images/close.gif |  Bin 0 -> 279 bytes
 .../en/docs/1.12.0/trevni/images/collapsed.gif     |  Bin 0 -> 53 bytes
 .../en/docs/1.12.0/trevni/images/expanded.gif      |  Bin 0 -> 52 bytes
 .../en/docs/1.12.0/trevni/images/external.png      |  Bin 0 -> 230 bytes
 .../docs/1.12.0/trevni/images/icon_error_sml.gif   |  Bin 0 -> 1010 bytes
 .../en/docs/1.12.0/trevni/images/icon_info_sml.gif |  Bin 0 -> 606 bytes
 .../docs/1.12.0/trevni/images/icon_success_sml.gif |  Bin 0 -> 990 bytes
 .../docs/1.12.0/trevni/images/icon_warning_sml.gif |  Bin 0 -> 576 bytes
 .../trevni/images/logos/build-by-maven-black.png   |  Bin 0 -> 2294 bytes
 .../trevni/images/logos/build-by-maven-white.png   |  Bin 0 -> 2260 bytes
 .../1.12.0/trevni/images/logos/maven-feather.png   |  Bin 0 -> 3330 bytes
 .../en/docs/1.12.0/trevni/images/newwindow.png     |  Bin 0 -> 220 bytes
 doc/content/en/docs/1.12.0/trevni/index.html       |  107 +
 .../en/docs/1.12.0/trevni/issue-management.html    |   96 +
 doc/content/en/docs/1.12.0/trevni/licenses.html    |  298 +
 .../en/docs/1.12.0/trevni/mailing-lists.html       |  117 +
 doc/content/en/docs/1.12.0/trevni/modules.html     |  105 +
 .../en/docs/1.12.0/trevni/plugin-management.html   |  244 +
 doc/content/en/docs/1.12.0/trevni/plugins.html     |  158 +
 .../en/docs/1.12.0/trevni/project-info.html        |  139 +
 doc/content/en/docs/1.12.0/trevni/scm.html         |  106 +
 doc/content/en/docs/1.12.0/trevni/summary.html     |  133 +
 doc/content/en/docs/_index.md                      |   56 +
 doc/content/en/project/Articles/_index.md          |   84 +
 .../project/Committer onboarding guide/_index.md   |   48 +
 .../Contributors onboarding guide/_index.md        |   39 +
 doc/content/en/project/Credits/_index.md           |   67 +
 doc/content/en/project/Donate/_index.md            |   29 +
 doc/content/en/project/Download/_index.md          |   81 +
 doc/content/en/project/Events/_index.md            |   28 +
 doc/content/en/project/How to contribute/_index.md |  388 ++
 doc/content/en/project/License/_index.md           |   29 +
 doc/content/en/project/Papers/_index.md            |   73 +
 doc/content/en/project/Privacy policy/_index.md    |   29 +
 doc/content/en/project/Security/_index.md          |   29 +
 doc/content/en/project/Thanks/_index.md            |   29 +
 doc/content/en/project/_index.md                   |   35 +
 .../en/project/pmc onboarding guide/_index.md      |   34 +
 doc/content/en/search.md                           |   25 +
 doc/examples/example.py                            |   43 +
 doc/examples/java-example/pom.xml                  |  103 +
 .../src/main/java/example/GenericMain.java         |   73 +
 .../src/main/java/example/SpecificMain.java        |   73 +
 doc/examples/mr-example/pom.xml                    |  112 +
 .../src/main/java/example/AvroWordCount.java       |  105 +
 .../src/main/java/example/GenerateData.java        |   57 +
 .../main/java/example/MapReduceAvroWordCount.java  |  124 +
 .../src/main/java/example/MapReduceColorCount.java |  107 +
 .../src/main/java/example/MapredColorCount.java    |   93 +
 doc/examples/user.avsc                             |    9 +
 doc/go.mod                                         |   26 +
 doc/go.sum                                         |    6 +
 doc/layouts/404.html                               |   29 +
 doc/layouts/partials/favicons.html                 |   37 +
 doc/layouts/partials/footer.html                   |   63 +
 doc/layouts/partials/navbar-asf-links.html         |   31 +
 doc/layouts/partials/navbar-docs-selector.html     |   31 +
 doc/layouts/partials/navbar.html                   |   58 +
 doc/layouts/project/baseof.html                    |   53 +
 doc/layouts/project/baseof.print.html              |   47 +
 doc/layouts/project/list.html                      |   48 +
 doc/layouts/project/list.print.html                |   23 +
 doc/layouts/project/single.html                    |   24 +
 doc/layouts/shortcodes/avro_version.html           |   24 +
 doc/layouts/shortcodes/project_logo.html           |   22 +
 doc/package-lock.json                              | 1097 ++++
 doc/package.json                                   |    7 +
 docker-compose.yml                                 |   24 +
 docs/404.html                                      |    0
 docs/_print/credits.html                           |    2 +
 docs/_print/irc.html                               |    2 +
 docs/_print/issue_tracking.html                    |    2 +
 docs/_print/linkmap.html                           |    2 +
 docs/_print/mail/index.html                        |    2 +
 docs/_print/mailing_lists.html                     |    2 +
 docs/_print/releases.html                          |    2 +
 docs/_print/version_control.html                   |    2 +
 docs/blog/2009/04/10/avro-joins-apache/index.html  |   65 +
 docs/blog/2009/09/15/avro-1.1.0/index.html         |   65 +
 docs/blog/2009/10/15/avro-1.2.0/index.html         |   65 +
 docs/blog/2010/02/26/avro-1.3.0/index.html         |   65 +
 docs/blog/2010/03/19/avro-1.3.1/index.html         |   65 +
 docs/blog/2010/03/31/avro-1.3.2/index.html         |   65 +
 docs/blog/2010/07/07/avro-1.3.3/index.html         |   65 +
 docs/blog/2010/07/15/avro-1.0.0/index.html         |   65 +
 docs/blog/2010/09/08/avro-1.4.0/index.html         |   65 +
 docs/blog/2010/10/13/avro-1.4.1/index.html         |   65 +
 docs/blog/2011/03/11/avro-1.5.0/index.html         |   65 +
 docs/blog/2011/05/06/avro-1.5.1/index.html         |   65 +
 docs/blog/2011/08/12/avro-1.5.2/index.html         |   65 +
 docs/blog/2011/08/29/avro-1.5.3/index.html         |   65 +
 docs/blog/2011/09/12/avro-1.5.4/index.html         |   65 +
 docs/blog/2011/11/02/avro-1.6.0/index.html         |   65 +
 docs/blog/2011/11/14/avro-1.6.1/index.html         |   65 +
 docs/blog/2012/02/14/avro-1.6.2/index.html         |   65 +
 docs/blog/2012/03/19/avro-1.6.3/index.html         |   65 +
 docs/blog/2012/06/11/avro-1.7.0/index.html         |   65 +
 docs/blog/2012/07/18/avro-1.7.1/index.html         |   65 +
 docs/blog/2012/09/25/avro-1.7.2/index.html         |   65 +
 docs/blog/2012/12/07/avro-1.7.3/index.html         |   65 +
 docs/blog/2013/02/26/avro-1.7.4/index.html         |   65 +
 docs/blog/2013/08/19/avro-1.7.5/index.html         |   65 +
 docs/blog/2014/01/22/avro-1.7.6/index.html         |   65 +
 docs/blog/2014/07/23/avro-1.7.7/index.html         |   65 +
 docs/blog/2016/01/29/avro-1.8.0/index.html         |   65 +
 docs/blog/2016/05/19/avro-1.8.1/index.html         |   65 +
 docs/blog/2017/05/20/avro-1.8.2/index.html         |   65 +
 docs/blog/2019/05/14/avro-1.9.0/index.html         |   65 +
 docs/blog/2019/09/02/avro-1.9.1/index.html         |   65 +
 docs/blog/2020/02/19/avro-1.9.2/index.html         |   65 +
 docs/blog/2020/06/29/avro-1.10.0/index.html        |   65 +
 docs/blog/2020/12/03/avro-1.10.1/index.html        |   65 +
 docs/blog/2021/03/15/avro-1.10.2/index.html        |   65 +
 .../10/05/new-committer-david-mollitor/index.html  |   76 +
 docs/blog/2021/10/31/avro-1.11.0/index.html        |   83 +
 .../01/04/new-committer-martin-grigorov/index.html |   76 +
 .../29/new-committer-zoltan-csizmadia/index.html   |   81 +
 docs/blog/2022/07/31/avro-1.11.1/index.html        |   84 +
 .../13/new-pmc-member-martin-grigorov/index.html   |   65 +
 docs/blog/2023/07/03/avro-1.11.2/index.html        |   82 +
 .../09/new-committer-christophe-le-saec/index.html |   80 +
 .../index.html                                     |   76 +
 .../09/new-pmc-member-michael-a.-smith/index.html  |   73 +
 docs/blog/2023/09/22/avro-1.11.3/index.html        |   82 +
 docs/blog/2023/11/21/new-project-logo/index.html   |   80 +
 docs/blog/2024/08/05/avro-1.12.0/index.html        |   73 +
 docs/blog/_print/index.html                        |   74 +
 docs/blog/index.html                               |   85 +
 docs/blog/index.xml                                |    1 +
 docs/blog/news/_print/index.html                   |   60 +
 docs/blog/news/index.html                          |   72 +
 docs/blog/news/index.xml                           |   10 +
 docs/blog/news/page/1/index.html                   |    2 +
 docs/blog/page/1/index.html                        |    2 +
 docs/blog/page/2/index.html                        |   72 +
 docs/blog/page/3/index.html                        |   68 +
 docs/blog/page/4/index.html                        |   68 +
 docs/blog/page/5/index.html                        |   68 +
 docs/blog/releases/_print/index.html               |   20 +
 docs/blog/releases/index.html                      |   79 +
 docs/blog/releases/index.xml                       |   18 +
 docs/blog/releases/page/1/index.html               |    2 +
 docs/blog/releases/page/2/index.html               |   65 +
 docs/blog/releases/page/3/index.html               |   65 +
 docs/blog/releases/page/4/index.html               |   65 +
 docs/blog/releases/page/5/index.html               |   65 +
 docs/categories/index.html                         |    8 +
 docs/categories/index.xml                          |    1 +
 docs/community/_print/index.html                   |   16 +
 docs/community/index.html                          |   16 +
 docs/community/index.xml                           |    1 +
 docs/credits.html                                  |    2 +
 docs/css/prism.css                                 |    4 +
 docs/docs/++version++/_print/index.html            |  860 +++
 docs/docs/++version++/api-c++/index.html           |   38 +
 docs/docs/++version++/api-c/index.html             |   38 +
 docs/docs/++version++/api-csharp/index.html        |   38 +
 docs/docs/++version++/api-java/index.html          |   38 +
 docs/docs/++version++/api-py/index.html            |   38 +
 .../getting-started-java/_print/index.html         |  123 +
 .../++version++/getting-started-java/index.html    |  152 +
 .../++version++/getting-started-java/index.xml     |    1 +
 .../getting-started-python/_print/index.html       |   54 +
 .../++version++/getting-started-python/index.html  |   83 +
 .../++version++/getting-started-python/index.xml   |    1 +
 .../++version++/idl-language/_print/index.html     |  216 +
 docs/docs/++version++/idl-language/index.html      |  245 +
 docs/docs/++version++/idl-language/index.xml       |    1 +
 docs/docs/++version++/index.html                   |   44 +
 docs/docs/++version++/index.xml                    |    1 +
 .../++version++/mapreduce-guide/_print/index.html  |  291 +
 docs/docs/++version++/mapreduce-guide/index.html   |  320 +
 docs/docs/++version++/mapreduce-guide/index.xml    |    1 +
 .../++version++/sasl-profile/_print/index.html     |   12 +
 docs/docs/++version++/sasl-profile/index.html      |   41 +
 docs/docs/++version++/sasl-profile/index.xml       |    1 +
 docs/docs/++version++/spec.html                    |    2 +
 .../++version++/specification/_print/index.html    |  221 +
 docs/docs/++version++/specification/index.html     |  250 +
 docs/docs/++version++/specification/index.xml      |    1 +
 docs/docs/1.12.0/_print/index.html                 |  863 +++
 docs/docs/1.12.0/api-c++/index.html                |   38 +
 docs/docs/1.12.0/api-c/index.html                  |   38 +
 docs/docs/1.12.0/api-csharp/index.html             |   38 +
 docs/docs/1.12.0/api-java/index.html               |   38 +
 docs/docs/1.12.0/api-py/index.html                 |   38 +
 .../1.12.0/getting-started-java/_print/index.html  |  123 +
 docs/docs/1.12.0/getting-started-java/index.html   |  152 +
 docs/docs/1.12.0/getting-started-java/index.xml    |    1 +
 .../getting-started-python/_print/index.html       |   54 +
 docs/docs/1.12.0/getting-started-python/index.html |   83 +
 docs/docs/1.12.0/getting-started-python/index.xml  |    1 +
 docs/docs/1.12.0/idl-language/_print/index.html    |  216 +
 docs/docs/1.12.0/idl-language/index.html           |  245 +
 docs/docs/1.12.0/idl-language/index.xml            |    1 +
 docs/docs/1.12.0/index.html                        |   44 +
 docs/docs/1.12.0/index.xml                         |    2 +
 docs/docs/1.12.0/mapreduce-guide/_print/index.html |  291 +
 docs/docs/1.12.0/mapreduce-guide/index.html        |  320 +
 docs/docs/1.12.0/mapreduce-guide/index.xml         |    1 +
 docs/docs/1.12.0/sasl-profile/_print/index.html    |   12 +
 docs/docs/1.12.0/sasl-profile/index.html           |   41 +
 docs/docs/1.12.0/sasl-profile/index.xml            |    1 +
 docs/docs/1.12.0/spec.html                         |    2 +
 docs/docs/1.12.0/specification/_print/index.html   |  221 +
 docs/docs/1.12.0/specification/index.html          |  250 +
 docs/docs/1.12.0/specification/index.xml           |    1 +
 docs/docs/1.12.0/trevni/css/maven-base.css         |  168 +
 docs/docs/1.12.0/trevni/css/maven-theme.css        |  161 +
 docs/docs/1.12.0/trevni/css/print.css              |   26 +
 docs/docs/1.12.0/trevni/css/site.css               |    1 +
 docs/docs/1.12.0/trevni/images/close.gif           |  Bin 0 -> 279 bytes
 docs/docs/1.12.0/trevni/images/collapsed.gif       |  Bin 0 -> 53 bytes
 docs/docs/1.12.0/trevni/images/expanded.gif        |  Bin 0 -> 52 bytes
 docs/docs/1.12.0/trevni/images/external.png        |  Bin 0 -> 230 bytes
 docs/docs/1.12.0/trevni/images/icon_error_sml.gif  |  Bin 0 -> 1010 bytes
 docs/docs/1.12.0/trevni/images/icon_info_sml.gif   |  Bin 0 -> 606 bytes
 .../docs/1.12.0/trevni/images/icon_success_sml.gif |  Bin 0 -> 990 bytes
 .../docs/1.12.0/trevni/images/icon_warning_sml.gif |  Bin 0 -> 576 bytes
 .../trevni/images/logos/build-by-maven-black.png   |  Bin 0 -> 2294 bytes
 .../trevni/images/logos/build-by-maven-white.png   |  Bin 0 -> 2260 bytes
 .../1.12.0/trevni/images/logos/maven-feather.png   |  Bin 0 -> 3330 bytes
 docs/docs/1.12.0/trevni/images/newwindow.png       |  Bin 0 -> 220 bytes
 docs/docs/1.12.0/trevni/index.html                 |   41 +
 docs/docs/_print/index.html                        | 1708 +++++
 docs/docs/index.html                               |   44 +
 docs/docs/index.xml                                |    1 +
 docs/en/index.html                                 |    2 +
 docs/en/sitemap.xml                                |    1 +
 docs/favicons/android-144x144.png                  |  Bin 0 -> 4299 bytes
 docs/favicons/android-192x192.png                  |  Bin 0 -> 5264 bytes
 docs/favicons/android-36x36.png                    |  Bin 0 -> 980 bytes
 docs/favicons/android-48x48.png                    |  Bin 0 -> 1071 bytes
 docs/favicons/android-72x72.png                    |  Bin 0 -> 1926 bytes
 docs/favicons/android-96x96.png                    |  Bin 0 -> 2309 bytes
 docs/favicons/apple-touch-icon-180x180.png         |  Bin 0 -> 4748 bytes
 docs/favicons/favicon-1024.png                     |  Bin 0 -> 27759 bytes
 docs/favicons/favicon-16x16.png                    |  Bin 0 -> 498 bytes
 docs/favicons/favicon-256.png                      |  Bin 0 -> 8037 bytes
 docs/favicons/favicon-32x32.png                    |  Bin 0 -> 807 bytes
 docs/favicons/favicon.ico                          |  Bin 0 -> 1150 bytes
 docs/favicons/pwa-192x192.png                      |  Bin 0 -> 5264 bytes
 docs/favicons/pwa-512x512.png                      |  Bin 0 -> 20743 bytes
 docs/favicons/tile150x150.png                      |  Bin 0 -> 8985 bytes
 docs/favicons/tile310x150.png                      |  Bin 0 -> 11661 bytes
 docs/favicons/tile310x310.png                      |  Bin 0 -> 23621 bytes
 docs/favicons/tile70x70.png                        |  Bin 0 -> 3592 bytes
 docs/icons/logo.svg                                |   27 +
 docs/index.html                                    |   15 +
 docs/index.xml                                     |   28 +
 docs/irc.html                                      |    2 +
 docs/issue_tracking.html                           |    2 +
 docs/js/deflate.js                                 | 1652 +++++
 ...69a0944771539004deea41c21c1cc1835d974d6d3e70.js |    5 +
 docs/js/prism.js                                   |   21 +
 docs/js/tabpane-persist.js                         |  116 +
 docs/linkmap.html                                  |    2 +
 docs/mail/index.html                               |    2 +
 docs/mailing_lists.html                            |    2 +
 docs/params/404.html                               |    0
 docs/params/categories/index.html                  |    8 +
 docs/params/categories/index.xml                   |    1 +
 docs/params/index.html                             |    8 +
 docs/params/index.xml                              |    1 +
 docs/params/sitemap.xml                            |    1 +
 docs/params/tags/index.html                        |    8 +
 docs/params/tags/index.xml                         |    1 +
 docs/project/_print/index.html                     |   72 +
 docs/project/articles/_print/index.html            |   45 +
 docs/project/articles/index.html                   |   63 +
 docs/project/articles/index.xml                    |    1 +
 .../committer-onboarding-guide/_print/index.html   |   12 +
 docs/project/committer-onboarding-guide/index.html |   30 +
 docs/project/committer-onboarding-guide/index.xml  |    1 +
 .../_print/index.html                              |   13 +
 .../contributors-onboarding-guide/index.html       |   31 +
 .../contributors-onboarding-guide/index.xml        |    1 +
 docs/project/credits/_print/index.html             |   12 +
 docs/project/credits/index.html                    |   30 +
 docs/project/credits/index.xml                     |    1 +
 docs/project/donate/_print/index.html              |    9 +
 docs/project/donate/index.html                     |   27 +
 docs/project/donate/index.xml                      |    1 +
 docs/project/download/_print/index.html            |   27 +
 docs/project/download/index.html                   |   45 +
 docs/project/download/index.xml                    |    1 +
 docs/project/events/_print/index.html              |    9 +
 docs/project/events/index.html                     |   27 +
 docs/project/events/index.xml                      |    1 +
 docs/project/how-to-contribute/_print/index.html   |   68 +
 docs/project/how-to-contribute/index.html          |   86 +
 docs/project/how-to-contribute/index.xml           |    1 +
 docs/project/index.html                            |   27 +
 docs/project/index.xml                             |    1 +
 docs/project/license/_print/index.html             |    9 +
 docs/project/license/index.html                    |   27 +
 docs/project/license/index.xml                     |    1 +
 docs/project/papers/_print/index.html              |   36 +
 docs/project/papers/index.html                     |   54 +
 docs/project/papers/index.xml                      |    1 +
 .../project/pmc-onboarding-guide/_print/index.html |    9 +
 docs/project/pmc-onboarding-guide/index.html       |   27 +
 docs/project/pmc-onboarding-guide/index.xml        |    1 +
 docs/project/privacy-policy/_print/index.html      |    9 +
 docs/project/privacy-policy/index.html             |   27 +
 docs/project/privacy-policy/index.xml              |    1 +
 docs/project/security/_print/index.html            |    9 +
 docs/project/security/index.html                   |   27 +
 docs/project/security/index.xml                    |    1 +
 docs/project/thanks/_print/index.html              |    9 +
 docs/project/thanks/index.html                     |   27 +
 docs/project/thanks/index.xml                      |    1 +
 docs/releases.html                                 |    2 +
 docs/robots.txt                                    |    1 +
 ...6ae2aa98c75deeca37d8dccb01d2b26059acb1fd159.css |    9 +
 docs/search/index.html                             |    8 +
 docs/sitemap.xml                                   |    1 +
 docs/tags/index.html                               |    8 +
 docs/tags/index.xml                                |    1 +
 docs/tags/java/index.html                          |    8 +
 docs/tags/java/index.xml                           |    3 +
 docs/tags/python/index.html                        |    8 +
 docs/tags/python/index.xml                         |    3 +
 docs/version_control.html                          |    2 +
 docs/webfonts/fa-brands-400.ttf                    |  Bin 0 -> 209128 bytes
 docs/webfonts/fa-brands-400.woff2                  |  Bin 0 -> 117860 bytes
 docs/webfonts/fa-regular-400.ttf                   |  Bin 0 -> 67860 bytes
 docs/webfonts/fa-regular-400.woff2                 |  Bin 0 -> 25392 bytes
 docs/webfonts/fa-solid-900.ttf                     |  Bin 0 -> 420332 bytes
 docs/webfonts/fa-solid-900.woff2                   |  Bin 0 -> 156404 bytes
 docs/webfonts/fa-v4compatibility.ttf               |  Bin 0 -> 10832 bytes
 docs/webfonts/fa-v4compatibility.woff2             |  Bin 0 -> 4792 bytes
 lang/c++/.clang-format                             |   84 +
 lang/c++/.gitignore                                |   10 +
 lang/c++/AUTHORS                                   |    4 +
 lang/c++/CMakeLists.txt                            |  253 +
 lang/c++/ChangeLog                                 |    1 +
 lang/c++/Doxyfile                                  |   31 +
 lang/c++/FindSnappy.cmake                          |   54 +
 lang/c++/LICENSE                                   |  231 +
 lang/c++/MSBUILD.md                                |   33 +
 lang/c++/MainPage.dox                              |  336 +
 lang/c++/NEWS                                      |    5 +
 lang/c++/NOTICE                                    |    6 +
 lang/c++/README                                    |   69 +
 lang/c++/build.sh                                  |  139 +
 lang/c++/config/.gitignore                         |    1 +
 lang/c++/examples/cpx.hh                           |   47 +
 lang/c++/examples/cpx.json                         |    8 +
 lang/c++/examples/custom.cc                        |   57 +
 lang/c++/examples/datafile.cc                      |   57 +
 lang/c++/examples/generated.cc                     |   40 +
 lang/c++/examples/generic.cc                       |   66 +
 lang/c++/examples/imaginary.hh                     |   45 +
 lang/c++/examples/imaginary.json                   |    7 +
 lang/c++/examples/resolving.cc                     |   57 +
 lang/c++/examples/schemaload.cc                    |   29 +
 lang/c++/examples/validating.cc                    |   66 +
 lang/c++/impl/BinaryDecoder.cc                     |  220 +
 lang/c++/impl/BinaryEncoder.cc                     |  147 +
 lang/c++/impl/Compiler.cc                          |  598 ++
 lang/c++/impl/CustomAttributes.cc                  |   53 +
 lang/c++/impl/DataFile.cc                          |  566 ++
 lang/c++/impl/FileStream.cc                        |  375 ++
 lang/c++/impl/Generic.cc                           |  228 +
 lang/c++/impl/GenericDatum.cc                      |   98 +
 lang/c++/impl/LogicalType.cc                       |   95 +
 lang/c++/impl/Node.cc                              |  233 +
 lang/c++/impl/NodeImpl.cc                          |  613 ++
 lang/c++/impl/Resolver.cc                          |  744 +++
 lang/c++/impl/ResolverSchema.cc                    |   35 +
 lang/c++/impl/Schema.cc                            |  106 +
 lang/c++/impl/Stream.cc                            |  189 +
 lang/c++/impl/Types.cc                             |   74 +
 lang/c++/impl/ValidSchema.cc                       |  178 +
 lang/c++/impl/Validator.cc                         |  253 +
 lang/c++/impl/Zigzag.cc                            |   57 +
 lang/c++/impl/avrogencpp.cc                        |  957 +++
 lang/c++/impl/json/JsonDom.cc                      |  181 +
 lang/c++/impl/json/JsonDom.hh                      |  183 +
 lang/c++/impl/json/JsonIO.cc                       |  456 ++
 lang/c++/impl/json/JsonIO.hh                       |  491 ++
 lang/c++/impl/parsing/JsonCodec.cc                 |  660 ++
 lang/c++/impl/parsing/ResolvingDecoder.cc          |  672 ++
 lang/c++/impl/parsing/Symbol.cc                    |  108 +
 lang/c++/impl/parsing/Symbol.hh                    |  821 +++
 lang/c++/impl/parsing/ValidatingCodec.cc           |  535 ++
 lang/c++/impl/parsing/ValidatingCodec.hh           |   46 +
 lang/c++/include/avro/AvroParse.hh                 |   80 +
 lang/c++/include/avro/AvroSerialize.hh             |   64 +
 lang/c++/include/avro/AvroTraits.hh                |  119 +
 lang/c++/include/avro/Compiler.hh                  |   63 +
 lang/c++/include/avro/Config.hh                    |   43 +
 lang/c++/include/avro/CustomAttributes.hh          |   56 +
 lang/c++/include/avro/DataFile.hh                  |  415 ++
 lang/c++/include/avro/Decoder.hh                   |  225 +
 lang/c++/include/avro/Encoder.hh                   |  173 +
 lang/c++/include/avro/Exception.hh                 |   42 +
 lang/c++/include/avro/Generic.hh                   |  152 +
 lang/c++/include/avro/GenericDatum.hh              |  559 ++
 lang/c++/include/avro/Layout.hh                    |   68 +
 lang/c++/include/avro/LogicalType.hh               |   69 +
 lang/c++/include/avro/Node.hh                      |  228 +
 lang/c++/include/avro/NodeConcepts.hh              |  201 +
 lang/c++/include/avro/NodeImpl.hh                  |  554 ++
 lang/c++/include/avro/Parser.hh                    |  143 +
 lang/c++/include/avro/Reader.hh                    |  201 +
 lang/c++/include/avro/Resolver.hh                  |   50 +
 lang/c++/include/avro/ResolverSchema.hh            |   50 +
 lang/c++/include/avro/ResolvingReader.hh           |   49 +
 lang/c++/include/avro/Schema.hh                    |  147 +
 lang/c++/include/avro/SchemaResolution.hh          |   54 +
 lang/c++/include/avro/Serializer.hh                |  127 +
 lang/c++/include/avro/Specific.hh                  |  357 +
 lang/c++/include/avro/Stream.hh                    |  477 ++
 lang/c++/include/avro/Types.hh                     |  121 +
 lang/c++/include/avro/ValidSchema.hh               |   66 +
 lang/c++/include/avro/Validator.hh                 |  146 +
 lang/c++/include/avro/Writer.hh                    |  182 +
 lang/c++/include/avro/Zigzag.hh                    |   51 +
 lang/c++/include/avro/buffer/Buffer.hh             |  492 ++
 lang/c++/include/avro/buffer/BufferPrint.hh        |  112 +
 lang/c++/include/avro/buffer/BufferReader.hh       |  273 +
 lang/c++/include/avro/buffer/BufferStream.hh       |   89 +
 lang/c++/include/avro/buffer/BufferStreambuf.hh    |  242 +
 .../c++/include/avro/buffer/detail/BufferDetail.hh |  515 ++
 .../avro/buffer/detail/BufferDetailIterator.hh     |  211 +
 lang/c++/jsonschemas/array                         |    1 +
 lang/c++/jsonschemas/big_union                     |  101 +
 lang/c++/jsonschemas/bigrecord                     |  113 +
 lang/c++/jsonschemas/bigrecord2                    |  100 +
 lang/c++/jsonschemas/bigrecord_r                   |  189 +
 lang/c++/jsonschemas/circulardep                   |   33 +
 lang/c++/jsonschemas/cpp_reserved_words            |  270 +
 .../jsonschemas/cpp_reserved_words_union_typedef   |   13 +
 lang/c++/jsonschemas/crossref                      |   28 +
 lang/c++/jsonschemas/empty_record                  |    5 +
 lang/c++/jsonschemas/enum                          |   10 +
 lang/c++/jsonschemas/fixed                         |    1 +
 lang/c++/jsonschemas/int                           |    1 +
 lang/c++/jsonschemas/large_schema.avsc             |    1 +
 lang/c++/jsonschemas/map                           |    5 +
 lang/c++/jsonschemas/nested                        |   17 +
 lang/c++/jsonschemas/nested.error                  |   17 +
 lang/c++/jsonschemas/padded_record                 |   14 +
 lang/c++/jsonschemas/primitivetypes                |   15 +
 lang/c++/jsonschemas/recinrec                      |   18 +
 lang/c++/jsonschemas/record                        |    9 +
 lang/c++/jsonschemas/record2                       |   10 +
 lang/c++/jsonschemas/recursive                     |    9 +
 lang/c++/jsonschemas/reuse                         |   14 +
 lang/c++/jsonschemas/tree1                         |   25 +
 lang/c++/jsonschemas/tree2                         |   18 +
 lang/c++/jsonschemas/tweet                         |  152 +
 lang/c++/jsonschemas/union                         |    1 +
 lang/c++/jsonschemas/union_array_union             |   14 +
 lang/c++/jsonschemas/union_conflict                |    9 +
 lang/c++/jsonschemas/union_empty_record            |   25 +
 lang/c++/jsonschemas/union_map_union               |    8 +
 lang/c++/jsonschemas/union_redundant_types         |   22 +
 lang/c++/jsonschemas/unionwithmap                  |    1 +
 lang/c++/jsonschemas/verboseint                    |    1 +
 lang/c++/test/AvrogencppTestReservedWords.cc       |   63 +
 lang/c++/test/AvrogencppTests.cc                   |  525 ++
 lang/c++/test/CodecTests.cc                        | 2131 ++++++
 lang/c++/test/CommonsSchemasTests.cc               |   91 +
 lang/c++/test/CompilerTests.cc                     |   93 +
 lang/c++/test/DataFileTests.cc                     | 1148 ++++
 lang/c++/test/JsonTests.cc                         |  212 +
 lang/c++/test/LargeSchemaTests.cc                  |   43 +
 lang/c++/test/SchemaTests.cc                       |  558 ++
 lang/c++/test/SpecificTests.cc                     |  202 +
 lang/c++/test/StreamTests.cc                       |  233 +
 lang/c++/test/buffertest.cc                        | 1101 ++++
 lang/c++/test/precompile.cc                        |   48 +
 lang/c++/test/testgentest.cc                       |  529 ++
 lang/c++/test/testparser.cc                        |   35 +
 lang/c++/test/unittest.cc                          | 1091 ++++
 lang/c/.gitignore                                  |    3 +
 lang/c/AUTHORS                                     |    4 +
 lang/c/CMakeLists.txt                              |  198 +
 lang/c/CPackConfig.txt                             |   39 +
 lang/c/ChangeLog                                   |    4 +
 lang/c/FindSnappy.cmake                            |   54 +
 lang/c/INSTALL                                     |   69 +
 lang/c/LICENSE                                     |  266 +
 lang/c/NEWS                                        |    5 +
 lang/c/NOTICE                                      |    6 +
 lang/c/README                                      |   10 +
 lang/c/README.maintaining_win32.txt                |  166 +
 lang/c/build.sh                                    |  103 +
 lang/c/cmake_avrolib.bat                           |   48 +
 lang/c/cmake_avrolib.sh                            |   27 +
 lang/c/cmake_pretty.cmake                          |   33 +
 lang/c/docs/CMakeLists.txt                         |   53 +
 lang/c/docs/index.txt                              |  758 +++
 lang/c/examples/.gitignore                         |    2 +
 lang/c/examples/CMakeLists.txt                     |   32 +
 lang/c/examples/quickstop.c                        |  238 +
 lang/c/src/.gitignore                              |    2 +
 lang/c/src/CMakeLists.txt                          |  150 +
 lang/c/src/allocation.c                            |  116 +
 lang/c/src/array.c                                 |  118 +
 lang/c/src/avro-c.pc.in                            |    7 +
 lang/c/src/avro.h                                  |   40 +
 lang/c/src/avro/allocation.h                       |   89 +
 lang/c/src/avro/basics.h                           |   97 +
 lang/c/src/avro/consumer.h                         |  317 +
 lang/c/src/avro/data.h                             |  526 ++
 lang/c/src/avro/errors.h                           |   41 +
 lang/c/src/avro/generic.h                          |   88 +
 lang/c/src/avro/io.h                               |  156 +
 lang/c/src/avro/legacy.h                           |  264 +
 lang/c/src/avro/msinttypes.h                       |  315 +
 lang/c/src/avro/msstdint.h                         |  247 +
 lang/c/src/avro/platform.h                         |   45 +
 lang/c/src/avro/refcount.h                         |  309 +
 lang/c/src/avro/resolver.h                         |  130 +
 lang/c/src/avro/schema.h                           |  122 +
 lang/c/src/avro/value.h                            |  498 ++
 lang/c/src/avro_generic_internal.h                 |   73 +
 lang/c/src/avro_private.h                          |   99 +
 lang/c/src/avroappend.c                            |  169 +
 lang/c/src/avrocat.c                               |  127 +
 lang/c/src/avromod.c                               |  168 +
 lang/c/src/avropipe.c                              |  432 ++
 lang/c/src/codec.c                                 |  620 ++
 lang/c/src/codec.h                                 |   53 +
 lang/c/src/consume-binary.c                        |  331 +
 lang/c/src/consumer.c                              |   23 +
 lang/c/src/datafile.c                              |  766 +++
 lang/c/src/datum.c                                 | 1256 ++++
 lang/c/src/datum.h                                 |  123 +
 lang/c/src/datum_equal.c                           |  192 +
 lang/c/src/datum_read.c                            |   99 +
 lang/c/src/datum_size.c                            |  293 +
 lang/c/src/datum_skip.c                            |  205 +
 lang/c/src/datum_validate.c                        |  195 +
 lang/c/src/datum_value.c                           |  772 +++
 lang/c/src/datum_write.c                           |   91 +
 lang/c/src/dump.c                                  |   56 +
 lang/c/src/dump.h                                  |   34 +
 lang/c/src/encoding.h                              |  106 +
 lang/c/src/encoding_binary.c                       |  446 ++
 lang/c/src/errors.c                                |  160 +
 lang/c/src/generic.c                               | 3707 +++++++++++
 lang/c/src/io.c                                    |  447 ++
 lang/c/src/map.c                                   |  130 +
 lang/c/src/memoize.c                               |  165 +
 lang/c/src/resolved-reader.c                       | 3377 ++++++++++
 lang/c/src/resolved-writer.c                       | 2911 +++++++++
 lang/c/src/resolver.c                              | 1338 ++++
 lang/c/src/schema.c                                | 1892 ++++++
 lang/c/src/schema.h                                |   87 +
 lang/c/src/schema_equal.c                          |  204 +
 lang/c/src/schema_specific.c                       |  232 +
 lang/c/src/st.c                                    |  545 ++
 lang/c/src/st.h                                    |   83 +
 lang/c/src/string.c                                |  304 +
 lang/c/src/value-hash.c                            |  294 +
 lang/c/src/value-json.c                            |  417 ++
 lang/c/src/value-read.c                            |  392 ++
 lang/c/src/value-sizeof.c                          |  230 +
 lang/c/src/value-write.c                           |  209 +
 lang/c/src/value.c                                 |  690 ++
 lang/c/src/wrapped-buffer.c                        |  145 +
 lang/c/tests/.gitignore                            |    9 +
 lang/c/tests/CMakeLists.txt                        |   89 +
 lang/c/tests/avro-1237-bad-union-discriminant.avro |  Bin 0 -> 106 bytes
 lang/c/tests/avro-1237-good.avro                   |  Bin 0 -> 105 bytes
 lang/c/tests/avro-1238-good.avro                   |  Bin 0 -> 105 bytes
 lang/c/tests/avro-1238-truncated.avro              |  Bin 0 -> 98 bytes
 lang/c/tests/avro-1279-codec.avro                  |  Bin 0 -> 673 bytes
 lang/c/tests/avro-1279-no-codec.avro               |  Bin 0 -> 657 bytes
 lang/c/tests/generate_interop_data.c               |  122 +
 lang/c/tests/msdirent.h                            |  372 ++
 lang/c/tests/performance.c                         |  848 +++
 .../tests/schema_tests/fail/enum_nonarray_symbols  |    3 +
 lang/c/tests/schema_tests/fail/enum_nonstring_name |    3 +
 lang/c/tests/schema_tests/fail/enum_without_name   |    3 +
 lang/c/tests/schema_tests/fail/fixed_without_name  |    2 +
 lang/c/tests/schema_tests/fail/fixed_without_size  |    2 +
 lang/c/tests/schema_tests/fail/illegal_type        |    1 +
 lang/c/tests/schema_tests/fail/invalid_avro_id     |    3 +
 .../fail/record_with_field_missing_name            |    5 +
 .../fail/record_with_field_missing_type            |    5 +
 .../fail/record_with_invalid_reference             |    7 +
 .../schema_tests/fail/record_with_nonarray_fields  |    3 +
 .../schema_tests/fail/record_with_nonstring_name   |    3 +
 lang/c/tests/schema_tests/pass/array               |    1 +
 lang/c/tests/schema_tests/pass/boolean_full        |    1 +
 lang/c/tests/schema_tests/pass/bytes_full          |    1 +
 lang/c/tests/schema_tests/pass/double_full         |    1 +
 lang/c/tests/schema_tests/pass/enum                |    4 +
 lang/c/tests/schema_tests/pass/extra_attributes    |    1 +
 lang/c/tests/schema_tests/pass/fixed               |    1 +
 lang/c/tests/schema_tests/pass/float_full          |    1 +
 lang/c/tests/schema_tests/pass/int_full            |    1 +
 lang/c/tests/schema_tests/pass/interop.avsc        |   28 +
 lang/c/tests/schema_tests/pass/long_full           |    1 +
 lang/c/tests/schema_tests/pass/map                 |    1 +
 lang/c/tests/schema_tests/pass/namespace_enum      |    9 +
 lang/c/tests/schema_tests/pass/namespace_fixed     |    9 +
 lang/c/tests/schema_tests/pass/namespace_fullname  |    8 +
 lang/c/tests/schema_tests/pass/namespace_null_enum |    8 +
 .../c/tests/schema_tests/pass/namespace_null_fixed |    7 +
 .../tests/schema_tests/pass/namespace_null_record  |    8 +
 lang/c/tests/schema_tests/pass/namespace_recursive |   28 +
 lang/c/tests/schema_tests/pass/namespace_simple    |    5 +
 lang/c/tests/schema_tests/pass/null_full           |    1 +
 lang/c/tests/schema_tests/pass/record              |    5 +
 .../schema_tests/pass/record_fields_with_defaults  |    6 +
 lang/c/tests/schema_tests/pass/record_no_fields    |    1 +
 lang/c/tests/schema_tests/pass/recursive_record    |    7 +
 .../schema_tests/pass/string_extra_attributes      |    1 +
 lang/c/tests/schema_tests/pass/string_full         |    1 +
 lang/c/tests/schema_tests/pass/union               |    1 +
 lang/c/tests/test_avro_1034.c                      |  395 ++
 lang/c/tests/test_avro_1084.c                      |   73 +
 lang/c/tests/test_avro_1087.c                      |   88 +
 lang/c/tests/test_avro_1165.c                      |   82 +
 lang/c/tests/test_avro_1167.c                      |   84 +
 lang/c/tests/test_avro_1237.c                      |  112 +
 lang/c/tests/test_avro_1238.c                      |  125 +
 lang/c/tests/test_avro_1279.c                      |   47 +
 lang/c/tests/test_avro_1379.c                      |  129 +
 lang/c/tests/test_avro_1405.c                      |  160 +
 lang/c/tests/test_avro_1572.c                      |  164 +
 lang/c/tests/test_avro_1691.c                      |  100 +
 lang/c/tests/test_avro_1904.c                      |  130 +
 lang/c/tests/test_avro_1906.c                      |  204 +
 lang/c/tests/test_avro_766.c                       |   76 +
 lang/c/tests/test_avro_968.c                       |   68 +
 lang/c/tests/test_avro_984.c                       |  464 ++
 lang/c/tests/test_avro_commons_schema.c            |  150 +
 lang/c/tests/test_avro_data.c                      |  684 ++
 lang/c/tests/test_avro_errors_are_thread_safe.c    |  203 +
 lang/c/tests/test_avro_schema.c                    |  316 +
 lang/c/tests/test_avro_schema_names.c              |  137 +
 lang/c/tests/test_avro_type_collision.c            |   64 +
 lang/c/tests/test_avro_values.c                    | 1455 +++++
 lang/c/tests/test_data_structures.c                |  263 +
 lang/c/tests/test_interop_data.c                   |  141 +
 lang/c/tests/test_refcount.c                       |   60 +
 lang/c/tests/test_valgrind                         |   33 +
 lang/c/version.sh                                  |   79 +
 lang/csharp/.gitignore                             |   58 +
 lang/csharp/Avro.dox                               |   27 +
 lang/csharp/Avro.ruleset                           |  143 +
 lang/csharp/Avro.sln                               |  236 +
 lang/csharp/Avro.snk                               |  Bin 0 -> 596 bytes
 lang/csharp/CODECOVERAGE.md                        |   31 +
 lang/csharp/CodeAnalysis.src.globalconfig          | 1585 +++++
 lang/csharp/CodeAnalysis.test.globalconfig         | 1729 +++++
 lang/csharp/LICENSE                                |  245 +
 lang/csharp/NOTICE                                 |    6 +
 lang/csharp/README.md                              |   48 +
 lang/csharp/STYLING.md                             | 1595 +++++
 lang/csharp/build.sh                               |  100 +
 lang/csharp/common.props                           |   95 +
 lang/csharp/src/apache/benchmark/.gitignore        |    1 +
 .../src/apache/benchmark/Avro.benchmark.csproj     |   52 +
 lang/csharp/src/apache/benchmark/Benchmarks.cs     |  254 +
 lang/csharp/src/apache/benchmark/Program.cs        |   31 +
 .../apache/avro/benchmark/big/mailing_address.cs   |  128 +
 .../org/apache/avro/benchmark/big/userInfo.cs      |  128 +
 .../org/apache/avro/benchmark/small/test.cs        |   73 +
 lang/csharp/src/apache/benchmark/schema/big.avsc   |   62 +
 lang/csharp/src/apache/benchmark/schema/small.avsc |   13 +
 .../Avro.File.BZip2.Test.csproj                    |   42 +
 .../codec/Avro.File.BZip2.Test/BZip2Tests.cs       |   97 +
 .../codec/Avro.File.BZip2/Avro.File.BZip2.csproj   |   47 +
 .../src/apache/codec/Avro.File.BZip2/BZip2.cs      |  110 +
 .../Avro.File.Snappy.Test.csproj                   |   42 +
 .../codec/Avro.File.Snappy.Test/SnappyTests.cs     |   89 +
 .../codec/Avro.File.Snappy/Avro.File.Snappy.csproj |   47 +
 .../src/apache/codec/Avro.File.Snappy/Crc32.cs     |   73 +
 .../src/apache/codec/Avro.File.Snappy/Snappy.cs    |   93 +
 .../Avro.File.XZ.Test/Avro.File.XZ.Test.csproj     |   42 +
 .../src/apache/codec/Avro.File.XZ.Test/XZTests.cs  |   97 +
 .../apache/codec/Avro.File.XZ/Avro.File.XZ.csproj  |   48 +
 lang/csharp/src/apache/codec/Avro.File.XZ/XZ.cs    |  237 +
 .../Avro.File.Zstandard.Test.csproj                |   42 +
 .../Avro.File.Zstandard.Test/ZstandardTests.cs     |   97 +
 .../Avro.File.Zstandard/Avro.File.Zstandard.csproj |   48 +
 .../apache/codec/Avro.File.Zstandard/Zstandard.cs  |  134 +
 lang/csharp/src/apache/codegen/Avro.codegen.csproj |   69 +
 lang/csharp/src/apache/codegen/AvroGen.cs          |  205 +
 lang/csharp/src/apache/codegen/app.config          |   22 +
 .../src/apache/ipc.test/Avro.ipc.test.csproj       |   51 +
 .../GeneratedFiles/org/apache/avro/test/All.cs     |   95 +
 .../org/apache/avro/test/AllCallback.cs            |   24 +
 .../GeneratedFiles/org/apache/avro/test/AllEnum.cs |   21 +
 .../org/apache/avro/test/AllTestRecord.cs          |  209 +
 .../org/apache/avro/test/AllTestRecordPartial.cs   |   50 +
 .../org/apache/avro/test/FixedTest.cs              |   39 +
 .../GeneratedFiles/org/apache/avro/test/Kind.cs    |   22 +
 .../GeneratedFiles/org/apache/avro/test/MD5.cs     |   40 +
 .../GeneratedFiles/org/apache/avro/test/Mail.cs    |   87 +
 .../org/apache/avro/test/MailCallback.cs           |   20 +
 .../GeneratedFiles/org/apache/avro/test/Message.cs |   85 +
 .../GeneratedFiles/org/apache/avro/test/Simple.cs  |  103 +
 .../org/apache/avro/test/SimpleCallback.cs         |   30 +
 .../org/apache/avro/test/TestError.cs              |   56 +
 .../org/apache/avro/test/TestRecord.cs             |   83 +
 .../org/apache/avro/test/TestRecordExtensions.cs   |   29 +
 .../org/apache/avro/test/TestRecordWithUnion.cs    |   69 +
 .../src/apache/ipc.test/HttpClientServerTest.cs    |   90 +
 .../src/apache/ipc.test/LocalTransceiverTest.cs    |   72 +
 lang/csharp/src/apache/ipc.test/MailResponder.cs   |  102 +
 .../src/apache/ipc.test/Properties/AssemblyInfo.cs |   33 +
 .../src/apache/ipc.test/SerializationTest.cs       |  153 +
 .../SocketServerConcurrentExecutionTest.cs         |  146 +
 .../csharp/src/apache/ipc.test/SocketServerTest.cs |  187 +
 .../ipc.test/SocketServerWithCallbacksTest.cs      |  806 +++
 .../SocketTransceiverWhenServerStopsTest.cs        |  188 +
 lang/csharp/src/apache/ipc/Avro.ipc.csproj         |   40 +
 lang/csharp/src/apache/ipc/CallFuture.cs           |  124 +
 lang/csharp/src/apache/ipc/CountdownLatch.cs       |   81 +
 .../src/apache/ipc/Generic/GenericRequestor.cs     |   48 +
 .../src/apache/ipc/Generic/GenericResponder.cs     |   52 +
 lang/csharp/src/apache/ipc/HttpListenerServer.cs   |  105 +
 lang/csharp/src/apache/ipc/HttpTransceiver.cs      |  174 +
 lang/csharp/src/apache/ipc/LocalTransceiver.cs     |   55 +
 lang/csharp/src/apache/ipc/OutputStream.cs         |   62 +
 .../src/apache/ipc/Properties/AssemblyInfo.cs      |   33 +
 lang/csharp/src/apache/ipc/Requestor.cs            |  428 ++
 lang/csharp/src/apache/ipc/Responder.cs            |  228 +
 lang/csharp/src/apache/ipc/RpcContext.cs           |  143 +
 lang/csharp/src/apache/ipc/RpcRequest.cs           |  109 +
 lang/csharp/src/apache/ipc/SocketServer.cs         |  235 +
 lang/csharp/src/apache/ipc/SocketTransceiver.cs    |  237 +
 .../src/apache/ipc/Specific/SpecificRequestor.cs   |  109 +
 .../src/apache/ipc/Specific/SpecificResponder.cs   |   83 +
 lang/csharp/src/apache/ipc/Transceiver.cs          |   98 +
 .../ipc/org/apache/avro/ipc/HandshakeMatch.cs      |   22 +
 .../ipc/org/apache/avro/ipc/HandshakeRequest.cs    |   97 +
 .../ipc/org/apache/avro/ipc/HandshakeResponse.cs   |   97 +
 .../src/apache/ipc/org/apache/avro/ipc/MD5.cs      |   39 +
 lang/csharp/src/apache/main/AssemblyInfo.cs        |   20 +
 lang/csharp/src/apache/main/Avro.main.csproj       |   63 +
 lang/csharp/src/apache/main/AvroDecimal.cs         | 1209 ++++
 .../apache/main/CodeGen/AvroRuntimeException.cs    |   56 +
 lang/csharp/src/apache/main/CodeGen/CodeGen.cs     | 1270 ++++
 .../src/apache/main/CodeGen/CodeGenException.cs    |   55 +
 lang/csharp/src/apache/main/CodeGen/CodeGenUtil.cs |  181 +
 lang/csharp/src/apache/main/File/Codec.cs          |  231 +
 .../src/apache/main/File/DataFileConstants.cs      |  114 +
 lang/csharp/src/apache/main/File/DataFileReader.cs |  678 ++
 lang/csharp/src/apache/main/File/DataFileWriter.cs |  543 ++
 lang/csharp/src/apache/main/File/DeflateCodec.cs   |   90 +
 lang/csharp/src/apache/main/File/Header.cs         |   62 +
 lang/csharp/src/apache/main/File/IFileReader.cs    |  136 +
 lang/csharp/src/apache/main/File/IFileWriter.cs    |   93 +
 lang/csharp/src/apache/main/File/NullCodec.cs      |   71 +
 lang/csharp/src/apache/main/Generic/DatumReader.cs |   50 +
 lang/csharp/src/apache/main/Generic/DatumWriter.cs |   42 +
 .../src/apache/main/Generic/GenericDatumReader.cs  |  227 +
 .../src/apache/main/Generic/GenericDatumWriter.cs  |  165 +
 lang/csharp/src/apache/main/Generic/GenericEnum.cs |   95 +
 .../csharp/src/apache/main/Generic/GenericFixed.cs |  130 +
 .../src/apache/main/Generic/GenericReader.cs       |  704 ++
 .../src/apache/main/Generic/GenericRecord.cs       |  246 +
 .../src/apache/main/Generic/GenericWriter.cs       |  512 ++
 .../apache/main/Generic/PreresolvingDatumReader.cs |  710 ++
 .../apache/main/Generic/PreresolvingDatumWriter.cs |  471 ++
 lang/csharp/src/apache/main/GlobalSuppressions.cs  |   53 +
 lang/csharp/src/apache/main/IO/BinaryDecoder.cs    |  300 +
 .../apache/main/IO/BinaryDecoder.netstandard2.0.cs |  117 +
 .../main/IO/BinaryDecoder.notnetstandard2.0.cs     |  134 +
 lang/csharp/src/apache/main/IO/BinaryEncoder.cs    |  232 +
 .../src/apache/main/IO/ByteBufferInputStream.cs    |   93 +
 .../src/apache/main/IO/ByteBufferOutputStream.cs   |  143 +
 lang/csharp/src/apache/main/IO/Decoder.cs          |  196 +
 lang/csharp/src/apache/main/IO/Encoder.cs          |  196 +
 lang/csharp/src/apache/main/IO/ICallback.cs        |   42 +
 lang/csharp/src/apache/main/IO/InputStream.cs      |   78 +
 lang/csharp/src/apache/main/IO/JsonDecoder.cs      |  765 +++
 lang/csharp/src/apache/main/IO/JsonEncoder.cs      |  352 +
 lang/csharp/src/apache/main/IO/OutputStream.cs     |   73 +
 .../apache/main/IO/Parsing/JsonGrammarGenerator.cs |  105 +
 lang/csharp/src/apache/main/IO/Parsing/Parser.cs   |  229 +
 .../src/apache/main/IO/Parsing/SkipParser.cs       |  107 +
 lang/csharp/src/apache/main/IO/Parsing/Symbol.cs   |  984 +++
 .../main/IO/Parsing/ValidatingGrammarGenerator.cs  |  170 +
 lang/csharp/src/apache/main/IO/ParsingDecoder.cs   |  205 +
 lang/csharp/src/apache/main/IO/ParsingEncoder.cs   |  146 +
 lang/csharp/src/apache/main/IO/Resolver.cs         |  170 +
 lang/csharp/src/apache/main/Protocol/Message.cs    |  218 +
 lang/csharp/src/apache/main/Protocol/Protocol.cs   |  303 +
 .../apache/main/Protocol/ProtocolParseException.cs |   56 +
 lang/csharp/src/apache/main/Reflect/ArrayHelper.cs |   95 +
 .../apache/main/Reflect/ArraySchemaExtensions.cs   |   47 +
 .../src/apache/main/Reflect/AvroFieldAttribute.cs  |   67 +
 lang/csharp/src/apache/main/Reflect/ClassCache.cs  |  304 +
 .../main/Reflect/DateTimeOffsetToLongConverter.cs  |   70 +
 lang/csharp/src/apache/main/Reflect/DotnetClass.cs |  148 +
 .../src/apache/main/Reflect/DotnetProperty.cs      |  145 +
 lang/csharp/src/apache/main/Reflect/EnumCache.cs   |   57 +
 .../src/apache/main/Reflect/FuncFieldConverter.cs  |   67 +
 .../src/apache/main/Reflect/IAvroFieldConverter.cs |   57 +
 lang/csharp/src/apache/main/Reflect/README.md      |  316 +
 .../apache/main/Reflect/ReflectDefaultReader.cs    |  547 ++
 .../apache/main/Reflect/ReflectDefaultWriter.cs    |  209 +
 .../src/apache/main/Reflect/ReflectReader.cs       |   92 +
 .../src/apache/main/Reflect/ReflectWriter.cs       |   71 +
 .../src/apache/main/Reflect/TypedFieldConverter.cs |   96 +
 lang/csharp/src/apache/main/Schema/Aliases.cs      |   36 +
 lang/csharp/src/apache/main/Schema/ArraySchema.cs  |  124 +
 .../csharp/src/apache/main/Schema/AvroException.cs |   56 +
 .../src/apache/main/Schema/AvroTypeException.cs    |   59 +
 lang/csharp/src/apache/main/Schema/EnumSchema.cs   |  319 +
 lang/csharp/src/apache/main/Schema/Field.cs        |  296 +
 lang/csharp/src/apache/main/Schema/FixedSchema.cs  |  145 +
 lang/csharp/src/apache/main/Schema/JsonHelper.cs   |  127 +
 .../csharp/src/apache/main/Schema/LogicalSchema.cs |  129 +
 lang/csharp/src/apache/main/Schema/MapSchema.cs    |  131 +
 lang/csharp/src/apache/main/Schema/NamedSchema.cs  |  228 +
 .../src/apache/main/Schema/PrimitiveSchema.cs      |  183 +
 lang/csharp/src/apache/main/Schema/Property.cs     |  130 +
 lang/csharp/src/apache/main/Schema/RecordSchema.cs |  504 ++
 lang/csharp/src/apache/main/Schema/Schema.cs       |  471 ++
 lang/csharp/src/apache/main/Schema/SchemaName.cs   |  236 +
 .../src/apache/main/Schema/SchemaNormalization.cs  |  275 +
 .../src/apache/main/Schema/SchemaParseException.cs |   59 +
 lang/csharp/src/apache/main/Schema/UnionSchema.cs  |  205 +
 .../csharp/src/apache/main/Schema/UnnamedSchema.cs |   42 +
 .../src/apache/main/Specific/ObjectCreator.cs      |  330 +
 .../apache/main/Specific/SpecificDatumReader.cs    |  239 +
 .../apache/main/Specific/SpecificDatumWriter.cs    |  185 +
 .../src/apache/main/Specific/SpecificException.cs  |   68 +
 .../src/apache/main/Specific/SpecificFixed.cs      |   83 +
 .../src/apache/main/Specific/SpecificProtocol.cs   |   56 +
 .../src/apache/main/Specific/SpecificReader.cs     |  281 +
 .../src/apache/main/Specific/SpecificRecord.cs     |   49 +
 .../src/apache/main/Specific/SpecificWriter.cs     |  229 +
 lang/csharp/src/apache/main/Util/Date.cs           |   61 +
 lang/csharp/src/apache/main/Util/Decimal.cs        |  131 +
 .../apache/main/Util/LocalTimestampMicrosecond.cs  |   63 +
 .../apache/main/Util/LocalTimestampMillisecond.cs  |   62 +
 lang/csharp/src/apache/main/Util/LogicalType.cs    |   77 +
 .../src/apache/main/Util/LogicalTypeFactory.cs     |   88 +
 .../src/apache/main/Util/LogicalUnixEpochType.cs   |   59 +
 .../csharp/src/apache/main/Util/TimeMicrosecond.cs |   78 +
 .../csharp/src/apache/main/Util/TimeMillisecond.cs |   78 +
 .../src/apache/main/Util/TimestampMicrosecond.cs   |   59 +
 .../src/apache/main/Util/TimestampMillisecond.cs   |   59 +
 lang/csharp/src/apache/main/Util/Uuid.cs           |   70 +
 lang/csharp/src/apache/msbuild/Avro.msbuild.csproj |   44 +
 lang/csharp/src/apache/msbuild/AvroBuilldTask.cs   |   67 +
 .../src/apache/msbuild/Properties/AssemblyInfo.cs  |   33 +
 lang/csharp/src/apache/perf/Avro.perf.csproj       |   40 +
 lang/csharp/src/apache/perf/PerfTest.cs            |  239 +
 lang/csharp/src/apache/perf/app.config             |   22 +
 lang/csharp/src/apache/perf/com/foo/A.cs           |   56 +
 lang/csharp/src/apache/perf/com/foo/Complex.cs     |  377 ++
 lang/csharp/src/apache/perf/com/foo/MyEnum.cs      |   22 +
 lang/csharp/src/apache/perf/com/foo/MyFixed.cs     |   39 +
 lang/csharp/src/apache/perf/com/foo/Narrow.cs      |   85 +
 lang/csharp/src/apache/perf/com/foo/Simple.cs      |  153 +
 lang/csharp/src/apache/perf/com/foo/Wide.cs        |  545 ++
 lang/csharp/src/apache/perf/com/foo/newRec.cs      |   56 +
 lang/csharp/src/apache/perf/schema.avsc            |  122 +
 lang/csharp/src/apache/test/Avro.test.csproj       |   69 +
 lang/csharp/src/apache/test/AvroDecimalTest.cs     |   47 +
 .../src/apache/test/AvroGen/AvroGenHelper.cs       |  297 +
 .../apache/test/AvroGen/AvroGenProtocolTests.cs    |  517 ++
 .../src/apache/test/AvroGen/AvroGenSchemaTests.cs  |  817 +++
 .../src/apache/test/AvroGen/AvroGenToolTests.cs    |  103 +
 lang/csharp/src/apache/test/CodGen/CodeGenTest.cs  |  141 +
 lang/csharp/src/apache/test/File/FileTests.cs      | 1248 ++++
 .../src/apache/test/Generic/GenericEnumTests.cs    |   72 +
 .../src/apache/test/Generic/GenericRecordTests.cs  |  238 +
 .../csharp/src/apache/test/Generic/GenericTests.cs |  748 +++
 lang/csharp/src/apache/test/IO/BinaryCodecTests.cs |  434 ++
 lang/csharp/src/apache/test/IO/JsonCodecTests.cs   |  472 ++
 .../apache/test/Interop/InteropDataConstants.cs    |   35 +
 .../apache/test/Interop/InteropDataGenerator.cs    |  100 +
 .../src/apache/test/Interop/InteropDataTests.cs    |   68 +
 .../src/apache/test/Properties/AssemblyInfo.cs     |   33 +
 .../test/Protocol/ProtocolParseExceptionTest.cs    |  108 +
 .../src/apache/test/Protocol/ProtocolTest.cs       |  445 ++
 .../csharp/src/apache/test/Reflect/CompareUtils.cs |   50 +
 lang/csharp/src/apache/test/Reflect/TestArray.cs   |  247 +
 lang/csharp/src/apache/test/Reflect/TestFixed.cs   |  162 +
 .../src/apache/test/Reflect/TestFromAvroProject.cs |  382 ++
 .../src/apache/test/Reflect/TestLogMessage.cs      |  113 +
 .../src/apache/test/Reflect/TestLogicalSchema.cs   |  198 +
 .../src/apache/test/Reflect/TestRecursive.cs       |  154 +
 lang/csharp/src/apache/test/Reflect/TestReflect.cs |  192 +
 lang/csharp/src/apache/test/Reflect/TestUnion.cs   |  198 +
 lang/csharp/src/apache/test/Schema/AliasTest.cs    |  238 +
 lang/csharp/src/apache/test/Schema/AliasesTests.cs |   49 +
 .../src/apache/test/Schema/ArraySchemaTests.cs     |   55 +
 .../apache/test/Schema/SchemaNormalizationTests.cs |  106 +
 lang/csharp/src/apache/test/Schema/SchemaTests.cs  |  731 +++
 lang/csharp/src/apache/test/Specific/ArrayItem.cs  |   87 +
 .../test/Specific/ComplexTypeWithReservedWords.cs  |   86 +
 .../apache/test/Specific/DoubleLongUnionRecord.cs  |   73 +
 .../test/Specific/EmbeddedGenericRecordUser.cs     |   73 +
 .../apache/test/Specific/EmbeddedGenericsRecord.cs |  156 +
 .../src/apache/test/Specific/ObjectCreatorTests.cs |  114 +
 lang/csharp/src/apache/test/Specific/Record.cs     |   73 +
 .../test/Specific/RecordWithOptionalLogicalType.cs |   74 +
 .../src/apache/test/Specific/SpecificTests.cs      |  703 ++
 .../src/apache/test/Util/LogicalTypeTests.cs       |  423 ++
 lang/csharp/src/apache/test/Utils/CaseFinder.cs    |  134 +
 .../src/apache/test/Utils/CaseFinderTests.cs       |  162 +
 lang/csharp/src/apache/test/Utils/VersionTests.cs  |   55 +
 lang/csharp/versions.props                         |   76 +
 lang/java/.eclipse_launchers/AllTests.launch       |   36 +
 lang/java/.gitignore                               |   22 +
 lang/java/android/pom.xml                          |  114 +
 .../apache/avro/util/internal/ClassValueCache.java |   46 +
 .../avro/util/internal/ThreadLocalWithInitial.java |   38 +
 .../avro/util/internal/TestClassValueCache.java    |   37 +
 .../java/archetypes/avro-service-archetype/pom.xml |   56 +
 .../avro-service-archetype/src/main/pom/pom.xml    |  151 +
 .../META-INF/maven/archetype-metadata.xml          |   48 +
 .../src/main/avro/order-service.avpr               |   46 +
 .../src/main/java/service/SimpleOrderService.java  |   44 +
 .../java/transport/SimpleOrderServiceClient.java   |   78 +
 .../java/transport/SimpleOrderServiceEndpoint.java |   67 +
 .../src/main/resources/logback.xml                 |   30 +
 .../SimpleOrderServiceIntegrationTest.java         |   87 +
 .../resources/projects/basic/archetype.properties  |    6 +
 .../src/test/resources/projects/basic/goal.txt     |    1 +
 lang/java/archetypes/pom.xml                       |  121 +
 lang/java/avro/pom.xml                             |  249 +
 lang/java/avro/src/it/pom.xml                      |  165 +
 lang/java/avro/src/it/settings.xml                 |   51 +
 .../org/apache/avro/AvroMissingFieldException.java |   47 +
 .../java/org/apache/avro/AvroRemoteException.java  |   46 +
 .../java/org/apache/avro/AvroRuntimeException.java |   34 +
 .../java/org/apache/avro/AvroTypeException.java    |   30 +
 .../avro/CanonicalSchemaFormatterFactory.java      |   37 +
 .../src/main/java/org/apache/avro/Conversion.java  |  190 +
 .../src/main/java/org/apache/avro/Conversions.java |  391 ++
 .../org/apache/avro/FormattedSchemaParser.java     |   77 +
 .../org/apache/avro/InvalidAvroMagicException.java |   26 +
 .../avro/InvalidNumberEncodingException.java       |   26 +
 .../main/java/org/apache/avro/JsonProperties.java  |  345 +
 .../java/org/apache/avro/JsonSchemaFormatter.java  |   33 +
 .../apache/avro/JsonSchemaFormatterFactory.java    |   40 +
 .../java/org/apache/avro/JsonSchemaParser.java     |   88 +
 .../src/main/java/org/apache/avro/LogicalType.java |   92 +
 .../main/java/org/apache/avro/LogicalTypes.java    |  588 ++
 .../main/java/org/apache/avro/NameValidator.java   |  104 +
 .../main/java/org/apache/avro/ParseContext.java    |  352 +
 .../src/main/java/org/apache/avro/Protocol.java    |  689 ++
 .../src/main/java/org/apache/avro/Resolver.java    |  800 +++
 .../avro/src/main/java/org/apache/avro/Schema.java | 2285 +++++++
 .../main/java/org/apache/avro/SchemaBuilder.java   | 2742 ++++++++
 .../org/apache/avro/SchemaBuilderException.java    |   30 +
 .../java/org/apache/avro/SchemaCompatibility.java  |  898 +++
 .../main/java/org/apache/avro/SchemaFormatter.java |  127 +
 .../org/apache/avro/SchemaFormatterFactory.java    |  106 +
 .../java/org/apache/avro/SchemaNormalization.java  |  187 +
 .../java/org/apache/avro/SchemaParseException.java |   30 +
 .../main/java/org/apache/avro/SchemaParser.java    |  294 +
 .../org/apache/avro/SchemaValidationException.java |   37 +
 .../org/apache/avro/SchemaValidationStrategy.java  |   37 +
 .../main/java/org/apache/avro/SchemaValidator.java |   47 +
 .../org/apache/avro/SchemaValidatorBuilder.java    |   77 +
 .../java/org/apache/avro/SystemLimitException.java |  190 +
 .../org/apache/avro/UnknownAvroCodecException.java |   26 +
 .../org/apache/avro/UnresolvedUnionException.java  |   45 +
 .../src/main/java/org/apache/avro/ValidateAll.java |   49 +
 .../java/org/apache/avro/ValidateCanBeRead.java    |   41 +
 .../main/java/org/apache/avro/ValidateCanRead.java |   41 +
 .../main/java/org/apache/avro/ValidateLatest.java  |   53 +
 .../java/org/apache/avro/ValidateMutualRead.java   |   69 +
 .../java/org/apache/avro/data/ErrorBuilder.java    |   47 +
 .../src/main/java/org/apache/avro/data/Json.java   |  235 +
 .../java/org/apache/avro/data/RecordBuilder.java   |   30 +
 .../org/apache/avro/data/RecordBuilderBase.java    |  168 +
 .../java/org/apache/avro/data/TimeConversions.java |  346 +
 .../main/java/org/apache/avro/data/package.html    |   22 +
 .../main/java/org/apache/avro/file/BZip2Codec.java |   88 +
 .../src/main/java/org/apache/avro/file/Codec.java  |   64 +
 .../java/org/apache/avro/file/CodecFactory.java    |  183 +
 .../org/apache/avro/file/DataFileConstants.java    |   43 +
 .../java/org/apache/avro/file/DataFileReader.java  |  331 +
 .../org/apache/avro/file/DataFileReader12.java     |  238 +
 .../java/org/apache/avro/file/DataFileStream.java  |  416 ++
 .../java/org/apache/avro/file/DataFileWriter.java  |  515 ++
 .../java/org/apache/avro/file/DeflateCodec.java    |  127 +
 .../main/java/org/apache/avro/file/FileReader.java |   54 +
 .../main/java/org/apache/avro/file/NullCodec.java  |   64 +
 .../apache/avro/file/SeekableByteArrayInput.java   |   50 +
 .../org/apache/avro/file/SeekableFileInput.java    |   50 +
 .../java/org/apache/avro/file/SeekableInput.java   |   43 +
 .../java/org/apache/avro/file/SnappyCodec.java     |   92 +
 .../main/java/org/apache/avro/file/Syncable.java   |   35 +
 .../apache/avro/file/SyncableFileOutputStream.java |  103 +
 .../main/java/org/apache/avro/file/XZCodec.java    |   99 +
 .../java/org/apache/avro/file/ZstandardCodec.java  |  104 +
 .../java/org/apache/avro/file/ZstandardLoader.java |   50 +
 .../main/java/org/apache/avro/file/package.html    |   23 +
 .../java/org/apache/avro/generic/GenericArray.java |   43 +
 .../org/apache/avro/generic/GenericContainer.java  |   26 +
 .../java/org/apache/avro/generic/GenericData.java  | 1573 +++++
 .../apache/avro/generic/GenericDatumReader.java    |  680 ++
 .../apache/avro/generic/GenericDatumWriter.java    |  415 ++
 .../org/apache/avro/generic/GenericEnumSymbol.java |   25 +
 .../java/org/apache/avro/generic/GenericFixed.java |   24 +
 .../org/apache/avro/generic/GenericRecord.java     |   35 +
 .../apache/avro/generic/GenericRecordBuilder.java  |  275 +
 .../org/apache/avro/generic/IndexedRecord.java     |   37 +
 .../org/apache/avro/generic/PrimitivesArrays.java  |  609 ++
 .../main/java/org/apache/avro/generic/package.html |   43 +
 .../main/java/org/apache/avro/io/BinaryData.java   |  431 ++
 .../java/org/apache/avro/io/BinaryDecoder.java     | 1019 +++
 .../java/org/apache/avro/io/BinaryEncoder.java     |  131 +
 .../org/apache/avro/io/BlockingBinaryEncoder.java  |  568 ++
 .../avro/io/BlockingDirectBinaryEncoder.java       |  141 +
 .../org/apache/avro/io/BufferedBinaryEncoder.java  |  240 +
 .../main/java/org/apache/avro/io/DatumReader.java  |   41 +
 .../main/java/org/apache/avro/io/DatumWriter.java  |   39 +
 .../src/main/java/org/apache/avro/io/Decoder.java  |  302 +
 .../java/org/apache/avro/io/DecoderFactory.java    |  306 +
 .../org/apache/avro/io/DirectBinaryDecoder.java    |  196 +
 .../org/apache/avro/io/DirectBinaryEncoder.java    |  137 +
 .../src/main/java/org/apache/avro/io/Encoder.java  |  318 +
 .../java/org/apache/avro/io/EncoderFactory.java    |  427 ++
 .../java/org/apache/avro/io/FastReaderBuilder.java |  614 ++
 .../main/java/org/apache/avro/io/JsonDecoder.java  |  528 ++
 .../main/java/org/apache/avro/io/JsonEncoder.java  |  352 +
 .../java/org/apache/avro/io/ParsingDecoder.java    |   77 +
 .../java/org/apache/avro/io/ParsingEncoder.java    |   69 +
 .../java/org/apache/avro/io/ResolvingDecoder.java  |  341 +
 .../java/org/apache/avro/io/ValidatingDecoder.java |  249 +
 .../java/org/apache/avro/io/ValidatingEncoder.java |  213 +
 .../src/main/java/org/apache/avro/io/package.html  |   31 +
 .../avro/io/parsing/JsonGrammarGenerator.java      |   98 +
 .../java/org/apache/avro/io/parsing/Parser.java    |  187 +
 .../avro/io/parsing/ResolvingGrammarGenerator.java |  382 ++
 .../org/apache/avro/io/parsing/SkipParser.java     |   90 +
 .../java/org/apache/avro/io/parsing/Symbol.java    |  714 ++
 .../io/parsing/ValidatingGrammarGenerator.java     |  138 +
 .../apache/avro/io/parsing/doc-files/parsing.html  |  615 ++
 .../java/org/apache/avro/io/parsing/package.html   |   40 +
 .../apache/avro/message/BadHeaderException.java    |   34 +
 .../apache/avro/message/BinaryMessageDecoder.java  |  181 +
 .../apache/avro/message/BinaryMessageEncoder.java  |  124 +
 .../org/apache/avro/message/MessageDecoder.java    |  152 +
 .../org/apache/avro/message/MessageEncoder.java    |   51 +
 .../avro/message/MissingSchemaException.java       |   35 +
 .../org/apache/avro/message/RawMessageDecoder.java |   96 +
 .../org/apache/avro/message/RawMessageEncoder.java |  123 +
 .../java/org/apache/avro/message/SchemaStore.java  |   64 +
 .../src/main/java/org/apache/avro/package.html     |   44 +
 .../apache/avro/path/ArrayPositionPredicate.java   |   35 +
 .../java/org/apache/avro/path/LocationStep.java    |   47 +
 .../java/org/apache/avro/path/MapKeyPredicate.java |   43 +
 .../java/org/apache/avro/path/PathElement.java     |   25 +
 .../java/org/apache/avro/path/PathPredicate.java   |   26 +
 .../org/apache/avro/path/PathTracingException.java |   46 +
 .../apache/avro/path/PositionalPathPredicate.java  |   25 +
 .../apache/avro/path/TracingAvroTypeException.java |   66 +
 .../avro/path/TracingClassCastException.java       |   83 +
 .../avro/path/TracingNullPointException.java       |   92 +
 .../org/apache/avro/path/UnionTypePredicate.java   |   35 +
 .../java/org/apache/avro/path/package-info.java    |   25 +
 .../main/java/org/apache/avro/path/package.html    |   29 +
 .../org/apache/avro/reflect/ArrayAccessor.java     |  220 +
 .../java/org/apache/avro/reflect/AvroAlias.java    |   39 +
 .../java/org/apache/avro/reflect/AvroAliases.java  |   28 +
 .../java/org/apache/avro/reflect/AvroDefault.java  |   32 +
 .../main/java/org/apache/avro/reflect/AvroDoc.java |   33 +
 .../java/org/apache/avro/reflect/AvroEncode.java   |   36 +
 .../java/org/apache/avro/reflect/AvroIgnore.java   |   32 +
 .../java/org/apache/avro/reflect/AvroMeta.java     |   43 +
 .../java/org/apache/avro/reflect/AvroName.java     |   33 +
 .../java/org/apache/avro/reflect/AvroSchema.java   |   47 +
 .../org/apache/avro/reflect/CustomEncoding.java    |   51 +
 .../apache/avro/reflect/DateAsLongEncoding.java    |   52 +
 .../java/org/apache/avro/reflect/FieldAccess.java  |   42 +
 .../apache/avro/reflect/FieldAccessReflect.java    |  143 +
 .../org/apache/avro/reflect/FieldAccessor.java     |   54 +
 .../java/org/apache/avro/reflect/MapEntry.java     |   62 +
 .../java/org/apache/avro/reflect/Nullable.java     |   35 +
 .../java/org/apache/avro/reflect/ReflectData.java  | 1048 +++
 .../apache/avro/reflect/ReflectDatumReader.java    |  320 +
 .../apache/avro/reflect/ReflectDatumWriter.java    |  189 +
 .../org/apache/avro/reflect/ReflectionUtil.java    |  191 +
 .../java/org/apache/avro/reflect/Stringable.java   |   35 +
 .../main/java/org/apache/avro/reflect/Union.java   |   40 +
 .../main/java/org/apache/avro/reflect/package.html |  101 +
 .../org/apache/avro/specific/AvroGenerated.java    |   32 +
 .../apache/avro/specific/ExternalizableInput.java  |   69 +
 .../apache/avro/specific/ExternalizableOutput.java |   60 +
 .../java/org/apache/avro/specific/FixedSize.java   |   36 +
 .../org/apache/avro/specific/SpecificData.java     |  679 ++
 .../apache/avro/specific/SpecificDatumReader.java  |  190 +
 .../apache/avro/specific/SpecificDatumWriter.java  |  120 +
 .../avro/specific/SpecificErrorBuilderBase.java    |  137 +
 .../avro/specific/SpecificExceptionBase.java       |   84 +
 .../org/apache/avro/specific/SpecificFixed.java    |   82 +
 .../org/apache/avro/specific/SpecificRecord.java   |   26 +
 .../apache/avro/specific/SpecificRecordBase.java   |  125 +
 .../avro/specific/SpecificRecordBuilderBase.java   |   65 +
 .../java/org/apache/avro/specific/package.html     |   51 +
 .../apache/avro/util/ByteBufferInputStream.java    |  102 +
 .../apache/avro/util/ByteBufferOutputStream.java   |  112 +
 .../main/java/org/apache/avro/util/ClassUtils.java |  102 +
 .../main/java/org/apache/avro/util/MapEntry.java   |   63 +
 .../main/java/org/apache/avro/util/MapUtil.java    |   45 +
 .../avro/util/NonCopyingByteArrayOutputStream.java |   51 +
 .../main/java/org/apache/avro/util/RandomData.java |  222 +
 .../avro/util/ReusableByteArrayInputStream.java    |   35 +
 .../avro/util/ReusableByteBufferInputStream.java   |   94 +
 .../java/org/apache/avro/util/SchemaResolver.java  |  275 +
 .../main/java/org/apache/avro/util/SchemaUtil.java |   56 +
 .../java/org/apache/avro/util/SchemaVisitor.java   |   69 +
 .../main/java/org/apache/avro/util/Schemas.java    |  149 +
 .../main/java/org/apache/avro/util/TimePeriod.java |  393 ++
 .../src/main/java/org/apache/avro/util/Utf8.java   |  219 +
 .../java/org/apache/avro/util/UtfTextUtils.java    |  247 +
 .../org/apache/avro/util/WeakIdentityHashMap.java  |  196 +
 .../org/apache/avro/util/internal/Accessor.java    |  121 +
 .../apache/avro/util/internal/ClassValueCache.java |   47 +
 .../apache/avro/util/internal/JacksonUtils.java    |  203 +
 .../avro/util/internal/ThreadLocalWithInitial.java |   32 +
 .../main/java/org/apache/avro/util/package.html    |   23 +
 .../apache/avro/util/springframework/Assert.java   |  121 +
 .../ConcurrentReferenceHashMap.java                | 1111 ++++
 .../avro/util/springframework/ObjectUtils.java     |  320 +
 lang/java/avro/src/main/java/overview.html         |   88 +
 lang/java/avro/src/main/resources/META-INF/LICENSE |  209 +
 .../org.apache.avro.SchemaFormatterFactory         |   19 +
 lang/java/avro/src/test/java/NoPackage.java        |   21 +
 .../src/test/java/org/apache/avro/BarRecord.java   |   51 +
 .../java/org/apache/avro/ByteBufferRecord.java     |   66 +
 .../src/test/java/org/apache/avro/CustomType.java  |   48 +
 .../java/org/apache/avro/CustomTypeConverter.java  |   48 +
 .../apache/avro/CustomTypeLogicalTypeFactory.java  |   30 +
 .../java/org/apache/avro/DummySchemaParser.java    |   53 +
 .../java/org/apache/avro/FooBarSpecificRecord.java |  628 ++
 .../src/test/java/org/apache/avro/FooRecord.java   |   47 +
 .../java/org/apache/avro/GenerateBlockingData.java |   84 +
 .../java/org/apache/avro/ParseContextTest.java     |  129 +
 .../java/org/apache/avro/SchemaFormatterTest.java  |   88 +
 .../org/apache/avro/SchemaNameValidatorTest.java   |   59 +
 .../org/apache/avro/TestBigDecimalConversion.java  |   85 +
 .../org/apache/avro/TestCircularReferences.java    |  397 ++
 .../test/java/org/apache/avro/TestDataFile.java    |  424 ++
 .../java/org/apache/avro/TestDataFileConcat.java   |  149 +
 .../org/apache/avro/TestDataFileCorruption.java    |   94 +
 .../org/apache/avro/TestDataFileCustomSync.java    |   89 +
 .../java/org/apache/avro/TestDataFileDeflate.java  |   64 +
 .../java/org/apache/avro/TestDataFileMeta.java     |   85 +
 .../java/org/apache/avro/TestDataFileReader.java   |  241 +
 .../java/org/apache/avro/TestDataFileReflect.java  |  229 +
 .../org/apache/avro/TestDecimalConversion.java     |  210 +
 .../src/test/java/org/apache/avro/TestFixed.java   |   49 +
 .../test/java/org/apache/avro/TestLogicalType.java |  355 +
 .../java/org/apache/avro/TestNestedRecords.java    |   95 +
 .../test/java/org/apache/avro/TestProtocol.java    |  156 +
 .../TestReadingWritingDataInEvolvedSchemas.java    |  448 ++
 .../test/java/org/apache/avro/TestResolver.java    |  122 +
 .../src/test/java/org/apache/avro/TestSchema.java  |  675 ++
 .../java/org/apache/avro/TestSchemaBuilder.java    |  901 +++
 .../java/org/apache/avro/TestSchemaCommons.java    |   91 +
 .../org/apache/avro/TestSchemaCompatibility.java   |  574 ++
 .../avro/TestSchemaCompatibilityEnumDefaults.java  |  132 +
 .../TestSchemaCompatibilityFixedSizeMismatch.java  |   50 +
 .../TestSchemaCompatibilityMissingEnumSymbols.java |   53 +
 .../TestSchemaCompatibilityMissingUnionBranch.java |  121 +
 .../avro/TestSchemaCompatibilityMultiple.java      |  116 +
 .../avro/TestSchemaCompatibilityNameMismatch.java  |   53 +
 ...ompatibilityReaderFieldMissingDefaultValue.java |   46 +
 .../avro/TestSchemaCompatibilityTypeMismatch.java  |  110 +
 .../org/apache/avro/TestSchemaNormalization.java   |  138 +
 .../java/org/apache/avro/TestSchemaParser.java     |  121 +
 .../org/apache/avro/TestSchemaValidateDefault.java |  152 +
 .../java/org/apache/avro/TestSchemaValidation.java |  331 +
 .../java/org/apache/avro/TestSchemaWarnings.java   |  114 +
 .../src/test/java/org/apache/avro/TestSchemas.java |  200 +
 .../org/apache/avro/TestSystemLimitException.java  |  164 +
 .../test/java/org/apache/avro/TestUnionError.java  |   84 +
 .../org/apache/avro/TestUnionSelfReference.java    |   87 +
 .../java/org/apache/avro/TestUuidConversions.java  |   72 +
 .../src/test/java/org/apache/avro/TypeEnum.java    |   39 +
 .../apache/avro/data/RecordBuilderBaseTest.java    |   85 +
 .../org/apache/avro/data/TestTimeConversions.java  |  233 +
 .../java/org/apache/avro/file/TestAllCodecs.java   |  115 +
 .../java/org/apache/avro/file/TestCustomCodec.java |   57 +
 .../avro/file/TestIOExceptionDuringWrite.java      |   76 +
 .../avro/file/TestSeekableByteArrayInput.java      |  107 +
 .../apache/avro/file/TestSeekableInputStream.java  |   57 +
 .../org/apache/avro/file/TestZstandardCodec.java   |   36 +
 .../org/apache/avro/file/codec/CustomCodec.java    |   92 +
 .../apache/avro/generic/GenericDataArrayTest.java  |   44 +
 .../apache/avro/generic/PrimitivesArraysTest.java  |  280 +
 .../avro/generic/TestGenericConcreteEnum.java      |   83 +
 .../org/apache/avro/generic/TestGenericData.java   |  923 +++
 .../avro/generic/TestGenericDatumReader.java       |  120 +
 .../avro/generic/TestGenericDatumWriter.java       |  504 ++
 .../avro/generic/TestGenericLogicalTypes.java      |  491 ++
 .../avro/generic/TestGenericRecordBuilder.java     |  111 +
 .../apache/avro/generic/TestSkipEnumSchema.java    |   52 +
 .../org/apache/avro/io/LegacyBinaryEncoder.java    |  210 +
 .../java/org/apache/avro/io/TestBinaryData.java    |   63 +
 .../java/org/apache/avro/io/TestBinaryDecoder.java |  711 ++
 .../apache/avro/io/TestBinaryEncoderFidelity.java  |  242 +
 .../avro/io/TestBlockingDirectBinaryEncoder.java   |  146 +
 .../java/org/apache/avro/io/TestBlockingIO.java    |  409 ++
 .../java/org/apache/avro/io/TestBlockingIO2.java   |   94 +
 .../test/java/org/apache/avro/io/TestEncoders.java |  382 ++
 .../java/org/apache/avro/io/TestJsonDecoder.java   |  121 +
 .../java/org/apache/avro/io/TestResolvingIO.java   |  153 +
 .../apache/avro/io/TestResolvingIOResolving.java   |  131 +
 .../java/org/apache/avro/io/TestValidatingIO.java  |  740 +++
 .../org/apache/avro/io/parsing/SymbolTest.java     |   66 +
 .../io/parsing/TestResolvingGrammarGenerator.java  |  140 +
 .../io/parsing/TestResolvingGrammarGenerator2.java |  164 +
 .../avro/message/TestBinaryMessageEncoding.java    |  261 +
 .../TestGenerateInteropSingleObjectEncoding.java   |   63 +
 .../message/TestInteropSingleObjectEncoding.java   |   66 +
 .../org/apache/avro/reflect/TestByteBuffer.java    |  126 +
 .../apache/avro/reflect/TestNonStringMapKeys.java  |  544 ++
 .../java/org/apache/avro/reflect/TestReflect.java  | 1418 ++++
 .../apache/avro/reflect/TestReflectAllowNulls.java |  129 +
 .../org/apache/avro/reflect/TestReflectData.java   |  158 +
 .../avro/reflect/TestReflectDatumReader.java       |  604 ++
 .../TestReflectDatumWithAnonymousInstances.java    |  224 +
 .../avro/reflect/TestReflectLogicalTypes.java      |  733 +++
 .../avro/specific/TestRecordWithLogicalTypes.java  | 1033 +++
 .../avro/specific/TestRecordWithMapsAndArrays.java |  875 +++
 .../specific/TestRecordWithoutLogicalTypes.java    |  617 ++
 .../org/apache/avro/specific/TestSpecificData.java |  193 +
 .../avro/specific/TestSpecificDatumReader.java     |   81 +
 .../avro/specific/TestSpecificRecordWithUnion.java |   70 +
 .../avro/specific/TestSpecificToFromByteArray.java |   91 +
 .../org/apache/avro/specific/TestUnionRecord.java  |  324 +
 .../test/java/org/apache/avro/specific/int$.java   |  227 +
 .../test/java/org/apache/avro/util/CaseFinder.java |  221 +
 .../java/org/apache/avro/util/TestCaseFinder.java  |  137 +
 .../java/org/apache/avro/util/TestRandomData.java  |  224 +
 .../org/apache/avro/util/TestSchemaResolver.java   |   82 +
 .../java/org/apache/avro/util/TestSchemas.java     |  213 +
 .../test/java/org/apache/avro/util/TestUtf8.java   |  144 +
 .../java/org/apache/avro/util/TimePeriodTest.java  |  306 +
 .../org/apache/avro/util/UtfTextUtilsTest.java     |  132 +
 .../apache/avro/util/WeakIdentityHashMapTest.java  |   89 +
 .../avro/util/internal/TestClassValueCache.java    |   37 +
 .../avro/util/internal/TestJacksonUtils.java       |  135 +
 .../util/springframework/ComparableComparator.java |   44 +
 .../util/springframework/NullSafeComparator.java   |  132 +
 .../avro/util/springframework/StopWatch.java       |  415 ++
 .../TestConcurrentReferenceHashMap.java            |  688 ++
 .../META-INF/services/org.apache.avro.Conversion   |   17 +
 .../services/org.apache.avro.FormattedSchemaParser |   18 +
 ...org.apache.avro.LogicalTypes$LogicalTypeFactory |   17 +
 .../avro/src/test/resources/SchemaBuilder.avsc     |  284 +
 .../test/resources/TestRecordWithLogicalTypes.avsc |   51 +
 .../resources/TestRecordWithMapsAndArrays.avsc     |   47 +
 .../avro/src/test/resources/TestUnionRecord.avsc   |   23 +
 .../resources/multipleFile/ApplicationEvent.avsc   |   28 +
 .../test/resources/multipleFile/DocumentInfo.avsc  |   19 +
 .../test/resources/multipleFile/MyResponse.avsc    |   14 +
 .../avro/src/test/resources/multipleFile/README.md |    8 +
 .../src/test/resources/schema-location-read.json   |   28 +
 .../src/test/resources/schema-location-write.json  |   28 +
 .../avro/src/test/resources/schema-location.json   |   14 +
 lang/java/build.sh                                 |   52 +
 lang/java/checkstyle.xml                           |   62 +
 lang/java/compiler/pom.xml                         |  254 +
 .../apache/avro/compiler/idl/DocCommentHelper.java |  135 +
 .../avro/compiler/idl/IsResolvedSchemaVisitor.java |   62 +
 .../apache/avro/compiler/idl/ResolvingVisitor.java |  179 +
 .../apache/avro/compiler/idl/SchemaResolver.java   |  162 +
 .../avro/compiler/schema/CloningVisitor.java       |  175 +
 .../apache/avro/compiler/schema/SchemaVisitor.java |   54 +
 .../avro/compiler/schema/SchemaVisitorAction.java  |   42 +
 .../org/apache/avro/compiler/schema/Schemas.java   |  224 +
 .../avro/compiler/specific/ProtocolTask.java       |  101 +
 .../apache/avro/compiler/specific/SchemaTask.java  |   45 +
 .../avro/compiler/specific/SpecificCompiler.java   | 1373 ++++
 .../javacc/org/apache/avro/compiler/idl/idl.jj     | 1759 +++++
 .../compiler/src/main/resources/META-INF/LICENSE   |  235 +
 .../specific/templates/java/classic/enum.vm        |   36 +
 .../specific/templates/java/classic/fixed.vm       |   64 +
 .../specific/templates/java/classic/protocol.vm    |   96 +
 .../specific/templates/java/classic/record.vm      |  880 +++
 .../src/test/idl/AnnotationOnTypeReference.avdl    |   31 +
 lang/java/compiler/src/test/idl/cycle.avdl         |   42 +
 lang/java/compiler/src/test/idl/input/bar.avpr     |    3 +
 .../java/compiler/src/test/idl/input/baseball.avdl |   23 +
 lang/java/compiler/src/test/idl/input/baz.avsc     |    3 +
 .../java/compiler/src/test/idl/input/comments.avdl |   64 +
 lang/java/compiler/src/test/idl/input/cycle.avdl   |   42 +
 lang/java/compiler/src/test/idl/input/foo.avsc     |    3 +
 .../compiler/src/test/idl/input/forward_ref.avdl   |   31 +
 lang/java/compiler/src/test/idl/input/import.avdl  |   40 +
 lang/java/compiler/src/test/idl/input/interop.avdl |   50 +
 .../compiler/src/test/idl/input/mr_events.avdl     |   74 +
 .../compiler/src/test/idl/input/namespaces.avdl    |   42 +
 .../compiler/src/test/idl/input/nestedimport.avdl  |   31 +
 lang/java/compiler/src/test/idl/input/player.avsc  |    8 +
 .../java/compiler/src/test/idl/input/position.avsc |    3 +
 .../compiler/src/test/idl/input/reservedwords.avdl |   27 +
 lang/java/compiler/src/test/idl/input/simple.avdl  |   87 +
 lang/java/compiler/src/test/idl/input/unicode.avdl |   29 +
 lang/java/compiler/src/test/idl/input/union.avdl   |   16 +
 lang/java/compiler/src/test/idl/input/uuid.avdl    |   46 +
 lang/java/compiler/src/test/idl/logicalTypes.avdl  |   32 +
 .../compiler/src/test/idl/output/baseball.avpr     |   31 +
 .../compiler/src/test/idl/output/comments.avpr     |   67 +
 lang/java/compiler/src/test/idl/output/cycle.avpr  |   56 +
 .../compiler/src/test/idl/output/forward_ref.avpr  |   16 +
 lang/java/compiler/src/test/idl/output/import.avpr |  140 +
 .../java/compiler/src/test/idl/output/interop.avpr |   94 +
 .../compiler/src/test/idl/output/mr_events.avpr    |  125 +
 .../compiler/src/test/idl/output/namespaces.avpr   |   51 +
 .../compiler/src/test/idl/output/nestedimport.avpr |   82 +
 .../src/test/idl/output/reservedwords.avpr         |   35 +
 lang/java/compiler/src/test/idl/output/simple.avpr |  144 +
 .../java/compiler/src/test/idl/output/unicode.avpr |   17 +
 lang/java/compiler/src/test/idl/output/union.avpr  |   38 +
 lang/java/compiler/src/test/idl/output/uuid.avpr   |   29 +
 .../test/idl/putOnClassPath/OnTheClasspath.avdl    |   24 +
 .../test/idl/putOnClassPath/OnTheClasspath.avpr    |   11 +
 .../test/idl/putOnClassPath/OnTheClasspath.avsc    |    6 +
 .../idl/putOnClassPath/folder/relativePath.avdl    |   22 +
 .../src/test/idl/putOnClassPath/nestedtypes.avdl   |   23 +
 .../compiler/src/test/idl/work space/level1.avdl   |    3 +
 .../compiler/src/test/idl/work space/level2.avdl   |    2 +
 .../compiler/src/test/idl/work space/root.avdl     |    3 +
 .../compiler/src/test/idl/work space/root.avpr     |    1 +
 .../avro/compiler/idl/DocCommentHelperTest.java    |   95 +
 .../org/apache/avro/compiler/idl/TestCycle.java    |  103 +
 .../java/org/apache/avro/compiler/idl/TestIdl.java |  232 +
 .../apache/avro/compiler/idl/TestLogicalTypes.java |   95 +
 .../idl/TestReferenceAnnotationNotAllowed.java     |   39 +
 .../avro/compiler/idl/TestSchemaResolver.java      |   80 +
 .../apache/avro/compiler/schema/TestSchemas.java   |  299 +
 .../compiler/specific/TestSpecificCompiler.java    |  993 +++
 .../apache/avro/specific/TestGeneratedCode.java    |  121 +
 .../org/apache/avro/specific/TestSpecificData.java |  254 +
 lang/java/compiler/src/test/resources/foo.Bar.avsc |   21 +
 .../src/test/resources/full_record_v1.avsc         |   30 +
 .../src/test/resources/full_record_v2.avsc         |   30 +
 .../compiler/src/test/resources/logical-uuid.avsc  |   30 +
 .../logical_types_with_multiple_fields.avsc        |   30 +
 .../regression_error_field_in_record.avsc          |   22 +
 .../compiler/src/test/resources/simple_record.avsc |    8 +
 .../templates_with_custom_tools/record.vm          |   23 +
 .../src/test/resources/union_and_fixed_fields.avsc |   18 +
 lang/java/eclipse-java-formatter.xml               |  406 ++
 lang/java/grpc/pom.xml                             |  152 +
 .../java/org/apache/avro/grpc/AvroGrpcClient.java  |  166 +
 .../java/org/apache/avro/grpc/AvroGrpcServer.java  |  129 +
 .../java/org/apache/avro/grpc/AvroGrpcUtils.java   |   86 +
 .../java/org/apache/avro/grpc/AvroInputStream.java |  101 +
 .../apache/avro/grpc/AvroRequestMarshaller.java    |  103 +
 .../apache/avro/grpc/AvroResponseMarshaller.java   |  130 +
 .../org/apache/avro/grpc/ServiceDescriptor.java    |   77 +
 lang/java/grpc/src/test/avro/TestService.avdl      |   52 +
 .../org/apache/avro/grpc/TestAvroMarshaller.java   |   84 +
 .../org/apache/avro/grpc/TestAvroProtocolGrpc.java |  266 +
 lang/java/idl/pom.xml                              |  178 +
 .../src/main/java/org/apache/avro/idl/IdlFile.java |  166 +
 .../main/java/org/apache/avro/idl/IdlReader.java   | 1075 +++
 .../org/apache/avro/idl/IdlSchemaFormatter.java    |   34 +
 .../apache/avro/idl/IdlSchemaFormatterFactory.java |   28 +
 .../java/org/apache/avro/idl/IdlSchemaParser.java  |   53 +
 .../main/java/org/apache/avro/idl/IdlUtils.java    |  545 ++
 lang/java/idl/src/main/resources/META-INF/LICENSE  |  202 +
 .../services/org.apache.avro.FormattedSchemaParser |   18 +
 .../org.apache.avro.SchemaFormatterFactory         |   18 +
 .../src/test/idl/AnnotationOnTypeReference.avdl    |   31 +
 lang/java/idl/src/test/idl/cycle.avdl              |   42 +
 .../idl/src/test/idl/extra/protocolSyntax.avdl     |    9 +
 lang/java/idl/src/test/idl/extra/schemaSyntax.avdl |    8 +
 lang/java/idl/src/test/idl/input/bar.avpr          |    2 +
 lang/java/idl/src/test/idl/input/baseball.avdl     |   23 +
 lang/java/idl/src/test/idl/input/baz.avsc          |    3 +
 lang/java/idl/src/test/idl/input/comments.avdl     |   64 +
 lang/java/idl/src/test/idl/input/cycle.avdl        |   42 +
 lang/java/idl/src/test/idl/input/echo.avdl         |   32 +
 lang/java/idl/src/test/idl/input/foo.avsc          |    3 +
 lang/java/idl/src/test/idl/input/forward_ref.avdl  |   33 +
 lang/java/idl/src/test/idl/input/import.avdl       |   40 +
 lang/java/idl/src/test/idl/input/interop.avdl      |   50 +
 lang/java/idl/src/test/idl/input/mr_events.avdl    |   74 +
 lang/java/idl/src/test/idl/input/namespaces.avdl   |   42 +
 lang/java/idl/src/test/idl/input/nestedimport.avdl |   31 +
 lang/java/idl/src/test/idl/input/player.avsc       |    8 +
 lang/java/idl/src/test/idl/input/position.avsc     |    3 +
 .../java/idl/src/test/idl/input/reservedwords.avdl |   27 +
 .../src/test/idl/input/schema_syntax_schema.avdl   |   48 +
 lang/java/idl/src/test/idl/input/simple.avdl       |   90 +
 .../java/idl/src/test/idl/input/status_schema.avdl |    5 +
 lang/java/idl/src/test/idl/input/unicode.avdl      |   29 +
 lang/java/idl/src/test/idl/input/union.avdl        |   16 +
 lang/java/idl/src/test/idl/input/uuid.avdl         |   46 +
 lang/java/idl/src/test/idl/logicalTypes.avdl       |   32 +
 lang/java/idl/src/test/idl/output/baseball.avpr    |   31 +
 lang/java/idl/src/test/idl/output/comments.avpr    |   67 +
 lang/java/idl/src/test/idl/output/cycle.avpr       |   55 +
 lang/java/idl/src/test/idl/output/echo.avpr        |   37 +
 lang/java/idl/src/test/idl/output/forward_ref.avpr |   16 +
 lang/java/idl/src/test/idl/output/import.avpr      |  132 +
 lang/java/idl/src/test/idl/output/interop.avpr     |   94 +
 lang/java/idl/src/test/idl/output/mr_events.avpr   |  125 +
 lang/java/idl/src/test/idl/output/namespaces.avpr  |   51 +
 .../java/idl/src/test/idl/output/nestedimport.avpr |   73 +
 .../idl/src/test/idl/output/reservedwords.avpr     |   35 +
 .../idl/src/test/idl/output/schema_syntax.avsc     |   36 +
 lang/java/idl/src/test/idl/output/simple.avpr      |  152 +
 lang/java/idl/src/test/idl/output/status.avsc      |    9 +
 lang/java/idl/src/test/idl/output/unicode.avpr     |   17 +
 lang/java/idl/src/test/idl/output/union.avpr       |   38 +
 lang/java/idl/src/test/idl/output/uuid.avpr        |   29 +
 .../test/idl/putOnClassPath/OnTheClasspath.avdl    |   24 +
 .../test/idl/putOnClassPath/OnTheClasspath.avpr    |   11 +
 .../test/idl/putOnClassPath/OnTheClasspath.avsc    |    6 +
 .../idl/putOnClassPath/folder/relativePath.avdl    |   22 +
 .../src/test/idl/putOnClassPath/nestedtypes.avdl   |   23 +
 .../java/org/apache/avro/idl/IdlReaderTest.java    |  260 +
 .../avro/idl/IdlSchemaFormatterFactoryTest.java    |   61 +
 .../java/org/apache/avro/idl/IdlUtilsTest.java     |  193 +
 .../test/java/org/apache/avro/idl/TestCycle.java   |   88 +
 .../java/org/apache/avro/idl/TestLogicalTypes.java |   96 +
 .../idl/TestReferenceAnnotationNotAllowed.java     |   42 +
 .../apache/avro/util/idl_utils_test_protocol.avdl  |   45 +
 .../apache/avro/util/idl_utils_test_schema.avdl    |   35 +
 lang/java/integration-test/codegen-test/pom.xml    |  120 +
 .../codegentest/AbstractSpecificRecordTest.java    |   78 +
 .../avro/codegentest/TestCustomConversion.java     |   75 +
 .../codegentest/TestLogicalTypeForStringType.java  |   46 +
 .../codegentest/TestLogicalTypesWithDefaults.java  |   55 +
 .../avro/codegentest/TestNestedLogicalTypes.java   |   84 +
 .../TestNestedRecordsWithDifferentNamespaces.java  |   34 +
 .../avro/codegentest/TestNullableLogicalTypes.java |   42 +
 .../src/test/resources/avro/custom_conversion.avsc |   14 +
 .../test/resources/avro/custom_conversion_idl.avdl |   27 +
 .../avro/custom_conversion_logical_types_enum.avsc |   20 +
 .../avro/logical_types_with_default_values.avsc    |   12 +
 .../resources/avro/nested_logical_types_array.avsc |   26 +
 .../resources/avro/nested_logical_types_map.avsc   |   26 +
 .../avro/nested_logical_types_record.avsc          |   23 +
 .../resources/avro/nested_logical_types_union.avsc |   23 +
 .../avro/nested_logical_types_union_fixed.avsc     |   21 +
 .../avro/nested_records_different_namespace.avsc   |   23 +
 .../resources/avro/nullable_logical_types.avsc     |   11 +
 .../avro/nullable_logical_types_array.avsc         |   16 +
 .../test/resources/avro/string_logical_type.avsc   |   20 +
 lang/java/integration-test/pom.xml                 |   85 +
 .../test-custom-conversions/pom.xml                |   50 +
 .../org/apache/avro/codegentest/CustomDecimal.java |   73 +
 .../avro/codegentest/CustomDecimalConversion.java  |   76 +
 .../avro/codegentest/CustomEnumConversion.java     |   52 +
 .../codegentest/CustomEnumLogicalTypeFactory.java  |   51 +
 .../apache/avro/codegentest/CustomEnumType.java    |   35 +
 .../apache/avro/codegentest/FixedSizeString.java   |   65 +
 .../codegentest/FixedSizeStringConversion.java     |   63 +
 .../avro/codegentest/FixedSizeStringFactory.java   |   38 +
 .../codegentest/FixedSizeStringLogicalType.java    |   65 +
 lang/java/interop-data-test/pom.xml                |  215 +
 lang/java/interop-data-test/src/it/check/pom.xml   |  174 +
 .../java/org/apache/avro/DataFileInteropTest.java  |  107 +
 .../java/interop-data-test/src/it/generate/pom.xml |  248 +
 lang/java/interop-data-test/src/it/settings.xml    |   51 +
 lang/java/ipc-jetty/pom.xml                        |  119 +
 .../java/org/apache/avro/ipc/jetty/HttpServer.java |  174 +
 .../org/apache/avro/ipc/jetty/StaticServlet.java   |   45 +
 .../org/apache/avro/ipc/jetty/StatsServer.java     |   58 +
 .../apache/avro/ipc/jetty/StatsPluginOverhead.java |   93 +
 .../org/apache/avro/ipc/jetty/TestBulkData.java    |  117 +
 .../apache/avro/ipc/jetty/TestProtocolHttp.java    |   94 +
 .../apache/avro/ipc/jetty/TestProtocolHttps.java   |   58 +
 .../avro/ipc/jetty/TestStatsPluginAndServlet.java  |  207 +
 lang/java/ipc-jetty/src/test/keystore              |  Bin 0 -> 1366 bytes
 .../resources/org/apache/avro/ipc/servercert.p12   |  Bin 0 -> 1686 bytes
 lang/java/ipc-jetty/src/test/truststore            |  Bin 0 -> 660 bytes
 lang/java/ipc-netty/pom.xml                        |  129 +
 .../org/apache/avro/ipc/netty/NettyServer.java     |  187 +
 .../apache/avro/ipc/netty/NettyTransceiver.java    |  601 ++
 .../apache/avro/ipc/netty/NettyTransportCodec.java |  192 +
 .../org/apache/avro/ipc/netty/TestNettyServer.java |  224 +
 .../netty/TestNettyServerConcurrentExecution.java  |  192 +
 .../ipc/netty/TestNettyServerWithCallbacks.java    |  685 ++
 .../ipc/netty/TestNettyServerWithCompression.java  |   45 +
 .../avro/ipc/netty/TestNettyServerWithSSL.java     |  119 +
 .../TestNettyTransceiverWhenFailsToConnect.java    |   56 +
 .../netty/TestNettyTransceiverWhenServerStops.java |  127 +
 .../apache/avro/ipc/netty/TestProtocolNetty.java   |   46 +
 lang/java/ipc-netty/src/test/keystore              |  Bin 0 -> 1366 bytes
 .../org/apache/avro/ipc/netty/servercert.p12       |  Bin 0 -> 1686 bytes
 .../org/apache/avro/ipc/netty/serverpass.txt       |    1 +
 lang/java/ipc-netty/src/test/truststore            |  Bin 0 -> 660 bytes
 lang/java/ipc/pom.xml                              |  197 +
 .../main/java/org/apache/avro/ipc/CallFuture.java  |  165 +
 .../main/java/org/apache/avro/ipc/Callback.java    |   40 +
 .../java/org/apache/avro/ipc/DatagramServer.java   |   86 +
 .../org/apache/avro/ipc/DatagramTransceiver.java   |   91 +
 .../java/org/apache/avro/ipc/HttpTransceiver.java  |  132 +
 .../ipc/src/main/java/org/apache/avro/ipc/Ipc.java |   68 +
 .../java/org/apache/avro/ipc/LocalTransceiver.java |   51 +
 .../main/java/org/apache/avro/ipc/RPCContext.java  |  226 +
 .../main/java/org/apache/avro/ipc/RPCPlugin.java   |   88 +
 .../main/java/org/apache/avro/ipc/Requestor.java   |  575 ++
 .../main/java/org/apache/avro/ipc/Responder.java   |  252 +
 .../java/org/apache/avro/ipc/ResponderServlet.java |   52 +
 .../java/org/apache/avro/ipc/SaslSocketServer.java |  126 +
 .../org/apache/avro/ipc/SaslSocketTransceiver.java |  426 ++
 .../src/main/java/org/apache/avro/ipc/Server.java  |   35 +
 .../java/org/apache/avro/ipc/SocketServer.java     |  151 +
 .../org/apache/avro/ipc/SocketTransceiver.java     |  131 +
 .../main/java/org/apache/avro/ipc/Transceiver.java |  117 +
 .../apache/avro/ipc/generic/GenericRequestor.java  |   70 +
 .../apache/avro/ipc/generic/GenericResponder.java  |   78 +
 .../src/main/java/org/apache/avro/ipc/package.html |   23 +
 .../apache/avro/ipc/reflect/ReflectRequestor.java  |   85 +
 .../apache/avro/ipc/reflect/ReflectResponder.java  |   72 +
 .../avro/ipc/specific/SpecificRequestor.java       |  188 +
 .../avro/ipc/specific/SpecificResponder.java       |  105 +
 .../org/apache/avro/ipc/stats/FloatHistogram.java  |   55 +
 .../java/org/apache/avro/ipc/stats/Histogram.java  |  270 +
 .../apache/avro/ipc/stats/IntegerHistogram.java    |   55 +
 .../org/apache/avro/ipc/stats/StatsPlugin.java     |  195 +
 .../org/apache/avro/ipc/stats/StatsServlet.java    |  244 +
 .../java/org/apache/avro/ipc/stats/Stopwatch.java  |   77 +
 .../java/org/apache/avro/ipc/stats/package.html    |   23 +
 .../org/apache/avro/ipc/stats/static/avro.css      |   21 +
 .../org/apache/avro/ipc/stats/static/avro.js       |  110 +
 .../org/apache/avro/ipc/stats/static/g.bar.js      |  386 ++
 .../avro/ipc/stats/static/jquery-1.6.3.min.js      |    4 +
 .../apache/avro/ipc/stats/static/jquery.tipsy.js   |  125 +
 .../apache/avro/ipc/stats/static/protovis-r3.2.js  |  304 +
 .../org/apache/avro/ipc/stats/static/tipsy.css     |   30 +
 .../org/apache/avro/ipc/stats/static/tipsy.js      |   92 +
 .../apache/avro/ipc/stats/templates/statsview.vm   |   98 +
 .../java/org/apache/avro/RPCMetaTestPlugin.java    |  192 +
 .../test/java/org/apache/avro/SimpleException.java |   31 +
 .../test/java/org/apache/avro/TestAnnotation.java  |   28 +
 .../src/test/java/org/apache/avro/TestCompare.java |  235 +
 .../java/org/apache/avro/TestDataFileSpecific.java |   73 +
 .../java/org/apache/avro/TestNamespaceReflect.java |   43 +
 .../org/apache/avro/TestNamespaceSpecific.java     |   91 +
 .../java/org/apache/avro/TestProtocolDatagram.java |   47 +
 .../java/org/apache/avro/TestProtocolGeneric.java  |  242 +
 .../org/apache/avro/TestProtocolGenericMeta.java   |   47 +
 .../java/org/apache/avro/TestProtocolParsing.java  |   95 +
 .../java/org/apache/avro/TestProtocolReflect.java  |  183 +
 .../org/apache/avro/TestProtocolReflectMeta.java   |   49 +
 .../java/org/apache/avro/TestProtocolSpecific.java |  369 ++
 .../org/apache/avro/TestProtocolSpecificMeta.java  |   47 +
 .../src/test/java/org/apache/avro/TestSchema.java  |  966 +++
 .../compiler/specific/TestSpecificCompiler.java    |  654 ++
 .../org/apache/avro/generic/TestBuilderCopy.java   |   51 +
 .../java/org/apache/avro/generic/TestDeepCopy.java |  121 +
 .../ipc/src/test/java/org/apache/avro/io/Perf.java | 1976 ++++++
 .../org/apache/avro/ipc/TestLocalTransceiver.java  |   61 +
 .../org/apache/avro/ipc/TestRpcPluginOrdering.java |   94 +
 .../org/apache/avro/ipc/TestSaslAnonymous.java     |   77 +
 .../org/apache/avro/ipc/TestSaslDigestMd5.java     |  169 +
 .../avro/ipc/specific/TestSpecificRequestor.java   |   73 +
 .../java/org/apache/avro/ipc/stats/FakeTicks.java  |   35 +
 .../org/apache/avro/ipc/stats/TestHistogram.java   |  143 +
 .../org/apache/avro/ipc/stats/TestStopwatch.java   |   86 +
 .../apache/avro/message/TestCustomSchemaStore.java |   84 +
 .../avro/specific/TestSpecificBuilderTree.java     |  329 +
 .../org/apache/avro/specific/TestSpecificData.java |  152 +
 .../avro/specific/TestSpecificDatumReader.java     |  103 +
 .../avro/specific/TestSpecificDatumWriter.java     |  212 +
 .../avro/specific/TestSpecificErrorBuilder.java    |   74 +
 .../avro/specific/TestSpecificRecordBuilder.java   |  234 +
 lang/java/ipc/src/test/keystore                    |  Bin 0 -> 1366 bytes
 .../resources/org/apache/avro/ipc/servercert.p12   |  Bin 0 -> 1686 bytes
 lang/java/ipc/src/test/truststore                  |  Bin 0 -> 660 bytes
 lang/java/mapred/pom.xml                           |  226 +
 .../avro/hadoop/file/HadoopCodecFactory.java       |   91 +
 .../avro/hadoop/file/SortedKeyValueFile.java       |  638 ++
 .../apache/avro/hadoop/io/AvroDatumConverter.java  |   39 +
 .../avro/hadoop/io/AvroDatumConverterFactory.java  |  365 ++
 .../apache/avro/hadoop/io/AvroDeserializer.java    |  141 +
 .../apache/avro/hadoop/io/AvroKeyComparator.java   |   67 +
 .../apache/avro/hadoop/io/AvroKeyDeserializer.java |   64 +
 .../org/apache/avro/hadoop/io/AvroKeyValue.java    |  158 +
 .../apache/avro/hadoop/io/AvroSequenceFile.java    |  742 +++
 .../apache/avro/hadoop/io/AvroSerialization.java   |  284 +
 .../org/apache/avro/hadoop/io/AvroSerializer.java  |  126 +
 .../avro/hadoop/io/AvroValueDeserializer.java      |   64 +
 .../hadoop/util/AvroCharSequenceComparator.java    |   91 +
 .../apache/avro/mapred/AvroAsTextInputFormat.java  |   68 +
 .../apache/avro/mapred/AvroAsTextRecordReader.java |  102 +
 .../java/org/apache/avro/mapred/AvroCollector.java |   28 +
 .../org/apache/avro/mapred/AvroInputFormat.java    |   72 +
 .../main/java/org/apache/avro/mapred/AvroJob.java  |  256 +
 .../main/java/org/apache/avro/mapred/AvroKey.java  |   32 +
 .../org/apache/avro/mapred/AvroKeyComparator.java  |   51 +
 .../java/org/apache/avro/mapred/AvroMapper.java    |   56 +
 .../org/apache/avro/mapred/AvroMultipleInputs.java |  222 +
 .../apache/avro/mapred/AvroMultipleOutputs.java    |  585 ++
 .../org/apache/avro/mapred/AvroOutputFormat.java   |  186 +
 .../org/apache/avro/mapred/AvroRecordReader.java   |   87 +
 .../java/org/apache/avro/mapred/AvroReducer.java   |   68 +
 .../org/apache/avro/mapred/AvroSerialization.java  |  144 +
 .../apache/avro/mapred/AvroTextOutputFormat.java   |  133 +
 .../apache/avro/mapred/AvroUtf8InputFormat.java    |  115 +
 .../java/org/apache/avro/mapred/AvroValue.java     |   32 +
 .../java/org/apache/avro/mapred/AvroWrapper.java   |   70 +
 .../apache/avro/mapred/DelegatingInputFormat.java  |  128 +
 .../org/apache/avro/mapred/DelegatingMapper.java   |   64 +
 .../main/java/org/apache/avro/mapred/FsInput.java  |   71 +
 .../org/apache/avro/mapred/HadoopCombiner.java     |   62 +
 .../java/org/apache/avro/mapred/HadoopMapper.java  |   63 +
 .../java/org/apache/avro/mapred/HadoopReducer.java |   60 +
 .../org/apache/avro/mapred/HadoopReducerBase.java  |   84 +
 .../java/org/apache/avro/mapred/MapCollector.java  |   52 +
 .../src/main/java/org/apache/avro/mapred/Pair.java |  638 ++
 .../avro/mapred/SequenceFileInputFormat.java       |   41 +
 .../org/apache/avro/mapred/SequenceFileReader.java |  222 +
 .../avro/mapred/SequenceFileRecordReader.java      |   33 +
 .../org/apache/avro/mapred/TaggedInputSplit.java   |  165 +
 .../main/java/org/apache/avro/mapred/package.html  |  123 +
 .../org/apache/avro/mapred/tether/TetherData.java  |   54 +
 .../avro/mapred/tether/TetherInputFormat.java      |   67 +
 .../org/apache/avro/mapred/tether/TetherJob.java   |  174 +
 .../avro/mapred/tether/TetherKeyComparator.java    |   56 +
 .../avro/mapred/tether/TetherKeySerialization.java |   93 +
 .../apache/avro/mapred/tether/TetherMapRunner.java |   89 +
 .../avro/mapred/tether/TetherOutputFormat.java     |   78 +
 .../avro/mapred/tether/TetherOutputService.java    |  124 +
 .../avro/mapred/tether/TetherPartitioner.java      |   60 +
 .../avro/mapred/tether/TetherRecordReader.java     |   93 +
 .../apache/avro/mapred/tether/TetherReducer.java   |   81 +
 .../apache/avro/mapred/tether/TetheredProcess.java |  224 +
 .../org/apache/avro/mapred/tether/package.html     |   32 +
 .../java/org/apache/avro/mapreduce/AvroJob.java    |  216 +
 .../apache/avro/mapreduce/AvroKeyInputFormat.java  |   56 +
 .../apache/avro/mapreduce/AvroKeyOutputFormat.java |  113 +
 .../apache/avro/mapreduce/AvroKeyRecordReader.java |   71 +
 .../apache/avro/mapreduce/AvroKeyRecordWriter.java |   97 +
 .../avro/mapreduce/AvroKeyValueInputFormat.java    |   66 +
 .../avro/mapreduce/AvroKeyValueOutputFormat.java   |   76 +
 .../avro/mapreduce/AvroKeyValueRecordReader.java   |   88 +
 .../avro/mapreduce/AvroKeyValueRecordWriter.java   |  146 +
 .../apache/avro/mapreduce/AvroMultipleOutputs.java |  572 ++
 .../avro/mapreduce/AvroOutputFormatBase.java       |  126 +
 .../avro/mapreduce/AvroRecordReaderBase.java       |  194 +
 .../mapreduce/AvroSequenceFileInputFormat.java     |  144 +
 .../mapreduce/AvroSequenceFileOutputFormat.java    |  119 +
 .../CombineAvroKeyValueFileInputFormat.java        |   65 +
 .../java/org/apache/avro/mapreduce/Syncable.java   |   33 +
 .../java/mapred/src/main/resources/META-INF/NOTICE |   32 +
 lang/java/mapred/src/test/avro/TextStats.avsc      |    9 +
 .../avro/hadoop/file/TestHadoopCodecFactory.java   |   68 +
 .../avro/hadoop/file/TestSortedKeyValueFile.java   |  303 +
 .../hadoop/io/TestAvroDatumConverterFactory.java   |  133 +
 .../avro/hadoop/io/TestAvroKeyDeserializer.java    |   69 +
 .../avro/hadoop/io/TestAvroSequenceFile.java       |  201 +
 .../avro/hadoop/io/TestAvroSerialization.java      |  166 +
 .../apache/avro/hadoop/io/TestAvroSerializer.java  |   67 +
 .../avro/hadoop/io/TestAvroValueDeserializer.java  |   70 +
 .../util/TestAvroCharSequenceComparator.java       |   90 +
 .../apache/avro/mapred/TestAvroInputFormat.java    |   84 +
 .../apache/avro/mapred/TestAvroMultipleInputs.java |  299 +
 .../avro/mapred/TestAvroMultipleOutputs.java       |  320 +
 .../apache/avro/mapred/TestAvroOutputFormat.java   |  135 +
 .../avro/mapred/TestAvroTextOutputFormat.java      |   89 +
 .../org/apache/avro/mapred/TestAvroTextSort.java   |   64 +
 .../org/apache/avro/mapred/TestAvroWrapper.java    |   32 +
 .../org/apache/avro/mapred/TestGenericJob.java     |  128 +
 .../test/java/org/apache/avro/mapred/TestPair.java |   43 +
 .../org/apache/avro/mapred/TestReflectJob.java     |  169 +
 .../apache/avro/mapred/TestSequenceFileReader.java |  234 +
 .../java/org/apache/avro/mapred/TestWeather.java   |  178 +
 .../java/org/apache/avro/mapred/TestWordCount.java |  146 +
 .../java/org/apache/avro/mapred/WordCountUtil.java |  174 +
 .../avro/mapred/tether/TestWordCountTether.java    |  129 +
 .../org/apache/avro/mapred/tether/TetherTask.java  |  240 +
 .../avro/mapred/tether/TetherTaskRunner.java       |  130 +
 .../org/apache/avro/mapred/tether/WordCount.avsc   |    6 +
 .../apache/avro/mapred/tether/WordCountTask.java   |   64 +
 .../java/org/apache/avro/mapreduce/AvroFiles.java  |   56 +
 .../avro/mapreduce/TestAvroKeyInputFormat.java     |   60 +
 .../avro/mapreduce/TestAvroKeyOutputFormat.java    |  160 +
 .../avro/mapreduce/TestAvroKeyRecordReader.java    |  127 +
 .../avro/mapreduce/TestAvroKeyRecordWriter.java    |  116 +
 .../mapreduce/TestAvroKeyValueRecordReader.java    |  138 +
 .../mapreduce/TestAvroKeyValueRecordWriter.java    |  207 +
 .../avro/mapreduce/TestAvroMultipleOutputs.java    |  397 ++
 .../mapreduce/TestAvroMultipleOutputsSyncable.java |  397 ++
 .../TestCombineAvroKeyValueFileInputFormat.java    |  110 +
 .../org/apache/avro/mapreduce/TestFsInput.java     |  126 +
 .../apache/avro/mapreduce/TestKeyValueInput.java   |  231 +
 .../avro/mapreduce/TestKeyValueWordCount.java      |  127 +
 .../org/apache/avro/mapreduce/TestWordCount.java   |  496 ++
 .../mapred/src/test/resources/log4j.properties     |   27 +
 .../mapreduce-test-input.avro/._SUCCESS.crc        |  Bin 0 -> 8 bytes
 .../.part-r-00000.avro.crc                         |  Bin 0 -> 12 bytes
 .../mapreduce/mapreduce-test-input.avro/_SUCCESS   |    0
 .../mapreduce-test-input.avro/part-r-00000.avro    |  Bin 0 -> 251 bytes
 .../apache/avro/mapreduce/mapreduce-test-input.txt |    6 +
 lang/java/maven-plugin/pom.xml                     |  117 +
 .../org/apache/avro/mojo/AbstractAvroMojo.java     |  449 ++
 .../main/java/org/apache/avro/mojo/IDLMojo.java    |  131 +
 .../java/org/apache/avro/mojo/IDLProtocolMojo.java |   31 +
 .../main/java/org/apache/avro/mojo/InduceMojo.java |  208 +
 .../java/org/apache/avro/mojo/ProtocolMojo.java    |   69 +
 .../main/java/org/apache/avro/mojo/SchemaMojo.java |  101 +
 .../META-INF/m2e/lifecycle-mapping-metadata.xml    |   38 +
 .../src/test/avro/AvdlClasspathImport.avdl         |   26 +
 lang/java/maven-plugin/src/test/avro/User.avdl     |   32 +
 lang/java/maven-plugin/src/test/avro/User.avpr     |   41 +
 lang/java/maven-plugin/src/test/avro/User.avsc     |   45 +
 .../avro/directImport/PrivacyDirectImport.avsc     |    7 +
 .../maven-plugin/src/test/avro/extends/Custom.avsc |   18 +
 .../src/test/avro/imports/PrivacyImport.avsc       |    7 +
 .../avro/multipleSchemas/ApplicationEvent.avsc     |   28 +
 .../test/avro/multipleSchemas/DocumentInfo.avsc    |   19 +
 .../src/test/avro/multipleSchemas/MyResponse.avsc  |   14 +
 .../src/test/avro/multipleSchemas/README.md        |    8 +
 .../org/apache/avro/custom/CustomRecordBase.java   |   23 +
 .../test/java/org/apache/avro/entities/Person.java |   23 +
 .../org/apache/avro/mojo/AbstractAvroMojoTest.java |   59 +
 .../java/org/apache/avro/mojo/TestIDLMojo.java     |  127 +
 .../java/org/apache/avro/mojo/TestInduceMojo.java  |  102 +
 .../test/java/org/apache/avro/mojo/TestLog.java    |  128 +
 .../org/apache/avro/mojo/TestProtocolMojo.java     |   70 +
 .../java/org/apache/avro/mojo/TestSchemaMojo.java  |  118 +
 .../java/org/apache/avro/protocols/Remote.java     |   23 +
 .../src/test/resources/templates/enum.vm           |   19 +
 .../src/test/resources/templates/protocol.vm       |   19 +
 .../src/test/resources/templates/record.vm         |   21 +
 .../unit/idl/pom-incremental-compilation.xml       |   67 +
 .../unit/idl/pom-injecting-velocity-tools.xml      |   73 +
 .../src/test/resources/unit/idl/pom-javacc.xml     |   68 +
 .../src/test/resources/unit/idl/pom.xml            |   67 +
 .../test/resources/unit/protocol/induce-pom.xml    |   55 +
 .../unit/protocol/pom-injecting-velocity-tools.xml |   73 +
 .../src/test/resources/unit/protocol/pom.xml       |   66 +
 .../src/test/resources/unit/schema/induce-pom.xml  |   55 +
 .../resources/unit/schema/pom-customExtends.xml    |   60 +
 .../unit/schema/pom-injecting-velocity-tools.xml   |   70 +
 .../resources/unit/schema/pom-multiple-schema.xml  |   66 +
 .../resources/unit/schema/pom-nonexistent-file.xml |   69 +
 .../unit/schema/pom-nonexistent-second-file.xml    |   70 +
 .../src/test/resources/unit/schema/pom.xml         |   70 +
 lang/java/perf/README.md                           |   47 +
 lang/java/perf/pom.xml                             |   85 +
 .../src/main/java/org/apache/avro/perf/Perf.java   |   88 +
 .../org/apache/avro/perf/test/BasicArrayState.java |   42 +
 .../org/apache/avro/perf/test/BasicRecord.java     |   43 +
 .../java/org/apache/avro/perf/test/BasicState.java |   95 +
 .../java/org/apache/avro/perf/test/BigRecord.java  |   54 +
 .../org/apache/avro/perf/test/basic/ArrayTest.java |  147 +
 .../apache/avro/perf/test/basic/BooleanTest.java   |  120 +
 .../org/apache/avro/perf/test/basic/BytesTest.java |  125 +
 .../apache/avro/perf/test/basic/DoubleTest.java    |  120 +
 .../avro/perf/test/basic/ExtendedEnumTest.java     |  154 +
 .../org/apache/avro/perf/test/basic/FloatTest.java |  120 +
 .../org/apache/avro/perf/test/basic/IntTest.java   |  142 +
 .../org/apache/avro/perf/test/basic/LongTest.java  |  139 +
 .../org/apache/avro/perf/test/basic/MapTest.java   |  141 +
 .../apache/avro/perf/test/basic/SmallLongTest.java |  142 +
 .../apache/avro/perf/test/basic/StringTest.java    |  138 +
 .../avro/perf/test/basic/UnchangedUnionTest.java   |  154 +
 .../perf/test/generic/GenericNestedFakeTest.java   |  156 +
 .../avro/perf/test/generic/GenericNestedTest.java  |  175 +
 .../avro/perf/test/generic/GenericStringTest.java  |  146 +
 .../apache/avro/perf/test/generic/GenericTest.java |  147 +
 .../perf/test/generic/GenericWithDefaultTest.java  |  164 +
 .../test/generic/GenericWithOutOfOrderTest.java    |  112 +
 .../test/generic/GenericWithPromotionTest.java     |  112 +
 .../apache/avro/perf/test/record/RecordTest.java   |  107 +
 .../perf/test/record/RecordWithDefaultTest.java    |  127 +
 .../perf/test/record/RecordWithOutOfOrderTest.java |  119 +
 .../perf/test/record/RecordWithPromotionTest.java  |  119 +
 .../avro/perf/test/record/ResolvingRecordTest.java |  107 +
 .../perf/test/record/ValidatingRecordTest.java     |  138 +
 .../perf/test/reflect/ReflectBigRecordTest.java    |  131 +
 .../perf/test/reflect/ReflectDoubleArrayTest.java  |  144 +
 .../perf/test/reflect/ReflectFloatArrayTest.java   |  144 +
 .../perf/test/reflect/ReflectIntArrayTest.java     |  144 +
 .../reflect/ReflectLargeFloatArrayBlockedTest.java |  145 +
 .../test/reflect/ReflectLargeFloatArrayTest.java   |  145 +
 .../perf/test/reflect/ReflectLongArrayTest.java    |  143 +
 .../test/reflect/ReflectNestedFloatArrayTest.java  |  148 +
 .../test/reflect/ReflectNestedObjectArrayTest.java |  149 +
 .../avro/perf/test/reflect/ReflectRecordTest.java  |  131 +
 lang/java/pom.xml                                  |  654 ++
 lang/java/protobuf/pom.xml                         |  118 +
 .../org/apache/avro/protobuf/ProtoConversions.java |  175 +
 .../org/apache/avro/protobuf/ProtobufData.java     |  401 ++
 .../apache/avro/protobuf/ProtobufDatumReader.java  |   83 +
 .../apache/avro/protobuf/ProtobufDatumWriter.java  |   68 +
 .../java/org/apache/avro/protobuf/package.html     |   42 +
 .../apache/avro/protobuf/TestProtoConversions.java |  187 +
 .../org/apache/avro/protobuf/TestProtobuf.java     |  149 +
 .../org/apache/avro/protobuf/multiplefiles/A.java  |  115 +
 .../apache/avro/protobuf/multiplefiles/Foo.java    | 3348 ++++++++++
 .../avro/protobuf/multiplefiles/FooOrBuilder.java  |  392 ++
 .../org/apache/avro/protobuf/multiplefiles/M.java  |  436 ++
 .../avro/protobuf/multiplefiles/MOrBuilder.java    |   10 +
 .../protobuf/multiplefiles/TestMultipleFiles.java  |   67 +
 .../java/org/apache/avro/protobuf/noopt/Test.java  | 4341 +++++++++++++
 lang/java/protobuf/src/test/protobuf/test.proto    |   66 +
 .../src/test/protobuf/test_multiple_files.proto    |   68 +
 lang/java/suppressions.xml                         |   26 +
 lang/java/thrift/README.md                         |   12 +
 lang/java/thrift/pom.xml                           |  138 +
 .../java/org/apache/avro/thrift/ThriftData.java    |  272 +
 .../org/apache/avro/thrift/ThriftDatumReader.java  |   96 +
 .../org/apache/avro/thrift/ThriftDatumWriter.java  |   58 +
 .../main/java/org/apache/avro/thrift/package.html  |   46 +
 .../java/org/apache/avro/thrift/TestThrift.java    |   96 +
 .../test/java/org/apache/avro/thrift/test/E.java   |   44 +
 .../java/org/apache/avro/thrift/test/Error.java    |  383 ++
 .../test/java/org/apache/avro/thrift/test/Foo.java | 2169 +++++++
 .../java/org/apache/avro/thrift/test/FooOrBar.java |  352 +
 .../java/org/apache/avro/thrift/test/Nested.java   |  380 ++
 .../java/org/apache/avro/thrift/test/Test.java     | 2143 ++++++
 lang/java/thrift/src/test/thrift/test.thrift       |   68 +
 lang/java/tools/pom.xml                            |  335 +
 .../apache/avro/tool/BinaryFragmentToJsonTool.java |   99 +
 .../main/java/org/apache/avro/tool/CatTool.java    |  205 +
 .../main/java/org/apache/avro/tool/ConcatTool.java |  171 +
 .../org/apache/avro/tool/CreateRandomFileTool.java |   97 +
 .../org/apache/avro/tool/DataFileGetMetaTool.java  |   90 +
 .../apache/avro/tool/DataFileGetSchemaTool.java    |   52 +
 .../org/apache/avro/tool/DataFileReadTool.java     |  147 +
 .../org/apache/avro/tool/DataFileRepairTool.java   |  281 +
 .../org/apache/avro/tool/DataFileWriteTool.java    |  102 +
 .../java/org/apache/avro/tool/FromTextTool.java    |  118 +
 .../org/apache/avro/tool/IdlToSchemataTool.java    |  115 +
 .../main/java/org/apache/avro/tool/IdlTool.java    |  113 +
 .../org/apache/avro/tool/InduceSchemaTool.java     |   75 +
 .../apache/avro/tool/JsonToBinaryFragmentTool.java |   99 +
 .../src/main/java/org/apache/avro/tool/Main.java   |  105 +
 .../java/org/apache/avro/tool/RecodecTool.java     |  102 +
 .../java/org/apache/avro/tool/RecordCountTool.java |   89 +
 .../java/org/apache/avro/tool/RpcProtocolTool.java |  102 +
 .../java/org/apache/avro/tool/RpcReceiveTool.java  |  157 +
 .../java/org/apache/avro/tool/RpcSendTool.java     |  105 +
 .../apache/avro/tool/SchemaFingerprintTool.java    |   87 +
 .../apache/avro/tool/SchemaNormalizationTool.java  |   72 +
 .../org/apache/avro/tool/SpecificCompilerTool.java |  300 +
 .../main/java/org/apache/avro/tool/TetherTool.java |  156 +
 .../main/java/org/apache/avro/tool/ToTextTool.java |   85 +
 .../java/org/apache/avro/tool/ToTrevniTool.java    |   75 +
 .../src/main/java/org/apache/avro/tool/Tool.java   |   51 +
 .../apache/avro/tool/TrevniCreateRandomTool.java   |   65 +
 .../org/apache/avro/tool/TrevniMetadataTool.java   |  112 +
 .../org/apache/avro/tool/TrevniToJsonTool.java     |  187 +
 .../main/java/org/apache/avro/tool/TrevniUtil.java |   83 +
 .../src/main/java/org/apache/avro/tool/Util.java   |  314 +
 .../main/java/org/apache/avro/tool/package.html    |   23 +
 lang/java/tools/src/main/javadoc/META-INF/LICENSE  |  202 +
 lang/java/tools/src/main/javadoc/META-INF/NOTICE   |    5 +
 .../java/tools/src/main/resources/META-INF/LICENSE | 1097 ++++
 .../tools/src/main/resources/META-INF/LICENSE.txt  |  202 +
 lang/java/tools/src/main/resources/META-INF/NOTICE |  403 ++
 .../tools/src/main/resources/META-INF/NOTICE.txt   |    5 +
 .../src/main/resources/META-INF/cddl-1.0.text      |  289 +
 .../src/main/resources/META-INF/cddl-1.1.text      |  327 +
 .../tools/src/main/resources/META-INF/mpl-2.0.text |  329 +
 .../java/tools/src/main/resources/log4j.properties |   22 +
 .../input/addextraoptionalgetterstest.avsc         |    6 +
 .../tools/src/test/compiler/input/fieldtest.avsc   |   10 +
 .../src/test/compiler/input/nosetterstest.avsc     |    6 +
 .../input/nullsafeannotationsfieldstest.avsc       |    8 +
 .../input/optionalgettersallfieldstest.avsc        |    8 +
 .../input/optionalgettersnullablefieldstest.avsc   |    9 +
 .../java/tools/src/test/compiler/input/player.avsc |    8 +
 .../tools/src/test/compiler/input/position.avsc    |    3 +
 lang/java/tools/src/test/compiler/input/proto.avpr |   12 +
 .../src/test/compiler/output-string/Position.java  |   13 +
 .../avro/examples/baseball/FieldTest.java          |  672 ++
 .../baseball/NullSafeAnnotationsFieldsTest.java    |  594 ++
 .../avro/examples/baseball/Player.java             |  600 ++
 .../avro/examples/baseball/Position.java           |   15 +
 .../avro/examples/baseball/Proto.java              |   27 +
 .../output/AddExtraOptionalGettersTest.java        |  441 ++
 .../src/test/compiler/output/NoSettersTest.java    |  399 ++
 .../output/OptionalGettersAllFieldsTest.java       |  504 ++
 .../output/OptionalGettersNullableFieldsTest.java  |  578 ++
 .../tools/src/test/compiler/output/Player.java     |  600 ++
 .../tools/src/test/compiler/output/Position.java   |   15 +
 lang/java/tools/src/test/idl/protocol.avdl         |   56 +
 lang/java/tools/src/test/idl/protocol.avpr         |   90 +
 lang/java/tools/src/test/idl/schema.avdl           |   36 +
 lang/java/tools/src/test/idl/schema.avsc           |   36 +
 .../java/org/apache/avro/tool/TestCatTool.java     |  287 +
 .../java/org/apache/avro/tool/TestConcatTool.java  |  232 +
 .../apache/avro/tool/TestCreateRandomFileTool.java |  151 +
 .../apache/avro/tool/TestDataFileRepairTool.java   |  191 +
 .../org/apache/avro/tool/TestDataFileTools.java    |  297 +
 .../apache/avro/tool/TestIdlToSchemataTool.java    |   90 +
 .../java/org/apache/avro/tool/TestIdlTool.java     |  113 +
 .../tool/TestJsonToFromBinaryFragmentTools.java    |  125 +
 .../test/java/org/apache/avro/tool/TestMain.java   |   54 +
 .../java/org/apache/avro/tool/TestRecodecTool.java |  101 +
 .../org/apache/avro/tool/TestRecordCountTool.java  |  102 +
 .../org/apache/avro/tool/TestRpcProtocolTool.java  |   68 +
 .../avro/tool/TestRpcReceiveAndSendTools.java      |   52 +
 .../apache/avro/tool/TestSpecificCompilerTool.java |  264 +
 .../java/org/apache/avro/tool/TestTetherTool.java  |  108 +
 .../org/apache/avro/tool/TestTextFileTools.java    |  149 +
 .../org/apache/avro/tool/TestToTrevniTool.java     |   74 +
 .../test/java/org/apache/avro/tool/TestUtil.java   |   56 +
 .../java/tools/src/test/resources/META-INF/LICENSE |  202 +
 lang/java/tools/src/test/resources/META-INF/NOTICE |    5 +
 lang/java/trevni/avro/pom.xml                      |  109 +
 .../org/apache/trevni/avro/AvroColumnReader.java   |  286 +
 .../org/apache/trevni/avro/AvroColumnWriter.java   |  178 +
 .../org/apache/trevni/avro/AvroColumnator.java     |  182 +
 .../apache/trevni/avro/AvroTrevniInputFormat.java  |  118 +
 .../apache/trevni/avro/AvroTrevniOutputFormat.java |  112 +
 .../java/org/apache/trevni/avro/HadoopInput.java   |   54 +
 .../avro/mapreduce/AvroTrevniKeyInputFormat.java   |   58 +
 .../avro/mapreduce/AvroTrevniKeyOutputFormat.java  |   60 +
 .../avro/mapreduce/AvroTrevniKeyRecordReader.java  |   57 +
 .../avro/mapreduce/AvroTrevniKeyRecordWriter.java  |   61 +
 .../mapreduce/AvroTrevniKeyValueInputFormat.java   |   65 +
 .../mapreduce/AvroTrevniKeyValueOutputFormat.java  |   72 +
 .../mapreduce/AvroTrevniKeyValueRecordReader.java  |   69 +
 .../mapreduce/AvroTrevniKeyValueRecordWriter.java  |  103 +
 .../avro/mapreduce/AvroTrevniRecordReaderBase.java |  107 +
 .../avro/mapreduce/AvroTrevniRecordWriterBase.java |  136 +
 .../main/java/org/apache/trevni/avro/package.html  |   38 +
 .../trevni/avro/src/test/cases/dremel/input.avsc   |   78 +
 .../trevni/avro/src/test/cases/dremel/input.json   |   73 +
 .../avro/src/test/cases/dremel/sub1/sub.avsc       |   41 +
 .../avro/src/test/cases/dremel/sub1/sub.json       |   37 +
 .../trevni/avro/src/test/cases/enum/input.avsc     |   17 +
 .../trevni/avro/src/test/cases/enum/input.json     |    4 +
 .../java/org/apache/trevni/avro/TestCases.java     |   91 +
 .../org/apache/trevni/avro/TestEvolvedSchema.java  |  112 +
 .../apache/trevni/avro/TestMetadataFiltering.java  |   52 +
 .../java/org/apache/trevni/avro/TestShredder.java  |  218 +
 .../java/org/apache/trevni/avro/TestWordCount.java |  134 +
 .../java/org/apache/trevni/avro/WordCountUtil.java |  115 +
 .../avro/mapreduce/TestKeyValueWordCount.java      |  161 +
 .../trevni/avro/mapreduce/TestKeyWordCount.java    |  172 +
 lang/java/trevni/core/pom.xml                      |   66 +
 .../org/apache/trevni/ArrayColumnOutputBuffer.java |   83 +
 .../main/java/org/apache/trevni/BZip2Codec.java    |   70 +
 .../java/org/apache/trevni/BlockDescriptor.java    |   50 +
 .../src/main/java/org/apache/trevni/Checksum.java  |   41 +
 .../src/main/java/org/apache/trevni/Codec.java     |   52 +
 .../java/org/apache/trevni/ColumnDescriptor.java   |  100 +
 .../java/org/apache/trevni/ColumnFileMetaData.java |   31 +
 .../java/org/apache/trevni/ColumnFileReader.java   |  155 +
 .../java/org/apache/trevni/ColumnFileWriter.java   |  180 +
 .../java/org/apache/trevni/ColumnMetaData.java     |  138 +
 .../java/org/apache/trevni/ColumnOutputBuffer.java |  122 +
 .../main/java/org/apache/trevni/ColumnValues.java  |  156 +
 .../main/java/org/apache/trevni/Crc32Checksum.java |   44 +
 .../main/java/org/apache/trevni/DeflateCodec.java  |   74 +
 .../src/main/java/org/apache/trevni/Input.java     |   30 +
 .../main/java/org/apache/trevni/InputBuffer.java   |  393 ++
 .../main/java/org/apache/trevni/InputBytes.java    |   51 +
 .../src/main/java/org/apache/trevni/InputFile.java |   51 +
 .../src/main/java/org/apache/trevni/MetaData.java  |  146 +
 .../main/java/org/apache/trevni/NullChecksum.java  |   35 +
 .../src/main/java/org/apache/trevni/NullCodec.java |   36 +
 .../main/java/org/apache/trevni/OutputBuffer.java  |  331 +
 .../main/java/org/apache/trevni/SnappyCodec.java   |   46 +
 .../org/apache/trevni/TrevniRuntimeException.java  |   34 +
 .../src/main/java/org/apache/trevni/ValueType.java |   40 +
 .../src/main/java/org/apache/trevni/package.html   |   23 +
 lang/java/trevni/core/src/main/java/overview.html  |   88 +
 .../test/java/org/apache/trevni/TestAllCodecs.java |  111 +
 .../java/org/apache/trevni/TestColumnFile.java     |  253 +
 .../test/java/org/apache/trevni/TestIOBuffers.java |  323 +
 .../java/org/apache/trevni/TestInputBytes.java     |   50 +
 .../src/test/java/org/apache/trevni/TestUtil.java  |  110 +
 lang/java/trevni/doc/apt/spec.apt                  |  471 ++
 lang/java/trevni/doc/pom.xml                       |   55 +
 lang/java/trevni/doc/resources/css/site.css        |   31 +
 lang/java/trevni/doc/site.xml                      |   29 +
 lang/java/trevni/pom.xml                           |   64 +
 lang/js/.gitignore                                 |    3 +
 lang/js/LICENSE                                    |  202 +
 lang/js/NOTICE                                     |    5 +
 lang/js/README.md                                  |  144 +
 lang/js/build.sh                                   |   51 +
 lang/js/doc/API.md                                 |  955 +++
 lang/js/doc/Advanced-usage.md                      |  483 ++
 lang/js/doc/Home.md                                |  191 +
 lang/js/etc/browser/avro.js                        |   92 +
 lang/js/etc/browser/crypto.js                      |   36 +
 lang/js/etc/deprecated/Gruntfile.js                |   57 +
 lang/js/etc/deprecated/README                      |   20 +
 lang/js/etc/deprecated/test_validator.js           |  525 ++
 lang/js/etc/deprecated/validator.js                |  451 ++
 lang/js/lib/files.js                               |  676 ++
 lang/js/lib/index.js                               |   48 +
 lang/js/lib/protocols.js                           | 1284 ++++
 lang/js/lib/schemas.js                             | 2223 +++++++
 lang/js/lib/utils.js                               |  659 ++
 lang/js/package-lock.json                          | 2435 +++++++
 lang/js/package.json                               |   59 +
 lang/js/test/dat/Id.avsc                           |    6 +
 lang/js/test/dat/Person.avsc                       |   20 +
 lang/js/test/dat/person-10.avro                    |  Bin 0 -> 510 bytes
 lang/js/test/dat/person-10.avro.raw                |  Bin 0 -> 192 bytes
 lang/js/test/dat/person-10.no-codec.avro           |  Bin 0 -> 495 bytes
 lang/js/test/interop_data_generate.js              |   66 +
 lang/js/test/interop_data_test.js                  |   60 +
 lang/js/test/mocha.opts                            |    2 +
 lang/js/test/test_files.js                         |  604 ++
 lang/js/test/test_protocols.js                     | 1392 ++++
 lang/js/test/test_schemas.js                       | 2637 ++++++++
 lang/js/test/test_utils.js                         |  397 ++
 lang/perl/.gitignore                               |   11 +
 lang/perl/.shipit                                  |    2 +
 lang/perl/Changes                                  |   35 +
 lang/perl/LICENSE                                  |  203 +
 lang/perl/MANIFEST                                 |   50 +
 lang/perl/MANIFEST.SKIP                            |   34 +
 lang/perl/Makefile.PL                              |   70 +
 lang/perl/NOTICE                                   |   11 +
 lang/perl/README                                   |   30 +
 lang/perl/bin/avro-to-json                         |   37 +
 lang/perl/build.sh                                 |   82 +
 lang/perl/lib/Avro.pm                              |   67 +
 lang/perl/lib/Avro/BinaryDecoder.pm                |  393 ++
 lang/perl/lib/Avro/BinaryEncoder.pm                |  334 +
 lang/perl/lib/Avro/DataFile.pm                     |   51 +
 lang/perl/lib/Avro/DataFileReader.pm               |  311 +
 lang/perl/lib/Avro/DataFileWriter.pm               |  228 +
 lang/perl/lib/Avro/Protocol.pm                     |  116 +
 lang/perl/lib/Avro/Protocol/Message.pm             |   65 +
 lang/perl/lib/Avro/Schema.pm                       |  850 +++
 lang/perl/share/interop-data-generate              |   77 +
 lang/perl/t/00_compile.t                           |   23 +
 lang/perl/t/01_names.t                             |  167 +
 lang/perl/t/01_schema.t                            |  504 ++
 lang/perl/t/02_bin_encode.t                        |  237 +
 lang/perl/t/03_bin_decode.t                        |  258 +
 lang/perl/t/04_datafile.t                          |  241 +
 lang/perl/t/05_protocol.t                          |   76 +
 lang/perl/xt/interop.t                             |   52 +
 lang/perl/xt/pod.t                                 |   22 +
 lang/perl/xt/schema.t                              |   40 +
 lang/php/.gitignore                                |    3 +
 lang/php/LICENSE                                   |  203 +
 lang/php/NOTICE                                    |    6 +
 lang/php/README.md                                 |   53 +
 lang/php/build.sh                                  |   84 +
 lang/php/examples/write_read.php                   |  102 +
 lang/php/lib/Avro.php                              |   94 +
 lang/php/lib/AvroDebug.php                         |  231 +
 lang/php/lib/AvroException.php                     |   29 +
 lang/php/lib/AvroGMP.php                           |  234 +
 lang/php/lib/AvroIO.php                            |  130 +
 lang/php/lib/AvroNotImplementedException.php       |   29 +
 lang/php/lib/AvroUtil.php                          |   54 +
 lang/php/lib/DataFile/AvroDataIO.php               |  208 +
 lang/php/lib/DataFile/AvroDataIOException.php      |   31 +
 lang/php/lib/DataFile/AvroDataIOReader.php         |  249 +
 lang/php/lib/DataFile/AvroDataIOWriter.php         |  241 +
 lang/php/lib/Datum/AvroIOBinaryDecoder.php         |  317 +
 lang/php/lib/Datum/AvroIOBinaryEncoder.php         |  179 +
 lang/php/lib/Datum/AvroIODatumReader.php           |  485 ++
 lang/php/lib/Datum/AvroIODatumWriter.php           |  189 +
 lang/php/lib/Datum/AvroIOSchemaMatchException.php  |   48 +
 lang/php/lib/Datum/AvroIOTypeException.php         |   45 +
 lang/php/lib/IO/AvroFile.php                       |  197 +
 lang/php/lib/IO/AvroIOException.php                |   31 +
 lang/php/lib/IO/AvroStringIO.php                   |  252 +
 lang/php/lib/Protocol/AvroProtocol.php             |   67 +
 lang/php/lib/Protocol/AvroProtocolMessage.php      |   61 +
 .../lib/Protocol/AvroProtocolParseException.php    |   27 +
 lang/php/lib/Schema/AvroArraySchema.php            |   88 +
 lang/php/lib/Schema/AvroEnumSchema.php             |  119 +
 lang/php/lib/Schema/AvroField.php                  |  208 +
 lang/php/lib/Schema/AvroFixedSchema.php            |   70 +
 lang/php/lib/Schema/AvroMapSchema.php              |   90 +
 lang/php/lib/Schema/AvroName.php                   |  168 +
 lang/php/lib/Schema/AvroNamedSchema.php            |  109 +
 lang/php/lib/Schema/AvroNamedSchemata.php          |  103 +
 lang/php/lib/Schema/AvroPrimitiveSchema.php        |   54 +
 lang/php/lib/Schema/AvroRecordSchema.php           |  194 +
 lang/php/lib/Schema/AvroSchema.php                 |  581 ++
 lang/php/lib/Schema/AvroSchemaParseException.php   |   31 +
 lang/php/lib/Schema/AvroUnionSchema.php            |  123 +
 lang/php/lib/autoload.php                          |   61 +
 lang/php/monorepo.json                             |   16 +
 lang/php/phpunit.xml                               |   44 +
 lang/php/test/DataFileTest.php                     |  366 ++
 lang/php/test/DatumIOTest.php                      |  182 +
 lang/php/test/FloatIntEncodingTest.php             |  294 +
 lang/php/test/IODatumReaderTest.php                |   93 +
 lang/php/test/InterOpTest.php                      |   81 +
 lang/php/test/LongEncodingTest.php                 |  600 ++
 lang/php/test/NameTest.php                         |  116 +
 lang/php/test/ProtocolFileTest.php                 |  356 +
 lang/php/test/SchemaTest.php                       |  603 ++
 lang/php/test/StringIOTest.php                     |   93 +
 lang/php/test/generate_interop_data.php            |   60 +
 lang/php/test/test_helper.php                      |   35 +
 lang/py/.gitignore                                 |   15 +
 lang/py/MANIFEST.in                                |   18 +
 lang/py/README.md                                  |   18 +
 lang/py/avro/LICENSE                               |  203 +
 lang/py/avro/NOTICE                                |    6 +
 lang/py/avro/__init__.py                           |   34 +
 lang/py/avro/__main__.py                           |  279 +
 lang/py/avro/codecs.py                             |  201 +
 lang/py/avro/compatibility.py                      |  395 ++
 lang/py/avro/constants.py                          |   59 +
 lang/py/avro/datafile.py                           |  422 ++
 lang/py/avro/errors.py                             |  126 +
 lang/py/avro/io.py                                 | 1185 ++++
 lang/py/avro/ipc.py                                |  498 ++
 lang/py/avro/name.py                               |  175 +
 lang/py/avro/protocol.py                           |  287 +
 lang/py/avro/py.typed                              |    0
 lang/py/avro/schema.py                             | 1342 ++++
 lang/py/avro/test/__init__.py                      |   18 +
 lang/py/avro/test/gen_interop_data.py              |  103 +
 lang/py/avro/test/mock_tether_parent.py            |   94 +
 lang/py/avro/test/sample_http_client.py            |   81 +
 lang/py/avro/test/sample_http_server.py            |   80 +
 lang/py/avro/test/test_bench.py                    |  129 +
 lang/py/avro/test/test_compatibility.py            | 1073 +++
 lang/py/avro/test/test_datafile.py                 |  177 +
 lang/py/avro/test/test_datafile_interop.py         |   55 +
 lang/py/avro/test/test_init.py                     |   32 +
 lang/py/avro/test/test_io.py                       |  684 ++
 lang/py/avro/test/test_ipc.py                      |   43 +
 lang/py/avro/test/test_name.py                     |  327 +
 lang/py/avro/test/test_protocol.py                 |  476 ++
 lang/py/avro/test/test_schema.py                   | 1467 +++++
 lang/py/avro/test/test_script.py                   |  231 +
 lang/py/avro/test/test_tether_task.py              |  115 +
 lang/py/avro/test/test_tether_task_runner.py       |  186 +
 lang/py/avro/test/test_tether_word_count.py        |  180 +
 lang/py/avro/test/word_count_task.py               |   95 +
 lang/py/avro/tether/__init__.py                    |   39 +
 lang/py/avro/tether/tether_task.py                 |  449 ++
 lang/py/avro/tether/tether_task_runner.py          |  236 +
 lang/py/avro/tether/util.py                        |   29 +
 lang/py/avro/timezones.py                          |   50 +
 lang/py/avro/tool.py                               |  164 +
 lang/py/avro/utils.py                              |   40 +
 lang/py/build.sh                                   |  110 +
 lang/py/docs/Makefile                              |   35 +
 lang/py/docs/make.bat                              |   50 +
 lang/py/docs/source/_static/.gitignore             |    0
 lang/py/docs/source/automodule.rst                 |   54 +
 lang/py/docs/source/conf.py                        |   47 +
 lang/py/docs/source/index.rst                      |   31 +
 lang/py/docs/source/intro.rst                      |   29 +
 lang/py/mypy.ini                                   |   27 +
 lang/py/pyproject.toml                             |   36 +
 lang/py/scripts/avro                               |   27 +
 lang/py/setup.cfg                                  |   87 +
 lang/py/setup.py                                   |  133 +
 lang/py/tox.ini                                    |   97 +
 lang/ruby/.gitignore                               |    9 +
 lang/ruby/.rubocop.yml                             |   87 +
 lang/ruby/Gemfile                                  |   39 +
 lang/ruby/LICENSE                                  |  203 +
 lang/ruby/Manifest                                 |   35 +
 lang/ruby/NOTICE                                   |    6 +
 lang/ruby/Rakefile                                 |   55 +
 lang/ruby/avro.gemspec                             |   43 +
 lang/ruby/build.sh                                 |   65 +
 lang/ruby/interop/test_interop.rb                  |   52 +
 lang/ruby/lib/avro.rb                              |   66 +
 lang/ruby/lib/avro/data_file.rb                    |  407 ++
 lang/ruby/lib/avro/io.rb                           |  607 ++
 lang/ruby/lib/avro/ipc.rb                          |  555 ++
 lang/ruby/lib/avro/logical_types.rb                |  295 +
 lang/ruby/lib/avro/protocol.rb                     |  166 +
 lang/ruby/lib/avro/schema.rb                       |  665 ++
 lang/ruby/lib/avro/schema_compatibility.rb         |  181 +
 lang/ruby/lib/avro/schema_normalization.rb         |   84 +
 lang/ruby/lib/avro/schema_validator.rb             |  248 +
 lang/ruby/test/case_finder.rb                      |   93 +
 lang/ruby/test/random_data.rb                      |  113 +
 lang/ruby/test/sample_ipc_client.rb                |   86 +
 lang/ruby/test/sample_ipc_http_client.rb           |   85 +
 lang/ruby/test/sample_ipc_http_server.rb           |   80 +
 lang/ruby/test/sample_ipc_server.rb                |   93 +
 lang/ruby/test/test_datafile.rb                    |  228 +
 lang/ruby/test/test_fingerprints.rb                |   57 +
 lang/ruby/test/test_help.rb                        |   24 +
 lang/ruby/test/test_io.rb                          |  649 ++
 lang/ruby/test/test_logical_types.rb               |  393 ++
 lang/ruby/test/test_protocol.rb                    |  233 +
 lang/ruby/test/test_schema.rb                      |  890 +++
 lang/ruby/test/test_schema_compatibility.rb        |  651 ++
 lang/ruby/test/test_schema_normalization.rb        |  173 +
 lang/ruby/test/test_schema_validator.rb            |  575 ++
 lang/ruby/test/test_socket_transport.rb            |   41 +
 lang/ruby/test/tool.rb                             |  144 +
 lang/rust/.activate.sh                             |   20 +
 lang/rust/.cargo-rdme.toml                         |   19 +
 lang/rust/.deactivate.sh                           |   22 +
 lang/rust/.gitignore                               |    8 +
 lang/rust/.pre-commit-config.yaml                  |   33 +
 lang/rust/.requirements-precommit.txt              |    1 +
 lang/rust/CHANGELOG.md                             |  166 +
 lang/rust/Cargo.lock                               | 1735 +++++
 lang/rust/Cargo.toml                               |   51 +
 lang/rust/LICENSE                                  |  202 +
 lang/rust/Makefile                                 |  105 +
 lang/rust/README.md                                |   46 +
 lang/rust/README.tpl                               |   19 +
 lang/rust/avro/Cargo.toml                          |   99 +
 lang/rust/avro/README.md                           |  743 +++
 lang/rust/avro/benches/quickstop-null.avro         |  Bin 0 -> 166053 bytes
 lang/rust/avro/benches/serde.rs                    |  335 +
 lang/rust/avro/benches/serde_json.rs               |   79 +
 lang/rust/avro/benches/single.rs                   |  193 +
 lang/rust/avro/examples/benchmark.rs               |  155 +
 lang/rust/avro/examples/generate_interop_data.rs   |  112 +
 lang/rust/avro/examples/test_interop_data.rs       |   80 +
 .../test_interop_single_object_encoding.rs         |   75 +
 lang/rust/avro/examples/to_value.rs                |   29 +
 lang/rust/avro/src/bigdecimal.rs                   |  200 +
 lang/rust/avro/src/bytes.rs                        |  684 ++
 lang/rust/avro/src/codec.rs                        |  366 ++
 lang/rust/avro/src/de.rs                           | 1559 +++++
 lang/rust/avro/src/decimal.rs                      |  146 +
 lang/rust/avro/src/decode.rs                       |  912 +++
 lang/rust/avro/src/duration.rs                     |  145 +
 lang/rust/avro/src/encode.rs                       |  919 +++
 lang/rust/avro/src/error.rs                        |  567 ++
 lang/rust/avro/src/lib.rs                          | 1068 +++
 lang/rust/avro/src/rabin.rs                        |  164 +
 lang/rust/avro/src/reader.rs                       | 1030 +++
 lang/rust/avro/src/schema.rs                       | 6823 ++++++++++++++++++++
 lang/rust/avro/src/schema_compatibility.rs         | 1774 +++++
 lang/rust/avro/src/schema_equality.rs              |  590 ++
 lang/rust/avro/src/ser.rs                          | 1041 +++
 lang/rust/avro/src/types.rs                        | 3222 +++++++++
 lang/rust/avro/src/util.rs                         |  288 +
 lang/rust/avro/src/validator.rs                    |  318 +
 lang/rust/avro/src/writer.rs                       | 1447 +++++
 lang/rust/avro/tests/append_to_existing.rs         |  111 +
 lang/rust/avro/tests/avro-3786.rs                  |  886 +++
 lang/rust/avro/tests/avro-3787.rs                  |  279 +
 lang/rust/avro/tests/big_decimal.rs                |   23 +
 lang/rust/avro/tests/bigdec.avro                   |  Bin 0 -> 189 bytes
 lang/rust/avro/tests/codecs.rs                     |   89 +
 lang/rust/avro/tests/io.rs                         |  476 ++
 lang/rust/avro/tests/schema.rs                     | 2019 ++++++
 lang/rust/avro/tests/shared.rs                     |  150 +
 .../rust/avro/tests/to_from_avro_datum_schemata.rs |   88 +
 lang/rust/avro/tests/union_schema.rs               |  342 +
 lang/rust/avro/tests/uuids.rs                      |   26 +
 lang/rust/avro/tests/validators.rs                 |   85 +
 lang/rust/avro_derive/Cargo.toml                   |   49 +
 lang/rust/avro_derive/README.md                    |   69 +
 lang/rust/avro_derive/src/lib.rs                   |  650 ++
 lang/rust/avro_derive/tests/derive.rs              | 1598 +++++
 lang/rust/avro_test_helper/Cargo.toml              |   38 +
 lang/rust/avro_test_helper/README.md               |   51 +
 lang/rust/avro_test_helper/src/data.rs             |  636 ++
 lang/rust/avro_test_helper/src/lib.rs              |   71 +
 lang/rust/avro_test_helper/src/logger.rs           |   96 +
 lang/rust/build.sh                                 |   69 +
 lang/rust/deny.toml                                |  124 +
 lang/rust/fuzz/.gitignore                          |    4 +
 lang/rust/fuzz/Cargo.toml                          |   49 +
 lang/rust/fuzz/corpus/roundtrip/infinite_iteration |  Bin 0 -> 132 bytes
 .../fuzz/corpus/roundtrip/negate_with_overflow     |  Bin 0 -> 17 bytes
 lang/rust/fuzz/corpus/roundtrip/unchecked_resize   |  Bin 0 -> 58 bytes
 lang/rust/fuzz/fuzz_targets/roundtrip.rs           |  117 +
 lang/rust/migration_guide.md                       |  107 +
 lang/rust/rustfmt.toml                             |   19 +
 lang/rust/wasm-demo/Cargo.toml                     |   44 +
 lang/rust/wasm-demo/README.md                      |   28 +
 lang/rust/wasm-demo/src/lib.rs                     |   16 +
 lang/rust/wasm-demo/tests/demos.rs                 |   86 +
 pom.xml                                            |  604 ++
 share/VERSION.txt                                  |    1 +
 share/docker/.gitignore                            |    2 +
 share/docker/Dockerfile                            |  243 +
 share/docker/m2/toolchains.xml                     |   47 +
 share/docker/run-tests.sh                          |   31 +
 share/editors/README.txt                           |    1 +
 share/editors/avro-idl.vim                         |   84 +
 share/githooks/commit-msg                          |   47 +
 share/idl_grammar/org/apache/avro/idl/Idl.g4       |  257 +
 share/precommit/README.md                          |    9 +
 share/precommit/buildtest.sh                       |   66 +
 share/schemas/org/apache/avro/data/Json.avsc       |   15 +
 .../org/apache/avro/ipc/HandshakeRequest.avsc      |   11 +
 .../org/apache/avro/ipc/HandshakeResponse.avsc     |   15 +
 .../apache/avro/mapred/tether/InputProtocol.avpr   |   64 +
 .../apache/avro/mapred/tether/OutputProtocol.avpr  |   82 +
 share/test/data/messageV1/README.md                |   45 +
 share/test/data/messageV1/test_message.bin         |  Bin 0 -> 38 bytes
 share/test/data/messageV1/test_schema.avsc         |   22 +
 share/test/data/schema-tests.txt                   |  192 +
 share/test/data/schemas/README.md                  |   13 +
 share/test/data/schemas/simple/README.md           |    1 +
 share/test/data/schemas/simple/data.avro           |  Bin 0 -> 154 bytes
 share/test/data/schemas/simple/schema.json         |    8 +
 share/test/data/schemas/withUnion/README.md        |    1 +
 share/test/data/schemas/withUnion/data.avro        |  Bin 0 -> 309 bytes
 share/test/data/schemas/withUnion/schema.json      |   17 +
 share/test/data/syncInMeta.avro                    |  Bin 0 -> 22609 bytes
 share/test/data/test.avro12                        |  Bin 0 -> 3120 bytes
 share/test/data/weather-snappy.avro                |  Bin 0 -> 330 bytes
 share/test/data/weather-sorted.avro                |  Bin 0 -> 335 bytes
 share/test/data/weather.avro                       |  Bin 0 -> 358 bytes
 share/test/data/weather.json                       |    5 +
 share/test/interop/bin/test_rpc_interop.sh         |   76 +
 share/test/interop/rpc/add/onePlusOne/request.avro |  Bin 0 -> 171 bytes
 .../test/interop/rpc/add/onePlusOne/response.avro  |  Bin 0 -> 75 bytes
 share/test/interop/rpc/echo/foo/request.avro       |  Bin 0 -> 458 bytes
 share/test/interop/rpc/echo/foo/response.avro      |  Bin 0 -> 390 bytes
 share/test/interop/rpc/hello/world/request.avro    |  Bin 0 -> 162 bytes
 share/test/interop/rpc/hello/world/response.avro   |  Bin 0 -> 89 bytes
 share/test/run-perf.sh                             |  389 ++
 share/test/schemas/BulkData.avpr                   |   21 +
 share/test/schemas/FooBarSpecificRecord.avsc       |   22 +
 share/test/schemas/RecordWithRequiredFields.avsc   |   53 +
 share/test/schemas/contexts.avdl                   |   41 +
 share/test/schemas/echo.avdl                       |   32 +
 share/test/schemas/http.avdl                       |   66 +
 share/test/schemas/interop.avsc                    |   28 +
 share/test/schemas/mail.avpr                       |   26 +
 share/test/schemas/namespace.avpr                  |   28 +
 share/test/schemas/nestedNullable.avdl             |   41 +
 share/test/schemas/reserved.avsc                   |    2 +
 share/test/schemas/schemaevolution.avdl            |   55 +
 share/test/schemas/simple.avpr                     |   80 +
 share/test/schemas/social.avdl                     |   33 +
 share/test/schemas/specialtypes.avdl               |  109 +
 share/test/schemas/stringables.avdl                |   32 +
 share/test/schemas/weather.avsc                    |    8 +
 2487 files changed, 410397 insertions(+)

diff --git a/.asf.yaml b/.asf.yaml
new file mode 100644
index 000000000..3f81aa7ee
--- /dev/null
+++ b/.asf.yaml
@@ -0,0 +1,56 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This file configures github and jira notifications based on
+# https://s.apache.org/asfyaml-notify
+
+github:
+  description: "Apache Avro is a data serialization system."
+  homepage: https://avro.apache.org/
+  labels:
+    - avro
+    - bigdata
+    - c
+    - cplusplus
+    - csharp
+    - dotnet
+    - java
+    - perl
+    - php
+    - python
+    - ruby
+    - rust
+
+  enabled_merge_buttons:
+    merge: false
+    rebase: true
+    squash: true
+
+  collaborators:
+    - jbonofre
+
+publish:
+  whoami: asf-site
+
+notifications:
+  commits: commits@avro.apache.org
+  issues: issues@avro.apache.org
+  # Send new/closed PR notifications to dev@
+  pullrequests_status: dev@avro.apache.org
+  # Send individual PR comments/reviews to issues@
+  pullrequests_comment: issues@avro.apache.org
+  jira_options: link label worklog
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 000000000..bb261cfd8
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,36 @@
+{
+    "name": "Avro Development",
+    "build": {
+        "dockerfile": "../share/docker/Dockerfile",
+        "context": ".."
+    },
+    "customizations": {
+        "vscode": {
+            "settings": {
+            },
+            "extensions": [
+                // Python
+                "ms-python.python",
+                "ms-python.vscode-pylance",
+                // C/C++
+                "ms-vscode.cpptools",
+                // C#
+                "ms-dotnettools.csharp",
+                // Rust
+                "vadimcn.vscode-lldb",
+                "mutantdino.resourcemonitor",
+                "matklad.rust-analyzer",
+                "tamasfe.even-better-toml",
+                "serayuzgur.crates",
+                // Java
+                "vscjava.vscode-java-pack",
+                // Shell script
+                "timonwong.shellcheck",
+                // YAML
+                "redhat.vscode-yaml",
+                // Git
+                "eamodio.gitlens"
+            ]
+        }
+    }
+}
\ No newline at end of file
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 000000000..b96e2b9c6
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,227 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+ij_any_block_comment_at_first_column = false
+ij_any_line_comment_at_first_column = false
+
+[*.{java,xml,sh}]
+indent_style = space
+indent_size = 2
+trim_trailing_whitespace=true
+
+ij_continuation_indent_size = 4
+ij_java_wrap_comments = true
+ij_any_indent_case_from_switch = false
+
+[*.{avsc,avpr,avdl}]
+indent_style = space
+indent_size = 2
+trim_trailing_whitespace=true
+
+ij_continuation_indent_size = 4
+ij_json_space_after_colon = true
+ij_json_space_before_colon = true
+ij_json_spaces_within_brackets = true
+ij_any_array_initializer_wrap = off
+
+[*.{ps1}]
+indent_style = space
+indent_size = 4
+trim_trailing_whitespace=true
+
+#[*.scala]
+#indent_style = space
+#indent_size = 2
+
+[*.py]
+indent_style = space
+indent_size = 4
+
+# Generated code
+[*{_AssemblyInfo.cs,.notsupported.cs,AsmOffsets.cs}]
+generated_code = true
+
+# C# files
+[*.cs]
+indent_style = space
+indent_size = 4
+trim_trailing_whitespace=true
+
+# New line preferences
+csharp_new_line_before_open_brace = all
+csharp_new_line_before_else = true
+csharp_new_line_before_catch = true
+csharp_new_line_before_finally = true
+csharp_new_line_before_members_in_object_initializers = true
+csharp_new_line_before_members_in_anonymous_types = true
+csharp_new_line_between_query_expression_clauses = true
+
+# Indentation preferences
+csharp_indent_block_contents = true
+csharp_indent_braces = false
+csharp_indent_case_contents = true
+csharp_indent_case_contents_when_block = true
+csharp_indent_switch_labels = true
+csharp_indent_labels = one_less_than_current
+
+# Modifier preferences
+csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion
+
+# avoid this. unless absolutely necessary
+dotnet_style_qualification_for_field = false:suggestion
+dotnet_style_qualification_for_property = false:suggestion
+dotnet_style_qualification_for_method = false:suggestion
+dotnet_style_qualification_for_event = false:suggestion
+
+# Types: use keywords instead of BCL types, and permit var only when the type is clear
+csharp_style_var_for_built_in_types = false:suggestion
+csharp_style_var_when_type_is_apparent = false:none
+csharp_style_var_elsewhere = false:suggestion
+dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
+dotnet_style_predefined_type_for_member_access = true:suggestion
+
+# Non-private static fields are PascalCase
+dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.symbols = non_private_static_fields
+dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.style = non_private_static_field_style
+dotnet_naming_symbols.non_private_static_fields.applicable_kinds = field
+dotnet_naming_symbols.non_private_static_fields.applicable_accessibilities = public, protected, internal, protected_internal, private_protected
+dotnet_naming_symbols.non_private_static_fields.required_modifiers = static
+dotnet_naming_style.non_private_static_field_style.capitalization = pascal_case
+
+# Constants are PascalCase
+dotnet_naming_rule.constants_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.constants_should_be_pascal_case.symbols = constants
+dotnet_naming_rule.constants_should_be_pascal_case.style = constant_style
+dotnet_naming_symbols.constants.applicable_kinds = field, local
+dotnet_naming_symbols.constants.required_modifiers = const
+dotnet_naming_style.constant_style.capitalization = pascal_case
+
+# Static fields are camelCase and start with s_
+dotnet_naming_rule.static_fields_should_be_camel_case.severity = suggestion
+dotnet_naming_rule.static_fields_should_be_camel_case.symbols = static_fields
+dotnet_naming_rule.static_fields_should_be_camel_case.style = static_field_style
+dotnet_naming_symbols.static_fields.applicable_kinds = field
+dotnet_naming_symbols.static_fields.required_modifiers = static
+dotnet_naming_style.static_field_style.capitalization = camel_case
+dotnet_naming_style.static_field_style.required_prefix = s_
+
+# Instance fields are camelCase and start with _
+dotnet_naming_rule.instance_fields_should_be_camel_case.severity = suggestion
+dotnet_naming_rule.instance_fields_should_be_camel_case.symbols = instance_fields
+dotnet_naming_rule.instance_fields_should_be_camel_case.style = instance_field_style
+dotnet_naming_symbols.instance_fields.applicable_kinds = field
+dotnet_naming_style.instance_field_style.capitalization = camel_case
+dotnet_naming_style.instance_field_style.required_prefix = _
+
+# Locals and parameters are camelCase
+dotnet_naming_rule.locals_should_be_camel_case.severity = suggestion
+dotnet_naming_rule.locals_should_be_camel_case.symbols = locals_and_parameters
+dotnet_naming_rule.locals_should_be_camel_case.style = camel_case_style
+dotnet_naming_symbols.locals_and_parameters.applicable_kinds = parameter, local
+dotnet_naming_style.camel_case_style.capitalization = camel_case
+
+# Local functions are PascalCase
+dotnet_naming_rule.local_functions_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.local_functions_should_be_pascal_case.symbols = local_functions
+dotnet_naming_rule.local_functions_should_be_pascal_case.style = local_function_style
+dotnet_naming_symbols.local_functions.applicable_kinds = local_function
+dotnet_naming_style.local_function_style.capitalization = pascal_case
+
+# By default, name items with PascalCase
+dotnet_naming_rule.members_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.members_should_be_pascal_case.symbols = all_members
+dotnet_naming_rule.members_should_be_pascal_case.style = pascal_case_style
+dotnet_naming_symbols.all_members.applicable_kinds = *
+dotnet_naming_style.pascal_case_style.capitalization = pascal_case
+
+# Code style defaults
+csharp_using_directive_placement = outside_namespace:suggestion
+dotnet_sort_system_directives_first = true
+csharp_prefer_braces = true:silent
+csharp_preserve_single_line_blocks = true:none
+csharp_preserve_single_line_statements = false:none
+csharp_prefer_static_local_function = true:suggestion
+csharp_prefer_simple_using_statement = false:none
+csharp_style_prefer_switch_expression = false:none
+dotnet_style_readonly_field = true:suggestion
+
+# Expression-level preferences
+dotnet_style_object_initializer = true:suggestion
+dotnet_style_collection_initializer = true:suggestion
+dotnet_style_explicit_tuple_names = true:suggestion
+dotnet_style_coalesce_expression = true:suggestion
+dotnet_style_null_propagation = true:suggestion
+dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
+dotnet_style_prefer_inferred_tuple_names = true:suggestion
+dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
+dotnet_style_prefer_auto_properties = true:suggestion
+dotnet_style_prefer_conditional_expression_over_assignment = true:silent
+dotnet_style_prefer_conditional_expression_over_return = true:silent
+csharp_prefer_simple_default_expression = true:suggestion
+
+# Expression-bodied members
+csharp_style_expression_bodied_methods = true:silent
+csharp_style_expression_bodied_constructors = true:silent
+csharp_style_expression_bodied_operators = true:silent
+csharp_style_expression_bodied_properties = true:silent
+csharp_style_expression_bodied_indexers = true:silent
+csharp_style_expression_bodied_accessors = true:silent
+csharp_style_expression_bodied_lambdas = true:silent
+csharp_style_expression_bodied_local_functions = true:silent
+
+# Pattern matching
+csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
+csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
+csharp_style_inlined_variable_declaration = true:suggestion
+
+# Null checking preferences
+csharp_style_throw_expression = true:suggestion
+csharp_style_conditional_delegate_call = true:suggestion
+
+# Other features
+csharp_style_prefer_index_operator = false:none
+csharp_style_prefer_range_operator = false:none
+csharp_style_pattern_local_over_anonymous_function = false:none
+
+# Space preferences
+csharp_space_after_cast = false
+csharp_space_after_colon_in_inheritance_clause = true
+csharp_space_after_comma = true
+csharp_space_after_dot = false
+csharp_space_after_keywords_in_control_flow_statements = true
+csharp_space_after_semicolon_in_for_statement = true
+csharp_space_around_binary_operators = before_and_after
+csharp_space_around_declaration_statements = false
+csharp_space_before_colon_in_inheritance_clause = true
+csharp_space_before_comma = false
+csharp_space_before_dot = false
+csharp_space_before_open_square_brackets = false
+csharp_space_before_semicolon_in_for_statement = false
+csharp_space_between_empty_square_brackets = false
+csharp_space_between_method_call_empty_parameter_list_parentheses = false
+csharp_space_between_method_call_name_and_opening_parenthesis = false
+csharp_space_between_method_call_parameter_list_parentheses = false
+csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
+csharp_space_between_method_declaration_name_and_open_parenthesis = false
+csharp_space_between_method_declaration_parameter_list_parentheses = false
+csharp_space_between_parentheses = false
+csharp_space_between_square_brackets = false
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 000000000..b12292b62
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,11 @@
+# Set default behavior to automatically normalize line endings.
+* text=auto
+
+# Force bash scripts to always use lf line endings so that if a repo is accessed
+# in Unix via a file share from Windows, the scripts will work.
+*.sh text eol=lf
+
+# Force batch scripts to always use crlf line endings so that if a repo is accessed
+# in Unix via a file share from Windows, the scripts will work.
+*.cmd text eol=crlf
+*.bat text eol=crlf
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..2823e4060
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,60 @@
+<!--
+
+*Thank you very much for contributing to Apache Avro - we are happy that you want to help us improve Avro. To help the community review your contribution in the best possible way, please go through the checklist below, which will get the contribution into a shape in which it can be best reviewed.*
+
+*Please understand that we do not do this to make contributions to Avro a hassle. In order to uphold a high standard of quality for code contributions, while at the same time managing a large number of contributions, we need contributors to prepare the contributions well, and give reviewers enough contextual information for the review. Please also understand that contributions that do not follow this guide will take longer to review and thus typically be picked up with lower priority by  [...]
+
+## Contribution Checklist
+
+  - Make sure that the pull request corresponds to a [JIRA issue](https://issues.apache.org/jira/projects/AVRO/issues). Exceptions are made for typos in JavaDoc or documentation files, which need no JIRA issue.
+  
+  - Name the pull request in the form "AVRO-XXXX: [component] Title of the pull request", where *AVRO-XXXX* should be replaced by the actual issue number. 
+    The *component* is optional, but can help identify the correct reviewers faster: either the language ("java", "python") or subsystem such as "build" or "doc" are good candidates.  
+
+  - Fill out the template below to describe the changes contributed by the pull request. That will give reviewers the context they need to do the review.
+  
+  - Make sure that the change passes the automated tests. You can [build the entire project](https://github.com/apache/avro/blob/main/BUILD.md) or just the [language-specific SDK](https://avro.apache.org/project/how-to-contribute/#unit-tests).
+
+  - Each pull request should address only one issue, not mix up code from multiple issues.
+  
+  - Each commit in the pull request has a meaningful commit message (including the JIRA id)
+
+  - Every commit message references Jira issues in their subject lines. In addition, commits follow the guidelines from [How to write a good git commit message](https://chris.beams.io/posts/git-commit/)
+    1. Subject is separated from body by a blank line
+    1. Subject is limited to 50 characters (not including Jira issue reference)
+    1. Subject does not end with a period
+    1. Subject uses the imperative mood ("add", not "adding")
+    1. Body wraps at 72 characters
+    1. Body explains "what" and "why", not "how"
+
+-->
+
+## What is the purpose of the change
+
+*(For example: This pull request improves file read performance by buffering data, fixing AVRO-XXXX.)*
+
+
+## Verifying this change
+
+*(Please pick one of the following options)*
+
+This change is a trivial rework / code cleanup without any test coverage.
+
+*(or)*
+
+This change is already covered by existing tests, such as *(please describe tests)*.
+
+*(or)*
+
+This change added tests and can be verified as follows:
+
+*(example:)*
+- *Extended interop tests to verify consistent valid schema names between SDKs*
+- *Added test that validates that Java throws an AvroRuntimeException on invalid binary data*
+- *Manually verified the change by building the website and checking the new redirect*
+
+
+## Documentation
+
+- Does this pull request introduce a new feature? (yes / no)
+- If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 000000000..14d2f29b7
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,92 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+version: 2
+updates:
+
+  - package-ecosystem: "nuget"
+    directory: "/lang/csharp/"
+    schedule:
+      interval: "weekly"
+      day: "sunday"
+    open-pull-requests-limit: 20
+
+  - package-ecosystem: "maven"
+    directory: "/lang/java/"
+    schedule:
+      interval: "weekly"
+      day: "sunday"
+    ignore:
+      # Jetty >= 10 requires JDK 11
+      - dependency-name: "org.eclipse.jetty:jetty-server"
+        versions:
+          - ">= 10.0.0"
+      - dependency-name: "org.eclipse.jetty:jetty-servlet"
+        versions:
+          - ">= 10.0.0"
+      - dependency-name: "org.eclipse.jetty:jetty-util"
+        versions:
+          - ">= 10.0.0"
+    open-pull-requests-limit: 50
+
+  - package-ecosystem: "npm"
+    directory: "/lang/js"
+    schedule:
+      interval: "weekly"
+      day: "sunday"
+    open-pull-requests-limit: 20
+
+  - package-ecosystem: "npm"
+    directory: "/doc"
+    schedule:
+      interval: "weekly"
+      day: "sunday"
+    open-pull-requests-limit: 10
+
+  - package-ecosystem: "pip"
+    directory: "/lang/py/"
+    schedule:
+      interval: "weekly"
+      day: "sunday"
+    open-pull-requests-limit: 20
+
+  - package-ecosystem: "bundler"
+    directory: "/lang/ruby/"
+    schedule:
+      interval: "weekly"
+      day: "sunday"
+    open-pull-requests-limit: 20
+
+  - package-ecosystem: "bundler"
+    directory: "/doc/"
+    schedule:
+      interval: "weekly"
+      day: "sunday"
+    open-pull-requests-limit: 20
+
+  - package-ecosystem: "cargo"
+    directory: "/lang/rust/"
+    schedule:
+      interval: "daily"
+    open-pull-requests-limit: 20
+
+  - package-ecosystem: "github-actions"
+    directory: "/"
+    schedule:
+      interval: "weekly"
+      day: "sunday"
diff --git a/.github/labeler.yml b/.github/labeler.yml
new file mode 100644
index 000000000..d694c7e6d
--- /dev/null
+++ b/.github/labeler.yml
@@ -0,0 +1,56 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# Pull Request Labeler Github Action Configuration: https://github.com/marketplace/actions/labeler
+
+C: 
+  - changed-files:
+    - any-glob-to-any-file: "lang/c/**/*"
+C++: 
+  - changed-files:
+    - any-glob-to-any-file: "lang/c++/**/*"
+C#: 
+  - changed-files:
+    - any-glob-to-any-file: "lang/csharp/**/*"
+Java: 
+  - changed-files:
+    - any-glob-to-any-file: "lang/java/**/*"
+Js: 
+  - changed-files:
+    - any-glob-to-any-file: "lang/js/**/*"
+Perl: 
+  - changed-files:
+    - any-glob-to-any-file: "lang/perl/**/*"
+Php: 
+  - changed-files:
+    - any-glob-to-any-file: "lang/php/**/*"
+Python: 
+  - changed-files:
+    - any-glob-to-any-file: "lang/py/**/*"
+Ruby: 
+  - changed-files:
+    - any-glob-to-any-file: "lang/ruby/**/*"
+Rust: 
+  - changed-files:
+    - any-glob-to-any-file: "lang/rust/**/*"
+build: 
+  - changed-files:
+    - any-glob-to-any-file: ["**/*Dockerfile*", "**/*.sh", "**/*pom.xml", ".github/**/*"]
+website: 
+  - changed-files:
+    - any-glob-to-any-file: "doc/**/*"
diff --git a/.github/workflows/codeql-csharp-analysis.yml b/.github/workflows/codeql-csharp-analysis.yml
new file mode 100644
index 000000000..b61534907
--- /dev/null
+++ b/.github/workflows/codeql-csharp-analysis.yml
@@ -0,0 +1,97 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+
+name: "CodeQL C#"
+
+on:
+  push:
+    branches:
+    - main
+  pull_request:
+    # The branches below must be a subset of the branches above
+    branches:
+    - main
+    paths:
+    - .github/workflows/codeql-csharp-analysis.yml
+    - lang/csharp/**
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  analyze:
+    name: Analyze
+    runs-on: ubuntu-latest
+
+    strategy:
+      fail-fast: false
+      matrix:
+        # Override automatic language detection by changing the below list
+        # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
+        language:
+        - csharp
+        # Learn more...
+        # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
+
+    steps:
+    - name: Checkout repository
+      uses: actions/checkout@v4
+      with:
+        # We must fetch at least the immediate parents so that if this is
+        # a pull request then we can checkout the head.
+        fetch-depth: 2
+
+    # Install .NET SDKs
+    - name: Install .NET SDKs
+      uses: actions/setup-dotnet@v4
+      with:
+        dotnet-version: |
+          3.1.x
+          5.0.x
+          6.0.x
+          7.0.x
+          8.0.x
+
+    # Initializes the CodeQL tools for scanning.
+    - name: Initialize CodeQL
+      uses: github/codeql-action/init@v3
+      with:
+        languages: ${{ matrix.language }}
+        # If you wish to specify custom queries, you can do so here or in a config file.
+        # By default, queries listed here will override any specified in a config file.
+        # Prefix the list here with "+" to use these queries and those in the config file.
+        # queries: ./path/to/local/query, your-org/your-repo/queries@main
+        queries: +security-and-quality
+
+    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
+    # If this step fails, then you should remove it and run the build manually (see below)
+    - name: Autobuild
+      uses: github/codeql-action/autobuild@v3
+
+    # ℹ️ Command-line programs to run using the OS shell.
+    # 📚 https://git.io/JvXDl
+
+    # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
+    #    and modify them (or add more) to build your code if your project
+    #    uses a compiled language
+
+    - name: Perform CodeQL Analysis
+      uses: github/codeql-action/analyze@v3
diff --git a/.github/workflows/codeql-java-analysis.yml b/.github/workflows/codeql-java-analysis.yml
new file mode 100644
index 000000000..7e42f8120
--- /dev/null
+++ b/.github/workflows/codeql-java-analysis.yml
@@ -0,0 +1,103 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+
+name: "CodeQL Java"
+on:
+  workflow_dispatch:
+  push:
+    branches:
+    - main
+  pull_request:
+    branches:
+    - main
+    paths:
+    - .github/workflows/codeql-java-analysis.yml
+    - lang/java/**
+    - pom.xml
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  analyze:
+    name: Analyze
+    runs-on: ubuntu-latest
+
+    strategy:
+      fail-fast: false
+      matrix:
+        # Override automatic language detection by changing the below list
+        # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
+        language:
+        - java
+        # Learn more...
+        # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
+
+    steps:
+    - name: Checkout repository
+      uses: actions/checkout@v4
+      with:
+        # We must fetch at least the immediate parents so that if this is
+        # a pull request then we can checkout the head.
+        fetch-depth: 2
+
+    # Initializes the CodeQL tools for scanning.
+    - name: Initialize CodeQL
+      uses: github/codeql-action/init@v3
+      with:
+        languages: ${{ matrix.language }}
+        # If you wish to specify custom queries, you can do so here or in a config file.
+        # By default, queries listed here will override any specified in a config file.
+        # Prefix the list here with "+" to use these queries and those in the config file.
+        # queries: ./path/to/local/query, your-org/your-repo/queries@main
+        queries: +security-and-quality
+
+    - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+      uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+      with:
+        distribution: 'temurin'
+        java-version: |
+          8
+          11
+          17
+          21
+
+    - name: 'Setup Maven 3.9.6'
+      uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+      with:
+        maven-version: 3.9.6
+
+    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
+    # If this step fails, then you should remove it and run the build manually (see below)
+#    - name: Autobuild
+#      uses: github/codeql-action/autobuild@v3
+
+    # ℹ️ Command-line programs to run using the OS shell.
+    # 📚 https://git.io/JvXDl
+
+    # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
+    #    and modify them (or add more) to build your code if your project
+    #    uses a compiled language
+    - name: 'Java Test'
+      run: mvn clean test
+
+    - name: Perform CodeQL Analysis
+      uses: github/codeql-action/analyze@v3
diff --git a/.github/workflows/codeql-js-analysis.yml b/.github/workflows/codeql-js-analysis.yml
new file mode 100644
index 000000000..68b9aa85f
--- /dev/null
+++ b/.github/workflows/codeql-js-analysis.yml
@@ -0,0 +1,86 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+
+name: "CodeQL JavaScript"
+
+on:
+  push:
+    branches:
+    - main
+  pull_request:
+    # The branches below must be a subset of the branches above
+    branches:
+    - main
+    paths:
+    - .github/workflows/codeql-js-analysis.yml
+    - lang/js/**
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  analyze:
+    name: Analyze
+    runs-on: ubuntu-latest
+
+    strategy:
+      fail-fast: false
+      matrix:
+        # Override automatic language detection by changing the below list
+        # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
+        language:
+        - javascript
+        # Learn more...
+        # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
+
+    steps:
+    - name: Checkout repository
+      uses: actions/checkout@v4
+      with:
+        # We must fetch at least the immediate parents so that if this is
+        # a pull request then we can checkout the head.
+        fetch-depth: 2
+
+    # Initializes the CodeQL tools for scanning.
+    - name: Initialize CodeQL
+      uses: github/codeql-action/init@v3
+      with:
+        languages: ${{ matrix.language }}
+        # If you wish to specify custom queries, you can do so here or in a config file.
+        # By default, queries listed here will override any specified in a config file.
+        # Prefix the list here with "+" to use these queries and those in the config file.
+        # queries: ./path/to/local/query, your-org/your-repo/queries@main
+        queries: +security-and-quality
+
+    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
+    # If this step fails, then you should remove it and run the build manually (see below)
+    - name: Autobuild
+      uses: github/codeql-action/autobuild@v3
+
+    # ℹ️ Command-line programs to run using the OS shell.
+    # 📚 https://git.io/JvXDl
+
+    # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
+    #    and modify them (or add more) to build your code if your project
+    #    uses a compiled language
+
+    - name: Perform CodeQL Analysis
+      uses: github/codeql-action/analyze@v3
diff --git a/.github/workflows/codeql-py-analysis.yml b/.github/workflows/codeql-py-analysis.yml
new file mode 100644
index 000000000..60a47472f
--- /dev/null
+++ b/.github/workflows/codeql-py-analysis.yml
@@ -0,0 +1,86 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+
+name: "CodeQL Python"
+
+on:
+  push:
+    branches:
+    - main
+  pull_request:
+    # The branches below must be a subset of the branches above
+    branches:
+    - main
+    paths:
+    - .github/workflows/codeql-py-analysis.yml
+    - lang/py/**
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  analyze:
+    name: Analyze
+    runs-on: ubuntu-latest
+
+    strategy:
+      fail-fast: false
+      matrix:
+        # Override automatic language detection by changing the below list
+        # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
+        language:
+        - python
+        # Learn more...
+        # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
+
+    steps:
+    - name: Checkout repository
+      uses: actions/checkout@v4
+      with:
+        # We must fetch at least the immediate parents so that if this is
+        # a pull request then we can checkout the head.
+        fetch-depth: 2
+
+    # Initializes the CodeQL tools for scanning.
+    - name: Initialize CodeQL
+      uses: github/codeql-action/init@v3
+      with:
+        languages: ${{ matrix.language }}
+        # If you wish to specify custom queries, you can do so here or in a config file.
+        # By default, queries listed here will override any specified in a config file.
+        # Prefix the list here with "+" to use these queries and those in the config file.
+        # queries: ./path/to/local/query, your-org/your-repo/queries@main
+        queries: +security-and-quality
+
+    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).
+    # If this step fails, then you should remove it and run the build manually (see below)
+    - name: Autobuild
+      uses: github/codeql-action/autobuild@v3
+
+    # ℹ️ Command-line programs to run using the OS shell.
+    # 📚 https://git.io/JvXDl
+
+    # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
+    #    and modify them (or add more) to build your code if your project
+    #    uses a compiled language
+
+    - name: Perform CodeQL Analysis
+      uses: github/codeql-action/analyze@v3
diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
new file mode 100644
index 000000000..925244b40
--- /dev/null
+++ b/.github/workflows/deploy-docs.yml
@@ -0,0 +1,80 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+
+
+# Sample workflow for building and deploying a Hugo site to GitHub Pages
+name: Deploy Hugo site to Pages
+
+on:
+  # Runs on pushes targeting the default branch
+  push:
+    branches:
+      - main
+
+  # Allows you to run this workflow manually from the Actions tab
+  workflow_dispatch:
+
+# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+concurrency:
+  group: "pages"
+  cancel-in-progress: false
+
+jobs:
+  # Build job
+  build:
+    runs-on: ubuntu-latest
+    env:
+      HUGO_VERSION: 0.132.1
+    steps:
+      - name: Install Hugo CLI
+        run: |
+          wget -q -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
+          && sudo dpkg -i ${{ runner.temp }}/hugo.deb
+      - name: Install Dart Sass
+        run: sudo snap install dart-sass
+      - name: Checkout
+        uses: actions/checkout@v4
+        with:
+          fetch-depth: 0
+      - name: Install Node.js dependencies
+        working-directory: doc/
+        run: ls -lah && npm ci
+      - name: Build with Hugo
+        working-directory: doc/
+        env:
+          HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
+          HUGO_ENVIRONMENT: production
+          TZ: America/Los_Angeles
+        run: |
+          hugo \
+            --gc \
+            --minify \
+            --baseURL "https://avro.apache.org/"
+      - name: Commit new site
+        run: |
+          set -ex
+          mv doc/public docs/
+          git config --global user.email "dev@avro.apache.org"
+          git config --global user.name "Github Actions"
+          git checkout --orphan asf-site-staging
+          git add .
+          git commit -m "Update docs"
+          git checkout asf-site
+          git reset --hard asf-site-staging
+          git push origin asf-site --force
+          
diff --git a/.github/workflows/java-publish-snapshot.yml b/.github/workflows/java-publish-snapshot.yml
new file mode 100644
index 000000000..437c3a6b9
--- /dev/null
+++ b/.github/workflows/java-publish-snapshot.yml
@@ -0,0 +1,67 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+
+name: "Publish Snapshot to Maven"
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+    paths:
+      - .github/workflows/java-publish-snapshot.yml
+      - lang/java/**
+      - pom.xml
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  publish-snapshot:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.8
+
+      - name: 'Deploy Maven snapshots'
+        env:
+          ASF_USERNAME: ${{ secrets.NEXUS_USER }}
+          ASF_PASSWORD: ${{ secrets.NEXUS_PW }}
+        run: |
+          echo "<settings><servers><server><id>apache.snapshots.https</id><username>$ASF_USERNAME</username><password>$ASF_PASSWORD</password></server></servers></settings>" > ${{runner.temp}}/settings.xml
+          mvn --settings ${{runner.temp}}/settings.xml -U -B -e -fae -ntp -PskipQuality deploy
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
new file mode 100644
index 000000000..53280443d
--- /dev/null
+++ b/.github/workflows/labeler.yml
@@ -0,0 +1,32 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+name: "Pull Request Labeler"
+on: pull_request_target
+
+jobs:
+  triage:
+    permissions:
+      contents: read
+      pull-requests: write
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/labeler@v5
+      with:
+        repo-token: "${{ secrets.GITHUB_TOKEN }}"
+        sync-labels: true
diff --git a/.github/workflows/maven4.yml b/.github/workflows/maven4.yml
new file mode 100644
index 000000000..5376488b3
--- /dev/null
+++ b/.github/workflows/maven4.yml
@@ -0,0 +1,69 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Maven 4'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/maven4.yml
+    - lang/java/**
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  maven4:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: Cache Maven 4 Build Cache
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/build-cache
+          key: ${{ runner.os }}-maven-build-cache-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-build-cache
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: Setup Maven 4
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 4.0.0-alpha-10
+
+      - name: Test
+        run: mvn clean verify
diff --git a/.github/workflows/rat.yml b/.github/workflows/rat.yml
new file mode 100644
index 000000000..c38d808f8
--- /dev/null
+++ b/.github/workflows/rat.yml
@@ -0,0 +1,58 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Rat'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  rat:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: Run Rat
+        run: mvn test -Dmaven.main.skip=true -Dmaven.test.skip=true -DskipTests=true -Dinvoker.skip=true -P rat -pl :avro-toplevel
diff --git a/.github/workflows/spotless.yml b/.github/workflows/spotless.yml
new file mode 100644
index 000000000..f69108bad
--- /dev/null
+++ b/.github/workflows/spotless.yml
@@ -0,0 +1,61 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Spotless'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/spotless.yml
+    - lang/java/**
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  spotless:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: Run Spotless Check
+        run: mvn spotless:check
diff --git a/.github/workflows/test-docker.yml b/.github/workflows/test-docker.yml
new file mode 100644
index 000000000..5c9b6aa3d
--- /dev/null
+++ b/.github/workflows/test-docker.yml
@@ -0,0 +1,38 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Docker tests'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+      - 'share/docker/*'
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Run Docker tests
+        shell: bash
+        run: ./build.sh docker-test
diff --git a/.github/workflows/test-lang-c++-ARM.yml b/.github/workflows/test-lang-c++-ARM.yml
new file mode 100644
index 000000000..f101eaeb2
--- /dev/null
+++ b/.github/workflows/test-lang-c++-ARM.yml
@@ -0,0 +1,52 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test C++ on ARM'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - '.github/workflows/test-lang-c\+\+.yml'
+    - 'lang/c\+\+/**'
+
+defaults:
+  run:
+    working-directory: lang/c++
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  arm64:
+    name: C++ on Linux ARM64
+    runs-on: ["self-hosted", "asf-arm"]
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Install dependencies
+        run: |
+          sudo apt-get update -q
+          sudo apt-get install -q -y gcc g++ libboost-all-dev libfmt-dev cmake
+
+      - name: Build
+        run: |
+          set -x
+          ./build.sh clean test
diff --git a/.github/workflows/test-lang-c++.yml b/.github/workflows/test-lang-c++.yml
new file mode 100644
index 000000000..61afa7ff6
--- /dev/null
+++ b/.github/workflows/test-lang-c++.yml
@@ -0,0 +1,63 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Test C++
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - '.github/workflows/test-lang-c\+\+.yml'
+    - 'lang/c\+\+/**'
+
+defaults:
+  run:
+    working-directory: lang/c++
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Install Dependencies
+        run: sudo apt update && sudo apt-get install -qqy cppcheck libboost-all-dev libsnappy-dev libfmt-dev cmake
+
+      - name: Print Versions
+        run: |
+          gcc --version
+          cmake --version
+          cppcheck --version
+
+      - name: Clean
+        run: ./build.sh clean
+
+      - name: Lint
+        run: ./build.sh lint
+
+      - name: Test
+        run: ./build.sh test
+
+      - name: Release build
+        run: |
+          mkdir -p build
+          cd build
+          cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=Release ..
diff --git a/.github/workflows/test-lang-c-ARM.yml b/.github/workflows/test-lang-c-ARM.yml
new file mode 100644
index 000000000..ffb31be2b
--- /dev/null
+++ b/.github/workflows/test-lang-c-ARM.yml
@@ -0,0 +1,52 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test C on ARM'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-c.yml
+    - lang/c/**
+
+defaults:
+  run:
+    working-directory: lang/c
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  arm64:
+    name: C on Linux ARM64
+    runs-on: ["self-hosted", "asf-arm"]
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Install dependencies
+        run: |
+          sudo apt-get update -q
+          sudo apt-get install -q -y cmake liblzma-dev libsnappy-dev libjansson-dev zlib1g-dev pkg-config
+
+      - name: Build
+        run: |
+          set -x
+          ./build.sh clean test
diff --git a/.github/workflows/test-lang-c.yml b/.github/workflows/test-lang-c.yml
new file mode 100644
index 000000000..9f31078bf
--- /dev/null
+++ b/.github/workflows/test-lang-c.yml
@@ -0,0 +1,151 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Test C
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-c.yml
+    - lang/c/**
+
+defaults:
+  run:
+    working-directory: lang/c
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Install Dependencies
+        run: sudo apt-get install -qqy libjansson-dev libsnappy-dev
+
+      - name: Lint
+        run: ./build.sh lint
+
+      - name: Test
+        run: ./build.sh test
+
+      - name: Check pkg-config
+        run: |
+          mkdir -p build
+          cd build
+          cmake ..
+          export PKG_CONFIG_PATH=./src
+          pkg-config --libs avro-c
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: Install Java Avro for Interop Test
+        working-directory: .
+        run: mvn -B install -PskipQuality
+
+      - name: Create Interop Data Directory
+        working-directory: .
+        run: mkdir -p build/interop/data
+
+      - name: Generate Interop Resources
+        working-directory: lang/java/avro
+        run: mvn -B -P interop-data-generate generate-resources
+
+      - name: Generate Interop Data
+        run: ./build.sh interop-data-generate
+
+      - name: Run Interop Tests
+        run: ./build.sh interop-data-test
+
+  interop:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Install Dependencies
+        run: |
+          sudo apt-get install -qqy --no-install-recommends libbz2-dev \
+                                                            libjansson-dev \
+                                                            liblzma-dev \
+                                                            libsnappy-dev \
+                                                            libzstd-dev
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: Install Java Avro for Interop Test
+        working-directory: .
+        run: mvn -B install -PskipQuality
+
+      - name: Create Interop Data Directory
+        working-directory: .
+        run: mkdir -p build/interop/data
+
+      - name: Generate Interop Resources
+        working-directory: lang/java/avro
+        run: mvn -B -P interop-data-generate generate-resources
+
+      - name: Generate Interop Data
+        run: ./build.sh interop-data-generate
+
+      - name: Run Interop Tests
+        run: ./build.sh interop-data-test
diff --git a/.github/workflows/test-lang-csharp-ARM.yml b/.github/workflows/test-lang-csharp-ARM.yml
new file mode 100644
index 000000000..4c3eacb05
--- /dev/null
+++ b/.github/workflows/test-lang-csharp-ARM.yml
@@ -0,0 +1,160 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test C# on ARM'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-csharp.yml
+    - lang/csharp/**
+
+defaults:
+  run:
+    working-directory: lang/csharp
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Add libzstd
+        shell: bash
+        run: sudo apt-get install -y libzstd-dev
+
+      - name: Install .NET SDKs
+        uses: actions/setup-dotnet@v4
+        with:
+          dotnet-version: |
+            3.1.x
+            5.0.x
+            6.0.x
+            7.0.x
+            8.0.x
+
+      - uses: actions/cache@v4
+        with:
+          path: ~/.nuget/packages
+          key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
+          restore-keys: |
+            ${{ runner.os }}-nuget-
+
+      - name: Lint
+        run: ./build.sh lint
+
+      - name: Test
+        run: ./build.sh test
+
+  interop:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Add libzstd
+        shell: bash
+        run: sudo apt-get install -y libzstd-dev
+
+      - name: Install .NET SDKs
+        uses: actions/setup-dotnet@v4
+        with:
+          dotnet-version: |
+            3.1.x
+            5.0.x
+            6.0.x
+            7.0.x
+            8.0.x
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: Install Java Avro for Interop Test
+        working-directory: .
+        run: mvn -B install -PskipQuality
+
+      - name: Create Interop Data Directory
+        working-directory: .
+        run: mkdir -p build/interop/data
+
+      - name: Generate Interop Resources
+        working-directory: lang/java/avro
+        run: mvn -B -P interop-data-generate generate-resources
+
+      - name: Generate Interop Data
+        run: ./build.sh interop-data-generate
+
+      - name: Run Interop Tests
+        run: ./build.sh interop-data-test
+
+  arm64:
+    name: C# on Linux ARM64
+    runs-on: ["self-hosted", "asf-arm"]
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Cache Nuget
+        uses: actions/cache@v4
+        with:
+          path: ~/.nuget/packages
+          key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
+          restore-keys: |
+            ${{ runner.os }}-nuget-
+
+      - name: Install dependencies
+        run: |
+          sudo apt-get update -q
+          sudo apt-get install -q -y wget libzstd-dev libicu-dev
+          wget https://dot.net/v1/dotnet-install.sh
+          bash ./dotnet-install.sh --channel "3.1" --install-dir "$HOME/.dotnet" # 3.1
+          bash ./dotnet-install.sh --channel "5.0" --install-dir "$HOME/.dotnet" # 5.0
+          bash ./dotnet-install.sh --channel "6.0" --install-dir "$HOME/.dotnet" # 6.0
+          bash ./dotnet-install.sh --channel "7.0" --install-dir "$HOME/.dotnet" # 7.0
+          bash ./dotnet-install.sh --channel "8.0" --install-dir "$HOME/.dotnet" # 8.0
+          
+      - name: Build
+        run: |
+          set -x
+          export PATH=$HOME/.dotnet:$PATH
+          dotnet --list-sdks
+          ./build.sh clean test
diff --git a/.github/workflows/test-lang-csharp.yml b/.github/workflows/test-lang-csharp.yml
new file mode 100644
index 000000000..c81628213
--- /dev/null
+++ b/.github/workflows/test-lang-csharp.yml
@@ -0,0 +1,126 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test C#'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-csharp.yml
+    - lang/csharp/**
+
+defaults:
+  run:
+    working-directory: lang/csharp
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Add libzstd
+        shell: bash
+        run: sudo apt-get install -y libzstd-dev
+
+      - name: Install .NET SDKs
+        uses: actions/setup-dotnet@v4
+        with:
+          dotnet-version: |
+            3.1.x
+            5.0.x
+            6.0.x
+            7.0.x
+            8.0.x
+
+      - uses: actions/cache@v4
+        with:
+          path: ~/.nuget/packages
+          key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
+          restore-keys: |
+            ${{ runner.os }}-nuget-
+
+      - name: Lint
+        run: ./build.sh lint
+
+      - name: Test
+        run: ./build.sh test
+
+  interop:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Add libzstd
+        shell: bash
+        run: sudo apt-get install -y libzstd-dev
+
+      - name: Install .NET SDKs
+        uses: actions/setup-dotnet@v4
+        with:
+          dotnet-version: |
+            3.1.x
+            5.0.x
+            6.0.x
+            7.0.x
+            8.0.x
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: Install Java Avro for Interop Test
+        working-directory: .
+        run: mvn -B install -PskipQuality
+
+      - name: Create Interop Data Directory
+        working-directory: .
+        run: mkdir -p build/interop/data
+
+      - name: Generate Interop Resources
+        working-directory: lang/java/avro
+        run: mvn -B -P interop-data-generate generate-resources
+
+      - name: Generate Interop Data
+        run: ./build.sh interop-data-generate
+
+      - name: Run Interop Tests
+        run: ./build.sh interop-data-test
diff --git a/.github/workflows/test-lang-java-ARM.yml b/.github/workflows/test-lang-java-ARM.yml
new file mode 100644
index 000000000..af3cd7504
--- /dev/null
+++ b/.github/workflows/test-lang-java-ARM.yml
@@ -0,0 +1,83 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test Java on ARM'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-java.yml
+    - lang/java/**
+    - pom.xml
+
+defaults:
+  run:
+    working-directory: lang/java
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  arm64:
+    name: Java on Linux ARM64
+    runs-on: ["self-hosted", "asf-arm"]
+
+    steps:
+      - name: 'Checkout sourcecode'
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Cache Local Maven Repository'
+        uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: 'Install Java Avro Toplevel'
+        working-directory: ./
+        run: mvn -B install -PskipQuality -DskipTests
+
+      - name: Build
+        run: ./build.sh clean test
+#          set -x
+#          export MAVEN_VERSION="3.9.6"
+#          wget https://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz
+#          tar zxvf apache-maven-$MAVEN_VERSION-bin.tar.gz
+#          export M2_HOME=$PWD/apache-maven-$MAVEN_VERSION
+#          export PATH="$M2_HOME/bin:$PATH"
+#          java -version
+#          mvn -version
+#          #MAVEN_OPTS="-Dsurefire.excludes=*TestCustomCodec*,*TestAllCodecs*,*TestNettyServer*" ./build.sh clean test
+#          ./build.sh clean test
diff --git a/.github/workflows/test-lang-java.yml b/.github/workflows/test-lang-java.yml
new file mode 100644
index 000000000..168d8fc5a
--- /dev/null
+++ b/.github/workflows/test-lang-java.yml
@@ -0,0 +1,160 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test Java'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-java.yml
+    - lang/java/**
+    - pom.xml
+
+defaults:
+  run:
+    working-directory: lang/java
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  test:
+    name: 'Java Test'
+    runs-on: ubuntu-latest
+    steps:
+      - name: 'Checkout sourcecode'
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+
+      - name: 'Cache Local Maven Repository'
+        uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: 'Install Java Avro Toplevel'
+        working-directory: ./
+        run: mvn -B install -PskipQuality -DskipTests
+
+      - name: 'Java Lint'
+        run: ./build.sh lint
+
+      - name: 'Java Test'
+        run: ./build.sh test
+
+      - name: 'Install Java Avro'
+        working-directory: .
+        run: mvn -B clean install -PskipQuality -DskipTests
+
+      - name: 'Test Reproducible Build'
+        working-directory: .
+        run: mvn clean verify -PskipQuality artifact:compare
+
+  interop:
+    name: 'Java Interop'
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+
+      - name: 'Cache Local Maven Repository'
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: 'Setup Python for Generating Input Data'
+        uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0
+
+      - name: 'Apt Install Compression Libs Required by Python'
+        run: |
+          sudo apt-get install -qqy --no-install-recommends libbz2-dev \
+                                                            liblzma-dev \
+                                                            libsnappy-dev \
+                                                            libzstd-dev
+
+      - name: 'Install Python Dependencies'
+        run: |
+          python3 -m pip install --upgrade pip setuptools tox
+          python3 -m pip install python-snappy zstandard
+
+      - name: 'Setup C# for Generating Interop Data'
+        uses: actions/setup-dotnet@v4
+        with:
+          dotnet-version: |
+            3.1.x
+            5.0.x
+            6.0.x
+            7.0.x
+            8.0.x
+
+      - name: 'Create Interop Data Directory'
+        working-directory: .
+        run: mkdir -p build/interop/data
+
+      - name: 'Generate Interop Data using Python'
+        working-directory: lang/py
+        run: ./build.sh interop-data-generate
+
+      - name: 'Generate Interop Data using C#'
+        working-directory: lang/csharp
+        run: ./build.sh interop-data-generate
+
+      - name: 'Install Java Avro for other tests'
+        working-directory: .
+        run: mvn -B install -PskipQuality
+
+      - name: 'Generate Interop Data using Java 11, 17 & 21'
+        working-directory: lang/java/interop-data-test
+        run: mvn -B verify -Pgenerate-test-data
+
+      - name: 'Run Interop Tests using Java 11, 17 & 21'
+        working-directory: lang/java/interop-data-test
+        run: mvn -B verify -Pcheck-test-data
diff --git a/.github/workflows/test-lang-js-ARM.yml b/.github/workflows/test-lang-js-ARM.yml
new file mode 100644
index 000000000..54e1216ea
--- /dev/null
+++ b/.github/workflows/test-lang-js-ARM.yml
@@ -0,0 +1,65 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test JavaScript on ARM'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-js.yml
+    - lang/js/**
+
+defaults:
+  run:
+    working-directory: lang/js
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  arm64:
+    name: JavaScript on Linux ARM64
+    runs-on: ["self-hosted", "asf-arm"]
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Cache Npm
+        uses: actions/cache@v4
+        with:
+          path: ~/.npm
+          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
+          restore-keys: |
+            ${{ runner.os }}-node-
+
+      - name: Setup Node
+        uses: actions/setup-node@v4
+        with:
+          node-version: 18
+
+      - name: Install dependencies
+        run: |
+          sudo apt-get update -q
+          sudo apt-get install -q -y wget tar xz-utils
+
+      - name: Build
+        run: |
+          set -x
+          ./build.sh clean test
diff --git a/.github/workflows/test-lang-js.yml b/.github/workflows/test-lang-js.yml
new file mode 100644
index 000000000..20f2cc09f
--- /dev/null
+++ b/.github/workflows/test-lang-js.yml
@@ -0,0 +1,114 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test JavaScript'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-js.yml
+    - lang/js/**
+
+defaults:
+  run:
+    working-directory: lang/js
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  test:
+    name: Node ${{ matrix.node }}
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        node:
+        - 12
+        - 14
+        - 16
+    steps:
+      - uses: actions/checkout@v4
+      - name: Setup Node
+        uses: actions/setup-node@v4
+        with:
+          node-version: ${{ matrix.node }}
+
+      - uses: actions/cache@v4
+        with:
+          path: ~/.npm
+          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
+          restore-keys: |
+            ${{ runner.os }}-node-
+
+      - name: Lint
+        run: ./build.sh lint
+
+      - name: Test
+        run: ./build.sh test
+
+  interop:
+    name: Node ${{ matrix.node }} Interop
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        node:
+        - 12
+        - 14
+        - 16
+    steps:
+      - uses: actions/checkout@v4
+      - name: Setup Node
+        uses: actions/setup-node@v4
+        with:
+          node-version: ${{ matrix.node }}
+
+      - uses: actions/cache@v4
+        with:
+          path: ~/.npm
+          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
+          restore-keys: |
+            ${{ runner.os }}-node-
+
+      - name: Setup Python for Generating Input Data
+        uses: actions/setup-python@v5
+
+      - name: Apt Install Compression Libs Required by Python
+        run: |
+          sudo apt-get install -qqy --no-install-recommends libbz2-dev \
+                                                            liblzma-dev \
+                                                            libsnappy-dev \
+                                                            libzstd-dev
+      - name: Install Python Dependencies
+        run: |
+          python3 -m pip install --upgrade pip setuptools tox
+          python3 -m pip install python-snappy zstandard
+
+      - name: Create Interop Data Directory
+        working-directory: .
+        run: mkdir -p build/interop/data
+
+      - name: Generate Interop Data using Python
+        working-directory: lang/py
+        run: ./build.sh interop-data-generate
+
+      - name: Generate Interop Data
+        run: ./build.sh interop-data-generate
+
+      - name: Run Interop Tests
+        run: npm install && ./build.sh interop-data-test
diff --git a/.github/workflows/test-lang-perl-ARM.yml b/.github/workflows/test-lang-perl-ARM.yml
new file mode 100644
index 000000000..a7d3576cb
--- /dev/null
+++ b/.github/workflows/test-lang-perl-ARM.yml
@@ -0,0 +1,144 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test Perl on ARM'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-perl.yml
+    - lang/perl/**
+
+defaults:
+  run:
+    working-directory: lang/perl
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  test:
+    name: Perl ${{ matrix.perl }} Tests
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        perl:
+        - '5.32'
+    steps:
+      - uses: actions/checkout@v4
+
+      - uses: shogo82148/actions-setup-perl@v1
+        with:
+          perl-version: ${{ matrix.perl }}
+
+      - name: Install Dependencies
+        run: |
+          cpanm --mirror https://www.cpan.org/ install Compress::Zstd \
+                                                       Encode \
+                                                       Error::Simple \
+                                                       JSON::MaybeXS \
+                                                       Module::Install \
+                                                       Module::Install::ReadmeFromPod \
+                                                       Object::Tiny \
+                                                       Perl::Critic \
+                                                       Regexp::Common \
+                                                       Test::Exception \
+                                                       Test::More \
+                                                       Test::Pod \
+                                                       Try::Tiny
+
+      - name: Lint
+        run: ./build.sh lint
+
+      - name: Test
+        run: ./build.sh test
+
+  interop:
+    name: Perl ${{ matrix.perl }} Interop
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        perl:
+        - '5.32'
+    steps:
+      - uses: actions/checkout@v4
+
+      - uses: shogo82148/actions-setup-perl@v1
+        with:
+          perl-version: ${{ matrix.perl }}
+
+      - name: Install Dependencies
+        run: |
+          sudo apt-get -qqy install --no-install-recommends libjansson-dev \
+                                                            libsnappy-dev
+          cpanm --mirror https://www.cpan.org/ install CPAN::Uploader \
+                                                       Compress::Zstd \
+                                                       Encode \
+                                                       Error::Simple \
+                                                       JSON::MaybeXS \
+                                                       Module::Install \
+                                                       Module::Install::ReadmeFromPod \
+                                                       Object::Tiny \
+                                                       Perl::Critic \
+                                                       Regexp::Common \
+                                                       Test::Exception \
+                                                       Test::More \
+                                                       Test::Pod \
+                                                       Try::Tiny
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: Install Java Avro for Interop Test
+        working-directory: .
+        run: mvn -B install -PskipQuality
+
+      - name: Create Interop Data Directory
+        working-directory: .
+        run: mkdir -p build/interop/data
+
+      - name: Generate Interop Resources
+        working-directory: lang/java/avro
+        run: mvn -B -P interop-data-generate generate-resources
+
+      - name: Generate Interop Data
+        run: ./build.sh interop-data-generate
+
+      - name: Run Interop Tests
+        run: ./build.sh interop-data-test
diff --git a/.github/workflows/test-lang-perl.yml b/.github/workflows/test-lang-perl.yml
new file mode 100644
index 000000000..44e4105a2
--- /dev/null
+++ b/.github/workflows/test-lang-perl.yml
@@ -0,0 +1,143 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test Perl'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-perl.yml
+    - lang/perl/**
+
+defaults:
+  run:
+    working-directory: lang/perl
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  test:
+    name: Perl ${{ matrix.perl }} Tests
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        perl:
+        - '5.32'
+    steps:
+      - uses: actions/checkout@v4
+
+      - uses: shogo82148/actions-setup-perl@v1
+        with:
+          perl-version: ${{ matrix.perl }}
+
+      - name: Install Dependencies
+        run: |
+          cpanm --mirror https://www.cpan.org/ install Compress::Zstd \
+                                                       Encode \
+                                                       Error::Simple \
+                                                       JSON::MaybeXS \
+                                                       Module::Install \
+                                                       Module::Install::ReadmeFromPod \
+                                                       Object::Tiny \
+                                                       Perl::Critic \
+                                                       Regexp::Common \
+                                                       Test::Exception \
+                                                       Test::More \
+                                                       Test::Pod \
+                                                       Try::Tiny
+
+      - name: Lint
+        run: ./build.sh lint
+
+      - name: Test
+        run: ./build.sh test
+
+  interop:
+    name: Perl ${{ matrix.perl }} Interop
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        perl:
+        - '5.32'
+    steps:
+      - uses: actions/checkout@v4
+
+      - uses: shogo82148/actions-setup-perl@v1
+        with:
+          perl-version: ${{ matrix.perl }}
+
+      - name: Install Dependencies
+        run: |
+          sudo apt-get -qqy install --no-install-recommends libjansson-dev \
+                                                            libsnappy-dev
+          cpanm --mirror https://www.cpan.org/ install CPAN::Uploader \
+                                                       Compress::Zstd \
+                                                       Encode \
+                                                       Error::Simple \
+                                                       JSON::MaybeXS \
+                                                       Module::Install \
+                                                       Module::Install::ReadmeFromPod \
+                                                       Object::Tiny \
+                                                       Regexp::Common \
+                                                       Test::Exception \
+                                                       Test::More \
+                                                       Test::Pod \
+                                                       Try::Tiny
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: Install Java Avro for Interop Test
+        working-directory: .
+        run: mvn -B install -PskipQuality
+
+      - name: Create Interop Data Directory
+        working-directory: .
+        run: mkdir -p build/interop/data
+
+      - name: Generate Interop Resources
+        working-directory: lang/java/avro
+        run: mvn -B -P interop-data-generate generate-resources
+
+      - name: Generate Interop Data
+        run: ./build.sh interop-data-generate
+
+      - name: Run Interop Tests
+        run: ./build.sh interop-data-test
diff --git a/.github/workflows/test-lang-php-ARM.yml b/.github/workflows/test-lang-php-ARM.yml
new file mode 100644
index 000000000..85c2aa349
--- /dev/null
+++ b/.github/workflows/test-lang-php-ARM.yml
@@ -0,0 +1,58 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test PHP on ARM'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-php.yml
+    - lang/php/**
+
+defaults:
+  run:
+    working-directory: lang/php
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  arm64:
+    name: PHP on Linux ARM64
+    runs-on: ["self-hosted", "asf-arm"]
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Install dependencies
+        run: |
+          sudo apt-get update -q
+          sudo apt-get install -q -y wget php php-xml php-mbstring php-curl php-gmp php-bz2 unzip libtidy-dev libpq5
+          php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
+          php -r "if (hash_file('sha384', 'composer-setup.php') === file_get_contents('https://composer.github.io/installer.sig')) { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
+          php composer-setup.php --version=2.2.5
+          php -r "unlink('composer-setup.php');"
+          sudo mv composer.phar /usr/local/bin/composer
+
+      - name: Build
+        run: |
+          set -x
+          composer --version
+          ./build.sh clean test
diff --git a/.github/workflows/test-lang-php.yml b/.github/workflows/test-lang-php.yml
new file mode 100644
index 000000000..b6329f04d
--- /dev/null
+++ b/.github/workflows/test-lang-php.yml
@@ -0,0 +1,164 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test PHP'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-php.yml
+    - lang/php/**
+
+defaults:
+  run:
+    working-directory: lang/php
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  test:
+    name: PHP ${{ matrix.php }} Test
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        php:
+        - '7.3'
+        - '7.4'
+        - '8.0'
+
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Setup PHP
+        uses: shivammathur/setup-php@v2
+        with:
+          php-version: ${{ matrix.php }}
+          tools: composer:2.2.5
+
+      - name: Get Composer Cache Directory
+        id: composer-cache
+        run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
+
+      - uses: actions/cache@v4
+        with:
+          path: ${{ steps.composer-cache.outputs.dir }}
+          key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+          restore-keys: |
+            ${{ runner.os }}-composer-
+
+      - name: Lint
+        run: ./build.sh lint
+
+      - name: Test
+        run: ./build.sh test
+
+  interop:
+    name: PHP ${{ matrix.php }} Interop
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        php:
+        - '7.3'
+        - '7.4'
+        - '8.0'
+
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Setup PHP
+        uses: shivammathur/setup-php@v2
+        with:
+          php-version: ${{ matrix.php }}
+          tools: composer:2.2.5
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: Install Java Avro for Interop Test
+        working-directory: .
+        run: mvn -B install -PskipQuality
+
+      - name: Create Interop Data Directory
+        working-directory: .
+        run: mkdir -p build/interop/data
+
+      - name: Generate Interop Resources
+        working-directory: lang/java/avro
+        run: mvn -B -P interop-data-generate generate-resources
+
+      - uses: actions/checkout@v4
+        with:
+          repository: kjdev/php-ext-zstd
+          path: lang/php/php-ext-zstd
+
+      - name: Install php-ext-zstd
+        working-directory: lang/php/php-ext-zstd
+        run: |
+          sudo apt-get install -qqy --no-install-recommends libzstd-dev libbz2-dev
+          phpize
+          ./configure --with-libzstd
+          make
+          sudo make install
+          echo "extension=zstd.so" | sudo tee -a /etc/php/${{ matrix.php }}/cli/conf.d/10-zstd.ini
+          php -m
+
+      - uses: actions/checkout@v4
+        with:
+          repository: kjdev/php-ext-snappy
+          path: lang/php/php-ext-snappy
+          submodules: true
+
+
+      - name: Install php-ext-snappy
+        working-directory: lang/php/php-ext-snappy
+        run: |
+          sudo apt-get install -qqy --no-install-recommends libsnappy-dev
+          phpize
+          ./configure --with-libsnappy
+          make
+          sudo make install
+          echo "extension=snappy.so" | sudo tee -a /etc/php/${{ matrix.php }}/cli/conf.d/10-snappy.ini
+          php -m
+
+      - name: Generate Interop Data
+        run: ./build.sh interop-data-generate
+
+      - name: Run Interop Tests
+        run: ./build.sh test-interop
diff --git a/.github/workflows/test-lang-py-ARM.yml b/.github/workflows/test-lang-py-ARM.yml
new file mode 100644
index 000000000..874c7c35f
--- /dev/null
+++ b/.github/workflows/test-lang-py-ARM.yml
@@ -0,0 +1,53 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test Python on ARM'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-py.yml
+    - lang/py/**
+
+defaults:
+  run:
+    working-directory: lang/py
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  arm64:
+    name: Python on Linux ARM64
+    runs-on: ["self-hosted", "asf-arm"]
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Install dependencies
+        run: |
+          sudo apt-get update -q
+          sudo apt-get install -q -y python3 python3-dev python3-pip git libbz2-dev libjansson-dev liblzma-dev libsnappy-dev libzstd-dev
+          python3 -m pip install --upgrade pip setuptools tox
+
+      - name: Build
+        run: |
+          set -x
+          ./build.sh clean test
diff --git a/.github/workflows/test-lang-py.yml b/.github/workflows/test-lang-py.yml
new file mode 100644
index 000000000..83bd1f83f
--- /dev/null
+++ b/.github/workflows/test-lang-py.yml
@@ -0,0 +1,158 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test Python'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-py.yml
+    - lang/py/**
+
+defaults:
+  run:
+    working-directory: lang/py
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  test:
+    name: Python ${{ matrix.python }} Tests
+    runs-on: ubuntu-20.04
+    strategy:
+      fail-fast: false
+      matrix:
+        python:
+        - '3.12'
+        - '3.11'
+        - '3.10'
+        - '3.9'
+        - '3.8'
+        - '3.7'
+        - 'pypy-3.9'
+        - 'pypy-3.10'
+
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Setup Python
+        uses: actions/setup-python@v5
+        with:
+          python-version: ${{ matrix.python }}
+
+      - name: Apt Install Compression Libs
+        run: |
+          sudo apt-get install -qqy --no-install-recommends libbz2-dev \
+                                                            libjansson-dev \
+                                                            liblzma-dev \
+                                                            libsnappy-dev \
+                                                            libzstd-dev
+
+      - name: Install Dependencies
+        run: |
+          python3 -m pip install --upgrade pip setuptools tox
+
+      - name: Lint
+        if: ${{ matrix.python == '3.10' }}
+        run: python3 -m tox -e lint
+
+      - name: Typechecks
+        if: ${{ matrix.python == '3.10' }}
+        run: python3 -m tox -e typechecks
+
+      - name: Test
+        run: python3 -m tox -e py
+
+  interop:
+    name: Python ${{ matrix.python }} Interop
+    runs-on: ubuntu-20.04
+    strategy:
+      fail-fast: false
+      matrix:
+        python:
+        - '3.11'
+        - '3.10'
+        - '3.9'
+        - '3.8'
+        - '3.7'
+        - 'pypy-3.9'
+        - 'pypy-3.10'
+
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Setup Python
+        uses: actions/setup-python@v5
+        with:
+          python-version: ${{ matrix.python }}
+
+      - name: Apt Install Compression Libs
+        run: |
+          sudo apt-get install -qqy --no-install-recommends libbz2-dev \
+                                                            libjansson-dev \
+                                                            liblzma-dev \
+                                                            libsnappy-dev \
+                                                            libzstd-dev
+
+      - name: Install Dependencies
+        run: |
+          python3 -m pip install --upgrade pip setuptools tox
+          python3 -m pip install python-snappy zstandard
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: Install Java Avro for Interop Test
+        working-directory: .
+        run: mvn -B install -PskipQuality
+
+      - name: Create Interop Data Directory
+        working-directory: .
+        run: mkdir -p build/interop/data
+
+      - name: Generate Interop Resources
+        working-directory: lang/java/avro
+        run: mvn -B -P interop-data-generate generate-resources
+
+      - name: Generate Interop Data
+        run: ./build.sh interop-data-generate
+
+      - name: Run Interop Tests
+        run: ./build.sh interop-data-test
diff --git a/.github/workflows/test-lang-ruby-ARM.yml b/.github/workflows/test-lang-ruby-ARM.yml
new file mode 100644
index 000000000..c1ce73878
--- /dev/null
+++ b/.github/workflows/test-lang-ruby-ARM.yml
@@ -0,0 +1,60 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test Ruby on ARM'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-ruby.yml
+    - lang/ruby/**
+
+defaults:
+  run:
+    working-directory: lang/ruby
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  arm64:
+    name: Ruby on Linux ARM64
+    runs-on: ["self-hosted", "asf-arm"]
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Cache gems
+        uses: actions/cache@v4
+        with:
+          path: .gem
+          key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
+          restore-keys: |
+            ${{ runner.os }}-gems-
+
+      - name: Install dependencies
+        run: |
+          sudo apt-get update -q
+          sudo apt-get install -q -y ruby-dev bundler libsnappy-dev libyaml-dev
+
+      - name: Build
+        run: |
+            set -x
+            ./build.sh clean test
diff --git a/.github/workflows/test-lang-ruby.yml b/.github/workflows/test-lang-ruby.yml
new file mode 100644
index 000000000..ac85605f8
--- /dev/null
+++ b/.github/workflows/test-lang-ruby.yml
@@ -0,0 +1,159 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: 'Test Ruby'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+    - .github/workflows/test-lang-ruby.yml
+    - lang/ruby/**
+
+defaults:
+  run:
+    working-directory: lang/ruby
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  test:
+    name: Ruby ${{ matrix.ruby }} Tests
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        ruby:
+        - '2.7'
+        - '3.0'
+        - '3.1'
+        - '3.2'
+        - '3.3'
+    steps:
+      - uses: actions/checkout@v4
+
+      - uses: ruby/setup-ruby@v1
+        with:
+          ruby-version: ${{ matrix.ruby }}
+
+      - name: Install Dependencies
+        run: sudo apt-get install -qqy libsnappy-dev
+
+      - uses: actions/cache@v4
+        with:
+          path: .gem
+          key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
+          restore-keys: |
+            ${{ runner.os }}-gems-
+
+      - name: Configure Bundler to Use Cache
+        run: bundle config path .gem
+
+      - name: Lint
+        run: |
+          PATH=$PWD/.gem/bin:$PATH
+          ./build.sh lint
+
+      - name: Test
+        run: |
+          PATH=$PWD/.gem/bin:$PATH
+          ./build.sh test
+
+  interop:
+    name: Ruby ${{ matrix.ruby }} Interop
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        ruby:
+        - '2.7'
+        - '3.0'
+        - '3.1'
+        - '3.2'
+        - '3.3'
+    steps:
+      - uses: actions/checkout@v4
+
+      - uses: ruby/setup-ruby@v1
+        with:
+          ruby-version: ${{ matrix.ruby }}
+
+      - name: Install Dependencies
+        run: sudo apt-get install -qqy libsnappy-dev
+
+      - uses: actions/cache@v4
+        with:
+          path: .gem
+          key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
+          restore-keys: |
+            ${{ runner.os }}-gems-
+
+      - name: Configure Bundler to Use Cache
+        run: bundle config path .gem
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: Install Java Avro for Interop Test
+        working-directory: .
+        run: mvn -B install -PskipQuality
+
+      - name: Create Interop Data Directory
+        working-directory: .
+        run: mkdir -p build/interop/data
+
+      - name: Generate Interop Resources
+        working-directory: lang/java/avro
+        run: mvn -B -P interop-data-generate generate-resources
+
+      - name: Bundle Install
+        run: |
+          export GEM_HOME="$PWD/.gem/"
+          export PATH="$GEM_HOME/bin:$PATH"
+          bundle install
+
+      - name: Generate Interop Data
+        run: |
+          export GEM_HOME="$PWD/.gem/"
+          export PATH="$GEM_HOME/bin:$PATH"
+          bundle exec rake --trace generate_interop
+
+      - name: Run Interop Tests
+        run: |
+          export GEM_HOME="$PWD/.gem/"
+          export PATH="$GEM_HOME/bin:$PATH"
+          bundle exec rake --trace interop
diff --git a/.github/workflows/test-lang-rust-audit.yml b/.github/workflows/test-lang-rust-audit.yml
new file mode 100644
index 000000000..d4bbd4b69
--- /dev/null
+++ b/.github/workflows/test-lang-rust-audit.yml
@@ -0,0 +1,73 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: Rust Security Audit
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+    paths:
+      - .github/workflows/test-lang-rust-audit.yml
+      - lang/rust/**/Cargo.toml
+      - lang/rust/Cargo.lock
+      - lang/rust/deny.toml
+  pull_request:
+    branches: [ main ]
+    paths:
+      - .github/workflows/test-lang-rust-audit.yml
+      - lang/rust/**/Cargo.toml
+      - lang/rust/Cargo.lock
+      - lang/rust/deny.toml
+
+permissions:
+  contents: read
+
+env:
+  RUSTFLAGS: -Dwarnings
+
+defaults:
+  run:
+    working-directory: lang/rust
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  audit:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+      - name: Dependency Review
+        if: github.event_name == 'pull_request'
+        uses: actions/dependency-review-action@v4
+      - name: Install Cargo Audit
+        run: cargo install cargo-audit
+      - name: Audit
+        run: cargo audit
+
+  deny:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+      - name: Install Cargo Deny
+        run: cargo install cargo-deny
+      - name: Check
+        run: cargo deny check
+      
\ No newline at end of file
diff --git a/.github/workflows/test-lang-rust-ci-ARM.yml b/.github/workflows/test-lang-rust-ci-ARM.yml
new file mode 100644
index 000000000..3ac8e0bfd
--- /dev/null
+++ b/.github/workflows/test-lang-rust-ci-ARM.yml
@@ -0,0 +1,78 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: 'Rust Continuous Integration on ARM'
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+      - .github/workflows/test-lang-rust-ci.yml
+      - lang/rust/**
+
+permissions:
+  contents: read
+
+env:
+  RUSTFLAGS: -Dwarnings
+
+defaults:
+  run:
+    working-directory: lang/rust
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  arm64:
+    name: Rust on Linux ARM64
+    runs-on: ["self-hosted", "asf-arm"]
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Cache Cargo
+        uses: actions/cache@v4
+        with:
+          # these represent dependencies downloaded by cargo
+          # and thus do not depend on the OS, arch nor rust version.
+          path: ~/.cargo
+          key: ${{ runner.os }}-target-arm64-${{ hashFiles('**/Cargo.lock') }}
+
+      - name: Cache Rust dependencies
+        uses: actions/cache@v4
+        with:
+          # these represent compiled steps of both dependencies and avro
+          # and thus are specific for a particular OS, arch and rust version.
+          path: lang/rust/target
+          key: ${{ runner.os }}-target-cache1-stable-
+
+      - name: Rust Toolchain
+        uses: dtolnay/rust-toolchain@nightly
+        with:
+          toolchain: stable
+          components: rustfmt
+          targets: x86_64-unknown-linux-gnu
+
+      - name: Build
+        run: |
+          set -x
+          ./build.sh test
diff --git a/.github/workflows/test-lang-rust-ci.yml b/.github/workflows/test-lang-rust-ci.yml
new file mode 100644
index 000000000..025dca1a8
--- /dev/null
+++ b/.github/workflows/test-lang-rust-ci.yml
@@ -0,0 +1,254 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: Rust Continuous Integration
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+      - .github/workflows/test-lang-rust-ci.yml
+      - lang/rust/**
+
+permissions:
+  contents: read
+
+env:
+  RUSTFLAGS: -Dwarnings
+
+defaults:
+  run:
+    working-directory: lang/rust
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  ci:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        rust:
+          - 'stable'
+          - 'beta'
+          - 'nightly'
+          - '1.73.0'  # MSRV
+        target:
+          - x86_64-unknown-linux-gnu
+          - wasm32-unknown-unknown
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Cache Cargo
+        uses: actions/cache@v4
+        with:
+          # these represent dependencies downloaded by cargo
+          # and thus do not depend on the OS, arch nor rust version.
+          path: ~/.cargo
+          key: ${{ runner.os }}-target-cache1-${{ hashFiles('**/Cargo.lock') }}
+      - name: Cache Rust dependencies
+        uses: actions/cache@v4
+        with:
+          # these represent compiled steps of both dependencies and avro
+          # and thus are specific for a particular OS, arch and rust version.
+          path: lang/rust/target
+          key: ${{ runner.os }}-target-cache1-${{ matrix.rust }}-${{ hashFiles('**/Cargo.lock') }}
+
+      - name: Rust Toolchain
+        uses: dtolnay/rust-toolchain@nightly
+        with:
+          toolchain: ${{ matrix.rust }}
+          components: rustfmt
+          targets: ${{ matrix.target }}
+
+      - name: Cache cargo-rdme
+        if: matrix.rust == 'stable' && matrix.target == 'x86_64-unknown-linux-gnu'
+        uses: actions/cache@v4
+        with:
+          path: ~/.cargo-${{ matrix.rust }}/cargo-rdme
+          key: cargo-rdme-
+
+      # Check if the doc cumment in avro/src/lib.rs and avro/README.md are in sync.
+      - name: Run cargo-rdme
+        # The result is environment independent so one test pattern is enough.
+        if: matrix.rust == 'stable' && matrix.target == 'x86_64-unknown-linux-gnu'
+        run: |
+          cargo install --root ~/.cargo-${{ matrix.rust }}/cargo-rdme --locked cargo-rdme
+          export PATH=$PATH:~/.cargo-${{ matrix.rust }}/cargo-rdme/bin
+          cargo rdme --check
+
+      - name: Rust Format
+        if: matrix.target != 'wasm32-unknown-unknown'
+        run: cargo fmt --all -- --check
+
+      - name: Rust Build
+        run: cargo build --all-features --all-targets
+
+      - name: Rust Test
+        if: matrix.target != 'wasm32-unknown-unknown'
+        run: cargo test --all-features --target ${{ matrix.target }}
+
+      - name: Rust Test AVRO-3549
+        if: matrix.target != 'wasm32-unknown-unknown'
+        run: cargo test --target ${{ matrix.target }} test_avro_3549_read_not_enabled_codec
+
+      # because of https://github.com/rust-lang/cargo/issues/6669
+      - name: Rust Test docs
+        if: matrix.target != 'wasm32-unknown-unknown'
+        run: cargo test --doc
+
+  interop:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Rust Toolchain
+        uses: dtolnay/rust-toolchain@nightly
+        with:
+          toolchain: stable
+
+      - name: Cache Cargo
+        uses: actions/cache@v4
+        with:
+          # these represent dependencies downloaded by cargo
+          # and thus do not depend on the OS, arch nor rust version.
+          path: ~/.cargo
+          key: ${{ runner.os }}-target-cache1-${{ hashFiles('**/Cargo.lock') }}
+      - name: Cache Rust dependencies
+        uses: actions/cache@v4
+        with:
+          # these represent compiled steps of both dependencies and avro
+          # and thus are specific for a particular OS, arch and rust version.
+          path: lang/rust/target
+          key: ${{ runner.os }}-target-cache1-stable-${{ hashFiles('**/Cargo.lock') }}
+
+      - name: Cache Local Maven Repository
+        uses: actions/cache@v4
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+
+      - name: 'Setup Temurin JDK 8, 11, 17 & 21'
+        uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
+        with:
+          distribution: 'temurin'
+          java-version: |
+            8
+            11
+            17
+            21
+
+      - name: 'Setup Maven 3.9.6'
+        uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
+        with:
+          maven-version: 3.9.6
+
+      - name: Install Java Avro for Interop Test
+        working-directory: .
+        run: mvn -B install -PskipQuality
+
+      - name: Create Interop Data Directory
+        working-directory: .
+        run: mkdir -p build/interop/data
+
+      - name: Generate Interop Resources
+        working-directory: lang/java/avro
+        run: mvn -B -P interop-data-generate generate-resources
+
+      - name: Generate interop data
+        run: ./build.sh interop-data-generate
+
+      - name: Rust reads interop files created by Java and Rust
+        run: ./build.sh interop-data-test
+
+      - uses: shogo82148/actions-setup-perl@v1
+        with:
+          perl-version: 5.32
+
+      - name: Install Dependencies
+        run: |
+          sudo apt-get -qqy install --no-install-recommends libcompress-raw-zlib-perl \
+                                                            libcpan-uploader-perl \
+                                                            libencode-perl \
+                                                            libio-string-perl \
+                                                            libjansson-dev \
+                                                            libjson-xs-perl \
+                                                            libmodule-install-perl \
+                                                            libmodule-install-readmefrompod-perl \
+                                                            libobject-tiny-perl \
+                                                            libsnappy-dev \
+                                                            libtest-exception-perl \
+                                                            libtest-pod-perl
+          cpanm --mirror https://www.cpan.org/ install Compress::Zstd \
+                                                       Error::Simple \
+                                                       Module::Install::Repository \
+                                                       Object::Tiny \
+                                                       Regexp::Common \
+                                                       Try::Tiny \
+                                                       inc::Module::Install
+
+
+      - name: Perl reads interop files created by Java and Rust
+        working-directory: lang/perl
+        run: ./build.sh interop-data-test
+
+  web-assembly:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+
+      - name: Rust Toolchain
+        uses: dtolnay/rust-toolchain@nightly
+        with:
+          toolchain: stable
+          targets: wasm32-unknown-unknown
+
+      - name: Cache Cargo
+        uses: actions/cache@v4
+        with:
+          # these represent dependencies downloaded by cargo
+          # and thus do not depend on the OS, arch nor rust version.
+          path: ~/.cargo
+          key: ${{ runner.os }}-target-cache1-${{ hashFiles('**/Cargo.lock') }}
+
+      - name: Cache Rust dependencies
+        uses: actions/cache@v4
+        with:
+          # these represent compiled steps of both dependencies and avro
+          # and thus are specific for a particular OS, arch and rust version.
+          path: lang/rust/target
+          key: ${{ runner.os }}-target-cache1-stable-${{ hashFiles('**/Cargo.lock') }}
+
+      - name: Install wasm-pack
+        run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
+
+      - name: Build the Web Assembly demo app
+        run: wasm-pack build wasm-demo
+
+      - name: Test the Web Assembly demo app
+        run: RUST_BACKTRACE=1 wasm-pack test --headless --firefox wasm-demo
diff --git a/.github/workflows/test-lang-rust-clippy.yml b/.github/workflows/test-lang-rust-clippy.yml
new file mode 100644
index 000000000..e7e0ba854
--- /dev/null
+++ b/.github/workflows/test-lang-rust-clippy.yml
@@ -0,0 +1,57 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: Rust Clippy Check
+on:
+  workflow_dispatch:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+    paths:
+      - .github/workflows/test-lang-rust-clippy.yml
+      - lang/rust/**
+
+permissions:
+  contents: read
+
+env:
+  RUSTFLAGS: -Dwarnings
+
+defaults:
+  run:
+    working-directory: lang/rust
+
+concurrency:
+  group: ${{ github.workflow }}-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  clippy_check:
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        rust:
+          - 'stable'
+          - '1.73.0'  # MSRV
+    steps:
+      - uses: actions/checkout@v4
+      - uses: dtolnay/rust-toolchain@nightly
+        with:
+          toolchain: ${{ matrix.rust }}
+          components: clippy
+      - run: cargo clippy --all-features --all-targets -- -Dclippy::all -Dunused_imports
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..437a035f0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,32 @@
+*.iml
+*.ipr
+*.iws
+*.swp
+*~
+.idea/
+.project
+.settings
+.classpath
+target
+*.pyc
+*.egg-info
+.svn
+/build
+test-output
+/dist
+/lang/java/compiler/nbactions.xml
+/lang/java/compiler/nb-configuration.xml
+/lang/java/compiler/nbproject/
+**/.vscode/**/*
+.vs/
+.DS_Store
+.factorypath
+.mypy_cache
+.python-version
+.java-version
+.coverage
+vendor
+composer.lock
+.phpunit.result.cache
+.mvn/jvm.config # Maven JVM settings
+**/*.run.xml    # Intellij IDEA Run configurations
diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml
new file mode 100644
index 000000000..e2e84018d
--- /dev/null
+++ b/.mvn/extensions.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       https://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
+    <extension>
+        <groupId>org.apache.maven.extensions</groupId>
+        <artifactId>maven-build-cache-extension</artifactId>
+        <version>1.0.1</version>
+    </extension>
+</extensions>
diff --git a/.yamllint.yml b/.yamllint.yml
new file mode 100644
index 000000000..baad25337
--- /dev/null
+++ b/.yamllint.yml
@@ -0,0 +1,26 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+extends: default
+
+rules:
+  # Change line length from error to warning
+  line-length:
+    max: 80
+    level: warning
+
+  # Disabling the document-start error messages
+  document-start:
+    present: false
diff --git a/BUILD.md b/BUILD.md
new file mode 100644
index 000000000..2c3a19289
--- /dev/null
+++ b/BUILD.md
@@ -0,0 +1,94 @@
+# Apache Avro Build Instructions
+
+## Requirements
+
+The following packages must be installed before Avro can be built:
+
+ - Java: 11, 17 and 21 with the appropriate toolchain config, Maven 3.9.6 or better, protobuf-compile
+ - PHP: php8, phpunit, php8-gmp
+ - Python 3: 3.7 or greater, tox (tox will install other dependencies as needed)
+ - C: gcc, cmake, asciidoc, source-highlight, Jansson, pkg-config
+ - C++: cmake 3.7.2 or greater, g++, flex, bison, libboost-dev
+ - C#: .NET Core 2.2 SDK
+ - JavaScript: Node 12.x+, nodejs, npm
+ - Ruby: Ruby 2.7 or greater, ruby-dev, gem, bundler, snappy
+ - Perl: Perl 5.24.1 or greater, gmake, Module::Install,
+   Module::Install::ReadmeFromPod, Module::Install::Repository,
+   Math::BigInt, JSON::MaybeXS, Try::Tiny, Regexp::Common, Encode,
+   Object::Tiny, Compress::ZLib, Error::Simple, Test::More,
+   Test::Exception, Test::Pod
+ - Rust: rustc and Cargo 1.73.0 or greater
+ - Apache Ant 1.7
+ - md5sum, sha1sum, used by top-level dist target
+
+## Using docker
+
+It can be simpler to use a Docker image with all of the requirements already
+installed. If you have Docker installed on your host machine, you can build
+inside a container by running:
+
+```bash
+./build.sh docker
+docker@539f6535c9db:~/avro$ cd lang/java/
+docker@539f6535c9db:~/avro/lang/java$ ./build.sh test
+[INFO] Scanning for projects...
+```
+
+When this completes you will be in a shell running in the
+container. Building the image the first time may take a while (20
+minutes or more) since dependencies must be downloaded and
+installed. However subsequent invocations are much faster as the
+cached image is used.
+
+The working directory in the container is mounted from your host. This
+allows you to access the files in your Avro development tree from the
+Docker container.
+
+There are some additional `DOCKER_` environment variables described in 
+[build.sh](./build.sh) that can be used to interact with the image using
+the build script. Some examples:
+
+```bash
+# Rebuild the docker image without using the build cache.
+DOCKER_BUILD_XTRA_ARGS=--no-cache ./build.sh docker
+
+# Build a docker image with a specific tag (for an RC or poc, for example)
+DOCKER_IMAGE_NAME=avro-build:1.10.1-rc1 ./build.sh docker
+
+# Run a command and return.
+DOCKER_RUN_ENTRYPOINT="mvn --version" ./build.sh docker
+```
+
+## Developing inside a Container (Visual Studio Code Devcontainer)
+
+Requirement:
+ - [Visual Studio Code](https://code.visualstudio.com/)
+ - [Remote Development extension pack](https://aka.ms/vscode-remote/download/extension)
+ - Docker
+   - Windows: (Docker Desktop)[https://www.docker.com/products/docker-desktop]
+   - macOS: (Docker Desktop)[https://www.docker.com/products/docker-desktop]
+   - Linux: (Docker CE/EE)[https://docs.docker.com/install/#supported-platforms] and (Docker Compose)[https://docs.docker.com/compose/install]
+
+Useful links:
+ - (Developing inside a Container)[https://code.visualstudio.com/docs/remote/containers]
+ - (Going further with Dev Containers)[https://microsoft.github.io/code-with-engineering-playbook/developer-experience/going-further/]
+
+## Building
+
+Once the requirements are installed (or from the Docker container),
+build.sh can be used as follows:
+
+```
+./build.sh test # runs tests for all languages
+./build.sh dist # creates all release distribution files in dist/
+./build.sh clean # removes all generated artifacts
+```
+
+## Testing
+
+Testing is done with the same Docker container as mentioned in the building
+step. The difference is that it will do clean run of the full test suite:
+
+```bash
+./build.sh docker-test
+```
diff --git a/DIST_README.txt b/DIST_README.txt
new file mode 100644
index 000000000..9c68790ee
--- /dev/null
+++ b/DIST_README.txt
@@ -0,0 +1,14 @@
+Apache Avro Distribution 
+
+Avro is a data serialization system.
+
+This distribution contains the following files:
+
+  - avro-src-x.y.z.tar.gz contains the full source for Avro, including
+    all programming language implementations, documentation source, etc.
+
+  - avro-doc-x.y.z.tar.gz contains Avro's pre-built documentation.
+
+  - the c/, cpp/, csharp/, java/, js/, perl/, php/, py/, rust/ and ruby/
+    subdirectories contain pre-built, language-specific binaries,
+    bundles, etc. as conveniences.
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 000000000..42761f6f8
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,560 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        https://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       https://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+----------------------------------------------------------------------
+License for the Jansson C JSON parser used in the C implementation:
+
+Copyright (c) 2009-2011 Petri Lehtinen <pe...@digip.org>
+
+Some files include an additional copyright notice:
+* lang/c/jansson/src/pack_unpack.c
+  Copyright (c) 2011 Graeme Smecher <gr...@mail.mcgill.ca>
+* lang/c/jansson/test/suites/api/test_unpack.c
+  Copyright (c) 2011 Graeme Smecher <gr...@mail.mcgill.ca>
+* lang/c/jansson/src/memory.c
+  Copyright (c) 2011 Basile Starynkevitch  <ba...@starynkevitch.net>
+
+| Permission is hereby granted, free of charge, to any person obtaining a copy
+| of this software and associated documentation files (the "Software"), to deal
+| in the Software without restriction, including without limitation the rights
+| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+| copies of the Software, and to permit persons to whom the Software is
+| furnished to do so, subject to the following conditions:
+|
+| The above copyright notice and this permission notice shall be included in
+| all copies or substantial portions of the Software.
+|
+| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+| THE SOFTWARE.
+
+----------------------------------------------------------------------
+License for msinttypes.h and msstdint.h used in the C implementation:
+Source from:
+https://code.google.com/p/msinttypes/downloads/detail?name=msinttypes-r26.zip
+
+Copyright (c) 2006-2008 Alexander Chemeris
+
+| Redistribution and use in source and binary forms, with or without
+| modification, are permitted provided that the following conditions are met:
+|
+|   1. Redistributions of source code must retain the above copyright notice,
+|      this list of conditions and the following disclaimer.
+|
+|   2. Redistributions in binary form must reproduce the above copyright
+|      notice, this list of conditions and the following disclaimer in the
+|      documentation and/or other materials provided with the distribution.
+|
+|   3. The name of the author may be used to endorse or promote products
+|      derived from this software without specific prior written permission.
+|
+| THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+| WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+| MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+| EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+| PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+| OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+| WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+| OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+| ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+----------------------------------------------------------------------
+License for st.c and st.h used in the C implementation:
+
+| This is a public domain general purpose hash table package written by
+| Peter Moore @ UCB. 
+
+----------------------------------------------------------------------
+License for Dirent API for Microsoft Visual Studio used in the C implementation:
+Source from:
+http://www.softagalleria.net/download/dirent/dirent-1.11.zip
+
+Copyright (C) 2006 Toni Ronkko
+
+| Permission is hereby granted, free of charge, to any person obtaining
+| a copy of this software and associated documentation files (the
+| ``Software''), to deal in the Software without restriction, including
+| without limitation the rights to use, copy, modify, merge, publish,
+| distribute, sublicense, and/or sell copies of the Software, and to
+| permit persons to whom the Software is furnished to do so, subject to
+| the following conditions:
+|
+| The above copyright notice and this permission notice shall be included
+| in all copies or substantial portions of the Software.
+|
+| THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
+| OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+| IN NO EVENT SHALL TONI RONKKO BE LIABLE FOR ANY CLAIM, DAMAGES OR
+| OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+| ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+| OTHER DEALINGS IN THE SOFTWARE.
+
+----------------------------------------------------------------------
+License for NUnit binary included with the C# implementation:
+File: nunit.framework.dll
+
+| NUnit License
+|
+| Copyright © 2002-2015 Charlie Poole
+| Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov
+| Copyright © 2000-2002 Philip A. Craig
+|
+| This software is provided 'as-is', without any express or implied warranty. In
+| no event will the authors be held liable for any damages arising from the use
+| of this software.
+|
+| Permission is granted to anyone to use this software for any purpose, including
+| commercial applications, and to alter it and redistribute it freely, subject to
+| the following restrictions:
+|
+| The origin of this software must not be misrepresented; you must not claim that
+| you wrote the original software. If you use this software in a product, an
+| acknowledgment (see the following) in the product documentation is required. 
+|
+| Portions Copyright © 2002-2012 Charlie Poole or Copyright © 2002-2004 James W.
+| Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright © 2000-2002 Philip A.
+| Craig 
+|
+| Altered source versions must be plainly marked as such, and must not be
+| misrepresented as being the original software. 
+|
+| This notice may not be removed or altered from any source distribution.
+| License Note
+|
+| This license is based on the open source zlib/libpng license. The idea was to
+| keep the license as simple as possible to encourage use of NUnit in free and
+| commercial applications and libraries, but to keep the source code together and
+| to give credit to the NUnit contributors for their efforts. While this license
+| allows shipping NUnit in source and binary form, if shipping a NUnit variant is
+| the sole purpose of your product, please let us know.
+
+----------------------------------------------------------------------
+License for the Json.NET binary included with the C# implementation:
+File: Newtonsoft.Json.dll
+
+Copyright (c) 2007 James Newton-King
+
+| Permission is hereby granted, free of charge, to any person obtaining
+| a copy of this software and associated documentation files (the
+| "Software"), to deal in the Software without restriction, including
+| without limitation the rights to use, copy, modify, merge, publish,
+| distribute, sublicense, and/or sell copies of the Software, and to
+| permit persons to whom the Software is furnished to do so, subject to
+| the following conditions:
+|
+| The above copyright notice and this permission notice shall be
+| included in all copies or substantial portions of the Software.
+|
+| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+| NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+| LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+| OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+| WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+----------------------------------------------------------------------
+License for the Castle Core binary included with the C# implementation:
+File: Castle.Core.dll
+
+Copyright (c) 2004-2015 Castle Project
+
+License: Apache License version 2.0 (see above)
+URL: https://opensource.org/licenses/Apache-2.0
+
+----------------------------------------------------------------------
+License for the log4net binary included with the C# implementation:
+File: log4net.dll
+
+Copyright 2004-2015 The Apache Software Foundation.
+
+License: Apache License version 2.0 (see above)
+
+----------------------------------------------------------------------
+License for the m4 macros used by the C++ implementation:
+
+Files:
+* lang/c++/m4/m4_ax_boost_system.m4
+  Copyright (c) 2008 Thomas Porschberg <th...@randspringer.de>
+  Copyright (c) 2008 Michael Tindal
+  Copyright (c) 2008 Daniel Casimiro <da...@gmail.com>
+* lang/c++/m4/m4_ax_boost_asio.m4
+  Copyright (c) 2008 Thomas Porschberg <th...@randspringer.de>
+  Copyright (c) 2008 Pete Greenwell <pe...@mu.org>
+* lang/c++/m4/m4_ax_boost_filesystem.m4
+  Copyright (c) 2009 Thomas Porschberg <th...@randspringer.de>
+  Copyright (c) 2009 Michael Tindal
+  Copyright (c) 2009 Roman Rybalko <li...@romanr.info>
+* lang/c++/m4/m4_ax_boost_thread.m4
+  Copyright (c) 2009 Thomas Porschberg <th...@randspringer.de>
+  Copyright (c) 2009 Michael Tindal
+* lang/c++/m4/m4_ax_boost_regex.m4
+  Copyright (c) 2008 Thomas Porschberg <th...@randspringer.de>
+  Copyright (c) 2008 Michael Tindal
+* lang/c++/m4/m4_ax_boost_base.m4
+  Copyright (c) 2008 Thomas Porschberg <th...@randspringer.de>
+
+License text:
+| Copying and distribution of this file, with or without modification, are
+| permitted in any medium without royalty provided the copyright notice
+| and this notice are preserved. This file is offered as-is, without any
+| warranty.
+
+----------------------------------------------------------------------
+License for the AVRO_BOOT_NO_TRAIT code in the C++ implementation:
+File: lang/c++/api/Boost.hh
+
+| Boost Software License - Version 1.0 - August 17th, 2003
+|
+| Permission is hereby granted, free of charge, to any person or organization
+| obtaining a copy of the software and accompanying documentation covered by
+| this license (the "Software") to use, reproduce, display, distribute,
+| execute, and transmit the Software, and to prepare derivative works of the
+| Software, and to permit third-parties to whom the Software is furnished to
+| do so, all subject to the following:
+|
+| The copyright notices in the Software and this entire statement, including
+| the above license grant, this restriction and the following disclaimer,
+| must be included in all copies of the Software, in whole or in part, and
+| all derivative works of the Software, unless such copies or derivative
+| works are solely in the form of machine-executable object code generated by
+| a source language processor.
+|
+| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+| FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+| SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+| FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+| ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+| DEALINGS IN THE SOFTWARE.
+
+----------------------------------------------------------------------
+License for jquery.tipsy.js, tipsy.js, and tipsy.css used by the Java IPC implementation:
+
+Copyright (c) 2008 Jason Frame (jason@onehackoranother.com)
+
+| Permission is hereby granted, free of charge, to any person obtaining a copy
+| of this software and associated documentation files (the "Software"), to deal
+| in the Software without restriction, including without limitation the rights
+| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+| copies of the Software, and to permit persons to whom the Software is
+| furnished to do so, subject to the following conditions:
+| 
+| The above copyright notice and this permission notice shall be included in
+| all copies or substantial portions of the Software.
+| 
+| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+| THE SOFTWARE.
+
+----------------------------------------------------------------------
+License for protovis-r3.2.js used by the Java IPC implementation:
+
+Copyright (c) 2010, Stanford Visualization Group
+All rights reserved.
+
+| Redistribution and use in source and binary forms, with or without modification,
+| are permitted provided that the following conditions are met:
+| 
+|   * Redistributions of source code must retain the above copyright notice,
+|     this list of conditions and the following disclaimer.
+| 
+|   * Redistributions in binary form must reproduce the above copyright notice,
+|     this list of conditions and the following disclaimer in the documentation
+|     and/or other materials provided with the distribution.
+| 
+|   * Neither the name of Stanford University nor the names of its contributors
+|     may be used to endorse or promote products derived from this software
+|     without specific prior written permission.
+| 
+| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+| ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+----------------------------------------------------------------------
+License for g.Raphael 0.4.1 used by the Java IPC implementation:
+
+Copyright (c) 2009 Dmitry Baranovskiy (http://g.raphaeljs.com)
+Licensed under the MIT (https://www.opensource.org/licenses/mit-license.php) license.
+
+----------------------------------------------------------------------
+License for jQuery v1.4.2 used by the Java IPC implementation:
+
+Copyright 2010, John Resig
+Dual licensed under the MIT or GPL Version 2 licenses.
+https://jquery.org/license
+
+jQuery includes Sizzle.js
+https://sizzlejs.com/
+Copyright 2010, The Dojo Foundation
+Released under the MIT, BSD, and GPL Licenses.
+
+Both are included under the terms of the MIT license:
+
+| Permission is hereby granted, free of charge, to any person obtaining a copy
+| of this software and associated documentation files (the "Software"), to deal
+| in the Software without restriction, including without limitation the rights
+| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+| copies of the Software, and to permit persons to whom the Software is
+| furnished to do so, subject to the following conditions:
+|
+| The above copyright notice and this permission notice shall be included in
+| all copies or substantial portions of the Software.
+|
+| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+| THE SOFTWARE.
+
+----------------------------------------------------------------------
+License for portions of idl.jj in the Java compiler implementation:
+
+Portions of idl.jj were modeled after the example Java 1.5
+parser included with JavaCC. For those portions:
+
+Copyright (c) 2006, Sun Microsystems, Inc.
+All rights reserved.
+
+| Redistribution and use in source and binary forms, with or without
+| modification, are permitted provided that the following conditions are met:
+|
+|     * Redistributions of source code must retain the above copyright notice,
+|       this list of conditions and the following disclaimer.
+|     * Redistributions in binary form must reproduce the above copyright
+|       notice, this list of conditions and the following disclaimer in the
+|       documentation and/or other materials provided with the distribution.
+|     * Neither the name of the Sun Microsystems, Inc. nor the names of its
+|       contributors may be used to endorse or promote products derived from
+|       this software without specific prior written permission.
+|
+| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+| CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+| SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+| INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+| CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+| ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+| THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/NOTICE.txt b/NOTICE.txt
new file mode 100644
index 000000000..41fa8b76b
--- /dev/null
+++ b/NOTICE.txt
@@ -0,0 +1,56 @@
+Apache Avro
+Copyright 2010-2019 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (https://www.apache.org/).
+
+NUnit license acknowledgement:
+
+| Portions Copyright © 2002-2012 Charlie Poole or Copyright © 2002-2004 James
+| W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright © 2000-2002
+| Philip A. Craig 
+
+Based upon the representations of upstream licensors, it is understood that
+portions of the mapreduce API included in the Java implementation are licensed
+from various contributors under one or more contributor license agreements to
+Odiago, Inc. and were then contributed by Odiago to Apache Avro, which has now
+made them available under the Apache 2.0 license. The original file header text
+is:
+
+| Licensed to Odiago, Inc. under one or more contributor license
+| agreements.  See the NOTICE file distributed with this work for
+| additional information regarding copyright ownership.  Odiago, Inc.
+| licenses this file to you under the Apache License, Version 2.0
+| (the "License"); you may not use this file except in compliance
+| with the License.  You may obtain a copy of the License at
+|
+|     https://www.apache.org/licenses/LICENSE-2.0
+|
+| Unless required by applicable law or agreed to in writing, software
+| distributed under the License is distributed on an "AS IS" BASIS,
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+| implied.  See the License for the specific language governing
+| permissions and limitations under the License.
+
+The Odiago NOTICE at the time of the contribution:
+
+| This product includes software developed by Odiago, Inc.
+| (https://www.wibidata.com).
+
+Apache Log4Net includes the following in its NOTICE file:
+
+| Apache log4net
+| Copyright 2004-2015 The Apache Software Foundation
+|
+| This product includes software developed at
+| The Apache Software Foundation (https://www.apache.org/).
+
+csharp reflect serializers were contributed by Pitney Bowes Inc.
+
+| Copyright 2019 Pitney Bowes Inc.
+| Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
+| You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0.
+| Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, 
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+| See the License for the specific language governing permissions and limitations under the License.
+
diff --git a/README.md b/README.md
new file mode 100644
index 000000000..8167ed4ca
--- /dev/null
+++ b/README.md
@@ -0,0 +1,121 @@
+Apache Avro™<img align="right" height="160" src="doc/assets/icons/logo.svg" alt="Avro Logo"/>
+============
+
+### Current CI status (Github servers)
+[![test c][test c img]][test c]
+[![test c#][test c# img]][test c#]
+[![test c++][test c++ img]][test c++]
+[![test java][test java img]][test java]
+[![test javascript][test javascript img]][test javascript]
+[![test perl][test perl img]][test perl]
+[![test ruby][test ruby img]][test ruby]
+[![test python][test python img]][test python]
+[![test php][test php img]][test php]
+
+[![rust continuous integration][rust continuous integration img]][rust continuous integration]
+[![rust clippy check][rust clippy check img]][rust clippy check]
+[![rust security audit][rust security audit img]][rust security audit]
+
+### Current CI status (ARM based servers)
+[![test c ARM][test c ARM img]][test c ARM]
+[![test c# ARM][test c# ARM img]][test c# ARM]
+[![test c++ ARM][test c++ ARM img]][test c++ ARM]
+[![test java ARM][test java ARM img]][test java ARM]
+[![test javascript ARM][test javascript ARM img]][test javascript ARM]
+[![test perl ARM][test perl ARM img]][test perl ARM]
+[![test ruby ARM][test ruby ARM img]][test ruby ARM]
+[![test python ARM][test python ARM img]][test python ARM]
+[![test php ARM][test php ARM img]][test php ARM]
+[![rust continuous integration ARM][rust continuous integration ARM img]][rust continuous integration ARM]
+
+### Current CodeQL status
+[![codeql c#][codeql c# img]][codeql c#]
+[![codeql java][codeql java img]][codeql java]
+[![codeql javascript][codeql javascript img]][codeql javascript]
+[![codeql python][codeql python img]][codeql python]
+
+-----
+
+Apache Avro™ is a data serialization system.
+
+Learn more about Avro, please visit our website at:
+
+  https://avro.apache.org/
+
+To contribute to Avro, please read:
+
+  https://cwiki.apache.org/confluence/display/AVRO/How+To+Contribute
+
+<!-- Arranged this way for easy copy-pasting and editor string manipulation -->
+
+[test c]:          https://github.com/apache/avro/actions/workflows/test-lang-c.yml
+[test c#]:         https://github.com/apache/avro/actions/workflows/test-lang-csharp.yml
+[test c++]:        https://github.com/apache/avro/actions/workflows/test-lang-c++.yml
+[test java]:       https://github.com/apache/avro/actions/workflows/test-lang-java.yml
+[test javascript]: https://github.com/apache/avro/actions/workflows/test-lang-js.yml
+[test perl]:       https://github.com/apache/avro/actions/workflows/test-lang-perl.yml
+[test ruby]:       https://github.com/apache/avro/actions/workflows/test-lang-ruby.yml
+[test python]:     https://github.com/apache/avro/actions/workflows/test-lang-py.yml
+[test php]:        https://github.com/apache/avro/actions/workflows/test-lang-php.yml
+
+[test c ARM]:          https://github.com/apache/avro/actions/workflows/test-lang-c-ARM.yml
+[test c# ARM]:         https://github.com/apache/avro/actions/workflows/test-lang-csharp-ARM.yml
+[test c++ ARM]:        https://github.com/apache/avro/actions/workflows/test-lang-c++-ARM.yml
+[test java ARM]:       https://github.com/apache/avro/actions/workflows/test-lang-java-ARM.yml
+[test javascript ARM]: https://github.com/apache/avro/actions/workflows/test-lang-js-ARM.yml
+[test perl ARM]:       https://github.com/apache/avro/actions/workflows/test-lang-perl-ARM.yml
+[test ruby ARM]:       https://github.com/apache/avro/actions/workflows/test-lang-ruby-ARM.yml
+[test python ARM]:     https://github.com/apache/avro/actions/workflows/test-lang-py-ARM.yml
+[test php ARM]:        https://github.com/apache/avro/actions/workflows/test-lang-php-ARM.yml
+
+[rust continuous integration]: https://github.com/apache/avro/actions/workflows/test-lang-rust-ci.yml
+[rust continuous integration ARM]: https://github.com/apache/avro/actions/workflows/test-lang-rust-ci-ARM.yml
+[rust clippy check]:           https://github.com/apache/avro/actions/workflows/test-lang-rust-clippy.yml
+[rust security audit]:         https://github.com/apache/avro/actions/workflows/test-lang-rust-audit.yml
+
+[codeql c#]:         https://github.com/apache/avro/actions/workflows/codeql-csharp-analysis.yml
+[codeql java]:       https://github.com/apache/avro/actions/workflows/codeql-java-analysis.yml
+[codeql javascript]: https://github.com/apache/avro/actions/workflows/codeql-js-analysis.yml
+[codeql python]:     https://github.com/apache/avro/actions/workflows/codeql-py-analysis.yml
+
+[test c img]:          https://github.com/apache/avro/actions/workflows/test-lang-c.yml/badge.svg
+[test c# img]:         https://github.com/apache/avro/actions/workflows/test-lang-csharp.yml/badge.svg
+[test c++ img]:        https://github.com/apache/avro/actions/workflows/test-lang-c++.yml/badge.svg
+[test java img]:       https://github.com/apache/avro/actions/workflows/test-lang-java.yml/badge.svg
+[test javascript img]: https://github.com/apache/avro/actions/workflows/test-lang-js.yml/badge.svg
+[test perl img]:       https://github.com/apache/avro/actions/workflows/test-lang-perl.yml/badge.svg
+[test ruby img]:       https://github.com/apache/avro/actions/workflows/test-lang-ruby.yml/badge.svg
+[test python img]:     https://github.com/apache/avro/actions/workflows/test-lang-py.yml/badge.svg
+[test php img]:        https://github.com/apache/avro/actions/workflows/test-lang-php.yml/badge.svg
+
+[test c ARM img]:          https://github.com/apache/avro/actions/workflows/test-lang-c-ARM.yml/badge.svg
+[test c# ARM img]:         https://github.com/apache/avro/actions/workflows/test-lang-csharp-ARM.yml/badge.svg
+[test c++ ARM img]:        https://github.com/apache/avro/actions/workflows/test-lang-c++-ARM.yml/badge.svg
+[test java ARM img]:       https://github.com/apache/avro/actions/workflows/test-lang-java-ARM.yml/badge.svg
+[test javascript ARM img]: https://github.com/apache/avro/actions/workflows/test-lang-js-ARM.yml/badge.svg
+[test perl ARM img]:       https://github.com/apache/avro/actions/workflows/test-lang-perl-ARM.yml/badge.svg
+[test ruby ARM img]:       https://github.com/apache/avro/actions/workflows/test-lang-ruby-ARM.yml/badge.svg
+[test python ARM img]:     https://github.com/apache/avro/actions/workflows/test-lang-py-ARM.yml/badge.svg
+[test php ARM img]:        https://github.com/apache/avro/actions/workflows/test-lang-php-ARM.yml/badge.svg
+
+[rust continuous integration img]: https://github.com/apache/avro/actions/workflows/test-lang-rust-ci.yml/badge.svg
+[rust clippy check img]:           https://github.com/apache/avro/actions/workflows/test-lang-rust-clippy.yml/badge.svg
+[rust security audit img]:         https://github.com/apache/avro/actions/workflows/test-lang-rust-audit.yml/badge.svg
+
+[rust continuous integration ARM img]: https://github.com/apache/avro/actions/workflows/test-lang-rust-ci-ARM.yml/badge.svg
+
+[codeql c# img]:         https://github.com/apache/avro/actions/workflows/codeql-csharp-analysis.yml/badge.svg
+[codeql java img]:       https://github.com/apache/avro/actions/workflows/codeql-java-analysis.yml/badge.svg
+[codeql javascript img]: https://github.com/apache/avro/actions/workflows/codeql-js-analysis.yml/badge.svg
+[codeql python img]:     https://github.com/apache/avro/actions/workflows/codeql-py-analysis.yml/badge.svg
+
+You can use devcontainers to develop Avro:
+
+* [![Open in Visual Studio Code](https://img.shields.io/static/v1?label=&message=Open%20in%20Visual%20Studio%20Code&color=blue&logo=visualstudiocode&style=flat)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/apache/avro)
+* [![Open in Github Codespaces](https://img.shields.io/static/v1?label=&message=Open%20in%20Github%20Codespaces&color=2f362d&logo=github)](https://codespaces.new/apache/avro?quickstart=1&hide_repo_select=true)
+
+
+### Trademark & logo's
+Apache®, Apache Avro and the Apache Avro airplane logo are trademarks of The Apache Software Foundation.
+
+The Apache Avro airplane logo on this page has been designed by [Emma Kellam](https://github.com/emmak3l) for use by this project.
diff --git a/build.sh b/build.sh
new file mode 100755
index 000000000..0f31805a6
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,376 @@
+#!/bin/bash
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# ===========================================================================
+# Bash functions that can be used in this script or exported by using
+# source build.sh
+
+change_java_version() {
+  local jdk=$1
+  if ((jdk)) && [[ -d /usr/local/openjdk-${jdk} ]]; then
+    export JAVA_HOME=/usr/local/openjdk-${jdk}
+    export PATH=$JAVA_HOME/bin:$PATH
+    echo "----------------------"
+    echo "Java version switched:"
+  else
+    echo "Using the current Java version:"
+  fi
+  echo "  JAVA_HOME=$JAVA_HOME"
+  echo "  PATH=$PATH"
+  java -version
+}
+
+# Stop here if sourcing for functions
+[[ "$0" == *"bash" ]] && return 0
+
+# ===========================================================================
+
+# This might not have been sourced if the entrypoint is not bash
+[[ -f "$HOME/.cargo/env" ]] && . "$HOME/.cargo/env"
+
+set -xe
+cd "${0%/*}"
+
+VERSION=$(<share/VERSION.txt)
+
+# Extra flags to add to the docker run command.  This can be overridden using the --args argument.
+DOCKER_RUN_XTRA_ARGS=${DOCKER_RUN_XTRA_ARGS-}
+# The entrypoint when running the avro docker from this script.
+DOCKER_RUN_ENTRYPOINT=${DOCKER_RUN_ENTRYPOINT-bash}
+# Extra flags to add to the docker build command.
+DOCKER_BUILD_XTRA_ARGS=${DOCKER_BUILD_XTRA_ARGS-}
+# Override the docker image name used.
+DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME-}
+
+# When building a docker container, these are the files that will sent and available.
+DOCKER_EXTRA_CONTEXT="lang/ruby/Gemfile lang/ruby/avro.gemspec lang/ruby/Manifest share/VERSION.txt"
+
+usage() {
+  echo "Usage: $0 {lint|test|dist|sign|clean|veryclean|docker [--args \"docker-args\"]|rat|githooks|docker-test}"
+  exit 1
+}
+
+(( $# == 0 )) && usage
+
+while (( "$#" ))
+do
+  target="$1"
+  shift
+
+  # Change the JDK from the default for all targets that will eventually require Java (or maven).
+  # This only occurs when the JAVA environment variable is set and a Java environment exists in
+  # the "standard" location (defined by the openjdk docker images).  This will typically occur in CI
+  # builds.  In all other cases, the Java version is taken from the current installation for the user.
+  case "$target" in
+    lint|test|dist|clean|veryclean|rat)
+    change_java_version "$JAVA"
+    ;;
+  esac
+
+  case "$target" in
+
+    lint)
+      for lang_dir in lang/*; do
+        (cd "$lang_dir" && ./build.sh lint)
+      done
+      ;;
+
+    test)
+      # run lang-specific tests
+      (cd lang/java; ./build.sh test)
+
+      # create interop test data
+      mkdir -p build/interop/data
+      (cd lang/java/avro; mvn -B -P interop-data-generate generate-resources)
+
+      # install java artifacts required by other builds and interop tests
+      mvn -B install -DskipTests
+      (cd lang/py && ./build.sh lint test)
+      (cd lang/c; ./build.sh test)
+      (cd lang/c++; ./build.sh lint test)
+      (cd lang/csharp; ./build.sh test)
+      (cd lang/js; ./build.sh lint test)
+      (cd lang/ruby; ./build.sh lint test)
+      (cd lang/php; ./build.sh lint test)
+      (cd lang/perl; ./build.sh lint test)
+      (cd lang/rust; ./build.sh lint test)
+
+      (cd lang/py; ./build.sh interop-data-generate)
+      (cd lang/c; ./build.sh interop-data-generate)
+      #(cd lang/c++; make interop-data-generate)
+      (cd lang/csharp; ./build.sh interop-data-generate)
+      (cd lang/js; ./build.sh interop-data-generate)
+      (cd lang/ruby; ./build.sh interop-data-generate)
+      (cd lang/php; ./build.sh interop-data-generate)
+      (cd lang/perl; ./build.sh interop-data-generate)
+
+      # run interop data tests
+      (cd lang/java/ipc; mvn -B test -P interop-data-test)
+      (cd lang/py; ./build.sh interop-data-test)
+      (cd lang/c; ./build.sh interop-data-test)
+      #(cd lang/c++; make interop-data-test)
+      (cd lang/csharp; ./build.sh interop-data-test)
+      (cd lang/js; ./build.sh interop-data-test)
+      (cd lang/ruby; ./build.sh interop-data-test)
+      (cd lang/php; ./build.sh test-interop)
+      (cd lang/perl; ./build.sh interop-data-test)
+
+      # java needs to package the jars for the interop rpc tests
+      (cd lang/java/tools; mvn -B package -DskipTests)
+
+      # run interop rpc test
+      ./share/test/interop/bin/test_rpc_interop.sh
+    ;;
+
+    dist)
+      # build source tarball
+      mkdir -p build
+
+      SRC_DIR=avro-src-$VERSION
+      DOC_DIR=avro-doc-$VERSION
+
+      rm -rf "build/${SRC_DIR}"
+      if [ -d .svn ]; then
+        svn export --force . "build/${SRC_DIR}"
+      elif [ -d .git ]; then
+        mkdir -p "build/${SRC_DIR}"
+        git archive HEAD | tar -x -C "build/${SRC_DIR}"
+      else
+        echo "Not SVN and not GIT .. cannot continue"
+        exit 255
+      fi
+
+      # runs RAT on artifacts
+      mvn -N -P rat antrun:run verify
+
+      # install java artifacts required by other builds and interop tests
+      mvn -B install -DskipTests
+
+      mkdir -p dist
+      (cd build; tar czf "../dist/${SRC_DIR}.tar.gz" "${SRC_DIR}")
+
+      # build lang-specific artifacts
+
+      (cd lang/java;./build.sh dist; mvn install -pl tools -am -DskipTests)
+      (cd lang/java/trevni/doc; mvn site)
+      (mvn -N -P copy-artifacts antrun:run)
+
+      (cd lang/py; ./build.sh dist)
+      (cd lang/c; ./build.sh dist)
+      (cd lang/c++; ./build.sh dist)
+      (cd lang/csharp; ./build.sh dist)
+      (cd lang/js; ./build.sh dist)
+      (cd lang/ruby; ./build.sh dist)
+      (cd lang/php; ./build.sh dist)
+      (cd lang/rust; ./build.sh dist)
+
+      mkdir -p dist/perl
+      (cd lang/perl; ./build.sh dist)
+      cp "lang/perl/Avro-$VERSION.tar.gz" dist/perl/
+
+      # build docs
+      cp -r doc/ build/staging-web/
+      find build/staging-web/ -type f -print0 | xargs -0 sed -r -i "s#\+\+version\+\+#${VERSION,,}#g"
+      mkdir -p build/staging-web/public/docs/
+      mv build/staging-web/doc/content/en/docs/++version++ build/staging-web/public/docs/"${VERSION,,}"
+      read -n 1 -s -r -p "Build build/staging-web/ manually now. Press a key to continue..."
+      # If it was a SNAPSHOT, it was lowercased during the build.
+      cp -R build/staging-web/public/docs/"${VERSION,,}"/* "build/$DOC_DIR/"
+      cp -R "build/$DOC_DIR/api" build/staging-web/public/docs/"${VERSION,,}"/
+      ( cd build/staging-web/public/docs/; ln -s "${VERSION,,}" current )
+      # add LICENSE and NOTICE for docs
+      mkdir -p "build/$DOC_DIR"
+      cp doc/LICENSE "build/$DOC_DIR"
+      cp doc/NOTICE "build/$DOC_DIR"
+      (cd build; tar czf "../dist/avro-doc-$VERSION.tar.gz" "$DOC_DIR")
+
+      cp DIST_README.txt dist/README.txt
+      ;;
+
+    sign)
+      set +x
+
+      echo -n "Enter password: "
+      stty -echo
+      read -r password
+      stty echo
+
+      for f in $(find dist -type f \
+        \! -name '*.md5' \! -name '*.sha1' \
+        \! -name '*.sha512' \! -name '*.sha256' \
+        \! -name '*.asc' \! -name '*.txt' );
+      do
+        (cd "${f%/*}" && shasum -a 512 "${f##*/}") > "$f.sha512"
+
+        if [ -z "$GPG_LOCAL_USER" ]; then
+          gpg --pinentry-mode loopback --passphrase "$password" --armor --output "$f.asc" --detach-sig "$f"
+        else
+          gpg --pinentry-mode loopback --local-user="$GPG_LOCAL_USER" --passphrase "$password" --armor --output "$f.asc" --detach-sig "$f"
+        fi
+
+      done
+
+      set -x
+      ;;
+
+    clean)
+      rm -rf build dist
+      rm -rf doc/public/ doc/resources/ doc/node_modules/ doc/package-lock.json doc/.hugo_build.lock
+
+      (mvn -B clean)
+      rm -rf lang/java/*/userlogs/
+      rm -rf lang/java/*/dependency-reduced-pom.xml
+
+      (cd lang/py; ./build.sh clean)
+      rm -rf lang/py/userlogs/
+
+      (cd lang/c; ./build.sh clean)
+
+      (cd lang/c++; ./build.sh clean)
+
+      (cd lang/csharp; ./build.sh clean)
+
+      (cd lang/js; ./build.sh clean)
+
+      (cd lang/ruby; ./build.sh clean)
+
+      (cd lang/php; ./build.sh clean)
+
+      (cd lang/perl; ./build.sh clean)
+
+      (cd lang/rust; ./build.sh clean)
+      ;;
+
+    veryclean)
+      rm -rf build dist
+      rm -rf doc/public/ doc/resources/ doc/node_modules/ doc/package-lock.json doc/.hugo_build.lock
+
+      (mvn -B clean)
+      rm -rf lang/java/*/userlogs/
+      rm -rf lang/java/*/dependency-reduced-pom.xml
+
+      (cd lang/py; ./build.sh clean)
+      rm -rf lang/py/userlogs/
+
+      (cd lang/c; ./build.sh clean)
+
+      (cd lang/c++; ./build.sh clean)
+
+      (cd lang/csharp; ./build.sh clean)
+
+      (cd lang/js; ./build.sh clean)
+
+      (cd lang/ruby; ./build.sh clean)
+
+      (cd lang/php; ./build.sh clean)
+
+      (cd lang/perl; ./build.sh clean)
+
+      (cd lang/rust; ./build.sh clean)
+
+      rm -rf lang/c++/build
+      rm -rf lang/js/node_modules
+      rm -rf lang/perl/inc/
+      rm -rf lang/ruby/.gem/
+      rm -rf lang/ruby/Gemfile.lock
+      rm -rf lang/csharp/src/apache/ipc.test/bin/
+      rm -rf lang/csharp/src/apache/ipc.test/obj
+      ;;
+
+    docker)
+      echo "NB: for Docker Desktop users on MacOS, the default file sharing implementation (VirtioFS) has issues with some operations. You should better use gRPC FUSE or osxfs."
+      if [[ $1 =~ ^--args ]]; then
+        DOCKER_RUN_XTRA_ARGS=$2
+        shift 2
+      fi
+      if [[ "$(uname -s)" = Linux ]]; then
+        USER_NAME=${SUDO_USER:=$USER}
+        USER_ID=$(id -u "$USER_NAME")
+        GROUP_ID=$(id -g "$USER_NAME")
+      else # boot2docker uid and gid
+        USER_NAME=$USER
+        USER_ID=1000
+        GROUP_ID=50
+      fi
+      DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-"avro-build-$USER_NAME:latest"}
+      {
+        cat share/docker/Dockerfile
+        echo "ENV HOME /home/$USER_NAME"
+        echo "RUN getent group $GROUP_ID || groupadd -g $GROUP_ID $USER_NAME"
+        echo "RUN getent passwd $USER_ID || useradd -g $GROUP_ID -u $USER_ID -k /root -m $USER_NAME"
+        echo "RUN mkdir -p /home/$USER_NAME/.m2/repository"
+      } > Dockerfile
+
+      if [ -z "$BUILDPLATFORM" ]; then
+        export BUILDPLATFORM=$(docker info --format "{{.OSType}}/{{.Architecture}}")
+      fi
+      # Include the ruby gemspec for preinstallation.
+      # shellcheck disable=SC2086
+      tar -cf- Dockerfile $DOCKER_EXTRA_CONTEXT | DOCKER_BUILDKIT=1 docker build $DOCKER_BUILD_XTRA_ARGS --build-arg="BUILDPLATFORM=${BUILDPLATFORM}" -t "$DOCKER_IMAGE_NAME" -
+      rm Dockerfile
+      # By mapping the .m2/repository directory you can do an mvn install from
+      # within the container and use the result on your normal
+      # system.  And this also is a significant speedup in subsequent
+      # builds because the dependencies are downloaded only once.
+      #
+      # On OSX, it's highly suggested to set an env variable of:
+      # export DOCKER_MOUNT_FLAG=":delegated"
+      # Using :delegated will drop the "mvn install" time from over 30 minutes
+      # down to under 10.  However, editing files from OSX may take a few
+      # extra second before the changes are available within the docker container.
+      # shellcheck disable=SC2086
+      docker run --rm -t -i \
+        --env "JAVA=${JAVA:-21}" \
+        --user "${USER_NAME}" \
+        --volume "${HOME}/.gnupg:/home/${USER_NAME}/.gnupg" \
+        --volume "${PWD}/share/docker/m2:/home/${USER_NAME}/.m2/" \
+        --volume "${PWD}/share/docker/m2/toolchains.xml:/home/${USER_NAME}/.m2/toolchains.xml" \
+        --volume "${HOME}/.m2/repository:/home/${USER_NAME}/.m2/repository${DOCKER_MOUNT_FLAG}" \
+        --volume "${HOME}/.m2/build-cache:/home/${USER_NAME}/.m2/build-cache${DOCKER_MOUNT_FLAG}" \
+        --volume "${PWD}:/home/${USER_NAME}/avro${DOCKER_MOUNT_FLAG}" \
+        --workdir "/home/${USER_NAME}/avro" \
+        ${DOCKER_RUN_XTRA_ARGS} "$DOCKER_IMAGE_NAME" ${DOCKER_RUN_ENTRYPOINT}
+      ;;
+
+    rat)
+      mvn test -Dmaven.main.skip=true -Dmaven.test.skip=true -DskipTests=true -P rat -pl :avro-toplevel
+      ;;
+
+    githooks)
+      echo "Installing AVRO git hooks."
+      cp share/githooks/* .git/hooks
+      chmod +x .git/hooks/*
+      chmod -x .git/hooks/*sample*
+      ;;
+
+    docker-test)
+      if [ -z "$BUILDPLATFORM" ]; then
+        export BUILDPLATFORM=$(docker info --format "{{.OSType}}/{{.Architecture}}")
+      fi
+      tar -cf- share/docker/Dockerfile $DOCKER_EXTRA_CONTEXT |
+        DOCKER_BUILDKIT=1 docker build -t avro-test --build-arg BUILDPLATFORM="${BUILDPLATFORM}" -f share/docker/Dockerfile -
+      docker run --rm \
+        --volume "${PWD}:/avro${DOCKER_MOUNT_FLAG}" \
+        --volume "${PWD}/share/docker/m2/:/root/.m2/" \
+        --env "JAVA=${JAVA:-11}" avro-test /avro/share/docker/run-tests.sh
+      ;;
+
+    *)
+      usage
+      ;;
+  esac
+done
diff --git a/composer.json b/composer.json
new file mode 100644
index 000000000..b39f209ff
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,18 @@
+{
+  "name": "apache/avro",
+  "description": "Apache Avro™ is a data serialization system.",
+  "minimum-stability": "stable",
+  "license": "Apache-2.0",
+  "require": {
+    "beberlei/composer-monorepo-plugin": "0.16.5"
+  },
+  "require-dev": {
+    "phpunit/phpunit": "^9.1",
+    "squizlabs/php_codesniffer": "^3.5"
+  },
+  "config": {
+    "allow-plugins": {
+      "beberlei/composer-monorepo-plugin": true
+    }
+  }
+}
diff --git a/doc/.gitignore b/doc/.gitignore
new file mode 100644
index 000000000..48b779e95
--- /dev/null
+++ b/doc/.gitignore
@@ -0,0 +1,4 @@
+public/
+resources/
+node_modules/
+.hugo_build.lock
diff --git a/doc/LICENSE b/doc/LICENSE
new file mode 100644
index 000000000..e0f8f08e1
--- /dev/null
+++ b/doc/LICENSE
@@ -0,0 +1,324 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        https://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       https://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+----------------------------------------------------------------------
+License for the AVRO_BOOT_NO_TRAIT code in the C++ implementation:
+File: lang/c++/api/Boost.hh
+
+| Boost Software License - Version 1.0 - August 17th, 2003
+|
+| Permission is hereby granted, free of charge, to any person or organization
+| obtaining a copy of the software and accompanying documentation covered by
+| this license (the "Software") to use, reproduce, display, distribute,
+| execute, and transmit the Software, and to prepare derivative works of the
+| Software, and to permit third-parties to whom the Software is furnished to
+| do so, all subject to the following:
+|
+| The copyright notices in the Software and this entire statement, including
+| the above license grant, this restriction and the following disclaimer,
+| must be included in all copies of the Software, in whole or in part, and
+| all derivative works of the Software, unless such copies or derivative
+| works are solely in the form of machine-executable object code generated by
+| a source language processor.
+|
+| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+| FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+| SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+| FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+| ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+| DEALINGS IN THE SOFTWARE.
+
+----------------------------------------------------------------------
+License for jQuery v1.7.1 used in the C# documentation
+
+Copyright 2010-2011, John Resig
+Dual licensed under the MIT or GPL Version 2 licenses.
+https://jquery.org/license
+
+jQuery includes Sizzle.js
+https://sizzlejs.com/
+Copyright 2010-2011, The Dojo Foundation
+Released under the MIT, BSD, and GPL Licenses.
+
+Both are included under the terms of the MIT license:
+
+| Permission is hereby granted, free of charge, to any person obtaining a copy
+| of this software and associated documentation files (the "Software"), to deal
+| in the Software without restriction, including without limitation the rights
+| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+| copies of the Software, and to permit persons to whom the Software is
+| furnished to do so, subject to the following conditions:
+|
+| The above copyright notice and this permission notice shall be included in
+| all copies or substantial portions of the Software.
+|
+| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+| THE SOFTWARE.
+
+----------------------------------------------------------------------
+License for portions of idl.jj in the Java compiler implementation:
+
+Portions of idl.jj were modeled after the example Java 1.5
+parser included with JavaCC. For those portions:
+
+Copyright (c) 2006, Sun Microsystems, Inc.
+All rights reserved.
+
+| Redistribution and use in source and binary forms, with or without
+| modification, are permitted provided that the following conditions are met:
+|
+|     * Redistributions of source code must retain the above copyright notice,
+|       this list of conditions and the following disclaimer.
+|     * Redistributions in binary form must reproduce the above copyright
+|       notice, this list of conditions and the following disclaimer in the
+|       documentation and/or other materials provided with the distribution.
+|     * Neither the name of the Sun Microsystems, Inc. nor the names of its
+|       contributors may be used to endorse or promote products derived from
+|       this software without specific prior written permission.
+|
+| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+| CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+| SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+| INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+| CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+| ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+| THE POSSIBILITY OF SUCH DAMAGE.
+
+----------------------------------------------------------------------
+License for prototype.js included in the Avro documentation:
+
+Prototype JavaScript framework, version 1.4.0_pre4
+(c) 2005 Sam Stephenson <sa...@conio.net>
+
+| Prototype is freely distributable under the terms of an MIT-style license.
+|
+| For details, see the Prototype web site: http://prototype.conio.net/
+
+For a copy of the MIT license text, see above.
+
+----------------------------------------------------------------------
+License for Doxygen-generated documentation for the C++ and C# implementations:
+
+Copyright © 1997-2015 by Dimitri van Heesch.
+
+| Doxygen license
+|
+| Permission to use, copy, modify, and distribute this software and its
+| documentation under the terms of the GNU General Public License is hereby
+| granted. No representations are made about the suitability of this software for
+| any purpose. It is provided "as is" without express or implied warranty. See
+| the GNU General Public License for more details.
+|
+| Documents produced by doxygen are derivative works derived from the input
+| used in their production; they are not affected by this license.
+
diff --git a/doc/NOTICE b/doc/NOTICE
new file mode 100644
index 000000000..7320bb0ad
--- /dev/null
+++ b/doc/NOTICE
@@ -0,0 +1,44 @@
+Apache Avro
+Copyright 2010-2022 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (https://www.apache.org/).
+
+Based upon the representations of upstream licensors, it is understood that
+portions of the mapreduce API included in the Java implementation are licensed
+from various contributors under one or more contributor license agreements to
+Odiago, Inc. and were then contributed by Odiago to Apache Avro, which has now
+made them available under the Apache 2.0 license. The original file header text
+is:
+
+| Licensed to Odiago, Inc. under one or more contributor license
+| agreements.  See the NOTICE file distributed with this work for
+| additional information regarding copyright ownership.  Odiago, Inc.
+| licenses this file to you under the Apache License, Version 2.0
+| (the "License"); you may not use this file except in compliance
+| with the License.  You may obtain a copy of the License at
+|
+|     https://www.apache.org/licenses/LICENSE-2.0
+|
+| Unless required by applicable law or agreed to in writing, software
+| distributed under the License is distributed on an "AS IS" BASIS,
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+| implied.  See the License for the specific language governing
+| permissions and limitations under the License.
+
+|--------------------------------------------------------------------------
+| This product includes software developed by The Docsy Authors.
+| (https://www.docsy.dev/).
+|
+| This product includes software developed at
+| The Apache Software Foundation (https://www.apache.org/).
+|
+| See also the file LICENSE.txt
+|
+| ------------------------------------------------------------------------
+| The purpose of this NOTICE.txt file is to contain notices that are
+| required by the copyright owner and their license. Some of the
+| accompanying products have an attribution requirement, so see below.
+| Other accompanying products do not require attribution, so are not listed.
+|
+| ------------------------------------------------------------------------
diff --git a/doc/README.md b/doc/README.md
new file mode 100644
index 000000000..f75ba8a33
--- /dev/null
+++ b/doc/README.md
@@ -0,0 +1,71 @@
+# Apache Avro website
+
+This website is base on [Hugo](https://gohugo.io) and uses the [Docsy](https://www.docsy.dev/) theme.
+Before building the website, you need to initialize submodules.
+
+```sh
+hugo mod get -u
+```
+
+## Previewing the website locally
+
+```sh
+# Serve the website dynamically using extended hugo:
+hugo server --buildDrafts --buildFuture --bind 0.0.0.0 --navigateToChanged
+
+# You can do the same thing without installing hugo via docker.
+# From the Avro root directory:
+docker run --rm -v $(pwd):/src -p 1313:1313 jakejarvis/hugo-extended:latest --source doc/ server \
+    --buildDrafts --buildFuture --bind 0.0.0.0 --navigateToChanged
+```
+
+## Building the website in a distribution
+
+When you build an Avro distribution with the script, there is currently a manual step required.
+
+After all the binary artifacts and source have been created and copied to the `dist/` directory, the process will 
+stop with **Build build/staging-web/ manually now. Press a key to continue...**
+
+At this point, from another terminal and in the Avro root directory, you can build the website:
+
+```sh
+# Install the necessary npm packages
+docker run --entrypoint=sh --rm -v $(pwd):/src -p 1313:1313 jakejarvis/hugo-extended:latest \
+    -c "cd build/staging-web && npm install"
+# Generate the website and the release documentation
+docker run --rm -v $(pwd):/src -p 1313:1313 jakejarvis/hugo-extended:latest \
+    --source build/staging-web/  --gc --minify
+# Optional: docker leaves some files with unmanageable permissions 
+sudo chown -R $USER:$USER build/staging-web
+```
+
+## New release
+
+When a new version of Apache Avro is released:
+
+1. Change the value of `params.avroversion` in `config.toml`
+2. Add a new entry to the `Releases` pages in the `Blog` section, for example:
+
+```sh
+cp content/en/blog/releases/avro-1.12.0-released.md content/en/blog/releases/avro-1.13.0-released.md
+```
+
+### Upload the docs
+
+Copy the Markdown content from the release tar to the `doc/content/en/docs/1.12.0`:
+
+```sh
+tar xvfz avro-src-1.12.0.tar.gz
+```
+
+Here we need to copy everything, except the `api/` directory to this repository. The markdown will be rendered using Hugo, and the API docs are already html, and will be served from the ASF SVN. The `api/` directory needs to be uploaded to SVN:
+
+```sh
+svn co https://svn.apache.org/repos/asf/avro/site
+cd site/publish/docs/
+mkdir 1.12.0
+cd 1.12.0
+mkdir api
+cp -r ~/Desktop/avro-release-dist/avro-1.12.0/avro-doc-1.12.0/api/ api/
+svn commit -m "Avro 1.12.0 release"
+```
diff --git a/doc/assets/icons/logo-black-text.png b/doc/assets/icons/logo-black-text.png
new file mode 100644
index 000000000..c593f891c
Binary files /dev/null and b/doc/assets/icons/logo-black-text.png differ
diff --git a/doc/assets/icons/logo-text.svg b/doc/assets/icons/logo-text.svg
new file mode 100644
index 000000000..6f8425186
--- /dev/null
+++ b/doc/assets/icons/logo-text.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+  - Licensed to the Apache Software Foundation (ASF) under one
+  - or more contributor license agreements.  See the NOTICE file
+  - distributed with this work for additional information
+  - regarding copyright ownership.  The ASF licenses this file
+  - to you under the Apache License, Version 2.0 (the
+  - "License"); you may not use this file except in compliance
+  - with the License.  You may obtain a copy of the License at
+  -
+  -     https://www.apache.org/licenses/LICENSE-2.0
+  -
+  - Unless required by applicable law or agreed to in writing, software
+  - distributed under the License is distributed on an "AS IS" BASIS,
+  - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  - See the License for the specific language governing permissions and
+  - limitations under the License.
+  -->
+
+<!--
+Notes:
+1. The image scales to 100% high, or up to the maximum available width
+2. The text uses the current CSS color (and defaults to black)
+-->
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="2 2 95 30" style="width: auto; height: 100%">
+  <g style="display:inline;stroke-width:22.8385;fill-opacity:1;fill:currentColor">
+        <path d="m 49.809047,21.433157 h -4.770645 l -1.095651,3.541886 H 40.815582 L 45.97427,8.9794298 h 3.127169 L 54.237301,24.975043 H 50.95035 l -1.141303,-3.541886 m -4.040211,-2.513596 h 3.423907 l -1.620649,-5.347105 h -0.205435 z"/>
+        <path d="m 61.518681,21.524561 h 0.159783 l 2.556517,-7.974956 h 3.195648 L 63.070853,24.975043 H 59.898031 L 54.99043,13.549605 h 3.446734 z"/>
+        <path d="m 68.960441,22.461447 h 2.830431 v -6.398246 h -2.830431 v -2.513596 h 5.135862 l 0.342391,1.508158 h 0.0913 c 0.433695,-0.502719 0.913042,-0.914035 1.460867,-1.256798 a 3.6065164,3.6104384 0 0 1 1.917389,-0.50272 c 0.913042,0 1.62065,0.342764 2.145649,1.005439 0.524999,0.685526 0.798912,1.782368 0.798912,3.359079 h -2.670649 c 0,-0.548421 -0.0913,-0.936886 -0.251086,-1.188246 -0.159783,-0.25136 -0.410869,-0.388465 -0.75326,-0.388465 a 2.2826053,2.2850876 0 0 0 -1.483693 [...]
+        <path d="m 82.564712,19.262506 c 0,-0.959737 0.136956,-1.82807 0.433695,-2.559298 a 5.2499922,5.2557015 0 0 1 3.127169,-3.062018 7.1673806,7.1751751 0 0 1 2.48804,-0.411316 c 0.958694,0 1.826084,0.137106 2.556518,0.434167 a 5.2043401,5.2099997 0 0 1 1.917388,1.233947 4.9076014,4.9129383 0 0 1 1.164129,1.896623 7.0989025,7.1066224 0 0 1 0.410869,2.467895 7.0304243,7.0380698 0 0 1 -0.433695,2.559298 5.2499922,5.2557015 0 0 1 -3.149995,3.084868 7.3499891,7.3579821 0 0 1 -2.465214,0. [...]
+    </g>
+    <g>
+        <path fill="#0068e0" d="m 11.323019,20.31228 1.54227,4.70955 24.13142,6.882311 z"/>
+        <path fill="#000094" d="m 19.74759,12.513621 c 0.296701,1.17482 -0.0154,1.921136 -1.916568,1.736268 L 36.900852,31.9224 c 0.216248,0.08673 0.253906,-0.0582 0.104415,-0.279013 z"/>
+        <path fill="#1cccfc" d="m 19.141638,3.9863335 c 0,0 -0.680128,0.6419002 0.03537,1.4732323 0.530637,0.6173653 1.32431,0.2385015 1.32431,0.2385015 0,0 0.730909,-0.4102455 0.175738,-1.2752416 C 19.955281,3.297646 19.141638,3.9863335 19.141638,3.9863335 Z M 37.043496,31.999998 9.9901505,19.948822 c 0,0 -8.8393814,-5.467278 -7.923605,-7.626915 0.8918121,-2.090598 8.7703415,2.121979 9.6039545,2.315975 0.833613,0.195709 1.297493,-0.332076 1.312898,-0.700099 0.02454,-0.530637 -1.170253,- [...]
+        <path fill="#1cccfc" d="M 37.150194,31.886453 19.297405,12.110222 c 0,0 -3.215773,-3.6511281 -3.082258,-4.6964268 0.133515,-1.0452988 4.404285,2.2914409 4.404285,2.2914409 0,0 0.474721,0.4570329 0.924906,0.3788639 0.450185,-0.07589 -0.03138,-0.8244852 -0.03138,-0.8244852 0,0 -0.737756,-1.7140161 -0.245348,-2.0215576 0.495261,-0.3052592 1.745396,0.9848175 1.745396,0.9848175 0,0 0.312105,0.3235177 0.639617,0.2362192 0.327511,-0.08901 0.151773,-0.8085089 0.151773,-0.8085089 0,0 -2.2 [...]
+    </g>
+</svg>
diff --git a/doc/assets/icons/logo-white-text.png b/doc/assets/icons/logo-white-text.png
new file mode 100644
index 000000000..29ad9ed4f
Binary files /dev/null and b/doc/assets/icons/logo-white-text.png differ
diff --git a/doc/assets/icons/logo.png b/doc/assets/icons/logo.png
new file mode 100644
index 000000000..5651de93f
Binary files /dev/null and b/doc/assets/icons/logo.png differ
diff --git a/doc/assets/icons/logo.svg b/doc/assets/icons/logo.svg
new file mode 100644
index 000000000..beee014a3
--- /dev/null
+++ b/doc/assets/icons/logo.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" standalone="yes"?>
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+-->
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="35" height="30" viewBox="2 2 35 30">
+  <path fill="#0068e0" d="m 11.323019,20.31228 1.54227,4.70955 24.13142,6.882311 z"/>
+  <path fill="#000094" d="m 19.74759,12.513621 c 0.296701,1.17482 -0.0154,1.921136 -1.916568,1.736268 L 36.900852,31.9224 c 0.216248,0.08673 0.253906,-0.0582 0.104415,-0.279013 z"/>
+  <path fill="#1cccfc" d="m 19.141638,3.9863335 c 0,0 -0.680128,0.6419002 0.03537,1.4732323 0.530637,0.6173653 1.32431,0.2385015 1.32431,0.2385015 0,0 0.730909,-0.4102455 0.175738,-1.2752416 C 19.955281,3.297646 19.141638,3.9863335 19.141638,3.9863335 Z M 37.043496,31.999998 9.9901505,19.948822 c 0,0 -8.8393814,-5.467278 -7.923605,-7.626915 0.8918121,-2.090598 8.7703415,2.121979 9.6039545,2.315975 0.833613,0.195709 1.297493,-0.332076 1.312898,-0.700099 0.02454,-0.530637 -1.170253,-2.0483 [...]
+  <path fill="#1cccfc" d="M 37.150194,31.886453 19.297405,12.110222 c 0,0 -3.215773,-3.6511281 -3.082258,-4.6964268 0.133515,-1.0452988 4.404285,2.2914409 4.404285,2.2914409 0,0 0.474721,0.4570329 0.924906,0.3788639 0.450185,-0.07589 -0.03138,-0.8244852 -0.03138,-0.8244852 0,0 -0.737756,-1.7140161 -0.245348,-2.0215576 0.495261,-0.3052592 1.745396,0.9848175 1.745396,0.9848175 0,0 0.312105,0.3235177 0.639617,0.2362192 0.327511,-0.08901 0.151773,-0.8085089 0.151773,-0.8085089 0,0 -2.257774, [...]
+</svg>
diff --git a/doc/assets/scss/PTMono-Regular.ttf b/doc/assets/scss/PTMono-Regular.ttf
new file mode 100644
index 000000000..b1983838c
Binary files /dev/null and b/doc/assets/scss/PTMono-Regular.ttf differ
diff --git a/doc/assets/scss/_styles_project.scss b/doc/assets/scss/_styles_project.scss
new file mode 100644
index 000000000..b69a1eb16
--- /dev/null
+++ b/doc/assets/scss/_styles_project.scss
@@ -0,0 +1,35 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+@font-face {
+  font-family: 'PT Mono';
+  font-style: normal;
+  font-weight: 400;
+  font-display: swap;
+  src: url(./PTMono-Regular.ttf) format('truetype');
+}
+
+// Disable all github editing links for now
+.td-page-meta--view { display: none !important; }
+.td-page-meta--edit { display: none !important; }
+.td-page-meta--child { display: none !important; }
+.td-page-meta--issue { display: none !important; }
+.td-page-meta--project-issue { display: none !important; }
+
+.navbar-brand {
+  font-family: "PT Mono", monospace;
+}
diff --git a/doc/assets/scss/_variables_project.scss b/doc/assets/scss/_variables_project.scss
new file mode 100644
index 000000000..fb5495c86
--- /dev/null
+++ b/doc/assets/scss/_variables_project.scss
@@ -0,0 +1,21 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+.dropdown-menu .show {
+  overflow-y: auto;
+  max-height: 700px;
+}
diff --git a/doc/config.toml b/doc/config.toml
new file mode 100644
index 000000000..8f5c40db0
--- /dev/null
+++ b/doc/config.toml
@@ -0,0 +1,423 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+baseURL = "/"
+title = "Apache Avro"
+
+# Language settings
+contentDir = "content/en"
+defaultContentLanguage = "en"
+defaultContentLanguageInSubdir = false
+# Useful when translating.
+enableMissingTranslationPlaceholders = true
+
+enableRobotsTXT = true
+
+# Will give values to .Lastmod etc.
+enableGitInfo = true
+
+# Comment out to disable taxonomies in Docsy
+# disableKinds = ["taxonomy", "taxonomyTerm"]
+
+# You can add your own taxonomies
+[taxonomies]
+tag = "tags"
+category = "categories"
+
+[params.taxonomy]
+# set taxonomyCloud = [] to hide taxonomy clouds
+taxonomyCloud = ["tags", "categories"] 
+
+# If used, must have same lang as taxonomyCloud
+taxonomyCloudTitle = ["Tag Cloud", "Categories"] 
+
+# set taxonomyPageHeader = [] to hide taxonomies on the page headers
+taxonomyPageHeader = ["tags", "categories"] 
+
+
+# Highlighting config
+pygmentsCodeFences = true
+pygmentsUseClasses = false
+# Use the new Chroma Go highlighter in Hugo.
+pygmentsUseClassic = false
+#pygmentsOptions = "linenos=table"
+# See https://help.farbox.com/pygments.html
+pygmentsStyle = "tango"
+
+# Configure how URLs look like per section.
+[permalinks]
+blog = "/:section/:year/:month/:day/:slug/"
+
+## Configuration for BlackFriday markdown parser: https://github.com/russross/blackfriday
+[blackfriday]
+plainIDAnchors = true
+hrefTargetBlank = true
+angledQuotes = false
+latexDashes = true
+
+# Image processing configuration.
+[imaging]
+resampleFilter = "CatmullRom"
+quality = 75
+anchor = "smart"
+
+[services]
+[services.googleAnalytics]
+# Comment out the next line to disable GA tracking. Also disables the feature described in [params.ui.feedback].
+# id = "UA-00000000-0"
+
+# Language configuration
+
+[languages.params]
+[languages.en.params]
+title = "Apache Avro"
+description = ""
+languageName ="English"
+# Weight used for sorting.
+weight = 1
+
+[markup]
+  [markup.goldmark]
+    [markup.goldmark.renderer]
+      unsafe = true
+  [markup.highlight]
+    # See a complete list of available styles at https://xyproto.github.io/splash/docs/all.html
+    style = "tango"
+    # Uncomment if you want your chosen highlight style used for code blocks without a specified language
+    # guessSyntax = "true"
+
+# Everything below this are Site Params
+
+# Comment out if you don't want the "print entire section" link enabled.
+[outputs]
+section = ["HTML", "print", "RSS"]
+
+[params]
+avroversion = "++version++"
+copyright = "The Apache Software Foundation"
+apache_foundation = "https://www.apache.org/"
+apache_events_logo = "https://www.apache.org/events/current-event-234x60.png"
+apache_events_url = "https://www.apache.org/events/current-event.html"
+privacy_policy = "http://www.apache.org/foundation/policies/privacy.html"
+license = "http://www.apache.org/licenses/"
+
+# First one is picked as the Twitter card image if not set on page.
+# images = ["images/project-illustration.png"]
+
+# Menu title if your navbar has a versions selector to access old versions of your site.
+# This menu appears only if you have at least one [params.versions] set.
+version_menu = "Releases"
+
+# Flag used in the "version-banner" partial to decide whether to display a 
+# banner on every page indicating that this is an archived version of the docs.
+# Set this flag to "true" if you want to display the banner.
+archived_version = false
+
+# The version number for the version of the docs represented in this doc set.
+# Used in the "version-banner" partial to display a version number for the 
+# current doc set.
+version = "1.12.0"
+
+# A link to latest version of the docs. Used in the "version-banner" partial to
+# point people to the main doc site.
+url_latest_version = "https://avro.apache.org"
+
+# Repository configuration (URLs for in-page links to opening issues and suggesting changes)
+github_repo = "https://github.com/apache/avro"
+github_subdir = "doc"
+
+# An optional link to a related project repo. For example, the sibling repository where your product code lives.
+github_project_repo = "https://github.com/apache/avro"
+
+# Specify a value here if your content directory is not in your repo's root directory
+# github_subdir = ""
+
+# Uncomment this if you have a newer GitHub repo with "main" as the default branch,
+# or specify a new value if you want to reference another branch in your GitHub links
+# github_branch= "main"
+
+# Google Custom Search Engine ID. Remove or comment out to disable search.
+# gcs_engine_id = "d72aa9b2712488cc3"
+
+# Enable Lunr.js offline search
+offlineSearch = false
+
+# Enable syntax highlighting and copy buttons on code blocks with Prism
+prism_syntax_highlighting = true
+
+# User interface configuration
+[params.ui]
+#  Set to true to disable breadcrumb navigation.
+breadcrumb_disable = false
+# Set to true to disable the About link in the site footer
+footer_about_disable = true
+# Set to false if you don't want to display a logo (/assets/icons/logo.svg) in the top navbar
+navbar_logo = true
+# Set to true if you don't want the top navbar to be translucent when over a `block/cover`, like on the homepage.
+navbar_translucent_over_cover_disable = false
+# Enable to show the side bar menu in its compact state.
+sidebar_menu_compact = false
+# Set to true to hide the sidebar search box (the top nav search box will still be displayed if search is enabled)
+sidebar_search_disable = true
+sidebar_menu_foldable = true
+
+# Adds a H2 section titled "Feedback" to the bottom of each doc. The responses are sent to Google Analytics as events.
+# This feature depends on [services.googleAnalytics] and will be disabled if "services.googleAnalytics.id" is not set.
+# If you want this feature, but occasionally need to remove the "Feedback" section from a single page,
+# add "hide_feedback: true" to the page's front matter.
+[params.ui.feedback]
+enable = false
+# The responses that the user sees after clicking "yes" (the page was helpful) or "no" (the page was not helpful).
+yes = 'Glad to hear it! Please <a href="https://github.com/USERNAME/REPOSITORY/issues/new">tell us how we can improve</a>.'
+no = 'Sorry to hear that. Please <a href="https://github.com/USERNAME/REPOSITORY/issues/new">tell us how we can improve</a>.'
+
+# Adds a reading time to the top of each doc.
+# If you want this feature, but occasionally need to remove the Reading time from a single page, 
+# add "hide_readingtime: true" to the page's front matter
+[params.ui.readingtime]
+enable = true
+
+[params.asf]
+[[params.asf.links]]
+name = "ASF Web Site"
+url = "http://www.apache.org/"
+
+[[params.asf.links]]
+name = "License"
+url = "http://www.apache.org/licenses/"
+
+[[params.asf.links]]
+name = "Donate"
+url = "http://www.apache.org/foundation/sponsorship.html"
+
+
+[[params.asf.links]]
+name = "Thanks"
+url = "http://www.apache.org/foundation/thanks.html"
+
+[[params.asf.links]]
+name = "Security"
+url = "http://www.apache.org/security/"
+
+
+[params.links]
+# End user relevant links. These will show up on left side of footer and in the community page if you have one.
+[[params.links.user]]
+  name = "User mailing list"
+  url = "https://lists.apache.org/list.html?user@avro.apache.org"
+  icon = "fa fa-envelope"
+  desc = "Discussion and help from your fellow users"
+[[params.links.user]]
+  name ="Twitter"
+  url = "https://twitter.com/ApacheAvro"
+  icon = "fab fa-twitter"
+  desc = "Follow us on Twitter to get the latest news!"
+[[params.links.user]]
+  name = "Stack Overflow"
+  url = "https://stackoverflow.com/questions/tagged/avro"
+  icon = "fab fa-stack-overflow"
+  desc = "Practical questions and curated answers"
+# Developer relevant links. These will show up on right side of footer and in the community page if you have one.
+[[params.links.developer]]
+  name = "GitHub"
+  url = "https://github.com/apache/avro"
+  icon = "fab fa-github"
+  desc = "Development takes place here!"
+[[params.links.developer]]
+  name = "Issues"
+  url = "https://issues.apache.org/jira/projects/AVRO/issues"
+  icon = "fab fa-jira"
+  desc = "Track bugs and new features"
+[[params.links.developer]]
+  name = "Chat with other project developers at Slack"
+  url = "https://the-asf.slack.com/"
+  icon = "fab fa-slack"
+  desc = "Chat with other project developers at #avro channel"
+[[params.links.developer]]
+  name = "Developer mailing list"
+  url = "https://lists.apache.org/list.html?dev@avro.apache.org"
+  icon = "fa fa-envelope"
+  desc = "Discuss development issues around the project"
+
+[[params.versions]]
+version = "1.12.0"
+url = "https://avro.apache.org/docs/1.12.0/"
+
+[[params.versions]]
+version = "1.11.3"
+url = "https://avro.apache.org/docs/1.11.3/"
+
+[[params.versions]]
+version = "1.11.2"
+url = "https://avro.apache.org/docs/1.11.2/"
+
+[[params.versions]]
+version = "1.11.1"
+url = "https://avro.apache.org/docs/1.11.1/"
+
+[[params.versions]]
+version = "1.11.0"
+url = "https://avro.apache.org/docs/1.11.0/"
+
+[[params.versions]]
+  version = "1.10.2"
+  url = "https://avro.apache.org/docs/1.10.2/"
+
+[[params.versions]]
+  version = "1.10.1"
+  url = "https://avro.apache.org/docs/1.10.1/"
+
+[[params.versions]]
+  version = "1.10.0"
+  url = "https://avro.apache.org/docs/1.10.0/"
+
+[[params.versions]]
+  version = "1.9.2"
+  url = "https://avro.apache.org/docs/1.9.2/"
+
+[[params.versions]]
+  version = "1.9.1"
+  url = "https://avro.apache.org/docs/1.9.1/"
+
+[[params.versions]]
+  version = "1.9.0"
+  url = "https://avro.apache.org/docs/1.9.0/"
+
+[[params.versions]]
+  version = "1.8.2"
+  url = "https://avro.apache.org/docs/1.8.2/"
+
+[[params.versions]]
+  version = "1.8.1"
+  url = "https://avro.apache.org/docs/1.8.1/"
+
+[[params.versions]]
+  version = "1.8.0"
+  url = "https://avro.apache.org/docs/1.8.0/"
+
+[[params.versions]]
+  version = "1.7.7"
+  url = "https://avro.apache.org/docs/1.7.7/"
+
+[[params.versions]]
+  version = "1.7.6"
+  url = "https://avro.apache.org/docs/1.7.6/"
+
+[[params.versions]]
+  version = "1.7.5"
+  url = "https://avro.apache.org/docs/1.7.5/"
+
+[[params.versions]]
+  version = "1.7.4"
+  url = "https://avro.apache.org/docs/1.7.4/"
+
+[[params.versions]]
+  version = "1.7.3"
+  url = "https://avro.apache.org/docs/1.7.3/"
+
+[[params.versions]]
+  version = "1.7.2"
+  url = "https://avro.apache.org/docs/1.7.2/"
+
+[[params.versions]]
+  version = "1.7.1"
+  url = "https://avro.apache.org/docs/1.7.1/"
+  
+[[params.versions]]
+  version = "1.7.0"
+  url = "https://avro.apache.org/docs/1.7.0/"
+  
+[[params.versions]]
+  version = "1.6.3"
+  url = "https://avro.apache.org/docs/1.6.3/"
+  
+[[params.versions]]
+  version = "1.6.2"
+  url = "https://avro.apache.org/docs/1.6.2/"
+  
+[[params.versions]]
+  version = "1.6.1"
+  url = "https://avro.apache.org/docs/1.6.1/"
+  
+[[params.versions]]
+  version = "1.6.0"
+  url = "https://avro.apache.org/docs/1.6.0/"
+  
+[[params.versions]]
+  version = "1.5.4"
+  url = "https://avro.apache.org/docs/1.5.4/"
+  
+[[params.versions]]
+  version = "1.5.3"
+  url = "https://avro.apache.org/docs/1.5.3/"
+  
+[[params.versions]]
+  version = "1.5.2"
+  url = "https://avro.apache.org/docs/1.5.2/"
+  
+[[params.versions]]
+  version = "1.5.1"
+  url = "https://avro.apache.org/docs/1.5.1/"
+  
+[[params.versions]]
+  version = "1.5.0"
+  url = "https://avro.apache.org/docs/1.5.0/"
+  
+[[params.versions]]
+  version = "1.4.1"
+  url = "https://avro.apache.org/docs/1.4.1/"
+  
+[[params.versions]]
+  version = "1.4.0"
+  url = "https://avro.apache.org/docs/1.4.0/"
+  
+[[params.versions]]
+  version = "1.3.3"
+  url = "https://avro.apache.org/docs/1.3.3/"
+  
+[[params.versions]]
+  version = "1.3.2"
+  url = "https://avro.apache.org/docs/1.3.2/"
+  
+[[params.versions]]
+  version = "1.3.1"
+  url = "https://avro.apache.org/docs/1.3.1/"
+  
+[[params.versions]]
+  version = "1.3.0"
+  url = "https://avro.apache.org/docs/1.3.0/"
+  
+[[params.versions]]
+  version = "1.2.0"
+  url = "https://avro.apache.org/docs/1.2.0/"
+  
+[[params.versions]]
+  version = "1.1.0"
+  url = "https://avro.apache.org/docs/1.1.0/"
+  
+[[params.versions]]
+  version = "1.0.0"
+  url = "https://avro.apache.org/docs/1.0.0/"
+
+[module]
+  [module.hugoVersion]
+    extended = true
+    min = "0.110.0"
+  [[module.imports]]
+    path = "github.com/google/docsy"
diff --git a/doc/content/en/_index.html b/doc/content/en/_index.html
new file mode 100644
index 000000000..57c806025
--- /dev/null
+++ b/doc/content/en/_index.html
@@ -0,0 +1,72 @@
++++
+title = "Apache Avro"
+linkTitle = "Apache Avro"
+
++++
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+<!-- Copy of default blocks/cover shortcode, but without the (hardcoded) td-overlay--dark style class that breaks the white background. -->
+<section id="td-cover-block-0" class="row td-cover-block td-cover-block--height-med td-overlay -bg-white">
+	<div class="container td-overlay__inner">
+		<div class="row">
+			<div class="col-12">
+				<div class="text-center">
+					<h1 class="display-1 mt-0 mt-md-5 pb-4">Apache Avro™ - a data serialization system</h1>
+					<div class="pt-3 lead">
+						<div class="mx-auto">
+							<a class="btn btn-lg btn-primary mr-3 mb-4" href='{{< relref "/docs" >}}'>
+								Learn More <i class="fas fa-arrow-alt-circle-right ml-2"></i>
+							</a>
+							<a class="btn btn-lg btn-secondary mr-3 mb-4" href='{{< relref "/project/download" >}}'>
+								Download <i class="fas fa-download ml-2 "></i>
+							</a>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</section>
+
+{{% blocks/lead color="primary" %}}
+Apache Avro™ is the leading serialization format for record data, and first choice for streaming data pipelines.
+It offers excellent schema evolution, and has implementations for the JVM (Java, Kotlin, Scala, &hellip;), Python, C/C++/C#, PHP, Ruby,
+Rust, JavaScript, and even Perl.
+{{% /blocks/lead %}}
+
+{{< blocks/section color="dark" type="features">}}
+<!-- Note: the number of feature blocks should be a multiple of 3 for optimal display -->
+
+{{% blocks/feature icon="fab fa-java" title="Getting started with Java" url="/docs/++version++/getting-started-java" %}}
+For Java / JVM users, find out everything you need to know about specifying a schema, (de)serializing Avro data and code generation.
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fab fa-python" title="Getting started with Python" url="/docs/++version++/getting-started-python" %}}
+For Python users, find out everything you need to know about specifying a schema and (de)serializing Avro data.
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fad fa-comments" title="Join Our Community!" url="/community/" %}}
+Learn from or connect with other users in our open and welcoming community. We'd love to hear from you!
+{{% /blocks/feature %}}
+
+{{< /blocks/section >}}
diff --git a/doc/content/en/_index.md b/doc/content/en/_index.md
new file mode 100644
index 000000000..ae6cc051f
--- /dev/null
+++ b/doc/content/en/_index.md
@@ -0,0 +1,40 @@
+---
+title: Apache Avro
+---
+
+{{< blocks/cover title="Apache Avro™ " image_anchor="top" >}}
+<a class="btn btn-lg btn-primary me-3 mb-4" href="docs/">
+Learn More <i class="fas fa-arrow-alt-circle-right ms-2"></i>
+</a>
+<a class="btn btn-lg btn-secondary me-3 mb-4" href="project/download/">
+Download <i class="fab fa-github ms-2 "></i>
+</a>
+<p class="lead mt-5">a data serialization system</p>
+{{< blocks/link-down color="info" >}}
+{{< /blocks/cover >}}
+
+
+{{% blocks/lead color="primary" %}}
+
+Apache Avro™ is the leading serialization format for record data, and first choice for streaming data pipelines. It offers excellent schema evolution, and has implementations for the JVM (Java, Kotlin, Scala, …), Python, C/C++/C#, PHP, Ruby, Rust, JavaScript, and even Perl.
+
+{{% /blocks/lead %}}
+
+
+{{< blocks/section color="dark" type="row">}}
+<!-- Note: the number of feature blocks should be a multiple of 3 for optimal display -->
+
+{{% blocks/feature icon="fab fa-java" title="Getting started with Java" url="/docs/++version++/getting-started-java" %}}
+For Java / JVM users, find out everything you need to know about specifying a schema, (de)serializing Avro data and code generation.
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fab fa-python" title="Getting started with Python" url="/docs/++version++/getting-started-python" %}}
+For Python users, find out everything you need to know about specifying a schema and (de)serializing Avro data.
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fad fa-comments" title="Join Our Community!" url="/community/" %}}
+Learn from or connect with other users in our open and welcoming community. We'd love to hear from you!
+{{% /blocks/feature %}}
+
+{{< /blocks/section >}}
+
diff --git a/doc/content/en/blog/_index.md b/doc/content/en/blog/_index.md
new file mode 100644
index 000000000..85f97bd21
--- /dev/null
+++ b/doc/content/en/blog/_index.md
@@ -0,0 +1,33 @@
+---
+title: "Blog"
+linkTitle: "Blog"
+menu:
+  main:
+    weight: 30
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+This is the **blog** section. It has two categories: News and Releases.
+
+Files in these directories will be listed in reverse chronological order.
+
diff --git a/doc/content/en/blog/news/_index.md b/doc/content/en/blog/news/_index.md
new file mode 100644
index 000000000..243dcf5f4
--- /dev/null
+++ b/doc/content/en/blog/news/_index.md
@@ -0,0 +1,26 @@
+---
+title: "News About Apache Avro"
+linkTitle: "News"
+weight: 20
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
diff --git a/doc/content/en/blog/news/avro-joins-apache.md b/doc/content/en/blog/news/avro-joins-apache.md
new file mode 100755
index 000000000..dbc187264
--- /dev/null
+++ b/doc/content/en/blog/news/avro-joins-apache.md
@@ -0,0 +1,28 @@
+---
+title: "Avro joins Apache"
+linkTitle: "Avro joins Apache"
+date: 2009-04-10
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+Avro has joined the Apache Software Foundation as a Hadoop subproject.
diff --git a/doc/content/en/blog/news/new-committer-christophe-le-saec.md b/doc/content/en/blog/news/new-committer-christophe-le-saec.md
new file mode 100755
index 000000000..1522c1722
--- /dev/null
+++ b/doc/content/en/blog/news/new-committer-christophe-le-saec.md
@@ -0,0 +1,41 @@
+---
+title: "New committer: Christophe Le Saec"
+linkTitle: "New committer: Christophe Le Saec"
+date: 2023-08-09
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+The Project Management Committee (PMC) for Apache Avro has invited Christophe
+Le Saec to become a committer and we are pleased to announce that
+he has accepted.
+
+Christophe definitely puts in the work and, has an impressive breadth of 
+knowledge about the languages of the Avro SDK!
+
+As an ASF project, we tend to be very conservative about making changes, and
+Christophe brings in fresh ideas and very quickly proposes concrete 
+implementations to prove them.  He has a good understanding of Avro, the
+motivation to move things forward, and the expertise to make changes!  At the
+same time, he's easy to talk to and flexible in coming to a consensus.
+
+Thanks for all your hard work!
diff --git a/doc/content/en/blog/news/new-committer-david-mollitor.md b/doc/content/en/blog/news/new-committer-david-mollitor.md
new file mode 100755
index 000000000..eb7930094
--- /dev/null
+++ b/doc/content/en/blog/news/new-committer-david-mollitor.md
@@ -0,0 +1,41 @@
+---
+title: "New committer: David Mollitor"
+linkTitle: "New committer: David Mollitor"
+date: 2021-10-05
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+The Project Management Committee (PMC) for Apache Avro
+has invited David Mollitor to become a committer and we are pleased
+to announce that he has accepted.
+
+Since 2017, David has raised and fixed many issues in the
+Java SDK.  Recently he's been finding and providing fixes for subtle
+performance issues.  His work is always high-quality and he is
+reactive and pleasant to talk with on code reviews and JIRA.
+
+Being a committer enables easier contribution to the
+project since there is no need to go via the patch
+submission process. This should enable better productivity.
+
+It's great to have you as part of the team, David!
diff --git a/doc/content/en/blog/news/new-committer-martin-grigorov.md b/doc/content/en/blog/news/new-committer-martin-grigorov.md
new file mode 100755
index 000000000..78cc3b616
--- /dev/null
+++ b/doc/content/en/blog/news/new-committer-martin-grigorov.md
@@ -0,0 +1,41 @@
+---
+title: "New committer: Martin Grigorov"
+linkTitle: "New committer: Martin Grigorov"
+date: 2022-01-04
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+The Project Management Committee (PMC) for Apache Avro
+has invited Martin Grigorov to become a committer and we are pleased
+to announce that he has accepted.
+
+Over the last few months, he has been active, reliable and easy to
+work with on PRs and on the mailing list.  His work is of high
+quality, and he has a breadth of experience in many of the SDK languages.
+I'm especially keen to point out the work he's been doing on the website!
+
+Being a committer enables easier contribution to the
+project since there is no need to go via the patch
+submission process. This should enable better productivity.
+
+It's great to have you as part of the team, Martin!
diff --git a/doc/content/en/blog/news/new-committer-oscar-westra-van-holthe-kind.md b/doc/content/en/blog/news/new-committer-oscar-westra-van-holthe-kind.md
new file mode 100755
index 000000000..535a2d881
--- /dev/null
+++ b/doc/content/en/blog/news/new-committer-oscar-westra-van-holthe-kind.md
@@ -0,0 +1,41 @@
+---
+title: "New committer: Oscar Westra van Holthe - Kind"
+linkTitle: "New committer: Oscar Westra van Holthe - Kind"
+date: 2023-08-09
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+The Project Management Committee (PMC) for Apache Avro has invited Oscar
+Westra van Holthe - Kind to become a committer and we are pleased to announce that
+he has accepted.
+
+Oscar has done some really solid work on the IDL and JavaCC parts of the Java
+SDK.  We trust his work and think it's exceptionally high quality.  From the 
+start, he has already doing much of the work of a committer, demonstrated by
+his continuous presence in commenting JIRA, reviewing PRs as well as 
+encouraging and insightful words on the mailing list.
+
+As a bonus, in his spare time, Oscar also maintains the IntelliJ plugin for
+[IDL support](https://plugins.jetbrains.com/plugin/15728-apache-avro-idl-schema-support)!
+
+Thanks for all your hard work, and welcome!
diff --git a/doc/content/en/blog/news/new-committer-zoltan-csizmadia.md b/doc/content/en/blog/news/new-committer-zoltan-csizmadia.md
new file mode 100755
index 000000000..42834c551
--- /dev/null
+++ b/doc/content/en/blog/news/new-committer-zoltan-csizmadia.md
@@ -0,0 +1,47 @@
+---
+title: "New committer: Zoltan Csizmadia"
+linkTitle: "New committer: Zoltan Csizmadia"
+date: 2022-03-29
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+The Project Management Committee (PMC) for Apache Avro has invited
+Zoltan Csizmadia to become a committer and we are pleased to announce
+that he has accepted.
+
+Zoltan has been present in the C# SDK for over two years and has
+really increased his activity in maintaining this language in the last
+few months.  He knows the technology, but more importantly, he is
+patient and works well with those of us who rely on the expertise of
+others.  Recently, he has been engaging with other contributors to
+increase the maintainability and quality of the dotnet code, and we
+have confidence in his decisions to balance stability of the
+established code and the expectations of modern C# developers.
+
+Being a committer enables easier contribution to the project since
+there is no need to go via the patch submission process. This should
+enable better productivity.
+
+Please join me in congratulating Zoltan on his recognition of great
+work thus far in our community.
+
diff --git a/doc/content/en/blog/news/new-pmc-martin-grigorov.md b/doc/content/en/blog/news/new-pmc-martin-grigorov.md
new file mode 100755
index 000000000..659bdb30d
--- /dev/null
+++ b/doc/content/en/blog/news/new-pmc-martin-grigorov.md
@@ -0,0 +1,30 @@
+---
+title: "New PMC member: Martin Grigorov"
+linkTitle: "New PMC member: Martin Grigorov"
+date: 2022-09-13
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+The Project Management Committee (PMC) for Apache Avro is pleased to announce that Martin Grigorov has accepted our invitation to become a PMC member.  He has has been active, reliable and responsive to the community and a solid contributor to various SDKs, bringing well-thought out reviews and comments to both old and new PRs and JIRA.  He definitely stepped up for the website refactoring and preparing for the 1.11.1 release!
+
+Please join me in welcoming Martin to the Avro PMC!
diff --git a/doc/content/en/blog/news/new-pmc-michael-a-smith.md b/doc/content/en/blog/news/new-pmc-michael-a-smith.md
new file mode 100755
index 000000000..2d203128e
--- /dev/null
+++ b/doc/content/en/blog/news/new-pmc-michael-a-smith.md
@@ -0,0 +1,34 @@
+---
+title: "New PMC member: Michael A. Smith"
+linkTitle: "New PMC member: Michael A. Smith"
+date: 2023-08-09
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+The Project Management Committee (PMC) for Apache Avro has invited Michael A.
+Smith to the PMC and we are pleased to announce that he has accepted.
+
+Notably, Michael has taken a leadership role in ensuring the quality of the
+Python SDK, lending his expertise to ensure that Avro has a place in the 
+python community, while keeping our implementation up-to-date with standards
+and modern versions.  It's not an easy task, and we appreciate all he does!
diff --git a/doc/content/en/blog/news/new-project-logo.md b/doc/content/en/blog/news/new-project-logo.md
new file mode 100644
index 000000000..24f886912
--- /dev/null
+++ b/doc/content/en/blog/news/new-project-logo.md
@@ -0,0 +1,50 @@
+---
+title: "New Project Logo"
+linkTitle: "New Project Logo"
+date: 2023-11-21
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+The Apache Avro project has a new project logo!
+
+The old logo was derived from the logo of a (now defunct) aircraft manufacturer
+in Great Britain. This posed a risk, as the Apache foundation would not contest
+legal action (even if extremely unlikely).
+
+But thanks to Emma Kellam, we now have a new logo! She has made several logo
+designs, and after some debate and several votes (it was a close call!), we can
+announce the new logo:
+
+[//]: # (the logo scales to 100% high or all available width, so limit it)
+<p style="height: 10rem">
+{{< project_logo >}}
+</p>
+
+The new logo is an homage to the previous logo, which is also triangular and
+uses blue colours. The paper airplane embodies keywords like 'fast', 'small'
+and 'efficient'. The blobby tail left behind by the airplane makes the icon
+unique and embodies 'flow' and 'transformation'.
+
+All in all a very nice logo for Apache Avro, which embodies the same keywords.
+
+Thanks for all your hard work Emma, and welcome!
diff --git a/doc/content/en/blog/releases/_index.md b/doc/content/en/blog/releases/_index.md
new file mode 100644
index 000000000..55875726b
--- /dev/null
+++ b/doc/content/en/blog/releases/_index.md
@@ -0,0 +1,28 @@
+---
+title: "Releases"
+linkTitle: "Releases"
+weight: 20
+aliases:
+- /releases.html
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
diff --git a/doc/content/en/blog/releases/avro-1.0.0-released.md b/doc/content/en/blog/releases/avro-1.0.0-released.md
new file mode 100755
index 000000000..1bf74fbbb
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.0.0-released.md
@@ -0,0 +1,28 @@
+---
+title: "Avro 1.0.0"
+linkTitle: "Avro 1.0.0"
+date: 2010-07-15
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+The first release of Avro is now available. To download, it, use the "Download" link below.
diff --git a/doc/content/en/blog/releases/avro-1.1.0-released.md b/doc/content/en/blog/releases/avro-1.1.0-released.md
new file mode 100755
index 000000000..f8876219c
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.1.0-released.md
@@ -0,0 +1,28 @@
+---
+title: "Avro 1.1.0"
+linkTitle: "Avro 1.1.0"
+date: 2009-09-15
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+Apache Avro 1.1.0 is now available!
diff --git a/doc/content/en/blog/releases/avro-1.10.0-released.md b/doc/content/en/blog/releases/avro-1.10.0-released.md
new file mode 100755
index 000000000..d7a41f5e3
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.10.0-released.md
@@ -0,0 +1,28 @@
+---
+title: "Avro 1.10.0"
+linkTitle: "Avro 1.10.0"
+date: 2020-06-29
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+Apache Avro 1.10.0 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.10.1-released.md b/doc/content/en/blog/releases/avro-1.10.1-released.md
new file mode 100755
index 000000000..b8e6b199b
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.10.1-released.md
@@ -0,0 +1,28 @@
+---
+title: "Avro 1.10.1"
+linkTitle: "Avro 1.10.1"
+date: 2020-12-03
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+Apache Avro 1.10.1 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.10.2-released.md b/doc/content/en/blog/releases/avro-1.10.2-released.md
new file mode 100755
index 000000000..ea1a74a72
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.10.2-released.md
@@ -0,0 +1,28 @@
+---
+title: "Avro 1.10.2"
+linkTitle: "Avro 1.10.2"
+date: 2021-03-15
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+Apache Avro 1.10.2 has been released!
diff --git a/doc/content/en/blog/releases/avro-1.11.0-released.md b/doc/content/en/blog/releases/avro-1.11.0-released.md
new file mode 100755
index 000000000..54fd8b729
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.11.0-released.md
@@ -0,0 +1,70 @@
+---
+title: "Avro 1.11.0"
+linkTitle: "Avro 1.11.0"
+date: 2021-10-31
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+The Apache Avro community is pleased to announce the release of Avro 1.11.0!
+
+All signed release artifacts, signatures and verification instructions can
+be found <a href="{{< relref "/project/download" >}}">here</a>
+
+This release includes 120 Jira issues, including some interesting features:
+
+* Specification: AVRO-3212 Support documentation tags for FIXED types
+* C#: AVRO-2961 Support dotnet framework 5.0
+* C#: AVRO-3225 Prevent memory errors when deserializing untrusted data
+* C++: AVRO-2923 Logical type corrections
+* Java: AVRO-2863 Support Avro core on android
+* Javascript: AVRO-3131 Drop support for node.js 10
+* Perl: AVRO-3190 Fix error when reading from EOF
+* Python: AVRO-2906 Improved performance validating deep record data
+* Python: AVRO-2914 Drop Python 2 support
+* Python: AVRO-3004 Drop Python 3.5 support
+* Ruby: AVRO-3108 Drop Ruby 2.5 support
+
+For the first time, the 1.11.0 release includes experimental support for
+**Rust**. Work is continuing on this donated SDK, but we have not versioned and
+published official artifacts for this release.
+
+**Python**: The avro package fully supports Python 3. We will no longer publish a
+separate avro-python3 package
+
+And of course upgraded dependencies to latest versions, CVE fixes and more:
+https://issues.apache.org/jira/issues/?jql=project%3DAVRO%20AND%20fixVersion%3D1.11.0
+
+The link to all fixed JIRA issues and a brief summary can be found at:
+https://github.com/apache/avro/releases/tag/release-1.11.0
+
+In addition, language-specific release artifacts are available:
+
+* C#: https://www.nuget.org/packages/Apache.Avro/1.11.0
+* Java: from Maven Central,
+* Javascript: https://www.npmjs.com/package/avro-js/v/1.11.0
+* Perl: https://metacpan.org/release/Avro
+* Python 3: https://pypi.org/project/avro/1.11.0
+* Ruby: https://rubygems.org/gems/avro/versions/1.11.0
+
+Thanks to everyone for contributing!
+
diff --git a/doc/content/en/blog/releases/avro-1.11.1-released.md b/doc/content/en/blog/releases/avro-1.11.1-released.md
new file mode 100755
index 000000000..d78d17293
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.11.1-released.md
@@ -0,0 +1,130 @@
+---
+title: "Avro 1.11.1"
+linkTitle: "Avro 1.11.1"
+date: 2022-07-31
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+The Apache Avro community is pleased to announce the release of Avro 1.11.1!
+
+All signed release artifacts, signatures and verification instructions can
+be found <a href="{{< relref "/project/download" >}}">here</a>
+
+## Most interesting
+
+This release includes 256 Jira issues, including some interesting features:
+
+Avro specification
+- [AVRO-3436](https://issues.apache.org/jira/browse/AVRO-3436) Clarify which names are allowed to be qualified with namespaces
+- [AVRO-3370](https://issues.apache.org/jira/browse/AVRO-3370) Inconsistent behaviour on types as invalid names
+- [AVRO-3275](https://issues.apache.org/jira/browse/AVRO-3275) Clarify how fullnames are created, with example
+- [AVRO-3257](https://issues.apache.org/jira/browse/AVRO-3257) IDL: add syntax to create optional fields
+- [AVRO-2019](https://issues.apache.org/jira/browse/AVRO-2019) Improve docs for logical type annotation
+
+C++
+- [AVRO-2722](https://issues.apache.org/jira/browse/AVRO-2722) Use of boost::mt19937 is not thread safe
+
+C#
+- [AVRO-3383](https://issues.apache.org/jira/browse/AVRO-3383) Many completed subtasks for modernizing C# coding style
+- [AVRO-3481](https://issues.apache.org/jira/browse/AVRO-3481) Input and output variable type mismatch
+- [AVRO-3475](https://issues.apache.org/jira/browse/AVRO-3475) Enforce time-millis and time-micros specification
+- [AVRO-3469](https://issues.apache.org/jira/browse/AVRO-3469) Build and test using .NET SDK 7.0
+- [AVRO-3468](https://issues.apache.org/jira/browse/AVRO-3468) Default values for logical types not supported
+- [AVRO-3467](https://issues.apache.org/jira/browse/AVRO-3467) Use oracle-actions to test with Early Access JDKs
+- [AVRO-3453](https://issues.apache.org/jira/browse/AVRO-3453) Avrogen Add Generated Code Attribute
+- [AVRO-3432](https://issues.apache.org/jira/browse/AVRO-3432) Add command line option to skip creation of directories
+- [AVRO-3411](https://issues.apache.org/jira/browse/AVRO-3411) Add Visual Studio Code Devcontainer support
+- [AVRO-3388](https://issues.apache.org/jira/browse/AVRO-3388) Implement extra codecs for C# as seperate nuget packages
+- [AVRO-3265](https://issues.apache.org/jira/browse/AVRO-3265) avrogen generates uncompilable code when namespace ends
+with ".Avro"
+- [AVRO-3219](https://issues.apache.org/jira/browse/AVRO-3219) Support nullable enum type fields
+
+Java
+- [AVRO-3531](https://issues.apache.org/jira/browse/AVRO-3531) GenericDatumReader in multithread lead to infinite loop
+- [AVRO-3482](https://issues.apache.org/jira/browse/AVRO-3482) Reuse MAGIC in DataFileReader
+- [AVRO-3586](https://issues.apache.org/jira/browse/AVRO-3586) Make Avro Build Reproducible
+- [AVRO-3441](https://issues.apache.org/jira/browse/AVRO-3441) Automatically register LogicalTypeFactory classes
+- [AVRO-3375](https://issues.apache.org/jira/browse/AVRO-3375) Add union branch, array index and map key "path"
+information to serialization errors
+- [AVRO-3374](https://issues.apache.org/jira/browse/AVRO-3374) Fully qualified type reference "ns.int" loses namespace
+- [AVRO-3294](https://issues.apache.org/jira/browse/AVRO-3294) IDL parsing allows doc comments in strange places
+- [AVRO-3273](https://issues.apache.org/jira/browse/AVRO-3273) avro-maven-plugin breaks on old versions of Maven
+- [AVRO-3266](https://issues.apache.org/jira/browse/AVRO-3266) Output stream incompatible with MagicS3GuardCommitter
+- [AVRO-3243](https://issues.apache.org/jira/browse/AVRO-3243) Lock conflicts when using computeIfAbsent
+- [AVRO-3120](https://issues.apache.org/jira/browse/AVRO-3120) Support Next Java LTS (Java 17)
+- [AVRO-2498](https://issues.apache.org/jira/browse/AVRO-2498) UUID generation is not working
+
+Javascript
+- [AVRO-3489](https://issues.apache.org/jira/browse/AVRO-3489) Replace istanbul with nyc for code coverage
+- [AVRO-3322](https://issues.apache.org/jira/browse/AVRO-3322) Buffer is not defined in browser environment
+- [AVRO-3084](https://issues.apache.org/jira/browse/AVRO-3084) Fix JavaScript interop test to work with other languages on CI
+
+Perl
+- [AVRO-3263](https://issues.apache.org/jira/browse/AVRO-3263) Schema validation warning on invalid schema with a long field
+
+Python
+- [AVRO-3542](https://issues.apache.org/jira/browse/AVRO-3542) Scale assignment optimization
+- [AVRO-3521](https://issues.apache.org/jira/browse/AVRO-3521) "Scale" property from decimal object
+- [AVRO-3380](https://issues.apache.org/jira/browse/AVRO-3380) Byte reading in avro.io does not assert bytes read
+- [AVRO-3229](https://issues.apache.org/jira/browse/AVRO-3229) validate the default value of an enum field
+- [AVRO-3218](https://issues.apache.org/jira/browse/AVRO-3218) Pass LogicalType to BytesDecimalSchema
+
+Ruby
+- [AVRO-3277](https://issues.apache.org/jira/browse/AVRO-3277) Test against Ruby 3.1
+
+Rust
+- [AVRO-3558](https://issues.apache.org/jira/browse/AVRO-3558) Add a demo crate that shows usage as WebAssembly
+- [AVRO-3526](https://issues.apache.org/jira/browse/AVRO-3526) Improve resolving Bytes and Fixed from string
+- [AVRO-3506](https://issues.apache.org/jira/browse/AVRO-3506) Implement Single Object Writer
+- [AVRO-3507](https://issues.apache.org/jira/browse/AVRO-3507) Implement Single Object Reader
+- [AVRO-3405](https://issues.apache.org/jira/browse/AVRO-3405) Add API for user-provided metadata to file
+- [AVRO-3339](https://issues.apache.org/jira/browse/AVRO-3339) Rename crate from avro-rs to apache-avro
+- [AVRO-3479](https://issues.apache.org/jira/browse/AVRO-3479) Derive Avro Schema macro
+
+Website
+- [AVRO-2175](https://issues.apache.org/jira/browse/AVRO-2175) Website refactor
+- [AVRO-3450](https://issues.apache.org/jira/browse/AVRO-3450) Document IDL support in IDEs
+
+
+## Rust
+
+This is the first release that provides the `apache-avro` crate at [crates.io](https://crates.io/crates/apache-avro)!
+
+## JIRA
+
+A list of all JIRA tickets fixed in 1.11.1 could be found [here](https://issues.apache.org/jira/issues/?jql=project%3DAVRO%20AND%20fixVersion%3D1.11.1)
+
+## Language repositories
+
+In addition, language-specific release artifacts are available:
+
+* C#: https://www.nuget.org/packages/Apache.Avro/1.11.1
+* Java: https://repo1.maven.org/maven2/org/apache/avro/avro/1.11.1/
+* Javascript: https://www.npmjs.com/package/avro-js/v/1.11.1
+* Perl: https://metacpan.org/release/Avro
+* Python 3: https://pypi.org/project/avro/1.11.1
+* Ruby: https://rubygems.org/gems/avro/versions/1.11.1
+* Rust: https://crates.io/crates/apache-avro/0.14.0
+
+Thanks to everyone for contributing!
+
diff --git a/doc/content/en/blog/releases/avro-1.11.2-released.md b/doc/content/en/blog/releases/avro-1.11.2-released.md
new file mode 100755
index 000000000..3949d5f52
--- /dev/null
+++ b/doc/content/en/blog/releases/avro-1.11.2-released.md
@@ -0,0 +1,98 @@
+---
+title: "Avro 1.11.2"
+linkTitle: "Avro 1.11.2"
+date: 2023-07-03
+---
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+The Apache Avro community is pleased to announce the release of Avro 1.11.2!
+
+All signed release artifacts, signatures and verification instructions can
+be found <a href="{{< relref "/project/download" >}}">here</a>
+
+This release addresses 89 [Avro JIRA](https://issues.apache.org/jira/issues/?jql=project%3DAVRO%20AND%20fixVersion%3D1.11.2).
+
+## Highlights
+
+C#
+- [AVRO-3434](https://issues.apache.org/jira/browse/AVRO-3434): Support logical schemas in reflect reader and writer
+- [AVRO-3670](https://issues.apache.org/jira/browse/AVRO-3670): Add NET 7.0 support
+- [AVRO-3724](https://issues.apache.org/jira/browse/AVRO-3724): Fix C# JsonEncoder for nested array of records
+- [AVRO-3756](https://issues.apache.org/jira/browse/AVRO-3756): Add a method to return types instead of writing them to disk
+
+C++
+- [AVRO-3601](https://issues.apache.org/jira/browse/AVRO-3601): C++ API header contains breaking include
+- [AVRO-3705](https://issues.apache.org/jira/browse/AVRO-3705): C++17 support
+
+Java
+- [AVRO-2943](https://issues.apache.org/jira/browse/AVRO-2943): Add new GenericData String/Utf8 ARRAY comparison test
+- [AVRO-2943](https://issues.apache.org/jira/browse/AVRO-2943): improve GenericRecord MAP type comparison
+- [AVRO-3473](https://issues.apache.org/jira/browse/AVRO-3473): Use ServiceLoader to discover Conversion
+- [AVRO-3536](https://issues.apache.org/jira/browse/AVRO-3536): Inherit conversions for Union type
+- [AVRO-3597](https://issues.apache.org/jira/browse/AVRO-3597): Allow custom readers to override string creation
+- [AVRO-3560](https://issues.apache.org/jira/browse/AVRO-3560): Throw SchemaParseException on dangling content beyond end of schema
+- [AVRO-3602](https://issues.apache.org/jira/browse/AVRO-3602): Support Map(with non-String keys) and Set in ReflectDatumReader
+- [AVRO-3676](https://issues.apache.org/jira/browse/AVRO-3676): Produce valid toString() for UUID JSON
+- [AVRO-3698](https://issues.apache.org/jira/browse/AVRO-3698): SpecificData.getClassName must replace reserved words
+- [AVRO-3700](https://issues.apache.org/jira/browse/AVRO-3700): Publish Java SBOM artifacts with CycloneDX
+- [AVRO-3783](https://issues.apache.org/jira/browse/AVRO-3783): Read LONG length for bytes, only allow INT sizes
... 417884 lines suppressed ...