dune/ROADMAP.org

109 lines
3.3 KiB
Org Mode

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 <src> <dst>)=
- =(mkdir <path>)=
- ...
Redirections to/from files are simple as well.
We could also implements pipes (=(pipe <command1> <command2> ...)=) 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.