curve25519-voi
curve25519-voi copied to clipboard
Platform support
This serves as a tracking issue to document which targets1 are supported, along with ancillary information.
GOARCH | Supported | Backend | Notes |
---|---|---|---|
amd64 | :heavy_check_mark: | 64-bit + asm | Main development platform |
arm64 | :heavy_check_mark: | 64-bit | |
ppc64 | :heavy_check_mark: | 64-bit | |
ppc64le | :heavy_check_mark: | 64-bit | |
s390x | :heavy_check_mark: | 64-bit | |
386 | :heavy_check_mark: | 32-bit | |
arm | :heavy_check_mark: | 32-bit | |
mips | :heavy_check_mark: | 32-bit | |
mipsle | :heavy_check_mark: | 32-bit | |
mips64 | :heavy_check_mark: | 32-bit | bits.Add64 /bits.Mul64 are slow |
mips64le | :heavy_check_mark: | 32-bit | bits.Add64 /bits.Mul64 are slow |
riscv64 | :heavy_check_mark: | 32-bit | bits.Add64 is slow in released versions2 |
loong64 | :heavy_check_mark: | 32-bit | bits.Add64 /bits.Mul64 are slow |
wasm | :heavy_check_mark: | 32-bit | WebAssembly does not guarantee constant time integer operations |
It may be the case that certain 64-bit platforms that currently use the 32-bit code path will perform better with the 64-bit code path, despite the lack of compiler optimization for the relevant math/bits
intrinsics. As I do not have access to the various targets, benchmark results showing this will be welcome.
WASM is supported now due to the growing popularity of the target, however WebAssembly3 does not mandate nor guarantee instruction timings. The standard techniques used to mitigate timing side-channels work under the assumption that certain things are constant-time with regards to the inputs, which may not be true.