*Edit*: I am being ridiculous here: I forgot to run with --release flag. 🤦‍♂️​ So while the performance differences are really there, it’s more like factor four from fastest (just-argon2) to slowest (argon2) implementation.

Interesting conclusion on the state of the #rustlang ecosystem: the only #Argon2 implementation still under active development (argon2) is also by far the slowest one. Unless I mixed up some numbers, it is six times slower than rust-argon2 and four times slower than argon2rs.

The really fast implementations are the ones wrapping the argon2 C library, these haven’t been updated in years however and often provide a really awkward API. While argonautica has non-trivial system dependencies, just-argon2 works without.

Well, guess just-argon2 it is…

@WPalant Argon2 is as recent as stable Rust is, so I'm sure that'll become addressed in due time. I think it's a good example of the current state of the ecosystem however (there's a crate implementing virtually every algorithm but things are still homebrew-quality, the language itself has gone past critical mass but is still not ABI stable and still has few tier 1 targets)
@xerz Particularly when it comes to crypto, things currently look pretty bad for reliable and reasonably complete implementations that don’t fall back to C/C++ libraries. I hope this gets better…