The new native dynamic linking feature requires some changes in the code
generator for (non-Windows) AMD64 targets. Currently, this change is
enabled by passing the -dlcode option to ocamlopt. A module which has
not been compiled with this option cannot be dynlinked.
Because -dlcode is only needed for AMD64 and it didn't exist before,
most 3rd party libraries will likely not include this flag in their
build system any time soon and they will thus be impossible to dynlink.
This is not very satisfactory.
A question to be answered before the release of OCaml 3.11 is whether
this option should be enabled by default (and maybe provide another
option to disable the new behavior). The only reason not to do so would
be a degradation of performance. I haven't observed any difference on
small benchmarks I did some months ago, but I'd like to collect more
benchmarking data before enabling -dlcode by default.
It would be great if some people could checkout the current CVS tree and
try to compile and run their time-consuming programs with or without
-dlcode on AMD64 systems, and report what they found out. I expect
potential differences to appear only for functionally intensive code (a
lot of inter or intra module function calls). To help benchmarking, the
current CVS includes the following hack: if the environment variable
OCAML_DLCODE is set to a non-empty value, ocamlopt behaves as if -dlcode
were enabled. It is thus trivial to recompile (e.g. via GODI) any 3rd
party library which your code may depend on.
Any help will be appreciated!
Caml-list mailing list. Subscription management:
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs