package ppxlib

  1. Overview
  2. Docs
Base library and tools for ppx rewriters

Install

Dune Dependency

Authors

Maintainers

Sources

ppxlib-0.13.0.tbz
sha256=81e1f3d308500e0e7f6108d5b0dda2b879640a5c21ef3dc4a9bd90381cee39d9
sha512=c94bab35affdbdd2562de7ad30eb97282568c2c7fe48229fab5d12d1fc73312a9ee398758d598d969318cc01e8f88df9958e91820785e39d8faf3dbd7bc2e606

Description

A comprehensive toolbox for ppx development. It features:

  • a OCaml AST / parser / pretty-printer snapshot,to create a full frontend independent of the version of OCaml;
  • a library for library for ppx rewriters in general, and type-driven code generators in particular;
  • a feature-full driver for OCaml AST transformers;
  • a quotation mechanism allowing to write values representing the OCaml AST in the OCaml syntax;
  • a generator of open recursion classes from type definitions.

Published: 15 Apr 2020

README

Ppxlib - Meta-programming for OCaml

Travis status" AppVeyor status"

Overview

The ppxlib project provides the basis for the ppx system, which is currently the officially supported method for meta-programming in OCaml. It offers a principled way to generate code at compile time in OCaml projects.

Ppxlib comes with a user manual aimed at both users and authors of ppx rewriters.

History

This repository was created by merging several older projects. See the history for more details.

Dependencies (7)

  1. stdio >= "v0.11.0"
  2. ppx_derivers >= "1.0"
  3. ocaml-migrate-parsetree >= "1.3.1" & < "2.0.0"
  4. ocaml-compiler-libs >= "v0.11.0"
  5. dune >= "1.11"
  6. base >= "v0.11.0"
  7. ocaml >= "4.04.1"

