[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Users] OCamlDuce for 3.11?



Alain Frisch a écrit :
> Just so you can coordinate your efforts: I think Stéphane Glondu was
> also working on extracting a clean patch against OCaml.

So this is what I've done:

  http://glondu.net/tmp/ocamlduce-3.11.0.0rc1.tar.gz


The README.ocamlduce is not up-to-date yet. This is how the tarball is
supposed to be used:

 * have the OCaml source tarball somewhere, and adapt the Makefile
   accordingly
 * execute:
     make prepare && cd ocaml-*
     ./configure <your-options>
     make -f Makefile.ocamlduce <target>
   where <target> is one of:
     - world: build only bytecode stuff
     - world.opt: build bytecode and native stuff
     - installbyte: install only bytecode stuff
     - installopt: install only native stuff
     - clean: as usual...
 * enjoy


There is also a git repository where I intend to maintain this:

  http://git.debian.org/?p=users/glondu-guest/ocamlduce.upstream.git

I will move it to forge.ocamlcore.org if I get Alain's blessing (and
when I figure out how to get a git repos there... ping gildor). The
repository tracks directly patched OCaml (from official upstream
tarballs), and there is an additional "dist" target in
Makefile.ocamlduce that makes the distribution tarball.


Some general remarks:

 * The toplevel (in bytecode), dump_schema (in native and bytecode) and
   Ocsigen (in bytecode) seem to work properly.

 * It basically uses only the ocamlbuild-based build system. The
   renamings are done at install.

 * I added the possibility to omit OCamlDuce during link with the
   OCAMLDUCE_LIGHTLINK environment variable. This is needed for a
   simpler build of OCamlDuce itself, and it seems to be needed
   for ocamlducefind (at least when linking native executables).

 * To facilitate the build of OCamlDuce itself, I now require
   ./configure to be run, and I recompile asmrun and byterun. By
   default, the Makefile invokes ./configure with the options quoted
   in `ocamlc -where`/Makefile.config (OT, this actually fails because
   of quoting problems).

 * The changes to expunge.ml seem not to be specific to OCamlDuce, what
   about integrating them upstream? or dropping them...

 * I do no longer install expungeduce nor ocamlducemktop by default. A
   priori, these could be installed and used, but I haven't done much
   tests.

 * The following warnings are generated during compilation:

> File "bytecomp/translcore.ml", line 785, characters 10-1428:
> Warning P: this pattern-matching is not exhaustive.
> Here is an example of a value that is not matched:
> Text _
> 
> File "tools/ocamlprof.ml", line 289, characters 28-501:
> Warning P: this pattern-matching is not exhaustive.
> Here is an example of a value that is not matched:
> Pextexp_id _
> 
> File "tools/addlabels.ml", line 281, characters 18-386:
> Warning P: this pattern-matching is not exhaustive.
> Here is an example of a value that is not matched:
> (Pextexp_id _|Pextexp_check (_, _)|Pextexp_to_ml _|Pextexp_from_ml _|
> Pextexp_namespace (_, _, _))

   AFAICT, the last two concern files that are not used by installed
   stuff, so one could say "I don't care", or just not compile them...
   but they are harmless and can guide in future merges.

 * The file custom.ml, when compiled with ocamlc and ocamlducec,
   provides two .cmi files with different MD5: is this expected?


More technical details concerning merges with OCaml 3.11 (feedback welcome):

 * The CVS version 1.43 of bytecomp/lambda.mli changes the type of
   Lapply, adding a Location.t argument. This affects
   bytecomp/translext.ml. I solved it adding "Location.none" wherever
   needed.

 * OCamlDuce seems to revert partially the change in CVS version 1.79 of
   typing/typemod.ml, line 784/795. I am not sure the current patch is
   still correct... but wasn't able to exhibit a runtime error.


BTW, I have not yet looked at Richard's work, so maybe there is possible
improvements there.


Cheers,

-- 
Stéphane

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: