Package

purescript-int64

Repository
purescript-contrib/purescript-int64
License
MIT
Uploaded by
jamesdbrock
Published on
2022-05-07

CI Pursuit Maintainer: jamesdbrock

Signed and unsigned 64-bit integer types and operations.

Design

The arithmetic operations in this library will be performed by WebAssembly functions for speed, if the environment allows.

From dcodeIO/long.js:

A Long class for representing a 64 bit two's-complement integer value derived from the Closure Library for stand-alone use and extended with unsigned support.

WebAssembly support

WebAssembly supports 64-bit integer arithmetic out of the box, hence a tiny WebAssembly module is used to compute operations like multiplication, division and remainder more efficiently (slow operations like division are around twice as fast), falling back to floating point based computations in JavaScript where WebAssembly is not yet supported, e.g., in older versions of node.

Installation

Install int64 with Spago:

spago install int64

Quick start

Documentation

int64 documentation is stored in a few places:

  1. Module documentation is published on Pursuit.
  2. Written documentation is kept in the docs directory.
  3. Usage examples can be found in the test suite.

If you get stuck, there are several ways to get help:

Contributing

You can contribute to int64 in several ways:

  1. If you encounter a problem or have a question, please open an issue. We'll do our best to work with you to resolve or answer it.

  2. If you would like to contribute code, tests, or documentation, please read the contributor guide. It's a short, helpful introduction to contributing to this library, including development instructions.

  3. If you have written a library, tutorial, guide, or other resource based on this package, please share it on the PureScript Discourse! Writing libraries and learning resources are a great way to help this library succeed.

Development

Run the test suite:

spago -x spago-dev.dhall test

Provenance

Most of this code was copied from

This should be considered the successor package to the package purescript-longs, for which maintaince slowed down in 2019. The module names and type names have been reorganized, and the long.js dependency has been inlined instead of declared in the dependencies of a package.json.