bip39

BIP39 mnemonic codes in Haskell (docs.ppad.tech/bip39).
git clone git://git.ppad.tech/bip39.git
Log | Files | Refs | README | LICENSE

commit 74ec5d2e3316ef998ef63a2bd19f098898fda206
parent f78838133ff4900cc4006379eec542e2f082ab9f
Author: Jared Tobin <jared@jtobin.io>
Date:   Sun, 28 Dec 2025 16:18:00 -0330

release: v0.3.1

Diffstat:
MCHANGELOG | 4++++
MREADME.md | 13+++++++------
Mflake.lock | 100++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mflake.nix | 4++--
Mppad-bip39.cabal | 10+++++-----
5 files changed, 68 insertions(+), 63 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG @@ -1,5 +1,9 @@ # Changelog +- 0.3.1 (2025-12-28) + * Bumps some dependency lower bounds. + * Adds an 'llvm' build flag and tests with GHC 9.10.3. + - 0.3.0 (2025-06-21) * The 'mnemonic' and 'seed' function families are now total, returning 'Nothing' when supplied with bad inputs. diff --git a/README.md b/README.md @@ -91,16 +91,17 @@ Current benchmark figures on an M4 Silicon MacBook Air look like (use ``` benchmarking ppad-bip39/mnemonic - time 1.276 μs (1.273 μs .. 1.281 μs) + time 813.3 ns (812.4 ns .. 814.2 ns) 1.000 R² (1.000 R² .. 1.000 R²) - mean 1.275 μs (1.273 μs .. 1.278 μs) - std dev 8.396 ns (4.677 ns .. 15.17 ns) + mean 813.3 ns (810.4 ns .. 823.2 ns) + std dev 15.99 ns (5.116 ns .. 32.29 ns) + variance introduced by outliers: 23% (moderately inflated) benchmarking ppad-bip39/seed - time 2.764 ms (2.753 ms .. 2.773 ms) + time 2.057 ms (2.053 ms .. 2.063 ms) 1.000 R² (1.000 R² .. 1.000 R²) - mean 2.752 ms (2.747 ms .. 2.758 ms) - std dev 17.73 μs (13.66 μs .. 26.18 μs) + mean 2.062 ms (2.059 ms .. 2.067 ms) + std dev 12.53 μs (7.614 μs .. 23.28 μs) ``` ## Development diff --git a/flake.lock b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1725910328, - "narHash": "sha256-n9pCtzGZ0httmTwMuEbi5E78UQ4ZbQMr1pzi5N0LAG8=", + "lastModified": 1766840161, + "narHash": "sha256-Ss/LHpJJsng8vz1Pe33RSGIWUOcqM1fjrehjUkdrWio=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5775c2583f1801df7b790bf7f7d710a19bac66f4", + "rev": "3edc4a30ed3903fdf6f90c837f961fa6b49582d1", "type": "github" }, "original": { @@ -51,11 +51,11 @@ ] }, "locked": { - "lastModified": 1741625558, - "narHash": "sha256-ZBDXRD5fsVqA5bGrAlcnhiu67Eo50q0M9614nR3NBwY=", + "lastModified": 1766934151, + "narHash": "sha256-BUFpuLfrGXE2xi3Wa9TYCEhhRhFp175Ghxnr0JRbG2I=", "ref": "master", - "rev": "fb63457f2e894eda28250dfe65d0fcd1d195ac2f", - "revCount": 24, + "rev": "58dfb7922401a60d5de76825fcd5f6ecbcd7afe0", + "revCount": 26, "type": "git", "url": "git://git.ppad.tech/base16.git" }, @@ -93,11 +93,11 @@ ] }, "locked": { - "lastModified": 1766446326, - "narHash": "sha256-4uqWsys2juR70nainA6ykVVLmnbVO2nGk2DilIPlYdo=", + "lastModified": 1766936673, + "narHash": "sha256-OWxKSeRQ0+Wt+Qy62ygGiCNY/1OsejuOnUCLlozIzuM=", "ref": "master", - "rev": "9aec2633bffce9944bb9647b58abe5072e5834a8", - "revCount": 30, + "rev": "8de88f527e0c87264aecae4f4f0d13c524abf726", + "revCount": 31, "type": "git", "url": "git://git.ppad.tech/base58.git" }, @@ -137,11 +137,11 @@ ] }, "locked": { - "lastModified": 1766931126, - "narHash": "sha256-ObTyolja7GbNGu5jglTUfrxxiPi1kSSPEx0kNlCWj/Y=", + "lastModified": 1766939362, + "narHash": "sha256-Ri+Oq8y/+gcYja5LRW594G2iuYejehby2hP0jMR+lGI=", "ref": "master", - "rev": "7ee1f552481582494d5df6beb991ca1d35dcac4c", - "revCount": 62, + "rev": "08229eed913e09d5ab77021906bdbd3148409d57", + "revCount": 65, "type": "git", "url": "git://git.ppad.tech/bip32.git" }, @@ -171,11 +171,11 @@ ] }, "locked": { - "lastModified": 1766929014, - "narHash": "sha256-wkQYKuwYhVD2xF0wUriFrBpRXX98ezlUfygl8kGpe6g=", + "lastModified": 1766933347, + "narHash": "sha256-hwBsY4vyefW9qSj0MK0+wr9hIc0OcFuhQD11XGGcO/o=", "ref": "master", - "rev": "1d63926222ed984287f57e2ef48e76e5fbc4089f", - "revCount": 286, + "rev": "d7b03362f9d075c505b8c293524f577f7186a647", + "revCount": 289, "type": "git", "url": "git://git.ppad.tech/fixed.git" }, @@ -223,11 +223,11 @@ ] }, "locked": { - "lastModified": 1766436802, - "narHash": "sha256-cZBaR5zBpguiusf3/BzjwrMY63FoXDVGuas+e8QyjTc=", + "lastModified": 1766935294, + "narHash": "sha256-hwHadXNxB+mo50EsN9iEbwkzoqiqdobB8QwIjXpqckk=", "ref": "master", - "rev": "c23408f69f64d41c3d5478801bb16c0603b4e43b", - "revCount": 53, + "rev": "7557757c32cccb0d95416a21ac832df53cdfdb5d", + "revCount": 54, "type": "git", "url": "git://git.ppad.tech/hmac-drbg.git" }, @@ -243,11 +243,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1737297101, - "narHash": "sha256-EnXnq+JLflbWt+DvaGGnY2gfAqsGNOm5vPgHh3hkfwQ=", + "lastModified": 1766932084, + "narHash": "sha256-GvVsbTfW+B7IQ9K/QP2xcXJAm1lhBin1jYZWNjOzT+o=", "ref": "master", - "rev": "f29823875250bc99b3891f7373535ccde9a29a44", - "revCount": 1, + "rev": "353e61763b959b960a55321a85423501e3e9ed7a", + "revCount": 2, "type": "git", "url": "git://git.ppad.tech/nixpkgs.git" }, @@ -283,11 +283,11 @@ ] }, "locked": { - "lastModified": 1766443383, - "narHash": "sha256-+FjF8wCtcY5t18PzMWWeiRNbj6x28v/zsOZ/QZ3pPLY=", + "lastModified": 1766937455, + "narHash": "sha256-8uZufR/jKNCg19wBTtBwxoqGnAtj2JqA4kBnFlThHqo=", "ref": "master", - "rev": "f57238108ff1feaa1b7ec95bee3953a5a0236cf7", - "revCount": 16, + "rev": "695d3193614c65e644bfb8d3e05d22bd55aab3d7", + "revCount": 17, "type": "git", "url": "git://git.ppad.tech/pbkdf.git" }, @@ -321,11 +321,11 @@ ] }, "locked": { - "lastModified": 1766442965, - "narHash": "sha256-wsspQAyMf+vXLpYY/hk05IgsNcb1KPeIxwKzV16zAZM=", + "lastModified": 1766937812, + "narHash": "sha256-vU0PlTSY3iE0tHiLzAr4P7hXw3wDDvKrJRsohijPpdw=", "ref": "master", - "rev": "4fe3998c0d94dea7e059602747413d5825e34330", - "revCount": 28, + "rev": "449d59398770ee5cda2a939cfc6f269b3e49c900", + "revCount": 29, "type": "git", "url": "git://git.ppad.tech/ripemd160.git" }, @@ -372,11 +372,11 @@ ] }, "locked": { - "lastModified": 1766930981, - "narHash": "sha256-b1oICqCQSSDZrdumNif3gQKiED4edjjaArYO8rMiFls=", + "lastModified": 1766938819, + "narHash": "sha256-URvfv+I5+deCGR3feXzBF+fEE+s2p0hFM425z1V94Ok=", "ref": "master", - "rev": "02a94bd244dfff3daa1450ad7d5f7c862db8e55c", - "revCount": 231, + "rev": "d613a8f51980798b0518551bb45b55c2be28a785", + "revCount": 236, "type": "git", "url": "git://git.ppad.tech/secp256k1.git" }, @@ -406,11 +406,11 @@ ] }, "locked": { - "lastModified": 1766484297, - "narHash": "sha256-jBXyJeilmp75csTkqsqgNtCUrkdk+wt5TEoWrFaatsM=", + "lastModified": 1766938603, + "narHash": "sha256-Rh0Zl1evhWpYrstqB1iHvDRzawOzvtE+DtpmFpK0Hk8=", "ref": "master", - "rev": "5524b108ff5ebdfb113d77a313fa881f873480c1", - "revCount": 97, + "rev": "a4df6b84a48b7dec984856a37537f21e5eb8648d", + "revCount": 99, "type": "git", "url": "git://git.ppad.tech/sha256.git" }, @@ -440,11 +440,11 @@ ] }, "locked": { - "lastModified": 1766437426, - "narHash": "sha256-vn0nUVrMqux2PorMOZlx3RAqylf88BTw+jRMXC0gIz8=", + "lastModified": 1766938658, + "narHash": "sha256-v85D6HZ49a4LHIrn+fLx/2qEk9rYhCu4LyETQ892SsQ=", "ref": "master", - "rev": "669c4ffd1cc7826876af2d67661738c2081ea6a9", - "revCount": 31, + "rev": "419d5696a7b2521d53604e370afbaa0325e33f4f", + "revCount": 33, "type": "git", "url": "git://git.ppad.tech/sha512.git" }, diff --git a/flake.nix b/flake.nix @@ -61,7 +61,7 @@ pkgs = import nixpkgs { inherit system; }; hlib = pkgs.haskell.lib; - llvm = pkgs.llvmPackages_15.llvm; + llvm = pkgs.llvmPackages_19.llvm; bip32 = ppad-bip32.packages.${system}.default; bip32-llvm = @@ -87,7 +87,7 @@ (hlib.enableCabalFlag pbkdf "llvm") [ llvm ]; - hpkgs = pkgs.haskell.packages.ghc981.extend (new: old: { + hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: { ppad-bip32 = bip32-llvm; ppad-base16 = ppad-base16.packages.${system}.default; ppad-sha256 = sha256-llvm; diff --git a/ppad-bip39.cabal b/ppad-bip39.cabal @@ -1,6 +1,6 @@ cabal-version: 3.0 name: ppad-bip39 -version: 0.3.0 +version: 0.3.1 synopsis: BIP39 mnemonic codes. license: MIT license-file: LICENSE @@ -8,7 +8,7 @@ author: Jared Tobin maintainer: jared@ppad.tech category: Cryptography build-type: Simple -tested-with: GHC == 9.8.1 +tested-with: GHC == 9.10.3 extra-doc-files: CHANGELOG extra-source-files: etc/english.txt @@ -47,9 +47,9 @@ library build-depends: base >= 4.9 && < 5 , bytestring >= 0.9 && < 0.13 - , ppad-pbkdf >= 0.2 && < 0.3 - , ppad-sha256 >= 0.2.3 && < 0.3 - , ppad-sha512 >= 0.1.3 && < 0.2 + , ppad-pbkdf >= 0.2.1 && < 0.3 + , ppad-sha256 >= 0.2.4 && < 0.3 + , ppad-sha512 >= 0.1.4 && < 0.2 , primitive >= 0.8 && < 0.10 , text >= 2.1 && < 2.2 , text-icu >= 0.8 && < 0.9