Araq/Nimrod — pull request #1540 by rbehrends (2014-09-22 20:18:24+00:00)
Title: Improve setjmp()/longjmp() performance.

Exception handling for the C backend used setjmp()/longjmp() unconditionally. However, on POSIX systems, these functions save and restore the signal mask, adding considerable overhead to exception handling, even where no exceptions are involved. The compiler and library now try to use either _setjmp()/_longjmp() or sigsetjmp()/siglongjmp() where possible, marked by the defines "useRawsetjmp" and "useSigsetjmp", respectively.

The change should not break building from csources, as the csources implementation does not define either symbol and so will still use the original behavior.

Note: I have not been able to test this implementation on all possible operating systems.