Some language bindings have issues with exported variables. The static context is currently exported as a variable:
0SECP256K1_API const secp256k1_context *secp256k1_context_static;
which is implemented as:
0const secp256k1_context *secp256k1_context_static = &secp256k1_context_static_;
A more portable way would be to provide it through a function:
0SECP256K1_API const secp256k1_context *secp256k1_context_static(void);
with implementation:
0const secp256k1_context *secp256k1_context_static(void)
1{
2 return &secp256k1_context_static_;
3}
PS: It is clear that changing the symbol into a function is a breaking change and therefore off the table. However, please consider adding a new symbol with the proposed implementation.