From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Philipp Stephani
On 09/28/2015 08:25 AM, Philipp Stephani wrote:
>
>
> Stefan Monnier <monnier@iro.umontreal.ca
> <mailto:monnier@iro.umontreal.ca>> schrieb am Di., 15. Sep. 2015 um
> 02:55 Uhr:
>
>=C2=A0 =C2=A0 =C2=A0Just, FWIW we can keep talking about it, but my opi= nion is quite firmly
>=C2=A0 =C2=A0 =C2=A0made.=C2=A0 I want the first API to provide access = to the "naked" primitives
>=C2=A0 =C2=A0 =C2=A0with no condition-case wrapping.
>
>
> This is wrong and dangerous. It makes dynamic loading far less useful<= br> > than it could be. Essentially modules e.g. written in C++ will have to=
> consist of a small C shim that makes IPC calls to some out-of-process<= br> > server.
While I agree that making non-local exits part of the public API is a
titanic footgun and a mistake we'll regret for decades, it's not th= e
case that it forces non-C modules to use IPC shims. Emacs non-local
unwinding stops at the first matching condition_case on the stack, so as
long there's a condition-case frame between a stack frame that can'= t be
unwound with longjmp (say, one with C++ destructors) and the Emacs core,
the program will work correctly if Emacs longjmps.
Non-local returns are awful, yes, but they do not make it impossible to
integrate non-C languages with Emacs.