Mdx 1.5.0

See full changelog


  • Add a --output/-o option to the test subcommand to allow specifying a different output file to write the corrected to, or to write it to the standard output (#194, @NathanReb)
  • Migrate to OCaml 4.08 AST to add support for let* bindings (#190, @gpetiot)
  • Add --syntax option to rule subcommand to allow generating rules for cram tests (#177, @craigfe)
  • Add a require-package label to explicitly declare dune package dependencies of a code block (#149, @Julow)
  • Add an unset- label to unset env variables in shell blocks (#132, @clecat)


  • Format rules generated by ocaml-mdx rule using dune format-dune-file (#184, @NathanReb)
  • Run promotion of markdown files before .ml files in generated dune rules (#140, @clecat)


  • Use module_presence information on Env.summary to prevent fetching absent modules from the toplevel env (#186, @clecat)
  • Remove trailing whitespaces at the end of toplevel or bash evaluation lines (#166, @clecat)
  • Improve error reporting of ocaml-mdx test (#172, @Julow)
  • Rule: Pass the --section option to test (#176, @Julow)
  • Remove trailing whitespaces from shell outputs and toplevel evals (#166, @clecat)
  • Remove inappropriate empty lines in generated dune rules (#163, @Julow)
  • Fix ignored skip label in ocaml-mdx pp (#1561, @CraigFe)
  • Fix synchronization of new parts from markdown to .ml (#156, @Julow)
  • Fix ignored [@@@parts ...] markers within module definitions (#155, @Julow)
  • Fix a bug in internal OCaml version comparison that lead to crashes in some cases (#145, @gpetiot)
  • Promote to empty .ml file when using to-ml direction (#139, @clecat)
  • Apply --force-output to .ml file as well (#137, @clecat)
  • Fix a bug preventing .corrected files to be written in some cases (#136, @clecat)
  • Add compatibility with 4.09.0 (#133, @xclerc)


  • Remove the output subcommand as it was very specific to RealWorldOCaml needs (#195, @NathanReb)
  • Remove the infer-timestamp direction (#171 @Julow)