Documentation of all notable changes to the intx project.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.15.0 — 2026-01-30
- Add
bit_width()helper. #356 - Add
load()andstore()helpers withstd::span<uint8_t>parameters. #366 - Add support for
0Xprefix tofrom_string(). #361 - Add constructor from
builtin_uint128to avoid truncation. #355 - Add constructor from
std::span<uint64_t>. #362
- Git default branch changed to
main. - Optimize
exp()by traversing exponent bits from the top. #357 - Change
as_words()to return fixed-sizestd::span<uint64_t>. #364 - Add explicit implementations of assignment operators. #353
- Use
std::spanfor division internals and helper procedures. #365
0.14.0 — 2025-11-14
- Add
ctz()(count trailing zeros). #350 - Add
bit_test(). #351 - Add support for Conan package manager. #352
- Fix
udivremdead branch causing static analysis failures #349
0.13.0 — 2025-05-14
- Add support for C++20 spaceship operator
<=>. #328
- Build fixes for newer compilers and C++23:
0.12.1 — 2024-10-09
- Fix MSVC build in preprocessor conformance mode #327
0.12.0 — 2024-09-03
- Consequent type aliases and literal suffixes:
#317
uint128,1_u128uint192,1_u192uint256,1_u256uint320,1_u320uint384,1_u384uint448,1_u448uint512,1_u512
0.11.0 — 2024-08-06
0.10.1 — 2023-07-17
- Fixed buggy
__builtin_subcllin Xcode 14.3.1 on arm64. 294
0.10.0 — 2023-04-25
0.9.3 — 2023-07-17
- Fixed buggy
__builtin_subcllin Xcode 14.3.1 on arm64. 294
0.9.2 — 2023-03-11
- Increase tolerance to some compiler warnings (e.g. unknown pragma, unknown attribute)
in case
intx.hppis used without CMake assistance. #286
0.9.1 — 2023-01-25
- Fixed 32-bit Windows builds: the
_umul128intrinsic is not available there. #283
0.9.0 — 2022-12-13
- Optimizations for GCC compiler. #279 #281
- Required CMake version increased from 3.10 to 3.16 #276
- Simplification of many operators declarations by using
friend inlinefunctions. #270 #271 - Benchmarks updates and fixes. #274 #275 #277
0.8.0 — 2022-03-15
- Added support for big-endian architectures. #257
- Extend endian-specific load/store helpers to work with builtin integer types. #265
- The
addc()andsubc()have been optimized with compiler's builtins if available. #250 #251 #253 - Fixed and enabled CI testing for architectures other than x86. #255
- Small multiplication optimization. #261
- Small division optimization. #263
- Small comparison operators optimization for the
uint256type. #264
0.7.1 — 2022-02-15
- Added support for
bswap()of small unsigned types:uint8_t,uint16_tanduint32_t. Previously arguments where promoted touint64_twhat produced invalid results. #247
0.7.0 — 2021-12-17
- The
int128.hppandintx.hppheader files have been merged. Now the whole library is included in singleintx/intx.hppfile. #242 - The
addmod()implementation has the optimized path for elliptic curve context. #206 - The implementation of
operator==now explicitly performs XOR folding. #245
0.6.0 — 2021-06-25
- The internal representation of unsigned integers has been changed to be an array of 64-bit words. This provides types composed of any number of words (e.g.
uint384). Previously only power-of-two numbers of words were allowed. This is a big change that affects implementation of many operators. #212 #213 - Subtraction has been slightly rewritten to make it easier for compilers to optimize it. The performance now matches the addition. #189
- Multiplication API has been cleaned up by using
std::is_constant_evaluated-like helpers internally. #195 #205 - Shift API has been changed to use
uint64_tas shift amount on the fundamental API level. #202
0.5.1 — 2020-12-14
- The utility macros (e.g.
INTX_UNREACHABLE()) have been redefined. #182 - Test and benchmarks improvements. #175
0.5.0 — 2020-06-23
- Support for using intx dependency as a CMake subproject (e.g. by git submodules or FetchContent). #160
- Support for building intx exceptions handling disabled (-fno-exceptions) and without RTTI (-fno-rtti). #164
- Converted to a header-only library. #155 #156
- Addition / subtraction optimizations. #115 #117 #130
- Division optimizations. #129 #131 #134 #141 #147 #171
- Exponentiation optimizations. #128 #146
- The unused
builtins.hheader has been deleted. #173
0.4.0 — 2019-08-21
- Added the
as_bytes()casting helper. #106
- The endian-specific API for converting intx types to/from bytes has been reworked. #107
- The
clz()is nowconstexprand produces correct answer for zero inputs. #108
0.3.0 — 2019-06-20
- New
addmod()andmulmod()procedures have been added for theuint256type. #101