> * Don't support unstable; only support stable
> * Don't support unstable+ASM; require CRYPTOPP_DISABLE_ASM
> * Fully support unstable
Three inter-related issues here:
Issue 1: What does "support" mean? Empirically, it seems to mean that
Jeffrey will spend his time reproducing and debugging crashes on
unstable platforms. I would tend to vote against that, but I guess it
is up to Jeffrey?
Issue 2: On the other hand, if we set up a Buildbot then we could
provide information to people about whether Crypto++ builds and passes
tests on a variety of platforms, including unstable platforms, without
a major ongoing expenditure of anyone's (Jeffrey's) time. That is: it
is an expenditure of someone's time to set up a Buildbot for a
specific platform, but it is a pretty low ongoing cost to keep it
running after that.
This would also let us know whenever a patch that we committed caused
tests to go from passing to failing on any platform, which would be
potentially valuable information.
Issue 3: I am in favor of disabling ASM by default! I maintain a
library built on top of Crypto++ — pycryptopp — which is used by
“Tahoe-LAFS”, the cryptographic distributed storage system. We decided
after collecting several years of data about bugs that the added
bugginess of asm implementations was too much to justify the added
performance:
https://tahoe-lafs.org/trac/pycryptopp/ticket/85
So in any case, I am *certainly* in favor of the smaller step of
disabling asm on unstable platforms. You could imagine that enabling
asm is a sort of opt-in step that only happens for specific platforms
where it has been proven (perhaps with the aid of a Buildbot) to be
safe.
Regards,
Zooko