commit 948c5e477175306875a5227cfde64bdc0365c739
parent 53bfbd8e4aef90d4a36838de4d05e034c9bff539
Author: Jared Tobin <jared@jtobin.io>
Date: Mon, 22 Dec 2025 17:40:40 -0330
meta: add llvm flag
Diffstat:
| M | README.md | | | 34 | +++++++++++++++++++--------------- |
| M | flake.lock | | | 80 | +++++++++++++++++++++++-------------------------------------------------------- |
| M | flake.nix | | | 16 | ++++++++++++++-- |
3 files changed, 56 insertions(+), 74 deletions(-)
diff --git a/README.md b/README.md
@@ -54,36 +54,40 @@ Current benchmark figures on an M4 Silicon MacBook Air look like (use
```
benchmarking ppad-bip32 (wNAF)/derive_child_pub'
- time 184.0 μs (183.9 μs .. 184.2 μs)
+ time 180.7 μs (180.6 μs .. 180.9 μs)
1.000 R² (1.000 R² .. 1.000 R²)
- mean 184.2 μs (184.1 μs .. 184.4 μs)
- std dev 502.2 ns (282.7 ns .. 986.8 ns)
+ mean 180.8 μs (180.6 μs .. 180.9 μs)
+ std dev 493.6 ns (382.1 ns .. 639.6 ns)
benchmarking ppad-bip32 (wNAF)/derive_child_priv'
- time 170.4 μs (170.3 μs .. 170.6 μs)
+ time 167.0 μs (166.8 μs .. 167.2 μs)
1.000 R² (1.000 R² .. 1.000 R²)
- mean 170.6 μs (170.5 μs .. 170.7 μs)
- std dev 430.8 ns (314.5 ns .. 600.4 ns)
+ mean 167.0 μs (166.8 μs .. 167.2 μs)
+ std dev 667.4 ns (488.1 ns .. 925.3 ns)
benchmarking ppad-bip32/xpub
- time 151.4 μs (151.2 μs .. 151.6 μs)
+ time 149.6 μs (149.1 μs .. 150.2 μs)
1.000 R² (1.000 R² .. 1.000 R²)
- mean 151.1 μs (150.9 μs .. 151.3 μs)
- std dev 608.5 ns (449.2 ns .. 919.9 ns)
+ mean 149.3 μs (149.0 μs .. 149.9 μs)
+ std dev 1.296 μs (653.2 ns .. 2.117 μs)
benchmarking ppad-bip32/xprv
- time 8.374 μs (8.363 μs .. 8.386 μs)
+ time 6.512 μs (6.506 μs .. 6.519 μs)
1.000 R² (1.000 R² .. 1.000 R²)
- mean 8.390 μs (8.379 μs .. 8.409 μs)
- std dev 47.10 ns (31.45 ns .. 76.90 ns)
+ mean 6.512 μs (6.507 μs .. 6.520 μs)
+ std dev 19.72 ns (12.91 ns .. 34.71 ns)
benchmarking ppad-bip32/parse
- time 8.576 μs (8.573 μs .. 8.580 μs)
+ time 6.905 μs (6.899 μs .. 6.913 μs)
1.000 R² (1.000 R² .. 1.000 R²)
- mean 8.567 μs (8.559 μs .. 8.574 μs)
- std dev 25.37 ns (21.07 ns .. 30.30 ns)
+ mean 6.926 μs (6.919 μs .. 6.933 μs)
+ std dev 23.14 ns (18.74 ns .. 28.17 ns)
```
+You should compile with the 'llvm' flag (and ensure [ppad-fixed][fixed],
+[ppad-sha256][sha256], [ppad-sha512][sha512], and [ppad-secp256k1][secp]
+are compiled with the 'llvm' flag) for maximum performance.
+
## Security
This library aims at the maximum security achievable in a
diff --git a/flake.lock b/flake.lock
@@ -65,43 +65,6 @@
"url": "git://git.ppad.tech/base16.git"
}
},
- "ppad-base16_2": {
- "inputs": {
- "flake-utils": [
- "ppad-secp256k1",
- "ppad-hmac-drbg",
- "ppad-base16",
- "ppad-nixpkgs",
- "flake-utils"
- ],
- "nixpkgs": [
- "ppad-secp256k1",
- "ppad-hmac-drbg",
- "ppad-base16",
- "ppad-nixpkgs",
- "nixpkgs"
- ],
- "ppad-nixpkgs": [
- "ppad-secp256k1",
- "ppad-hmac-drbg",
- "ppad-nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1741625558,
- "narHash": "sha256-ZBDXRD5fsVqA5bGrAlcnhiu67Eo50q0M9614nR3NBwY=",
- "ref": "master",
- "rev": "fb63457f2e894eda28250dfe65d0fcd1d195ac2f",
- "revCount": 24,
- "type": "git",
- "url": "git://git.ppad.tech/base16.git"
- },
- "original": {
- "ref": "master",
- "type": "git",
- "url": "git://git.ppad.tech/base16.git"
- }
- },
"ppad-base58": {
"inputs": {
"flake-utils": [
@@ -156,11 +119,11 @@
]
},
"locked": {
- "lastModified": 1766353466,
+ "lastModified": 1766362512,
"narHash": "sha256-uQ2PW6AuO5ihjQuaedKUjpCzXBNd+yrZWxQl7kz6QwE=",
"ref": "master",
- "rev": "602f5fbd031106b89b31bea5eddf1c0dc3b07148",
- "revCount": 253,
+ "rev": "703e7e3659198a1ead37cb4b3e6dbcd995b8dd45",
+ "revCount": 255,
"type": "git",
"url": "git://git.ppad.tech/fixed.git"
},
@@ -184,7 +147,10 @@
"ppad-nixpkgs",
"nixpkgs"
],
- "ppad-base16": "ppad-base16_2",
+ "ppad-base16": [
+ "ppad-secp256k1",
+ "ppad-base16"
+ ],
"ppad-nixpkgs": [
"ppad-secp256k1",
"ppad-nixpkgs"
@@ -199,11 +165,11 @@
]
},
"locked": {
- "lastModified": 1750582815,
- "narHash": "sha256-m9Ynf6rCAGrGU8bPil2apUC5nwPNfJSkak4GOVPj9ok=",
+ "lastModified": 1766436802,
+ "narHash": "sha256-cZBaR5zBpguiusf3/BzjwrMY63FoXDVGuas+e8QyjTc=",
"ref": "master",
- "rev": "d49f5c7c03c82d4d8321f2932b19160822715ebc",
- "revCount": 52,
+ "rev": "c23408f69f64d41c3d5478801bb16c0603b4e43b",
+ "revCount": 53,
"type": "git",
"url": "git://git.ppad.tech/hmac-drbg.git"
},
@@ -297,11 +263,11 @@
]
},
"locked": {
- "lastModified": 1766355085,
- "narHash": "sha256-Kvl8C9GXN6BMgPpahfBF0Emq2BH318McldU1k2L/K0k=",
+ "lastModified": 1766437039,
+ "narHash": "sha256-kBWdl/ENxhOxExPIoV7Ie2E3g6NHTuKEsyaOpEPKVUA=",
"ref": "master",
- "rev": "50faf718771e0577b6ac13f5c7a0391abf1376f7",
- "revCount": 215,
+ "rev": "07e360a0da43053bff65c81f5e992fb37fa4e996",
+ "revCount": 221,
"type": "git",
"url": "git://git.ppad.tech/secp256k1.git"
},
@@ -331,11 +297,11 @@
]
},
"locked": {
- "lastModified": 1750583530,
- "narHash": "sha256-elc+wo2v26SW9WWqZ+36nlrEHTCIotUbbPU0eeMaKLc=",
+ "lastModified": 1766435555,
+ "narHash": "sha256-ysN0iRuBLSQrgWU3rCFUyq0NvRpug6DTBRZSlWbmI1A=",
"ref": "master",
- "rev": "282fa90825bbc04c324c58186da473cb380d0fc2",
- "revCount": 95,
+ "rev": "a4c17689cd66e1ef35c667914765cb24c9a4b305",
+ "revCount": 96,
"type": "git",
"url": "git://git.ppad.tech/sha256.git"
},
@@ -365,11 +331,11 @@
]
},
"locked": {
- "lastModified": 1750736173,
- "narHash": "sha256-7AGv9HktdslIaVDO8IQUMrcBewmFngHlwqEUaYsI6kw=",
+ "lastModified": 1766437426,
+ "narHash": "sha256-vn0nUVrMqux2PorMOZlx3RAqylf88BTw+jRMXC0gIz8=",
"ref": "master",
- "rev": "ba7757cf61132cf3c3d79960f51ddaf4801f7aec",
- "revCount": 30,
+ "rev": "669c4ffd1cc7826876af2d67661738c2081ea6a9",
+ "revCount": 31,
"type": "git",
"url": "git://git.ppad.tech/sha512.git"
},
diff --git a/flake.nix b/flake.nix
@@ -81,6 +81,18 @@
(hlib.enableCabalFlag fixed "llvm")
[ llvm ];
+ sha256 = ppad-sha256.packages.${system}.default;
+ sha256-llvm =
+ hlib.addBuildTools
+ (hlib.enableCabalFlag sha256 "llvm")
+ [ llvm ];
+
+ sha512 = ppad-sha512.packages.${system}.default;
+ sha512-llvm =
+ hlib.addBuildTools
+ (hlib.enableCabalFlag sha512 "llvm")
+ [ llvm ];
+
secp256k1 = ppad-secp256k1.packages.${system}.default;
secp256k1-llvm =
hlib.addBuildTools
@@ -93,8 +105,8 @@
ppad-fixed = fixed-llvm;
ppad-ripemd160 = ppad-ripemd160.packages.${system}.default;
ppad-secp256k1 = secp256k1-llvm;
- ppad-sha256 = ppad-sha256.packages.${system}.default;
- ppad-sha512 = ppad-sha512.packages.${system}.default;
+ ppad-sha256 = sha256-llvm;
+ ppad-sha512 = sha512-llvm;
${lib} = new.callCabal2nix lib ./. {
ppad-base16 = new.ppad-base16;
ppad-base58 = new.ppad-base58;