Version 2:

Breaking Changes

  • The tool for OPAM integration is coswitch

  • renaming

    • ocaml_module attributes src and intf renamed to struct and sig, respectively

    • modules attribute of ocaml_library renamed to manifest

    • rule ocaml_interface renamed to ocaml_signature

    • deps_adjunct renamed to ppx_codeps (i.e. co-dependencies)

    • OPAM package labels have changed. See coswitch for more information. example, ppx_deriving.eq → @ppx_deriving//eq, mtime.clock.os → @mtime//clock/os. To make these targets available the new OPAM bootstrapper tool must be run separately.

  • namespacing support has been thoroughly revised, see below for details

  • deletions

    • attribute deps_opam removed; opam deps are no longer special, and are treated like any other dep

    • attribute deps_adjunct_opam removed

Non-breaking changes

  • Rule ocaml_archive is deprecated and will be removed in a future version. Use instead ocaml_library with attribute archived=True.

  • Rule ocaml_ns_archive is deprecated and will be removed in a future version. Use instead ocaml_ns_library with attribute archived=True.

  • Toolchain support has changed drastically, but this should not effect existing code, except insofar as OPAM dependencies must be changed as noted above. For example version 1 generated build commands that used ocamlfind, which it assumed to be installed in OPAM. Version 2 does not use ocamlfind; the commands it generates invoke the OCaml compilers directly, via the toolchain interface. This change should not affect existing build code.

New stuff

  • The new coswitch tool generates code implementing OPAM-integrated toolchains.

  • bottom-up namespacing

  • toolchain independence

  • cc deps produced by cc_* rules (e.g. cc_library) may be added directly to the deps attribute of ocaml_module

  • new rules:

  • Rules for third-party tools (e.g. menhir) are in tools_ocaml

Tags: