Runtime library for code generated by atdgen

ATD stands for Adaptable Type Definitions. It is a syntax for defining
cross-language data types. It is used as input to generate efficient
and type-safe serializers, deserializers and validators. The current target
languages are OCaml and Java.

The following opam packages are provided by the atd project:

  • atdgen: executable that generates OCaml code dealing with json and
    biniou data formats

  • atdj: executable that generates Java code dealing with json

  • atd: library for parsing atd files used by code generators



Help wanted

The ATD suite of tools is developed and maintained by
volunteers—users like you.
Various issues are in need
of attention. If you'd like to contribute, please leave a comment on the
issue you're interested in, or create a new issue. Experienced
contributors will guide you as needed.

There are many simple ways of making a positive impact. For example,
you can...

  • Use the software in your project.

  • Give a demo to your colleagues.

  • Share the passion on your blog.

  • Tweet about what you're doing with atd.

  • Report difficulties by creating new issues. We'll triage them.

  • Ask questions on StackOverflow.

  • Answer questions on

  • Discuss usage on the OCaml forums.

  • Pick a task that's easy for you.

Check out in particular
good first time issues
and other issues with which
we could use some help.

See our contribution guidelines.


The ATD language and atdgen were originally created at MyLife by
Martin Jambon in 2010. Atdj was created at MyLife by John
Billings in 2010. Multiple volunteers contributed to the project after that.
Other prominent contributors include Jeff Meister, David
Sheets, and Rudi Grinberg.

We distribute the source code under the terms of a BSD license.