A collection of ppx-deriving plugins
Find a file
2026-09-03 17:39:43 +00:00
README.md docs: Rename melange-json entry to jsonkit 2026-09-03 17:39:43 +00:00

awesome-ppx-deriving

Awesome

A collection of ppx-deriving plugins and related resources. Inspired by sindresorhus/awesome.

Serialization and codecs

Schemas and interfaces

General purpose

  • GT: Plugin to generate generic object-oriented transformations such as show, map and fold
  • ppx_accessor: Plugin to generate accessors for use with the Accessor libraries
  • ppx_compare: Plugin to generate comparison and equality functions
  • ppx_deriving_hash: Plugin to generate hash functions
  • ppx_deriving_madcast: Plugin for cast functions based on their types
  • ppx_deriving_melange: Melange-compatible subset of the standard ppx_deriving plugins
  • ppx_deriving_morphism: Morphism generator for OCaml >=4.02
  • ppx_deriving_variant_string: Plugin to convert between variants and strings
  • ppx_diff: Plugin to generate diff functions for types
  • ppx_enum: Plugin to convert between simple variants and strings
  • ppx_enumerate: Plugin to generate the list of all values of a finite type
  • ppx_factory: Plugin to generate factory functions and default values
  • ppx_fields_conv: Plugin to generate accessor and iteration functions for records
  • ppx_hash: Plugin to generate hash functions compatible with Base
  • ppx_irmin: Plugin to generate Irmin type representations
  • ppx_make: Plugin to generate make functions
  • ppx_repr: Plugin to generate Repr type representations
  • ppx_show: Plugin to generate show functions, built on ppxlib
  • ppx_stable: Plugin to generate conversions between versions of stable types
  • ppx_string_conv: Plugin to generate of_string and to_string functions
  • ppx_typed_fields: Plugin to generate typed field GADTs for records
  • ppx_typerep_conv: Plugin to generate runtime type representations
  • ppx_uopt: Plugin to generate allocation-free Option modules for unboxed types, requires OxCaml
  • ppx_variants_conv: Plugin to generate accessor and iteration functions for variants
  • refl: Plugin to generate runtime type representations for reflection
  • validate: Plugin to generate validation functions from annotated types

Command line

Testing

  • bam-ppx: Plugin to generate generators for the Bam property-based testing framework
  • ppx_deriving_crowbar: Plugin for crowbar generators
  • ppx_deriving_popper: Plugin to generate sample functions for the Popper testing library
  • ppx_deriving_qcheck: Plugin to generate QCheck generators for property-based testing
  • ppx_hegel_generator: Plugin to generate generators for the Hegel property-based testing library
  • ppx_mica: Plugin that automates differential testing of modules
  • ppx_quickcheck: Plugin to generate Base_quickcheck generators, observers and shrinkers

Other languages and domains

Writing your own deriver

Contribution

Feel free to improve this list. Any contributions and suggestions are very appreciated.

License

CC0