0.11.0
版本发布时间: 2017-03-06 06:53:16
ocaml/ocamlbuild最新发布版本:0.15.0(2024-06-29 16:58:29)
OCamlbuild 0.11.0 introduces a change to the way .cmxs
files are
produced when no .mldylib
file is absent: it will now use the exact
same semantics as .cmxa
and .mllib
file -- in particular, it
should not be necessary anymore to have identical
foo.{mllib,mldylib}
files, only foo.mllib
should suffice. See the
detailed changelog below for details.
-
#111: added "nostdlib" flag for corresponding ocaml{c,opt} options (Thomas Wood)
-
#115: add
node_modules
to the list of directories ignored by default (.svn/, CVS/, .bzr/, .hg/, .git/, _darcs/, node_modules/) (Yunxing Dai) -
#125, #160: added "-toolchain" option for corresponding ocamlfind option. (whitequark)
-
#127, #137, #138: install ocamlbuild's man pages, missing since 4.02 (Adam Sampson and Gabriel Scherer)
-
#130: make sure that -just-plugin always stops after the plugin-build phase (Gabriel Scherer, report by whitequark)
-
#132, #159: remove the rule ".cmx -> .cmxs" Previously, there was a ".cmx -> .cmxa" rule that would pull a module and its dependencies in a .cmxa, and a separate ".cmx -> .cmxs" rule that would pull only a module as a .cmxs.
The latter is a reasonable default choice, the idea being that a module's dependencies may often be statically linked with the program instead of being dynamically linked. But it conflicts with the presence of a rule ".cmxa -> .cmxs" as soon as the library has the same name as one of the modules it contains.
The reason why the rule ".cmxa -> .cmxs" matter is that it can be composed with the rule ".mllib -> .cmxa" to build .cmxs files from .mllib files, without having to copy each .mllib file into a separate .mldylib file.
In other terms, the previous behaviour would, by default (in absence of .mldylib file who always takes priority), only link the module in the .cmxs file, and people wishing otherwise would have to write a list of modules in a .mldylib file. The new behavior will, by default, take the .mllib file or the module dependencies (as for .cmxa) to build a .cmxs file, and people wishing otherwise will have to write just the module name in a .mldylib file.
It is unclear whether this change will break some projects on which users relied on the previous semantics. It seems equally likely that the previous semantics, when it applied, was a source of bugs (the .cmxs files didn't have the expected modules) that would not be discovered by people not testing dynamic linking. Such bugs have been found and fixed in the following cases:
- https://github.com/dbuenzli/uucp/pull/9
- https://github.com/dbuenzli/uunf/pull/4
- https://github.com/dbuenzli/uuseg/pull/4
(Daniel Bünzli, Jérémie Dimino, Armaël Guéneau, Gabriel Scherer, whitequark)
-
#124, #136: do not explicitly pass -shared when building shared libraries; let the compiler decide what to build. (whitequark)
-
#143-171: migration of Mantis bugtracker issues to the github issue tracker (Damien Doligez)
-
#172-175, #177: setting up Continuous Infrastructure (CI) testsuite checks (whitequark)
-
#202: install license, changes and readme in opam's docdir for
odig
(Gabriel Scherer, request and review by Daniel Bünzli) -
"noautolink" tag for ocaml{c,opt} (Gabriel Scherer)