de87739635 | ||
---|---|---|
.github/workflows | ||
benchmarks | ||
stint | ||
tests | ||
.gitignore | ||
LICENSE-APACHEv2 | ||
LICENSE-MIT | ||
README.md | ||
stint.nim | ||
stint.nimble |
README.md
Stint (Stack-based multiprecision integers)
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 - Representation of numbers in memory is the exact same as native types and endianness aware.
- In practice that means that interfacing with binary blobs representing numbers from cryptographic libraries can be done with a
cast
if it represents a Uint256, Uint512, Uint1024, Uint2048.
- In practice that means that interfacing with binary blobs representing numbers from cryptographic libraries can be done with a
- converting to and from Hex
- converting to and from decimal strings
- Use traditional
License
Licensed and distributed under either of
- MIT license: LICENSE-MIT or http://opensource.org/licenses/MIT
or
- Apache License, Version 2.0, (LICENSE-APACHEv2 or http://www.apache.org/licenses/LICENSE-2.0)
at your option. This file may not be copied, modified, or distributed except according to those terms.