package ppxlib
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
Standard infrastructure for ppx rewriters
Install
dune-project
Dependency
Authors
Maintainers
Sources
ppxlib-0.37.0.tbz
sha256=2e223837e7cecc3bc84a432432c0a72f4e1d5be9165c9c33772f156db85db0b3
sha512=78c62c6de7a641b950de9b4b744841c8823918c545046693e291077adfcd069a812094c11d8d51f792c0b5f340307d38f452ff0a92520df63ed17a3ca9922e2e
Description
Ppxlib is the standard infrastructure for ppx rewriters and other programs that manipulate the in-memory representation of OCaml programs, a.k.a the "Parsetree".
It also comes bundled with two ppx rewriters that are commonly used to
write tools that manipulate and/or generate Parsetree values;
ppxlib.metaquot which allows to construct Parsetree values using the
OCaml syntax directly and ppxlib.traverse which provides various
ways of automatically traversing values of a given type, in particular
allowing to inject a complex structured value into generated code.
Published: 14 Oct 2025
Dependencies (6)
- stdlib-shims
-
sexplib0
>= "v0.12" -
ppx_derivers
>= "1.0" -
ocaml-compiler-libs
>= "v0.11.0" -
ocaml
>= "4.08.0" & < "5.5.0" -
dune
>= "3.8"
Dev Dependencies (6)
-
arrayjit
!= "0.5.2" - awsm-codegen
-
bam-ppx
>= "0.4" -
base_quickcheck
>= "v0.17.1" -
bistro
>= "0.6.0" -
bonsai
>= "v0.16.0" - bytestring
-
clangml
>= "4.7.0" - cmdlang-to-base
- codex
-
comby
< "1.3.0" - commons
-
crs
< "0.0.20260307" - diff
-
diffast-misc
= "0.3.5.1" -
dream-html
>= "3.11.2" -
dune
>= "3.17.2" - dunolint
-
dunolint-lib
< "0.0.20251006" - dunolint-lib-base
- ego
-
eliom
>= "8.9.0" -
elpi
>= "3.3.1" -
embedded_ocaml_templates
< "0.3.1" | >= "0.7" -
extunix
>= "0.4.4" -
frama-c
>= "32.0~beta" - fsml
-
fstar
>= "2025.06.20" -
GT
= "0.5.1" -
gen_js_api
< "1.0.8" | >= "1.1.1" -
genprint
= "0.3" -
goblint
>= "2.5.0" -
gospel
>= "0.3.1" -
hack_parallel
>= "1.0.1" -
hardcaml
>= "v0.14.1" & != "v0.17.0" -
html_of_jsx
>= "0.0.2" - http_async
-
js_of_ocaml
>= "3.8.0" -
js_of_ocaml-compiler
>= "6.1.0" -
js_of_ocaml-lwt
>= "3.10.0" & < "6.1.0" -
js_of_ocaml-ocamlbuild
>= "3.10.0" & < "5.0" -
js_of_ocaml-ppx
>= "6.1.0" -
js_of_ocaml-ppx_deriving_json
>= "3.7.1" -
js_of_ocaml-toplevel
>= "3.10.0" -
js_of_ocaml-tyxml
>= "3.10.0" & < "6.1.0" -
lablqml
>= "0.7" -
lascar
>= "0.7.0" - learn-ocaml
- learn-ocaml-client
-
lens
>= "1.2.5" - logs-ppx
-
lwt_ppx
>= "5.9.2" -
MlFront_Cli
>= "2.1.4~prerel2" & < "2.3.1" - MlFront_Config
- MlFront_Manip
-
melange
>= "6.0.1-51" -
melange-json
>= "1.2.0" - melange-json-native
-
merlin
>= "4.7-412" -
metaquot
>= "0.5.0" -
mlt_parser
= "v0.13.0" | >= "v0.14.1" - mlx
-
neural_nets_lib
!= "0.5.2" -
noCanren
>= "0.3.0~alpha1" - node_of_ocaml
-
nuscr
>= "2.0.0" -
OCanren-ppx
>= "0.3.0" -
obus
>= "1.2.5" -
ocaml-monadic
>= "0.5" - ocamlmerlin-mlx
-
ocf_ppx
>= "1.0.0" -
ocsigen-i18n
>= "4.0.0" -
ocsigen-ppx-rpc
>= "1.1" - ojs_base_ppx
-
ometrics
= "0.2.0" - ortac-core
- ortac-qcheck-stm
- ortac-wrapper
-
pacomb
>= "1.4.3" - pancake
-
pgocaml_ppx
>= "4.3.0" -
pla
>= "2.0" -
polymarket
>= "0.2.0" - ppx-owl-opt
-
ppx_accessor
>= "v0.14.3" -
ppx_assert
>= "v0.13.0" - ppx_bap
-
ppx_base
>= "v0.13.0" -
ppx_bench
>= "v0.17.1" -
ppx_bin_prot
>= "v0.17.1" -
ppx_bitstring
>= "5.0.0" -
ppx_blob
>= "0.7.2" - ppx_catch
- ppx_cold
-
ppx_compare
>= "v0.13.0" -
ppx_compose
>= "0.2.1" -
ppx_const
>= "2.0.1" -
ppx_conv_func
>= "v0.13.0" - ppx_counters
- ppx_css
-
ppx_cstruct
>= "6.0.0" -
ppx_cstubs
>= "0.6.1" & < "0.7.0" -
ppx_csv_conv
>= "v0.13.0" -
ppx_custom_printf
>= "v0.14.1" - ppx_decimal
-
ppx_defer
>= "0.5.0" - ppx_demo
-
ppx_derive_at_runtime
!= "v0.17.0" -
ppx_deriving
>= "6.1.0" - ppx_deriving_cad
-
ppx_deriving_decoders
< "0.2" -
ppx_deriving_encoding
>= "0.4.2" -
ppx_deriving_ezjsonm
>= "0.4.1" -
ppx_deriving_hardcaml
>= "v0.13.0" -
ppx_deriving_hash
>= "0.1.3" - ppx_deriving_jsonschema
- ppx_deriving_jsont
-
ppx_deriving_madcast
>= "0.2" - ppx_deriving_popper
-
ppx_deriving_protobuf
>= "3.0.0" - ppx_deriving_qcheck
-
ppx_deriving_rpc
>= "10.0.0" - ppx_deriving_scad
- ppx_deriving_variant_string
-
ppx_deriving_yaml
>= "0.4.1" -
ppx_deriving_yojson
>= "3.10.0" -
ppx_diff
>= "v0.17.1" - ppx_disable_unused_warnings
- ppx_dream_eml
- ppx_embed_file
-
ppx_enumerate
>= "v0.13.0" -
ppx_expect
= "v0.16.2" | >= "v0.17.3" - ppx_expect_nobase
-
ppx_factory
= "0.1.0" | >= "0.2.0" -
ppx_fail
>= "v0.13.0" -
ppx_fields_conv
>= "v0.14.2" - ppx_fixed_literal
- ppx_format
- ppx_fun
-
ppx_gen_rec
>= "2.0.0" -
ppx_getenv
>= "2.1" -
ppx_globalize
>= "v0.17.2" - ppx_hardcaml
-
ppx_hash
>= "v0.13.0" -
ppx_here
>= "v0.13.0" - ppx_ignore_instrumentation
-
ppx_import
< "1.8.0" | >= "1.11.0" -
ppx_inline_test
>= "v0.17.1" -
ppx_interact
>= "0.2.0" -
ppx_irmin
>= "3.0.0" -
ppx_jane
>= "v0.13.0" -
ppx_js_style
>= "v0.17.1" -
ppx_jsobject_conv
= "0.8.0" | >= "0.21.1" -
ppx_jsonaf_conv
>= "v0.15.1" & != "v0.17.0" -
ppx_let
>= "v0.17.1" - ppx_log
-
ppx_lun
>= "0.0.2" -
ppx_make
>= "0.3.4" - ppx_map
-
ppx_matches
>= "0.1.0" - ppx_mica
- ppx_mikmatch
-
ppx_minidebug
!= "2.2.0" -
ppx_module_timer
>= "v0.13.0" - ppx_monad
-
ppx_monoid
>= "0.3.3" -
ppx_mysql
>= "1.1.3" - ppx_open
-
ppx_optcomp
>= "v0.17.1" - ppx_optint
-
ppx_optional
>= "v0.13.0" -
ppx_parser
>= "0.2.1" - ppx_partial
-
ppx_pattern_bind
>= "v0.13.1" & != "v0.17.0" -
ppx_pipebang
>= "v0.13.0" -
ppx_protocol_conv
>= "5.2.3" -
ppx_python
>= "v0.15.0" -
ppx_quick_test
>= "v0.17.1" -
ppx_repr
>= "0.8.0" - ppx_seq
-
ppx_sexp_conv
>= "v0.17.1" -
ppx_sexp_message
>= "v0.14.1" -
ppx_sexp_value
>= "v0.13.0" -
ppx_show
>= "0.2.0" -
ppx_stable
>= "v0.17.1" - ppx_stable_witness
-
ppx_string
>= "v0.14.1" - ppx_string_conv
- ppx_string_interpolation
- ppx_subliner
- ppx_system
-
ppx_trace
>= "0.11" - ppx_ts
-
ppx_tydi
>= "v0.17.1" - ppx_type_directed_value
-
ppx_typed_fields
!= "v0.17.0" -
ppx_typerep_conv
>= "v0.17.1" - ppx_units
- ppx_unreachable
- ppx_update
-
ppx_variants_conv
>= "v0.17.1" -
ppx_viewpattern
>= "0.1.1" - ppx_windtrap
-
ppx_xml_conv
>= "v0.13.0" -
ppx_yojson_conv
>= "v0.15.1" & != "v0.17.0" -
ppxlib-tools
>= "0.37.0" -
ppxlib_jane
>= "v0.17.3" -
qcow
= "0.11.0" - rdf_ppx
- react-rules-of-hooks-ppx
-
reason
>= "3.16.0" - reason-react-day-picker
-
reason-react-ppx
>= "0.17.0" -
refl
>= "0.4.1" -
repr-fuzz
>= "0.8.0" - res_tailwindcss
-
sedlex
>= "3.4" - serde_derive
-
server-reason-react
>= "0.2.0" & != "0.4.0" - spectrum_palette_ppx
- speed
-
spin
>= "0.8.0" - stdint-literals
- stk_ppx
-
streamable
!= "v0.17.0" - styled-ppx
- togglelog
-
toplevel_expect_test
>= "v0.14.1" -
tyxml-jsx
>= "4.5.0" -
tyxml-syntax
>= "4.5.0" -
visitors
= "20210608" | >= "20251010" -
vlt
>= "0.2.5" -
volgo
< "0.0.21" - volgo-base
-
volgo-git-backend
< "0.0.21" -
volgo-git-eio
< "0.0.21" -
volgo-git-unix
< "0.0.21" -
volgo-hg-backend
< "0.0.21" -
volgo-hg-eio
< "0.0.21" -
volgo-hg-unix
< "0.0.21" -
volgo-vcs
< "0.0.21" - wasm_of_ocaml-compiler
-
wtr
< "3.0.0" - wtr-ppx
-
xtmpl_ppx
>= "1.1.0"
Conflicts (3)
-
ocaml-variants
= "5.1.0~alpha1+options" -
ocaml-base-compiler
= "5.1.0~alpha1" -
ocaml-migrate-parsetree
< "2.0.0"
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page