package ocamlmig

  1. Overview
  2. Docs
OCaml source code rewriting tool

Install

Dune Dependency

Authors

Maintainers

Sources

ocamlmig-5.2-20250202.tbz
sha256=4e8e966d32d45c5fce23f5310de0ad6885b5879b9c5293d2dfa04ed6f6cb8f93
sha512=d1fb37be81b4adb92e4cf38f2f41e1655b522ca1a45103224643fa41ee88603bb4d9b44b8bfa7028fb8e28a680d210209fe1068d8a75102c925139954d037e37

Description

Ocamlmig is a command line tool to rewrite ocaml source code, especially to make updating to newer interfaces easier.

Published: 05 Feb 2025

README

ocamlmig is a command line tool for rewriting ocaml source code with access to scope and type information.

As a simple example of what it can do, let's say an opam-installed library A provides this interface:

val new_name : int -> int

val old_name : int -> int
[@@migrate { repl = Rel.new_name }]

and your repository contains a file b.ml:

let _ = A.old_name 1

then you could do:

$ git diff b.ml
$ ocamlmig migrate -w
$ git diff b.ml
-let _ = A.old_name 1
+let _ = A.new_name 1

Examples of real rewrites:

If that piqued your interest, you can find more information about what ocamlmig does, and using it.

This is work in progress, so many things are only partially implemented, but the existing functionality as is should still be interesting.

Dependencies (27)

  1. re >= "1.10.3"
  2. camlp-streams
  3. astring
  4. csexp >= "1.4.0"
  5. uutf >= "1.0.1"
  6. uuseg >= "10.0.0"
  7. stdio
  8. ocp-indent >= "1.8.0"
  9. ocaml-version >= "3.5.0"
  10. menhirSdk >= "20201216"
  11. menhirLib >= "20201216"
  12. menhir >= "20201216"
  13. fpath >= "0.7.3"
  14. fix
  15. either
  16. dune-build-info
  17. dune
  18. cmdliner >= "1.1.0"
  19. base >= "v0.12.0"
  20. ocaml >= "4.08"
  21. ppx_partial
  22. csexp
  23. core_unix
  24. core
  25. base
  26. dune >= "3.15"
  27. ocaml >= "5.2" & < "5.3"

Dev Dependencies (1)

  1. odoc with-doc

Used by

None

Conflicts

None

OCaml

Innovation. Community. Security.