Stack-based arbitrary-precision integers - Fast and portable with natural syntax for resource-restricted devices.
Go to file
Mamy Ratsimbazafy fc27e86061
New {.experimental: "ForLoopMacros".} support (#62)
* Bug https://github.com/nim-lang/Nim/issues/8676 and da41fc1801

* Use a commandline flag
2018-08-20 10:34:28 +02:00
benchmarks Uint - allow compile-time evaluation for all procs (#54) 2018-06-18 12:54:25 +02:00
stint New {.experimental: "ForLoopMacros".} support (#62) 2018-08-20 10:34:28 +02:00
tests Relaxed construction from BE bytes (#57) 2018-07-04 17:34:14 +02:00
.appveyor.yml Update Quicktest & Continuous Integration configuration to latest. 2018-05-03 11:07:33 +02:00
.gitignore fix the compilation of property_based_uint256 2018-05-03 21:10:55 +03:00
.travis.yml Fix Travis script 2018-05-03 11:35:07 +02: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 Add Appveyor badge + use the blue MIT badge 2018-05-08 15:30:58 +02:00
nim.cfg New {.experimental: "ForLoopMacros".} support (#62) 2018-08-20 10:34:28 +02:00
stint.nim Add overloads for literals only (#50) 2018-05-31 14:31:27 +02:00
stint.nimble Comment out test-only dependencies quicktest and ttmath. 2018-06-10 13:11:24 +02:00

README.md

Stint (Stack-based multiprecision integers)

Build Status (Travis) Windows build status (Appveyor) License: Apache License: MIT Stability: experimental

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.
    • converting to and from Hex
    • converting to and from decimal strings

License

Licensed under either of

at your option.