Stack-based arbitrary-precision integers - Fast and portable with natural syntax for resource-restricted devices.
Go to file
Etan Kissling 3236fa6839
Replace `apt-fast` with `apt-get` (#159)
`apt-fast` was removed from GitHub with Ubuntu 24.04:

- https://github.com/actions/runner-images/issues/10003

For compatibility, switch back to `apt-get`.
2024-10-15 15:48:30 +00:00
.github/workflows Replace `apt-fast` with `apt-get` (#159) 2024-10-15 15:48:30 +00:00
benchmarks fix modmul 256-bit perf (#156) 2024-07-09 15:35:08 +02:00
helpers enable randomized divmod tests 2023-06-23 09:31:27 +07:00
stint fix modmul 256-bit perf (#156) 2024-07-09 15:35:08 +02:00
tests add native nim mode (#142) 2023-09-25 16:49:04 +02:00
.gitignore Fix pointer deref issue on Macos and Nim >= 2.0 (#152) 2024-05-20 23:39:33 +07:00
LICENSE-APACHEv2 Relicense under dual Apache/MIT 2018-03-02 11:48:08 +01:00
LICENSE-MIT Relicense under dual Apache/MIT 2018-03-02 11:48:08 +01:00
README.md Use littleEndian for limb-endianness: bigEndian arch are very rare, untestable in CI, a pain to maintain and an intermediate serialization step instead of casting is cheap 2023-06-12 17:11:14 +07:00
config.nims Fix pointer deref issue on Macos and Nim >= 2.0 (#152) 2024-05-20 23:39:33 +07:00
nim.cfg add native nim mode (#142) 2023-09-25 16:49:04 +02:00
stint.nim add custom literal feature 2023-07-07 13:22:22 +07:00
stint.nimble add native nim mode (#142) 2023-09-25 16:49:04 +02:00

README.md

Stint (Stack-based multiprecision integers)

License: Apache License: MIT Stability: experimental Github action

A fast and portable stack-based multi-precision integer library in pure Nim

Main focus:

  • Portability
    • 32 and 64 bit arch
    • ARM for usage on mobile phones
    • Additionally RISC-V and MIPS for open hardware and low power IoT devices.
  • Speed, library is carefully tuned to produce the best assembly given the current compilers. However, the library itself does not resort to assembly for portability.
  • No heap/dynamic allocation
  • Ethereum applications
    • Uint256/Int256 for Ethereum Virtual Machine usage.
    • Uint2048 for Ethereum Bloom filters
  • Ease of use:
    • Use traditional +, -, +=, etc operators like on native types
    • converting to and from raw byte BigInts (also called octet string in IETF specs)
    • converting to and from Hex
    • converting to and from decimal strings

License

Licensed and distributed under either of

or

at your option. This file may not be copied, modified, or distributed except according to those terms.