|
From: | Aymeric Agon-Rambosson |
Subject: | Re: Finalizing 'inhibit-automatic-native-compilation' |
Date: | Thu, 09 Feb 2023 08:26:09 +0100 |
User-agent: | mu4e 1.6.10; emacs 28.1 |
Le mardi 7 février 2023 à 13:56, Andrea Corallo <akrl@sdf.org> a écrit :
Advising primitives is a dangerous action, it can lead the Emacsmachinery to malfunction anytime, these misbehaviors are not documentedand can change from version to version as from configuration toconfiguration. The programmer who advises or redefines a primitive should be ready to understand the underlying machinery and work outpotential issues (as it was done in this case).
Agreed. Advising primitives was already frowned upon even before native compilation, it always was dangerous. However, tests have been doing this for quite some time.
I don't think this is a native comp specific problem, I'm sure one canfind similar examples also on non native comp enabled Emacses.
This is very possible, but in the cases I mentioned (projectile, yasnippet and beginend), the test failures or errors disappeared when we excluded the primitives from trampoline compilation. Sometimes, like in the projectile case, we were able to track exactly what happened, and offer a convincing explanation of the fix along with it. But that is not always the case : I have offered patches for yasnippet and beginend that solve test failures, and I can not completely justify them with anything other than "it solves the issue I'm presenting". On top of that, said issue has probably not been encountered by the upstream maintainer (maybe because they had the trampolines already available beforehand), we uncovered it with our specific build setting. Those patches may or may not be accepted by the upstream maintainers. My point being, the issues caused by widespread primitive advice in the test suites of addon packages, that we have just uncovered with trampoline compilation and our peculiar build environment, will probably be there for a long time. And I agree that this is the job of upstream maintainers to patch them, but they will be probably be very slow to fix them.
These examples were meant as an illustration of why we might want to exclude primitives from trampoline compilation in the (potentially quite long) meantime.
Best, Aymeric
[Prev in Thread] | Current Thread | [Next in Thread] |