Dev Dependencies (2)

  1. cinaps with-test & >= "v0.12.1"
  2. ocamlfind with-test

  1. arrayjit < "0.5.2"
  2. base_quickcheck >= "v0.13.0" & < "v0.14.1"
  3. bistro < "0.6.0"
  4. brisk-reconciler
  5. clangml = "4.0.1"
  6. comby < "1.3.0"
  7. dune = "3.17.2"
  8. elpi
  9. embedded_ocaml_templates < "0.8"
  10. fsml
  11. GT < "0.4.0" | >= "0.5.2"
  12. gen_js_api < "1.0.7"
  13. genprint >= "0.3"
  14. hack_parallel >= "1.0.1"
  15. hardcaml = "v0.14.0"
  16. js_of_ocaml-ppx_deriving_json >= "3.5.2" & < "3.7.1"
  17. lascar >= "0.7.0"
  18. learn-ocaml
  19. learn-ocaml-client
  20. logs-ppx
  21. melange-json >= "1.2.0" & < "2.0.0"
  22. merlin >= "4.7-412"
  23. mlt_parser >= "v0.13.0" & < "v0.14.1"
  24. neural_nets_lib < "0.5.2"
  25. noCanren >= "0.3.0~alpha1"
  26. node_of_ocaml
  27. nuscr = "1.1.0"
  28. obus >= "1.2.1" & < "1.2.5"
  29. octez-internal-libs
  30. ojs_base_ppx
  31. override = "0.2.2"
  32. pacomb
  33. pattern < "0.2.0"
  34. ppx-owl-opt
  35. ppx_accessor = "v0.14.1"
  36. ppx_assert >= "v0.13.0" & < "v0.15.0"
  37. ppx_base >= "v0.13.0" & < "v0.15.0"
  38. ppx_bench >= "v0.13.0" & < "v0.14.1"
  39. ppx_bin_prot >= "v0.13.0" & < "v0.15.0"
  40. ppx_blob >= "0.7.2"
  41. ppx_cold < "v0.15.0"
  42. ppx_compare >= "v0.13.0" & < "v0.15.0"
  43. ppx_compose >= "0.2.1"
  44. ppx_const = "2.0"
  45. ppx_conv_func >= "v0.13.0" & < "v0.15.0"
  46. ppx_csv_conv >= "v0.13.0" & < "v0.15.0"
  47. ppx_custom_printf >= "v0.13.0" & < "v0.14.1"
  48. ppx_defer >= "0.5.0"
  49. ppx_deriving = "5.0"
  50. ppx_deriving_encoding < "0.2" | = "0.2.3"
  51. ppx_deriving_hardcaml >= "v0.13.0" & < "v0.15.0"
  52. ppx_deriving_hash < "0.1.3"
  53. ppx_deriving_jsoo < "0.2"
  54. ppx_deriving_popper
  55. ppx_deriving_yojson = "3.6.0"
  56. ppx_dream_eml
  57. ppx_enumerate >= "v0.13.0" & < "v0.15.0"
  58. ppx_expect >= "v0.13.0" & < "v0.14.1"
  59. ppx_factory >= "0.1.0" & < "0.2.0"
  60. ppx_fail >= "v0.13.0"
  61. ppx_fields_conv >= "v0.13.0" & < "v0.14.1"
  62. ppx_fixed_literal < "v0.15.0"
  63. ppx_fun
  64. ppx_getenv = "2.0"
  65. ppx_hash >= "v0.13.0" & < "v0.15.0"
  66. ppx_here >= "v0.13.0" & < "v0.15.0"
  67. ppx_import < "1.8.0"
  68. ppx_inline_test >= "v0.13.0" & < "v0.14.1"
  69. ppx_irmin >= "2.2.0" & < "2.4.0" | >= "3.0.0"
  70. ppx_jane >= "v0.13.0" & < "v0.15.0"
  71. ppx_js_style >= "v0.13.0" & < "v0.15.0"
  72. ppx_jsobject_conv = "0.8.0"
  73. ppx_let >= "v0.13.0" & < "v0.15.0"
  74. ppx_log < "v0.15.0"
  75. ppx_make
  76. ppx_module_timer >= "v0.13.0" & < "v0.15.0"
  77. ppx_monad
  78. ppx_mysql >= "1.1.3"
  79. ppx_optcomp >= "v0.13.0" & < "v0.14.1"
  80. ppx_optint
  81. ppx_optional >= "v0.13.0" & < "v0.15.0"
  82. ppx_pattern_bind >= "v0.13.1" & < "v0.15.0"
  83. ppx_pipebang >= "v0.13.0" & < "v0.15.0"
  84. ppx_protocol_conv >= "5.1.0"
  85. ppx_python >= "v0.13.0" & < "v0.15.0"
  86. ppx_rapper
  87. ppx_regexp >= "0.5.1"
  88. ppx_repr
  89. ppx_sexp_conv >= "v0.13.0" & < "v0.14.1"
  90. ppx_sexp_message >= "v0.13.0" & < "v0.14.1"
  91. ppx_sexp_value >= "v0.13.0" & < "v0.15.0"
  92. ppx_show >= "0.2.0"
  93. ppx_stable >= "v0.13.0" & < "v0.14.1"
  94. ppx_string < "v0.15.0"
  95. ppx_string_interpolation < "1.0.1"
  96. ppx_subliner
  97. ppx_typerep_conv >= "v0.13.0" & < "v0.14.1"
  98. ppx_variants_conv >= "v0.13.0" & < "v0.14.1"
  99. ppx_viewpattern < "0.1.1"
  100. ppx_xml_conv >= "v0.13.0" & < "v0.15.0"
  101. ppx_yojson = "1.0.0"
  102. ppx_yojson_conv >= "v0.13.0" & < "v0.15.0"
  103. qcow = "0.11.0"
  104. repr-fuzz
  105. res_tailwindcss
  106. speed
  107. spin >= "0.8.0"
  108. stdint-literals
  109. stk_ppx
  110. toplevel_expect_test >= "v0.13.0" & < "v0.14.1"
  111. validate
  112. visitors = "20210127"

Conflicts

None

OCaml

Innovation. Community. Security.