Is OCaml compiler configured with flat_float_array marshal compatible with no_flat_float_array

For BuckleScript compiler (OCaml->Readable JS), it makes more sense to configure it with no_flat_float_array, my question is that if we configure it with no_flat_float_array, would the cmt file generated by such compiler compatible with compiler configured with flat_float_array, otherwise we need also make sure other tools configured with the same compiler config (notably merlin) which is less ideal.

My understanding is that, “flat float arrays” being a runtime representation issue, the .cmt files are identical in both cases.

By the way, the subject to your post alludes to “marshal”; clearly float arrays marshalled with a “flat float array” compiler cannot be unmarshalled with a “no flat float array” compiler (and vice-versa).

Thanks for the reply. IIUC, the cmt(i) file or cmi (marshalled of typedtree) is compatible is due to that the typedtree does not contain float array, is that correct?

If someday the type definition of typedtree introduce float array, it will be incompatible in that case, is this right?

Yes, that’s correct.

1 Like