A collection of ppx-deriving plugins
|
|
||
|---|---|---|
| README.md | ||
awesome-ppx-deriving
A collection of ppx-deriving plugins and related resources. Inspired by sindresorhus/awesome.
Serialization and codecs
- js_of_ocaml-ppx_deriving_json: JSON plugin shipped with Js_of_ocaml
- jsonkit: JSON encode and decode plugin with a native OCaml backend (jsonkit) and a Melange backend (melange-json)
- ppx_bin_prot: Plugin to generate Bin_prot readers and writers
- ppx_csv_conv: Plugin to generate CSV readers and writers for records
- ppx_deriving_binary_bytes: Plugin to generate binary serializers and deserializers
- ppx_deriving_decoders: Plugin to generate decoders for the Decoders library
- ppx_deriving_dyn: Plugin to generate converters to Dyn.t, the dynamic value type of Dune
- ppx_deriving_encoding: Plugin for json-encoding
- ppx_deriving_ezjsonm: Plugin for Ezjsonm, from the same repository as ppx_deriving_yaml
- ppx_deriving_json: Plugin to generate JSON codecs for both Yojson and Melange from one deriver
- ppx_deriving_jsont: Plugin to generate Jsont descriptions
- ppx_deriving_protobuf: A Protocol Buffers codec generator for OCaml
- ppx_deriving_toml: Plugin to generate TOML codecs
- ppx_deriving_yaml: Plugin for Yaml
- ppx_deriving_yojson: JSON codec generator for OCaml
- ppx_jsonaf_conv: Plugin to generate Jsonaf conversion functions
- ppx_protocol_conv: Pluggable serialization and deserialization of ocaml data strucures based on type_conv
- ppx_sexp_conv: Plugin to generate S-expression conversion functions from type definitions
- ppx_xml_conv: Plugin to generate XML conversion functions for records
- ppx_yojson_conv: Plugin to generate Yojson conversion functions
Schemas and interfaces
- ppx_deriving_atd: Plugin to generate ATD schema files from types
- ppx_deriving_json_schema: Plugin to generate JSON Schema objects, part of the openapi-ocaml project
- ppx_deriving_jsonschema: Plugin to generate JSON Schema from types
- ppx_deriving_router: Plugin to generate type-safe HTTP routes for Dream and Melange
- ppx_deriving_rpc: Plugin for ocaml-rpc, a library to deal with RPCs in OCaml
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
- ppx_deriving_argparse: Very simple plugin for command line parser on Ocaml >=4.02
- ppx_deriving_cmdliner: Plugin for generating command line interfaces from types (Cmdliner.Term.t)
- ppx_subliner: Plugin to generate Cmdliner sub-command groups
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
- ppx_deriving_cad: Plugin for OCADml transformation functions, successor of ppx_deriving_scad
- ppx_deriving_hardcaml: Rewrite OCaml records for use as Hardcaml Interfaces
- ppx_deriving_jsoo: Plugin for Js_of_ocaml
- ppx_deriving_scad: Plugin to generate Scad.t, V3.t, and V2.t types of the Scad_ml library.
- ppx_ezlua: Plugin to generate Lua conversions for ezlua
- ppx_jsobject_conv: Plugin to convert between OCaml types and JavaScript objects for Js_of_ocaml
- ppx_python: Plugin to generate Python conversion functions
Writing your own deriver
- ppx_easy_deriving: Library to write new derivers with less boilerplate and no runtime overhead
- ppx_type_directed_value: Library to build deriving-style generators without writing a ppx
Contribution
Feel free to improve this list. Any contributions and suggestions are very appreciated.
