From: Nicolas C. <war...@fr...> - 2004-07-23 15:07:45
|
> > The CVS version is up-to-date. > > I will make an official release when I have some spare time (if someone > > want to be release manager on SourceForge, please drop me an email). > > > > Nicolas Cannasse > > Yes, the CVS version works great. Could you explain to me how you fixed > it? I see that you prepended a percent sign to all of the externals. Is this > an ocaml compiler feature? Or is it being preprocessed by sed or something? There is two kind of externals, "real" externals : they have a primitive name. This kind of primitive : external imake : int -> int -> 'a intern = "obj_is_block" need now to be prefixed with "caml_" in order to compiler under 3.08 : external imake : int -> int -> 'a intern = "caml_obj_is_block" but was also used by the Obj module, so I wrote : let imake tag len = (Obj.magic (Obj.new_block tag len) : 'a intern) so it use current Obj module primitive , with an additional access per-call tradeoff. Other externals, the ones prexifed with "%" are built-in directly into the compiler, so does not actually wrap a C primitive, they are then > I'm guessing that this allows extlib to compile under 3.07 and 3.08. I've > seen a few other projects wrestling with this issue, so if you could explain > what you did then I can help them make their projects compile on 3.07 and > 3.08 too. > > Thanks! They need to use the same trick and check where in OCaml stdlib the primitive they need is defined. Nicolas Cannasse |