Done. http://caml.inria.fr/mantis/view.php?id=6619

Thanks! Having an issue really helps tracking that things get done.

there is one advantage to the current approach: no source code needs to be changed in the simplest case (just searching '.') - we just link exn-source in.
[...]
So perhaps I should make it build exn-source.cm(x)a and exn-source-easy.cm(x)a, and have two choices.

Indeed. exn-source-easy (or -autolink) could simply depend on the "clean API" in the exn-source library, by being implemented as just
  let () = Exn_source.register ()

Then simply making sure to pass the flag -linkall when building that second cma means that explicitly requiring it (in the build system) will enable the feature.

On Sun, Oct 19, 2014 at 9:38 PM, John Whitington <john@coherentgraphics.co.uk> wrote:
Hi,

Gabriel Scherer wrote:
 > perhaps it's just in need of clarification in the documentation.

My understanding is that uncaught exception raised by the handler are
dropped/ignored.
Would you mind creating a mantis issue ( http://caml.inria.fr/mantis/ )
so that we can discuss improving the documentation there?

Done. http://caml.inria.fr/mantis/view.php?id=6619

Note that a way to side-step this issue entirely would be for your API
to provide something in the style of Printexc.print
   handle : ('a -> 'b) -> 'a -> 'b
that handles any exception raised by the function application. Users
would be able to call this explicitly around their main processing loop
(which is the place where they often already handle exception-handling)
instead of delegating to a possibly-fragile mutable final handler.

My understanding is that exn-source currently operates by a side-effect
at link-time. I would rather have the choice between an explicit (unit
-> unit) registration function, and a side-effect-free handling function
as above.

Correct. Your suggestion would be much cleaner, but there is one advantage to the current approach: no source code needs to be changed in the simplest case (just searching '.') - we just link exn-source in.

People won't want to necessarily ship code with exn-source linked in, and it's not nice to have to modify code between debug and release -- I like to try to have those differences all in the build system.

So perhaps I should make it build exn-source.cm(x)a and exn-source-easy.cm(x)a, and have two choices.

Thanks.


--
John Whitington
Director, Coherent Graphics Ltd
http://www.coherentpdf.com/