Browse thread
Difference between ocamlc and ocamlopt when marshalling reference
- Mathias Kende
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Mathias Kende <mathias.kende@e...> |
| Subject: | Difference between ocamlc and ocamlopt when marshalling reference |
Hi, I found a difference on the way global references used inside a function are handled with respect to marshalling between ocamlc and ocamlopt. See the exemple below : -------------- a.ml --------------- let r = ref 0 let p () = Printf.printf "%d\n" !r let s = Marshal.to_string p [Marshal.Closures] let () = r := 1 let q : unit -> unit = Marshal.from_string s 0 let () = q () ----------------------------------- $ ocamlc a.ml $ ./a.out 0 $ ocamlopt a.ml $ ./a.out 1 ----------------------------------- I am not sure which semantic is the "good" one. They are both interesting, but having only one is definitely simpler. Is this a known problem ? is there fundamental reasons in the compilers for which it can not be changed ? Cheers, Mathias