Skip to content

Latest commit

 

History

History
280 lines (203 loc) · 9.42 KB

CHANGELOG.md

File metadata and controls

280 lines (203 loc) · 9.42 KB

Changelog for intx

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

Fixed

  • Fix MSVC build in preprocessor conformance mode #327

0.12.0 — 2024-09-03

Added

  • 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

Changed

0.11.0 — 2024-08-06

Added

  • Support constexpr context execution for all arithmetic including division. #305 #311 #314

Changed

  • Literal operators changed to consteval. #298
  • Some C++20 modernization. #297 #308

Fixed

  • Fixes to division for constexpr context. #309 #310

0.10.1 — 2023-07-17

Fixed

  • Fixed buggy __builtin_subcll in Xcode 14.3.1 on arm64. 294

0.10.0 — 2023-04-25

Changed

  • C++20 is now required to use intx. #287 #290

0.9.3 — 2023-07-17

Fixed

  • Fixed buggy __builtin_subcll in Xcode 14.3.1 on arm64. 294

0.9.2 — 2023-03-11

Changed

  • 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

  • Fixed 32-bit Windows builds: the _umul128 intrinsic is not available there. #283

0.9.0 — 2022-12-13

Changed

  • 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

  • Added support for big-endian architectures. #257
  • Extend endian-specific load/store helpers to work with builtin integer types. #265

Changed

  • The addc() and subc() 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

Fixed

  • Added support for bswap() of small unsigned types: uint8_t, uint16_t and uint32_t. Previously arguments where promoted to uint64_t what produced invalid results. #247

0.7.0 — 2021-12-17

Changed

  • The int128.hpp and intx.hpp header files have been merged. Now the whole library is included in single intx/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

Changed

  • 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

Changed

  • The utility macros (e.g. INTX_UNREACHABLE()) have been redefined. #182
  • Test and benchmarks improvements. #175

0.5.0 — 2020-06-23

Added

Changed

Removed

  • The unused builtins.h header has been deleted. #173

0.4.0 — 2019-08-21

Added

  • Added the as_bytes() casting helper. #106

Changed

  • The endian-specific API for converting intx types to/from bytes has been reworked. #107
  • The clz() is now constexpr and produces correct answer for zero inputs. #108

0.3.0 — 2019-06-20

Added

  • New addmod() and mulmod() procedures have been added for the uint256 type. #101

Changed

  • Pedantic compiler warnings have been fixed. #98
  • Performance of the division algorithm increased up to 40% when dividing 256-bit values by 128-bit and 64-bit ones. #99