This document describe the plan for the next releases of Jbuilder. * V1 ** +CLI+ Add a proper [[http://erratique.ch/software/cmdliner][cmdliner]] based CLI. Jbuilder will include a copy of cmdliner to avoid the extra dependency. - *20/02/2017*: This is now implemented thanks to Rudi Grinberg ([[https://github.com/janestreet/jbuilder/pull/2][#5]]) *** Improve the man pages Add a bit more documentation in the Man pages generated by cmdliner. ** Documentation Document the usage and design of Jbuilder. - *21/02/2017*: There is now a manual, it still needs a bit more about CLI usage ** +Stable jbuild types+ Add a stable version of the jbuild format so that one can write =(jbuild_version 1)= inside jbuild files and be sure that they will work with future versions of jbuild. - *24/02/2017*: implemented ** Finding the project/workspace root Currently =jbuilder= assumes that the root of the project/workspace is where it is started. Eventually this will be changed as follows: - if there is a =jbuild-workspace= in a parent directory, it marks the root; - if not found, look for a =opam= or =package.opam= file in parent directories; - if not found, look for a =.git=, =.hg=, ... file in parent directories; - if not found, use the current directory as root. ** Generate .merlin files [[https://github.com/janestreet/jbuilder/issues/1][#1]] - *08/02/2017*: Richard Davison is working on this [[https://github.com/janestreet/jbuilder/pull/2][#2]] ** +Running tests with jbuilder [[https://github.com/janestreet/jbuilder/issues/3][#3]]+ Allow to define tests with =(alias ...)= stanzas and add =jbuilder runtest= to run them. - *21/02/2017*: Rudi Grinberg added support for aliases ([[https://github.com/janestreet/jbuilder/pull/2][#7]]) - *23/02/2017*: Added a =runtest= subcommand ** Implement package version support Implement finding the version of a package, as described in the documentation. * After V1 ** Cross-compilation Everything needed for cross-compilation is implemented. One essentially need to add a function =host_exe : Path.t -> Path.t= inside build contexts to make it all work, as well as a way to define the build contexts. These could be defined inside =jbuild-workspace= as follows: #+begin_src scheme (context ((name foo) (switch 4.04.0))) (context ((name foo+mingw) (switch 4.04.0+mingw) (host foo))) #+end_src ** Jenga bridge Implement a jenga plugin that can read the same jbuild files as Jbuilder. To do that we'll use Jbuilder as a library. ** odoc support Support generating documentation with [[https://github.com/ocaml-doc/odoc][odoc]]. ** Inline tests Setup automatic support of [[https://github.com/janestreet/ppx_inline_test][inline tests]] and [[https://github.com/janestreet/ppx_bench][inline benchmarks]]. ** Extend the action language Currently in =(action ...)= fields, when not using =bash= the language is very limited. It would be nice to add more commands that would guarantee portability and avoid the quoting nightmare of =bash=. FS commands should be straightfoward to implement: - =(copy )= - =(mkdir )= - ... Redirections to/from files are simple as well. We could also implements pipes (=(pipe ...)=) by using temporary files. Using proper pipes would complicate windows support and would make proper handling of =-j= hard. Using temporary files will be just fine.