- make sure type t always come first
- Map.map, Map.fold, ... never pass the key to the callback while Map.mapi, Map.foldi, ... do
- removed the ~key and ~data labels, I find them useless and annoying
- Set.elements --> Set.to_list
- Map.bindings --> Map.to_list
- Map.of_alist --> Map.of_list
- added Ordering.t for comparison functions
- renamed Inl/Inr to Left/Right. The latter seems clearer
- moved List.longest to String.longest
- added a Pp module with a nicer API than Format
Before, jbuilder used to stop its execution after an error was
encountered. Now it continues until all branches have been explored.
To implement this feature, Future was rewritten as a Fiber module with
a simpler semantic.
This patch contains various other refactorings.
* Build_system.prefix_rules
Add a way to implicitly add a build prefix to all rules added by the given
function
* Make sure that on_load_dir callbacks handle the prefix right
* Make sure that prefix_rules prefixes don't contain targets
* Move prefix validation to user facing function
* document prefix_rules
* Change jbuilder to load rules lazily
Rules are now loaded on a per directory basis as needed. This speed up
the start up time on large workspaces.
Does various refactoring as well.
* Simplify the handling of META files
We no longer generate a META.foo.from-jbuilder file. Nobody is using
this feature and it's making the new code more complicated.
Calling 'jbuilder build @path/x' always request the alias `x` in
`path` and all its descendant.
To implement that, change the build system interface to take an
arbitrary request as argument.
Add a utop subcommand that build and execute a utop where all the libraries defined in the current directory are immediately available for interactive use.
This is cleaner and allow dependencies on files that do not
appear in static deps or targets.
With this patch, one can now build all JS packages at once.