|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to this project will be documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | + |
| 8 | +## [Unreleased] |
| 9 | + |
| 10 | +## [0.3.0] - 2023-03-08 |
| 11 | + |
| 12 | +#### Added |
| 13 | + - Added experimental support for CMake builds. Traditional GNU Autotools builds (`./configure` and `make`) remain fully supported. |
| 14 | + - Usage examples: Added a recommended method for securely clearing sensitive data, e.g., secret keys, from memory. |
| 15 | + - Tests: Added a new test binary `noverify_tests`. This binary runs the tests without some additional checks present in the ordinary `tests` binary and is thereby closer to production binaries. The `noverify_tests` binary is automatically run as part of the `make check` target. |
| 16 | + |
| 17 | +#### Fixed |
| 18 | + - Fixed declarations of API variables for MSVC (`__declspec(dllimport)`). This fixes MSVC builds of programs which link against a libsecp256k1 DLL dynamically and use API variables (and not only API functions). Unfortunately, the MSVC linker now will emit warning `LNK4217` when trying to link against libsecp256k1 statically. Pass `/ignore:4217` to the linker to suppress this warning. |
| 19 | + |
| 20 | +#### Changed |
| 21 | + - Forbade cloning or destroying `secp256k1_context_static`. Create a new context instead of cloning the static context. (If this change breaks your code, your code is probably wrong.) |
| 22 | + - Forbade randomizing (copies of) `secp256k1_context_static`. Randomizing a copy of `secp256k1_context_static` did not have any effect and did not provide defense-in-depth protection against side-channel attacks. Create a new context if you want to benefit from randomization. |
| 23 | + |
| 24 | +#### Removed |
| 25 | + - Removed the configuration header `src/libsecp256k1-config.h`. We recommend passing flags to `./configure` or `cmake` to set configuration options (see `./configure --help` or `cmake -LH`). If you cannot or do not want to use one of the supported build systems, pass configuration flags such as `-DSECP256K1_ENABLE_MODULE_SCHNORRSIG` manually to the compiler (see the file `configure.ac` for supported flags). |
| 26 | + |
| 27 | +#### ABI Compatibility |
| 28 | + |
| 29 | +Due to changes in the API regarding `secp256k1_context_static` described above, the ABI is *not* compatible with previous versions. |
| 30 | + |
| 31 | +## [0.2.0] - 2022-12-12 |
| 32 | + |
| 33 | +#### Added |
| 34 | + - Added usage examples for common use cases in a new `examples/` directory. |
| 35 | + - Added `secp256k1_selftest`, to be used in conjunction with `secp256k1_context_static`. |
| 36 | + - Added support for 128-bit wide multiplication on MSVC for x86_64 and arm64, giving roughly a 20% speedup on those platforms. |
| 37 | + |
| 38 | +#### Changed |
| 39 | + - Enabled modules `schnorrsig`, `extrakeys` and `ecdh` by default in `./configure`. |
| 40 | + - The `secp256k1_nonce_function_rfc6979` nonce function, used by default by `secp256k1_ecdsa_sign`, now reduces the message hash modulo the group order to match the specification. This only affects improper use of ECDSA signing API. |
| 41 | + |
| 42 | +#### Deprecated |
| 43 | + - Deprecated context flags `SECP256K1_CONTEXT_VERIFY` and `SECP256K1_CONTEXT_SIGN`. Use `SECP256K1_CONTEXT_NONE` instead. |
| 44 | + - Renamed `secp256k1_context_no_precomp` to `secp256k1_context_static`. |
| 45 | + - Module `schnorrsig`: renamed `secp256k1_schnorrsig_sign` to `secp256k1_schnorrsig_sign32`. |
| 46 | + |
| 47 | +#### ABI Compatibility |
| 48 | + |
| 49 | +Since this is the first release, we do not compare application binary interfaces. |
| 50 | +However, there are earlier unreleased versions of libsecp256k1 that are *not* ABI compatible with this version. |
| 51 | + |
| 52 | +## [0.1.0] - 2013-03-05 to 2021-12-25 |
| 53 | + |
| 54 | +This version was in fact never released. |
| 55 | +The number was given by the build system since the introduction of autotools in Jan 2014 (ea0fe5a5bf0c04f9cc955b2966b614f5f378c6f6). |
| 56 | +Therefore, this version number does not uniquely identify a set of source files. |
| 57 | + |
| 58 | +[unreleased]: https://github.com/bitcoin-core/secp256k1/compare/v0.3.0...HEAD |
| 59 | +[0.3.0]: https://github.com/bitcoin-core/secp256k1/compare/v0.2.0...v0.3.0 |
| 60 | +[0.2.0]: https://github.com/bitcoin-core/secp256k1/compare/423b6d19d373f1224fd671a982584d7e7900bc93..v0.2.0 |
| 61 | +[0.1.0]: https://github.com/bitcoin-core/secp256k1/commit/423b6d19d373f1224fd671a982584d7e7900bc93 |
0 commit comments