I think that this is unfortunate because any downstream user now has to resort to conditional compilation (and directly depend on botan-sys in order to use the botan_ffi_YYYYMMDD features) if they want to opportunistically support algorithms that are only found in newer versions of Botan, e.g. X448.
I'd much rather see the API be independent from the Botan version, and have it return an error at runtime if the algorithm is not available.
This is based on Sequoia's experience with rust-openssl (where the API depends on the version and variant of OpenSSL in use), where we have to both use conditional compilation and runtime detection at the call sites. In contrast, the Nettle bindings we use (and maintain), provide a uniform API and return errors at run time.
I think that this is unfortunate because any downstream user now has to resort to conditional compilation (and directly depend on
botan-sysin order to use thebotan_ffi_YYYYMMDDfeatures) if they want to opportunistically support algorithms that are only found in newer versions of Botan, e.g. X448.I'd much rather see the API be independent from the Botan version, and have it return an error at runtime if the algorithm is not available.
This is based on Sequoia's experience with
rust-openssl(where the API depends on the version and variant of OpenSSL in use), where we have to both use conditional compilation and runtime detection at the call sites. In contrast, the Nettle bindings we use (and maintain), provide a uniform API and return errors at run time.