README.md

# ruapu erlang binding

[![Hex pm](https://img.shields.io/hexpm/v/ruapu.svg)](https://hex.pm/packages/ruapu)
[![Docs](https://img.shields.io/badge/hex-docs-green.svg?style=flat)](https://hexdocs.pm/ruapu)

This is an Erlang/OTP binding for [ruapu](https://github.com/nihui/ruapu).

## Installation

To compile the module you simply run `rebar3 compile`.

To run the unit tests run `rebar3 eunit`.

To build the documentation run `rebar edoc`.

To use ruapu in your project you can just add it as a dependency in your rebar.config file in the following way:

```erlang
{deps,
 [
  {ruapu, "0.1.0"}
 ]
}
```

### Usage

The getopt module provides two functions:

```erlang
ruapu:supports(ISA :: string() | atom() | binary()) -> boolean().

ruapu:rua() -> {ok, [string()]} | {error, string()}.
```

For example:

```erlang
% pass the ISA as a string, atom or binary
1> ruapu:supports("neon").
true
2> ruapu:supports(neon).
true
3> ruapu:supports(<<"neon">>).
true
% get all supported ISAs
4> ruapu:rua().
{ok,["neon","vfpv4","asimdrdm","asimdhp","asimddp",
     "asimdfhm","bf16","i8mm","pmull","crc32","aes","sha1",
     "sha2","sha3","sha512","amx"]}
```

### For developers
To release a new version of the library, you need to use the `release.sh` script. It will copy the `ruapu.h` to the `c_src` directory so that it can included in the released package.