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.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_u128
uint192
,1_u192
uint256
,1_u256
uint320
,1_u320
uint384
,1_u384
uint448
,1_u448
uint512
,1_u512
0.11.0 — 2024-08-06
0.10.1 — 2023-07-17
- Fixed buggy
__builtin_subcll
in Xcode 14.3.1 on arm64. 294
0.10.0 — 2023-04-25
0.9.3 — 2023-07-17
- Fixed buggy
__builtin_subcll
in 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.hpp
is used without CMake assistance. #286
0.9.1 — 2023-01-25
- Fixed 32-bit Windows builds: the
_umul128
intrinsic 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 inline
functions. #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
uint256
type. #264
0.7.1 — 2022-02-15
- Added support for
bswap()
of small unsigned types:uint8_t
,uint16_t
anduint32_t
. Previously arguments where promoted touint64_t
what produced invalid results. #247
0.7.0 — 2021-12-17
- The
int128.hpp
andintx.hpp
header files have been merged. Now the whole library is included in singleintx/intx.hpp
file. #242 - The
addmod()
implementation has 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 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_t
as 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 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.h
header 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 nowconstexpr
and produces correct answer for zero inputs. #108
0.3.0 — 2019-06-20
- New
addmod()
andmulmod()
procedures have been added for theuint256
type. #101