I don't have time to evaluate and respond to all your points, but your first entry under "frightening discoveries" really jumped out at me. On line 499:

try closed_type ty with Non_closed (ty0, real) ->

The name "ty0" is a pattern capture variable, which the pattern matching construct binds to the first argument of the caught exn value with constructor Non_closed. It doesn't need a prior declaration... you are declaring it right there. Surely you were simply mistaken? I find it unbelievable that someone could write OCaml for years, even hacking on the compiler, without understanding basic pattern matching.


On Thu, Jan 16, 2014 at 3:00 PM, Jürgen Pfitzenmaier <pfitzen@pfitzenmaier.de> wrote:
Dear Ocaml users,
I found some serious errors in the compiler e.g. in line 28 of typing/includecore.ml
and line 499 of typing/ctype.ml of version 3.12.1.
 
A longer list of errors with explanations and possible fixes will be under
      www.pfitzenmaier.de/ocaml-considered-dangerous.html
 
regards,
Jürgen