commit e86efa2247adba15e2901b13811237536763c6f2
parent 98a9dbfe67d86019d971b5fc7d732702c75360ba
Author: Jared Tobin <jared@jtobin.io>
Date: Sun, 21 Dec 2025 20:13:55 -0330
meta: add llvm flag, update flake/lockfile
Diffstat:
3 files changed, 146 insertions(+), 32 deletions(-)
diff --git a/flake.lock b/flake.lock
@@ -68,6 +68,46 @@
"ppad-base16_2": {
"inputs": {
"flake-utils": [
+ "ppad-bip32",
+ "ppad-secp256k1",
+ "ppad-hmac-drbg",
+ "ppad-base16",
+ "ppad-nixpkgs",
+ "flake-utils"
+ ],
+ "nixpkgs": [
+ "ppad-bip32",
+ "ppad-secp256k1",
+ "ppad-hmac-drbg",
+ "ppad-base16",
+ "ppad-nixpkgs",
+ "nixpkgs"
+ ],
+ "ppad-nixpkgs": [
+ "ppad-bip32",
+ "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-base16_3": {
+ "inputs": {
+ "flake-utils": [
"ppad-pbkdf",
"ppad-base16",
"ppad-nixpkgs",
@@ -113,6 +153,10 @@
"ppad-nixpkgs",
"nixpkgs"
],
+ "ppad-base16": [
+ "ppad-bip32",
+ "ppad-base16"
+ ],
"ppad-nixpkgs": [
"ppad-bip32",
"ppad-nixpkgs"
@@ -123,11 +167,11 @@
]
},
"locked": {
- "lastModified": 1750500456,
- "narHash": "sha256-9N1EzWyT4QknMjRvE+RUjs1klOxvTlU5vRl+mzDKZfE=",
+ "lastModified": 1750582288,
+ "narHash": "sha256-scwPuowiX2/+o4cgxEtmKTZjpSi/E9IMX72aKB3ylkk=",
"ref": "master",
- "rev": "f40766056e463a82a06eec66d7b08cba1dbcf2d4",
- "revCount": 28,
+ "rev": "e36b0a81145b163bdf103d43e31392b272417cbe",
+ "revCount": 29,
"type": "git",
"url": "git://git.ppad.tech/base58.git"
},
@@ -153,6 +197,7 @@
"ppad-base16"
],
"ppad-base58": "ppad-base58",
+ "ppad-fixed": "ppad-fixed",
"ppad-nixpkgs": [
"ppad-nixpkgs"
],
@@ -166,11 +211,11 @@
]
},
"locked": {
- "lastModified": 1750503912,
- "narHash": "sha256-AZO1atA3iUyv/t05S8JC31NdBefoKdVga1AyhBGDShE=",
+ "lastModified": 1766360190,
+ "narHash": "sha256-aZh7oXi/nE6/Ft0aE6Y6rdoUWqcv5lE8J3ocrd/oR98=",
"ref": "master",
- "rev": "1917afc9f432e2c32c964635ff2348075a675d38",
- "revCount": 46,
+ "rev": "f38feccb2b38aa6f3108a13c58b5d3195272a843",
+ "revCount": 53,
"type": "git",
"url": "git://git.ppad.tech/bip32.git"
},
@@ -180,6 +225,40 @@
"url": "git://git.ppad.tech/bip32.git"
}
},
+ "ppad-fixed": {
+ "inputs": {
+ "flake-utils": [
+ "ppad-bip32",
+ "ppad-fixed",
+ "ppad-nixpkgs",
+ "flake-utils"
+ ],
+ "nixpkgs": [
+ "ppad-bip32",
+ "ppad-fixed",
+ "ppad-nixpkgs",
+ "nixpkgs"
+ ],
+ "ppad-nixpkgs": [
+ "ppad-bip32",
+ "ppad-nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1766353466,
+ "narHash": "sha256-uQ2PW6AuO5ihjQuaedKUjpCzXBNd+yrZWxQl7kz6QwE=",
+ "ref": "master",
+ "rev": "602f5fbd031106b89b31bea5eddf1c0dc3b07148",
+ "revCount": 253,
+ "type": "git",
+ "url": "git://git.ppad.tech/fixed.git"
+ },
+ "original": {
+ "ref": "master",
+ "type": "git",
+ "url": "git://git.ppad.tech/fixed.git"
+ }
+ },
"ppad-hmac-drbg": {
"inputs": {
"flake-utils": [
@@ -196,6 +275,7 @@
"ppad-nixpkgs",
"nixpkgs"
],
+ "ppad-base16": "ppad-base16_2",
"ppad-nixpkgs": [
"ppad-bip32",
"ppad-secp256k1",
@@ -213,11 +293,11 @@
]
},
"locked": {
- "lastModified": 1740802952,
- "narHash": "sha256-rYWQAzoXmxWQqBA2iPiRkSnb3xDjDt5aq3Fe0UyoS38=",
+ "lastModified": 1750582815,
+ "narHash": "sha256-m9Ynf6rCAGrGU8bPil2apUC5nwPNfJSkak4GOVPj9ok=",
"ref": "master",
- "rev": "567288a1f3a558a69a6ee10a26e44f00310692f9",
- "revCount": 51,
+ "rev": "d49f5c7c03c82d4d8321f2932b19160822715ebc",
+ "revCount": 52,
"type": "git",
"url": "git://git.ppad.tech/hmac-drbg.git"
},
@@ -259,7 +339,7 @@
"ppad-nixpkgs",
"nixpkgs"
],
- "ppad-base16": "ppad-base16_2",
+ "ppad-base16": "ppad-base16_3",
"ppad-nixpkgs": [
"ppad-nixpkgs"
],
@@ -299,17 +379,21 @@
"ppad-nixpkgs",
"nixpkgs"
],
+ "ppad-base16": [
+ "ppad-bip32",
+ "ppad-base16"
+ ],
"ppad-nixpkgs": [
"ppad-bip32",
"ppad-nixpkgs"
]
},
"locked": {
- "lastModified": 1740802961,
- "narHash": "sha256-sEW9RGhoWs8BmsQ+FHowMaWgSEjJc68qB7Bg33c0yKw=",
+ "lastModified": 1750583200,
+ "narHash": "sha256-nVW/anVOzCiMcRmqQlbmT0LRmT6XjCKSH6DxubhL/sI=",
"ref": "master",
- "rev": "d703a7a58bad51f8271cfb9b1731e37c05202eeb",
- "revCount": 26,
+ "rev": "84eaa4264fe5e638004ea42d2dedbc2d12b1df91",
+ "revCount": 27,
"type": "git",
"url": "git://git.ppad.tech/ripemd160.git"
},
@@ -333,6 +417,14 @@
"ppad-nixpkgs",
"nixpkgs"
],
+ "ppad-base16": [
+ "ppad-bip32",
+ "ppad-base16"
+ ],
+ "ppad-fixed": [
+ "ppad-bip32",
+ "ppad-fixed"
+ ],
"ppad-hmac-drbg": "ppad-hmac-drbg",
"ppad-nixpkgs": [
"ppad-bip32",
@@ -348,11 +440,11 @@
]
},
"locked": {
- "lastModified": 1750503268,
- "narHash": "sha256-DYpCW4dfqLTyV2ACFVH8gzKl1PNYYxcg6xfgT5aWBfg=",
+ "lastModified": 1766355085,
+ "narHash": "sha256-Kvl8C9GXN6BMgPpahfBF0Emq2BH318McldU1k2L/K0k=",
"ref": "master",
- "rev": "6b6e784010ba5b6ddb938e62a90eccb07bf5a3fb",
- "revCount": 173,
+ "rev": "50faf718771e0577b6ac13f5c7a0391abf1376f7",
+ "revCount": 215,
"type": "git",
"url": "git://git.ppad.tech/secp256k1.git"
},
@@ -374,16 +466,19 @@
"ppad-nixpkgs",
"nixpkgs"
],
+ "ppad-base16": [
+ "ppad-base16"
+ ],
"ppad-nixpkgs": [
"ppad-nixpkgs"
]
},
"locked": {
- "lastModified": 1740802974,
- "narHash": "sha256-GTD9UrxwMa5zY7hxzDSXjKXKUwMK4r3FBHLG0nvgapk=",
+ "lastModified": 1750583530,
+ "narHash": "sha256-elc+wo2v26SW9WWqZ+36nlrEHTCIotUbbPU0eeMaKLc=",
"ref": "master",
- "rev": "ab0957e305dff0243dcab11e381470585849fd20",
- "revCount": 94,
+ "rev": "282fa90825bbc04c324c58186da473cb380d0fc2",
+ "revCount": 95,
"type": "git",
"url": "git://git.ppad.tech/sha256.git"
},
@@ -405,16 +500,19 @@
"ppad-nixpkgs",
"nixpkgs"
],
+ "ppad-base16": [
+ "ppad-base16"
+ ],
"ppad-nixpkgs": [
"ppad-nixpkgs"
]
},
"locked": {
- "lastModified": 1740802979,
- "narHash": "sha256-6VAXmA1XiIT/WFcP+eFb6uK3YyfgVqIgDv3ASNIoCMs=",
+ "lastModified": 1750736173,
+ "narHash": "sha256-7AGv9HktdslIaVDO8IQUMrcBewmFngHlwqEUaYsI6kw=",
"ref": "master",
- "rev": "ff165b29fb21b99749460ae7e3fdca42a85c822b",
- "revCount": 28,
+ "rev": "ba7757cf61132cf3c3d79960f51ddaf4801f7aec",
+ "revCount": 30,
"type": "git",
"url": "git://git.ppad.tech/sha512.git"
},
diff --git a/flake.nix b/flake.nix
@@ -27,12 +27,14 @@
url = "git://git.ppad.tech/sha256.git";
ref = "master";
inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
+ inputs.ppad-base16.follows = "ppad-base16";
};
ppad-sha512 = {
type = "git";
url = "git://git.ppad.tech/sha512.git";
ref = "master";
inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
+ inputs.ppad-base16.follows = "ppad-base16";
};
ppad-pbkdf = {
type = "git";
@@ -58,10 +60,17 @@
pkgs = import nixpkgs { inherit system; };
hlib = pkgs.haskell.lib;
+ llvm = pkgs.llvmPackages_15.llvm;
+
+ bip32 = ppad-bip32.packages.${system}.default;
+ bip32-llvm =
+ hlib.addBuildTools
+ (hlib.enableCabalFlag bip32 "llvm")
+ [ llvm ];
hpkgs = pkgs.haskell.packages.ghc981.extend (new: old: {
${lib} = old.callCabal2nixWithOptions lib ./. "--enable-profiling" {};
- ppad-bip32 = ppad-bip32.packages.${system}.default;
+ ppad-bip32 = bip32-llvm;
ppad-base16 = ppad-base16.packages.${system}.default;
ppad-sha256 = ppad-sha256.packages.${system}.default;
ppad-sha512 = ppad-sha512.packages.${system}.default;
@@ -83,10 +92,9 @@
buildInputs = [
cabal
cc
+ llvm
];
- inputsFrom = builtins.attrValues self.packages.${system};
-
doBenchmark = true;
shellHook = ''
@@ -95,6 +103,7 @@
echo "cc: $(${cc}/bin/cc --version)"
echo "ghc: $(${ghc}/bin/ghc --version)"
echo "cabal: $(${cabal}/bin/cabal --version)"
+ echo "llc: $(${llvm}/bin/llc --version | head -2 | tail -1)"
'';
};
}
diff --git a/ppad-bip39.cabal b/ppad-bip39.cabal
@@ -26,6 +26,11 @@ description:
[BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki)
mnemonic codes for deterministic key generation.
+flag llvm
+ description: Use GHC's LLVM backend.
+ default: False
+ manual: True
+
source-repository head
type: git
location: git.ppad.tech/bip39.git
@@ -35,6 +40,8 @@ library
hs-source-dirs: lib
ghc-options:
-Wall
+ if flag(llvm)
+ ghc-options: -fllvm -O2
exposed-modules:
Crypto.KDF.BIP39
build-depends: